Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

DCA-Docker Certified Associate

Download as pdf or txt
Download as pdf or txt
You are on page 1of 42

DCA- Docker Certified Associate

Agenda

● Monolithic and Microservices


● Software Life Cycle
● Containerization
● Docker
● Container Orchestration
Monolithic Architecture

● Monolith means composed all in one piece.

● The Monolithic application describes a single-tiered


software application in which different components
combined into a single program from a single platform.
● Tightly-coupled software that means routines
(modules, programs) that work in only one type of
system and are dependent upon each other
Monolithic and MicroServices
Monolithic Architecture

User Interface

Ride
Client
Parcel Data Dase

Courier

Shopping
Advantage of Monolithic Architecture

● Easier At the beginning


● Simple to test

● Simple to deploy
● Simple to scale horizontally behind a load balancer
Disadvantage of Monolithic Architecture
● Entire process goes down for any bug.
● Bug impact the entire application
● Difficulty to adopting new and advance technologies.
● Complex to understand entire application
● Slow down the startup time.
● Harder to update.
Microservice
● Microservices (or microservices architecture) are a cloud native architectural
approach in which a single application is composed of many loosely coupled
and independently deployable smaller components, or services.
● Microservices are loosely coupled system.
● In computing and systems design a loosely coupled system is one. in which
components are weakly associated (have breakable relationship) with each
other, and so, changes in one component least affect existence or performance
of another component.
● Instead of a monolithic architecture, each component of a microservice
architecture has: Its own CPU, Its own runtime environment.
Microservice Architecture

Bike Data Dase

Car Data Dase

API
Client Food Data Dase
Gateway/
User
Interface Parcel Data Dase

Courier Data Dase

Shop Data Dase


Advantage of Microservice Architecture
● Small, focused teams
● Small and Separated Code Base
● Right tool for the job
● Fault Isolation
● Scalability
● Data isolation
Disadvantage of Microservice Architecture
● Complex of deployment and operating a distributed System
● Network problems and latency
● Development and Testing of coupled services
● Complexity of transactions that span multiple databases
Where to Deploy MicroServices
● Multiple Physical Servers ??
Where to Deploy MicroServices
● Possible to Deploy Multiple Physical Server ..But …

That Would be Costly !!!!


Deploy Microservice In Virtual Machines ??
Yes Possible and will be more cost effective than PhySical
Server with lots of benefits..
Recap : Type 1 Hypervisor VS Type 2 Hypervisor
Drawback of Virtualization for Microservices

➢ High Utilization of CPU and Memory


➢ Higher Utilization of Storage
➢ Higher Cost
➢ Slower execution
Life Cycle of Software Development
Why The Code Sometimes is Not Working in Another
System

- Software Dependency
- Library Dependency
- Version of Dependency Software
- Version of Dependency Library
How to resolve this issues ?

If We can bundles an application’s code together with related configuration


files and libraries, and with the dependencies required for the application or
software to run..
How and Where Can we Run that bundles of Package.
Containerization Technology

● Containerization is defined as a form of operating system virtualization,


through which applications are run in isolated user spaces called
containers, all using the same shared operating system (OS)
● Container technology was born in 1979 with Unix version 7 and the chroot
system.This system was the first glimpse of an isolated process, and it
was soon adopted and added into BSD OS in 1982. However, container
technology would unfortunately not progress over the next two decades
and remain dormant
What is Container?
Container
● A container is a standard unit of software that packages
up code and all its dependencies so the application runs
quickly and reliably from one computing environment to
another.

● A standard package of software—known as a


container—bundles an application’s code together with
the related configuration files and libraries, and with the
dependencies required for the app to run. This allows
developers and IT pros to deploy applications seamlessly
across environments.
Virtual Machine VS Container
How the Containers are Isolated
Container Engine
A container engine is a piece of software that accepts user requests,
including command line options, pulls images, and from the end
user's perspective runs the container. There are many container
engines, including:

● Docker Engine
● RKT(ROCKET)
● LXC/LXD
● Podman
Container Image

● A container image is a lightweight, standalone, executable


package of software that includes everything needed to run
an application: code, runtime, system tools, system libraries
and settings.

● A container image is a file which is pulled down from a


Registry Server and used locally as a mount point when
starting Containers.
Container Registry
A container registry is a service that stores and distributes container
images and related artifacts. Container serves as a general catalog
of Docker container images.

● Docker Hub
● Red Hat Quay
● Alibaba Container Registry
● Google Container Registry
● And Many more …
Container Repository
A repository is a collection of container images in a registry that
have the same name, but different tags. For example, the following
three images are in the nginx repository:

● nginx:latest
● nginx:v1
● nginx:v2
Docker Engine overview

Original author(s) Solomon Hykes


Initial release March 20, 2013
Stable release 20.10.7 / 2 June 2021
Repository github.com/moby/moby
Written in Go
Docker Engine overview

Docker Engine is an open source containerization technology for building and


containerizing your applications. Docker Engine acts as a client-server
application with:
● A server with a long-running daemon process dockerd.
● APIs which specify interfaces that programs can use to talk to and instruct
the Docker daemon.
● A command line interface (CLI) client docker.
The CLI uses Docker APIs to control or interact with the Docker daemon
through scripting or direct CLI commands. Many other Docker applications
use the underlying API and CLI. The daemon creates and manage Docker
objects, such as images, containers, networks, and volumes.
Limitation
Limitations of Containers
Containers provide an easy way to package and run services. As the number of
containers managed by an organization grows, the work of manually starting them
rises exponentially along with the need to quickly respond to external demands.

When using containers in a production environment, enterprises often require:

● Easy communication between a large number of services.

● Resource limits on applications regardless of the number of containers running them.

● Responses to application usage spikes to increase or decrease running containers.

● Gradual roll-out of new release to set of users.

Enterprises often require a container orchestration technology because container runtimes


do not adequately address the above requirements.
What is Orchestration?

Orchestration is the configuration, management and


coordination of computer systems, applications, and services.
Docker Swarm for Container Orchestration

● Cluster management integrated with Docker Engine


● Decentralized design
● Scaling
● Desired state reconciliation
● Multi-host networking
● Service discovery
● Load balancing
● Secure by default
● Rolling updates
Summary
● Containers are an isolated application runtime created with very little overhead.
● A container image packages an application with all of its dependencies,
making it easier to run the application in different environments.
● Applications such as DockerEngine/Podman create containers using features of
the standard Linux kernel.
● Container image registries are the preferred mechanism for distributing
container images to multiple users and hosts.
● OpenShift orchestrates applications composed of multiple containers using Kubernetes.

● Kubernetes manages load balancing, high availability, and persistent storage for
containerized applications.
● OpenShift adds to Kubernetes multitenancy, security, ease of use, and
continuous integration and continuous development features.
● OpenShift routes enable external access to containerized applications in a
manageable way
Thanks Everyone

You might also like