Architecture Design Principles
Given the problem statement how to approach the problems and find the solutions. Lets define some basic principles that will guide us to get to a solution.
What is the nature of the problem,
- Change is the constant thing in the world.
- While at the macro level the problem may not change the whole bunch, but they do change micro level. So we need to be aware of the changes coming in and how to address the changes.
- The changes could be because of user requirement, business requirement, technology changes, government regulations or other external requirements.
- Kill the monolith and make it modularized. To address the problem we dont want to build a big monolith component.
- Scalability is the key. Scalability at many levels.
- Scale the business – new business needs, new product offerings.
- Scale the systems – solve for scale out, do not rely on scale up.
- Scale the users – we will have to solve for the new set of users.
- Scale for the users’ adoption – more load, more data.
- Security is our number one concern. Protect customer’s data.
- Performance can not be compromised.
- System should be high available. Assume system failures. Hardware tend to fail. Be ready to launch a new hardware and new deployment while the site is up and running.
- Public interfaces should be durable. They cant change too often. So do not expose the internal implementation to the external world. Take care of service versioning.
- Collect all the quality attributes, such as
- Performance metrics
- Data quality metrics
- Defects in the system due to architectural concerns
- Separate the concerns & loosely coupled
- Have solid system boundaries
- Track the user/system activities in the system
- Encrypt the sensitive data at rest
- Can not go back to the partners and ask for them to resend data
Original Source Of this Blog : ModernAppArchitecture
I hope this has been useful for you and I’d like to thank you for reading. If you like this article, please leave a helpful comment and share it with your friends.