Architecture and design are the foundation blocks of everything during service or microservice development, and they give you clarity and the direction to implement any logic in the cloud era. It was not only used in tradition monolithic setup, but will be used for future setups and will always remain a building block that will continue to help you build your service from scratch. I see it as a kit given to interns to build their initial system and continue to rebuild and redesign by keeping these architecture and design statements in their minds. Software architecture and design is a process that includes several contributory factors, such as business strategy, human dynamics, quality attributes, design, and IT environment.
You're reading from Practical Site Reliability Engineering
Some of the following points provide clarity about an architectural pattern definition:
- It serves as blueprint for your system
- It is general and reusable in nature
- It gives you a functional understanding about how components are going to interact with one another
- Architecture styles are also known as architecture patterns
- Non-functional decisions are formed and divided by the functional requirements
- A well-laid architecture reduces the business risks associated with the building solution and helps you define a clear-cut understanding between business and technical requirements, and it also builds relationships among those components
The following mind map diagram gives different types of Architectural Patterns used in the IT world where you have easily heard about the Client Server Pattern, the Master Slave Pattern, the Model-View-Controller Pattern, and Peer to Peer Pattern:
Design pattern: Functional requirements are defined in it, and it helps you decompose a system into...
It is very important to consider all design patterns before designing any service, as it helps you build a predictable service that is secured, resilient, performant, scalable, available, and reliable with the following foundation pillars that gives maturity to your application. Traditionally, these patterns were not considered formally, but in the cloud era, we have much more flexibility to choose and consider these patterns during our design process, as these patterns are the building blocks for the cloud vendor service, and even they use the same pattern in designing their own infrastructure.
We are going to cover the following six design patterns. These topics are so broad that we can write a complete chapter on them, but we are going to give you a glimpse into these subtopics so that we can consider them while we are performing some practical implementation:
- Security
- Resiliency
- Performance
- Scalability
- Availability
- Reliability
The following diagram shows the design pattern pillar...
In this chapter, we covered architectural patterns, design patterns, software-inclined design patterns, and patterns that are currently distribute as cloud-dominated Software as a Service (SaaS) inclined markets, and they are trying to explore more patterns that can be easily achieved and implemented. We have given an overview of how to design your application around those patterns, and we have provided a good pictorial view, using mind maps that can be easily referred to during such discussion and implementation. We covered circuit breakers, rate limit, and throttling, which will help you build resilient services that can handle any distributed attacks and give a good experience to customers hosted on a multi-tenant environment. We covered circuit breakers thoroughly to give you an idea about how to implement them and how to use them in a situation where you are experiencing a heavy load or your backend-serving services are down. We have given tips for availability and reliability...