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 5. Container Cluster and Orchestration Platforms

Reliable applications and environments can be created through emerging concepts such as containerization, microservices architecture (MSA), container management, and clustering. Container clustering and orchestration is a highly demanded skill nowadays, as more and more organizations are moving toward microservices to make their services better. At the moment, we have mature products that fulfil the demands of customers, and solutions exist in both the enterprise domain and the open source domain. The latter category is dominating in this respect, with products such as Docker, Kubernetes, and OpenShift.

This chapter intends to provide a detailed explanation of the preceding technologies to ensure the goals of Site Reliability Engineering. The prime topics to be covered in this chapter include the following:

  • Resilient microservices
  • Application and volume containers
  • Clustering and managing containers
  • Container orchestration and management...

Resilient microservices 


We touched on microservices briefly in the previous chapter, but we'll just go through a quick summary again here to remind ourselves. Microservices is an architecture style in which large, complex software applications are composed of one or more smaller services. Each of the services are called microservices and deploy independently of one another, without us needing to know the implementation behind the other microservices. Each service works as a single business function that is loosely coupled, small, focused, language-neutral, and has a bounded context.

Resilient microservices can be defined as having the ability to recover back to a working state after a failure or outage. Resilience is one of the main advantages of microservices. Unlike monolith systems, where if something breaks, it will damage the whole application, in microservices, it will only impact that particular functionality, and other services in the application will run as usual.

Application and volume containers 


As we all know, last year was the year of containers (such as Dockers and Kubernetes). You can think of these as methods that package an application's code so that it can be run with its dependencies, isolated from other processes. There are two main types of containers, that is, stateful containers and statelesscontainers. In stateless containers, data generated from one application will not be available for another application. Stateful containers, on the other hand, will store or record the data somewhere, so that it is available. In real-world applications, it is likely that we need to use stateful containers, based on our application's requirements.

Let's see the steps behind sharing the disk storage among containers. In this example, we will use a Kubernetes pod named PacktPod. This pod will contain two containers: Container-PacktContainer_first and Container-PacktContainer_second. Let's look at what this will look like:

Let's look at how we can setup...

Clustering and managing containers


In this section, we are going to cover a definition of clusters and look at some trending container clustering solutions available on the market. There are many mature solutions available. We will be using architectural diagrams in this section, as pictures can often help us understand these concepts more clearly.

A recent survey by CNCF (https://www.cncf.io/) shows that organizations are increasingly using containers. We can see that more organizations are using 250+ containers in production-level deployment compared to previous years:

The preceding screenshot can be found at the following link: https://www.cncf.io/blog/2017/12/06/cloud-native-technologies-scaling-production-applications/.

As container adoption is increasing, old concerns are diminishing, and new challenges are coming to the forefront of container management. We should keep these new challenges in mind and proactively focus our efforts on this area before other competitors take the lead in...

Container orchestration and management


Container orchestration is a technology that is significantly changing the horizon of companies. We are seeing more and more companies adapting these technologies on a daily basis. Red Hat and Google are the major players that are directly providing these technologies and helping other organizations to develop similar products. Currently, the most mature products include Kubernetes and OpenShift, and many organizations are using these at a production scale. We are going to cover most of the available solutions on the market and will try to give you an insight into their architecture.

A recent survey conducted by CNCF shows some useful statistics about how companies are managing containers. We can clearly see that Kubernetes is leading in terms of container management:

Note

The preceding screenshot can be found at the following link: https://www.cncf.io/blog/2017/12/06/cloud-native-technologies-scaling-production-applications/.

What is container orchestration...

Summary


In this chapter, we covered various concepts related to containers, container management, and container orchestration. We looked at application resiliency with persistent volumes and considered the technologies that can be used. This will help you a lot in regards to selecting the appropriate tools. It is very important to choose, setup, configure, and monitor these kinds of complex solutions. If it is coming from DaaS or as an enterprise version, it gives us some sort of monitoring and management options. If we try to setup our own solution, however, we have to configure and integrate other solutions to make it a production-ready endpoint for your organization.

In the next chapter we will be learning about Software architecture and design is a process that includes several contributory factors, such as business strategy, human dynamics, quality attributes, design, and IT environment.

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