Image Credits : Colour Box |
Architecture of anything defines how well the thing is designed and how long it's going to last. Be it a a building, a car or anything the same rule applies. It is the same when it comes to a software architecture as well.
If the architecture of a software is designed well, it should be able to accommodate any or many of the requirements be it functional or non-functional, the stakeholders requests. Therefore when designing a good architecture, one should be very careful when laying the foundation.
Keep in mind the following non-functional requirements when you're designing the initial architecture of your application.
Scalability
High Scalability has many practical case studies. It is important to keep in mind how much scalable your application is going to be in coming milestones. Size of codebase also matters
- Scale up (Increase power of hardware)
- Scale out (Increase no. of hardware)
Scalability of Django. This video demonstrate how Instagram scales.
Instagram has a caching(memcache) mechanism between database and the client. Whenever user is served it keeps it in the cache as well as update primary and secondary storage.
Read What is scalability for more information
Instagram has a caching(memcache) mechanism between database and the client. Whenever user is served it keeps it in the cache as well as update primary and secondary storage.
Read What is scalability for more information
Performance
This is a key fact when the application grows larger. This might not matter initially but it should be kept in mind as the application grows. Some considerations for performance are,- Perceived performance (Fluent Conf 2017 - Video) : Measure of How Quick a User Thinks Your Site Is.
- If you look at some websites it first loads the content placeholders which is mainly html and then only loads the actual data which takes time
- Applicable for mobile apps as well. First loads the placeholder before loading data from server
- Bundle & minification : Reduces the size of files that needs to be downloaded
- Caching & content delivery networks
- Optimizing image usage
Web Performance: Leveraging the Metrics that Most Affect User Experience (Google I/O '17)
Re-usability
Make sure to design common things in such a way that they can be reusable.Supportability
What devices is your application going to support in future? Can the architecture be designed in a way that it supports future requirements of new devices?See - Azure Design Guideline
There are lot of other things which should be considered when designing an architecture. But most importantly,
Because of this , it truly is superior you can applicable research prior to providing. It will be possible to share larger document that way. business software
ReplyDelete