In this article, we’ll learn the basics and core concepts of software architecture, but before diving into it, we first need to understand what architecture actually is.
Architecture is the process and product of planning, designing and constructing buildings or other structures. A good design can result in a structure being admired for years, if not even lasting. An architect’s job is to combine art and science to ensure that all parts of a building fit together into a good solution. Just like architects, software engineers must combine art and science to deliver solutions in a satisfying way, but you’ll be solving them in code, not building blocks.
What is Software Architecture?
As you can google, there are many definitions available on the internet, but one of the most famous and common is “Architecture is about the essentials.
whatever it is”
– Ralph Johnson In software architecture, there are three important points we need to consider before doing anything with the architecture.
1. Focus on structure. 2. Expect expensive decisions. 3. High-quality core decisions.
We are more concerned with structure than implementation details. Software architecture also involves making expensive decisions that are expensive to change after implementation. It also involves explicit decisions at the core of supporting high-quality software. Concepts are better understood in practice, so let’s take an e-commerce website as an example and see what it looks like.


1. Get the Context
We need to allow our users to do certain things, all of which are things we want the system to do.
Functional requirements
• Search Inventory • buy product • Check comments • View past orders
How should the system behave
These are sometimes defined as utilities that a system can have, such as functionality, reliability, ease of use, efficiency, etc.
A) Maintainability
We want it to be maintained for a few years, this is called the maintainability requirement.
B) Scalability
In this case, we also want to be able to serve millions of users with its scalability.
C) Reliability
We also want to provide customers and end users with 24/7 service that is reliable to ensure that the system is very stable.
2. Prioritize
So, once you have the context, you know what the system needs to do, how it should behave, and what constraints you need to consider. After you have all these things, you need to prioritize them. Some requirements and restrictions will conflict between them. For example, if your time-to-market is too strict, you may have to drop some features. So, after prioritizing your list and making compromises, you need to consider whether it’s acceptable. Once accepted, start designing the architecture.
3. Designing the Architecture
Once you have prioritized, the first thing you need to do is start doing one important thing at a time. If you try to solve all problems at the beginning and try to consider all possible future scenarios, you may end up with an over-engineered solution, which is not good because it is an unnecessarily complex system. What are the possible architectures for your system. There are many design patterns in software architecture, this link will be helpful when starting to design a system, what to look for based on your current needs and what is best for you.
1. Database design 2. Backend Service (API) 3. Front End (UI)
So here we have defined the architecture in terms of the structure the system will have.