Containerization and Orchestration - An Overview
Containerization and Orchestration - An Overview
Orchestration - An Overview
Application Frameworks (SE3040)
Vishan Jayasinghearachchi
Lecturer
Department of Software Engineering, Faculty of Computing
[email protected]
Learning Objectives
After completing this lecture, you will be able to,
➢Describe two main virtualization technologies
(Hardware/ Operating System) available in the
computing domain.
➢Describe what containerization is and the need for
it.
➢Analyze a scenario to identify which virtualization
technologies such as virtual machines and
containerization are applicable to the given
scenario.
2
Contents
• Traditional Application
Deployment
• Cloud Native Applications
• Microservices Architecture
• Containers
➢VMs vs Containers
➢Containers: Underlying
Technology
➢Docker Overview
• Container Orchestration
➢Kubernetes Overview
3
Traditional Application Deployment
Capacity Planning
Source: https://www.visual-paradigm.com/guide/software-development-process/what-is-a-software-process-model/
4
Traditional Application Deployment
• Capacity Planning
➢Estimate the required amount computational
resources to deploy the developed application and
purchase them.
➢An expensive operation.
➢Involves guesswork.
➢A video on this.
5
Cloud Native Applications
• With the introduction of cloud computing,
users were provided with the ability to simply
utilize virtualized hardware on cloud
platforms such as VMs instead of actual
hardware.
7
Cloud Native Applications
Source: https://www.clickittech.com/devops/cloud-native-architecture/
8
Microservices Architecture
What are Microservices?
9
Microservices Architecture
Source: https://learn.microsoft.com/en-us/azure/architecture/microservices/
10
Microservices Architecture
• Characteristics of Microservices
➢Have their own technology stack and typically
means of managing data as well (Databases etc.).
➢Communicate with each other using APIs, Message
Brokers and event streaming.
➢Organized by the business capability (bounded
context) and not as horizontal layers such as data
access, messaging etc.
➢Services are loosely coupled, highly functionally
cohesive and independent.
11
Microservices Architecture
• Benefits of Microservices
➢Each microservice could be developed and
deployed independent of other services.
➢Because of this independence, the development
team could use the most suitable technology stack
for each service, rather than depending on an
agreed set of tools for all services (Polyglot
programming).
➢Precise scaling - each component of the application
could be scaled independently of others, increasing
the resource usage efficiency.
12
Microservices Architecture
• Read more on Microservices
➢Martin Fowler – Microservices
➢Microservices.io reference
13
Microservices Architecture
Source: https://netflixtechblog.com/announcing-ribbon-tying-the-netflix-mid-tier-services-together-a89346910a62
14
Containers
• Containers are a very popular approach for
implementing Microservices Architectures.
15
Containers
• What is a container?
➢A Container is a package of software that contain all
the necessary elements of a software (binaries,
libraries, files, configurations etc.) in a single
lightweight executable which runs consistently on
any infrastructure.
16
Before Containers
17
After Containers
18
Virtual Machines vs Containers
• Why is it containers, why not VMs?
Source: https://msystechnologies.com/wp-content/uploads/2015/10/cloud-container-blog-1.jpg
19
Virtual Machines vs Containers
• Containerization introduction: watch this
video.
• When to use which? watch this video.
• To summarize,
➢virtual machines provide Hardware (H/W) level
virtualization.
➢Containers provide Operating System (O/S) level
virtualization.
20
Containers
Why choose containers?
➢Traditionally, code was developed in an
environment with specific configurations, outside
of which the application is not guaranteed to
perform as expected.
21
Containers
Why choose containers?
➢This single package of software or “container” is
abstracted away from the host operating system
hence, it stands alone and becomes portable—able
to run across any platform or cloud, free of issues.
➢Containers are ‘lightweight’ (compared to VMs) –
they share the machine’s operating system kernel
(therefore, resource efficient and faster).
➢Containerization allows applications to be “written
once and run anywhere.”
22
Microservices in containers
• A microservice, developed within a container,
gains the inherent benefits of containerization;
➢Portability and no vendor lock-in
➢Developer agility
➢Fault isolation
➢Efficient resource utilization
➢Automation of installation, scaling and
management
➢More layers of security
23
Containers – Underlying technology
• Two Linux concepts - cgroups and namespaces
together form the basis of containerization
technologies.
➢Namespaces provide process isolation, allowing
process/es to run independently of each other and
the host system.
➢Cgroups provide resource management and
isolation for a collection of processes (i.e. a
namespace), ensuring that these processes do not
consume excessive resources.
➢This video discusses these two concepts briefly.
24
Docker Overview
• Docker is the current Industry standard for
containerization.
➢Docker introduction: watch this video.
25
Docker Overview
Source: https://k21academy.com/docker-kubernetes/docker-and-kubernetes/
26
Container Orchestration
• Container orchestration is comparable to the
role of the conductor of an orchestra.
Source: https://www.musicgateway.com/blog/music-theory/music-conductor
27
Container Orchestration
• Why is it needed?
➢In small numbers, one can manually deploy and
manage containers.
➢But what would happen in an enterprise scenario,
where millions of customers are constantly
requesting for different types of services?
Eg: Google search?
➢It is impossible to handle this load manually.
Automation is needed.
➢Container Orchestration is the solution.
28
Container Orchestration
• How does it work?
➢Usually, a developer writes a configuration file which is
understood by the Orchestration tool.
➢This configuration file defines the desired state the
containerized application (i.e. the containers which
make it up) should be in.
➢The orchestration tool, based on this configuration file,
maintains the state of the containers to resemble the
desired state.
➢It manages the deployment of the containers, resiliency,
selection of the host (to deploy the containers).
➢Once deployed, it manages scalability, availability and
performance and even collecting and logging data for
later review.
29
Kubernetes Overview
• Kubernetes is the current Industry standard for
container orchestration.
➢Kubernetes quick intro: watch this video.
➢Kubernetes in 5 mins: watch this video.
30
Summary
• Traditional Application Deployment
• Cloud Native Applications
• Microservices Architecture
• Containers
• Container Orchestration
• Current Industry Standards
31
Acknowledgements and Additional
Reading
• What is Cloud Native Architecture?
• What is DevOps?
• What Are CI/CD and the CI/CD Pipeline?
• Containerization explained.
• What are Microservices?
• What is Container Orchestration?
32