This is my learning note from the book Solutions Architect’s Handbook written by Saurabh Shrivastava and Neelanjali Srivastav. All the contents are mostly distilled and copied from the book. I recommend you to buy this book to support the authors.
Another series: Fundamentals of Software Architecture: An Engineering Approach
Think loose coupling
In modern design, microservice architecture is becoming highly popular, which facilitates the decoupling of an application component. The loosely coupled design has many benefits, from providing scalability and high availability, to ease of integration.
With loose coupling, you can add an intermediate layer such as a load balancer or a queue, which automatically handles failures or scaling for you.
Queue-based decoupling enables asynchronous linking of systems, where one server is not waiting for a response from another server and it is working independently. This method lets you increase the number of virtual servers that receive and process the messages in parallel. If there is no image to process, you can configure auto-scaling in order to terminate the excess servers.
Using the right storage for the right need
Solution architects need to consider multiple factors while choosing the data storage to match the right technology. Here are the important ones:
- Durability requirement: How should data be stored to prevent data corruption?
- Data availability: Which data storage system should be available to deliver data?
- Latency requirement: How fast should the data be available?
- Data throughput: What is the data read and write need?
- Data size: What is the data storage requirement?
- Data load: How many concurrent users need to be supported?
- Data integrity: How to maintain the accuracy and consistency of data?
- Data queries: What will be the nature of queries?
While choosing storage options, you need to consider the temperature of the data, which could be hot, warm, or cold:
- For hot data, you are looking for sub-millisecond latency and required cache data storage. Some examples of hot data are stock trading and making product recommendations in runtime.
- For warm data, such as financial statement preparation or product performance reporting, you can live with the right amount of latency, from seconds to minutes, and you should use a data warehouse or a relational database.
- For cold data, such as storing 3 years of financial records for audit purposes, you can plan latency in hours, and store it in archive storage.
Adding security everywhere
The following are the security aspects that need to be considered during the design phase:
- Physical security of data center: All IT resources in data centers should be secure from unauthorized access.
- Network security: The network should be secure to prevent any unauthorized server access.
- Identity and Access Management (IAM): Only authenticated users should have access to the application, and they can do the activity as per their authorization.
- Data security in-transit: Data should be secure while traveling over the network or the internet.
- Data security at rest: Data should be secure while stored in the database or any other storage.
- Security monitoring: Any security incident should be captured, and the team alerted to act.
When designing a solution, think about what can be automated. Consider the following components to be automated in your solution:
- Application testing: You need to test your application every time you make any changes to make sure that nothing breaks.
- IT infrastructure: You can automate your infrastructure by using infrastructure as code scripting.
- Logging, monitoring, and alerting: Monitoring is a critical component, and you want to monitor everything every time. Also, based on monitoring, you may want to take automated action such as scaling up your system or alerting your team to act.
- Deployment automation: Deployment is a repeatable task that is very time consuming and delays the last-minute launch in many real-time scenarios.
- Security automation: While automating everything, don’t forget to add automation for security.