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 8. Realizing Reliable Systems - the Best Practices

System reliability is defined as the combination of system resiliency and elasticity. With the proliferation of web-scale, data-intensive, and process-intensive applications across industry verticals, the application reliability has to be ensured at any cost to fulfil varying business expectations. Similarly, cloud environments emerge as the one-stop IT solution for business process and operation automations. All kinds of personal, professional, and social applications are being meticulously modernized and moved to cloud centers to reap all the originally expressed benefits of the software-defined cloud infrastructures. Thus, cloud reliability is also guaranteed through the leverage of highly pioneering technologies and tools. Thus, the reliability of applications and IT infrastructures is very important to encourage customers to retain their confidence and continuity on the various innovations and improvisations happening in the...

Reliable IT systems – the emerging traits and tips


Businesses across the globe mandate for reliability. IT reliability is the foundation for enabling business reliability. IT pundits have released a series of steps to be followed to arrive at reliable systems. There are architectural and design patterns, best practices, platform solutions, technologies and tools, methodologies, and so on, to produce reliable systems that are resilient and elastic. Let's discuss them in detail in the subsequent sections. Before doing that, let's focus on the various noteworthy advancements happening in the IT space.

MSA for reliable software


MSA is being viewed as the next-generation application architecture style and pattern. There are several proven techniques for faster software development through a host of agile programming methodologies, such as pair and extreme programming, Scrum, and so on. However, there is a lacuna on accelerated design of enterprise-class applications. MSA is being presented as the new agile application design method. Furthermore, developing applications is also sped up through the careful partitioning of legacy as well as modern applications into a number of easily implementable and manageable application components and services. That is, every software application gets segmented into a set of interactive microservices. Building microservices can be independently accomplished. Applications can be quickly formed out of distributed microservices through composition (orchestration and choreography) platforms. In other words, the era of software development from the ground up...

Service mesh solutions


It is an indisputable truth that the resiliency of microservices leads to reliable systems. For crafting process-aware, business-centric, and composite applications, several microservices have to be fused together. Resilient and scalable microservices are collaborating with one another, leading to the realization of reliable software systems.

The service resiliency is being achieved through the leverage of service mesh solutions, such as Istio, Linkerd, and Conduit. Forming service meshes is the way forward for ensuring the much-demanded service resiliency while services interact with one another. The faster maturity and stability of service mesh-enabling solutions goes a long way in establishing resilient microservices, which, when composed together, form reliable systems. Thus, containerized microservices, container orchestration platforms such as Kubernetes, and the incorporation of service mesh solutions blend well to put a robust and versatile foundation for producing...

Microservices design – best practices


As microservices get established and elevated as the next-generation application building block, microservices design has to be done leveraging the various patterns, practices, and platforms. This section throws some light on some of the best practices recommended by highly accomplished and acclaimed software architects. There are articles and blogs explaining the various best practices for the efficient design of microservices.

Precisely speaking, with the unprecedented adoption of microservices architecture and the steady growth of the tool ecosystem, the risk-free realization of modular, service-oriented, extensible, event-driven, cloud-hosted, process-centric, business-critical, insights-filled, scalable, and reliable applications is gaining momentum.

It is a widely accepted fact that MSA guarantees the much needed agility in application design, development, and deployment. However, there are a few challenges. Microservices can be weighed down due...

Asynchronous messaging patterns for event-driven microservices


Here are a few popular asynchronous messaging patterns that enable the faster realization of event-driven and asynchronous messaging microservices. Let's refer to the following points:

  • Event sourcing: Today, events are penetrative and pervasive, and occur in large numbers due to the broader and deeper proliferation of multi-faceted sensors, actuators, drones, robots, electronics, digitized elements, connected devices, factory machineries, social networking sites, integrated applications, decentralized microservices, distributed data sources, stores, and so on. Thus, events from varied and geographically distributed sources get streamed into an event store, which is termed as a database of events. This event store provides an API to enable various consuming services to subscribe and use authorized events. The event store primarily operates as a message broker. Event sourcing persists the state of a business entity such as an order...

The role of EDA to produce reactive applications 


These are also event-driven applications. Predominantly, instead of service orchestration, service choreography is preferred for building event-driven applications. As per the Reactive manifesto, reactive applications have to have the following characteristics. They have to be responsive, resilient, elastic, and message-driven. Reactive systems are bound to respond instantaneously to any kind of stimulus. This is just opposite to the traditional request and response (R and R) model, which is generally blocking. This pattern turns out to be an excellent way for using the available resources in a better manner. Also, the system responsiveness gets a strong boost. Instead of blocking and waiting for computations to be finished, the application starts to handle other user requests in an asynchronous manner to make use of all the available resources and threads.

Command query responsibility segregation pattern

This is an important pattern that's...

Reliable IT infrastructures


As indicated at the beginning of the chapter, to arrive at reliable systems, we need to have reliable applications and infrastructures. We have discussed the various ways and means of bringing forth reliable applications already. Now, we need to dig deeper and detail the best practices to be followed to craft and use reliable infrastructures.

High availability

 Regarding redundancy toward higher availability, the first and foremost tip is to architect software applications to be redundant. Redundancy is the duplication of any system to substantially increase its availability. If a system goes down due to any reason, the duplicated system comes to the rescue. That is why we often hear and read that software applications are being generally deployed in multiple regions, as indicated in the following diagram. Lately, applications are being constructed out of distributed and duplicated application components. Thus, if one component or service goes down, then its duplication...

Infrastructure as code 


The widely quoted benefit of infrastructure as code (IaC) is repeatability and reproducibility. There are a number of components (server, network, security, storage, and so on) in a data center that need to be configured to deploy applications. In cloud environments, there are thousands of such components to be configured. If all is being done manually, the time taken is very huge and error-prone. There are possibilities for the creeping in of configuration differences and drifts. Humans aren't great at undertaking repetitive and manual tasks with 100% accuracy. But machines are very good at doing repetitive, redundant, and routine tasks in scale and speed. If we produce a template and input it into a machine, the machine can execute the template thousand times without any errors. The template-centric approach for infrastructure provisioning, configuration and application deployment gains wider attraction and attention these days. Infrastructure optimization and management...

Summary


With the role and responsibility of IT continuously rising in elevating business operations and people tasks, the complexity induced by the multiplicity and heterogeneity of IT systems is on the rise consistently. There are a number of noteworthy advancements in IT, and these have resulted in a variety of business processes getting optimized, simplified, and automated. Business agility is being fulfilled through the IT agility mechanisms. Business deployment and service models have gone through a few transitions in the recent past with the faster maturity and stability of the cloud paradigm. Business transformations are directly enabled through IT transformation. However, with the faster adoption of digital technologies, the new concept of digital transformation is becoming the new normal.

The goal of business reality through IT reliability technologies and tools is to attain the sustainable digital transformation. Reliable systems with resiliency and elasticity characteristics are...

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