Reader small image

You're reading from  Practical Site Reliability Engineering

Product typeBook
Published inNov 2018
PublisherPackt
ISBN-139781788839563
Edition1st Edition
Right arrow
Authors (3):
Pethuru Raj Chelliah
Pethuru Raj Chelliah
author image
Pethuru Raj Chelliah

 Pethuru Raj Chelliah (PhD) works as the chief architect at the Site Reliability Engineering Center of Excellence, Reliance Jio Infocomm Ltd. (RJIL), Bangalore. Previously, he worked as a cloud infrastructure architect at the IBM Global Cloud Center of Excellence, IBM India, Bangalore, for four years. He also had an extended stint as a TOGAF-certified enterprise architecture consultant in Wipro Consulting services division and as a lead architect in the corporate research division of Robert Bosch, Bangalore. He has more than 17 years of IT industry experience.
Read more about Pethuru Raj Chelliah

Shreyash Naithani
Shreyash Naithani
author image
Shreyash Naithani

Shreyash Naithani is currently a site reliability engineer at Microsoft R&D. Prior to Microsoft, he worked with both start-ups and mid-level companies. He completed his PG Diploma from the Centre for Development of Advanced Computing, Bengaluru, India, and is a computer science graduate from Punjab Technical University, India. In a short span of time, he has had the opportunity to work as a DevOps engineer with Python/C#, and as a tools developer, site/service reliability engineer, and Unix system administrator. During his leisure time, he loves to travel and binge watch series.
Read more about Shreyash Naithani

Shailender Singh
Shailender Singh
author image
Shailender Singh

Shailender Singh is a principal site reliability engineer and a solution architect with around 11 year's IT experience who holds two master's degrees in IT and computer application. He has worked as a C developer on the Linux platform. He had exposure to almost all infrastructure technologies from hybrid to cloud-hosted environments. In the past, he has worked with companies including Mckinsey, HP, HCL, Revionics and Avalara and these days he tends to use AWS, K8s, Terraform, Packer, Jenkins, Ansible, and OpenShift.
Read more about Shailender Singh

View More author details
Right arrow

Chapter 6. Architectural and Design Patterns

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.

Architecture pattern


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...

Design pattern


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...

Summary


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...

lock icon
The rest of the chapter is locked
You have been reading a chapter from
Practical Site Reliability Engineering
Published in: Nov 2018Publisher: PacktISBN-13: 9781788839563
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
undefined
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at €14.99/month. Cancel anytime

Authors (3)

author image
Pethuru Raj Chelliah

 Pethuru Raj Chelliah (PhD) works as the chief architect at the Site Reliability Engineering Center of Excellence, Reliance Jio Infocomm Ltd. (RJIL), Bangalore. Previously, he worked as a cloud infrastructure architect at the IBM Global Cloud Center of Excellence, IBM India, Bangalore, for four years. He also had an extended stint as a TOGAF-certified enterprise architecture consultant in Wipro Consulting services division and as a lead architect in the corporate research division of Robert Bosch, Bangalore. He has more than 17 years of IT industry experience.
Read more about Pethuru Raj Chelliah

author image
Shreyash Naithani

Shreyash Naithani is currently a site reliability engineer at Microsoft R&D. Prior to Microsoft, he worked with both start-ups and mid-level companies. He completed his PG Diploma from the Centre for Development of Advanced Computing, Bengaluru, India, and is a computer science graduate from Punjab Technical University, India. In a short span of time, he has had the opportunity to work as a DevOps engineer with Python/C#, and as a tools developer, site/service reliability engineer, and Unix system administrator. During his leisure time, he loves to travel and binge watch series.
Read more about Shreyash Naithani

author image
Shailender Singh

Shailender Singh is a principal site reliability engineer and a solution architect with around 11 year's IT experience who holds two master's degrees in IT and computer application. He has worked as a C developer on the Linux platform. He had exposure to almost all infrastructure technologies from hybrid to cloud-hosted environments. In the past, he has worked with companies including Mckinsey, HP, HCL, Revionics and Avalara and these days he tends to use AWS, K8s, Terraform, Packer, Jenkins, Ansible, and OpenShift.
Read more about Shailender Singh