OPENSLAVA’1
8
OCTOBER 18-19, 2018 BRATISLAVA, SLOVAKIA
Accenture conference on emerging
technologies and open source
Organizers
General partner
Media partner
Partners
Supporters
•Luigi Fugaro
•EMEA Middleware Architect @RedHat
•And you can find me:
− @foogaro
− @foogaro
− @foogaro
− @foogaro
ABOUT ME
That’s me
Internet
Name: OpenSlava
Password:Open2018
Agenda
•Presentation
•Lab
•Q/A
Agenda
•Presentation
•Lab
•Q/A
Agenda
•Presentation
•Lab
•Q/A
Cloud Native Applications
Why?
● We need to scale
● Cloud scales by design and definition
Cloud Native Applications
How?
● Containers
● Orchestrator
Cloud Native Applications
The problem
● Monolith applications
● Applications are stateful
● Applications need to be scale-aware
Cloud Native Applications
Solution
● Microservice approach
● 12-factor applications
● Enterprise support
Cloud Native Applications
Monolith
Cloud Native Applications
Monolith
Cloud Native Applications
Monolith Microservices
Cloud Native Applications
12-Factor application
Cloud Native Applications
12-Factor application
1.Codebase
2.Dependencies
3.Configuration
4.Backing Services
5.Build, Release, Run
6.Processes
7.Port Binding
8.Concurrency
9.Disposability
10.Dev/Prod Parity
11.Logs
12.Admin Processes
Cloud Native Applications
12-Factor application
1.Codebase
2.Dependencies
3.Configuration
4.Backing Services
5.Build, Release, Run
6.Processes
7.Port Binding
8.Concurrency
9.Disposability
10.Dev/Prod Parity
11.Logs
12.Admin Processes
13. Security
Cloud Native Applications
12-Factor application
1.Codebase
2.Dependencies
3.Configuration
4.Backing Services
5.Build, Release, Run
6.Processes
7.Port Binding
8.Concurrency
9.Disposability
10.Dev/Prod Parity
11.Logs
12.Admin Processes
13. Security
14. ???
Cloud Native Applications
12-Factor application
1.Codebase
2.Dependencies
3.Configuration
4.Backing Services
5.Build, Release, Run
6.Processes
7.Port Binding
8.Concurrency
9.Disposability
10.Dev/Prod Parity
11.Logs
12.Admin Processes
13.Security
14.Next…
Cloud Native Applications
The right tool for the right job
Cloud Native Applications
Cloud Native Applications
Which are the de-facto standards in terms of
DevOps?
(hopefully opensource)
Cloud Native Applications
Cloud Native Applications
Cloud Native Applications
Do we have a platform that merges the right
tool for the right job?
Cloud Native Applications
Cloud Native Applications
Self-Service
Multi-language
Automation
Collaboration
Multi-tenant
Standards-based
Web-scale
Open Source
Secure
Cloud Native Applications
Self-Service
Multi-language
Automation
Collaboration
Multi-tenant
Standards-based
Web-scale
Open Source
Secure
Cloud Native Applications
Self-Service
Multi-language
Automation
Collaboration
Multi-tenant
Standards-based
Web-scale
Open Source
Secure
Cloud Native Applications
ANY
CONTAINER
Amazon Web Services Microsoft Azure Google Cloud
OpenStack
Datacenter
Laptop
ANY
INFRASTRUCTURE
APPLICATION LIFECYCLE MANAGEMENT
ENTERPRISE CONTAINER HOST
CONTAINER ORCHESTRATION AND MANAGEMENT
(KUBERNETES)
Cloud Native Applications
CRI-O is an implementation of the Kubernetes CRI (Container
Runtime Interface) to enable using OCI (Open Container Initiative)
compatible runtimes.
Optimized for
Kubernetes
Any OCI-compliant
container from any
OCI registry
(including docker)
Improve Security
and Performance at
scale
Cloud Native Applications
VIRTUAL MACHINES CONTAINERS
VM virtualizes the hardware Container virtualizes the process
VM
OS Dependencies
Kernel
Hypervisor
Hardware
App App App App
Hardware
Container Host (Kernel)
Container
App
OS deps
Container
App
OS deps
Container
App
OS deps
Container
App
OS deps
Cloud Native Applications
Virtual machines are NOT portable across hypervisor and do NOT provide portable
packaging for applications
VM Type X
Application
OS dependencies
Operating System
BARE METAL PRIVATE CLOUD PUBLIC CLOUD
VIRTUALIZATION
LAPTOP
Application
OS dependencies
Operating System
VM Type Y
Application
OS dependencies
Operating System
VM Type Z
Application
OS dependencies
Operating System
Guest VM
Application
OS dependencies
Operating System
Cloud Native Applications
LAPTOP
Container
Application
OS dependencies
Guest VM
RHEL
BARE METAL
Container
Application
OS dependencies
RHEL
VIRTUALIZATION
Container
Application
OS dependencies
Virtual Machine
RHEL
PRIVATE CLOUD
Container
Application
OS dependencies
Virtual Machine
RHEL
PUBLIC CLOUD
Container
Application
OS dependencies
Virtual Machine
RHEL
RHEL Containers + RHEL Host = Guaranteed Portability
Across Any Infrastructure
Cloud Native Applications
Base Image
Image Layer 1
Image Layer 2
Image Layer 3
Base RHEL
OS Update Layer
Java Runtime Layer
Application Layer
Container Image Layers Example Container Image
Cloud Native Applications
CONTAINER
A container is the smallest compute unit
Cloud Native Applications
Containers are created from container images
CONTAINER
CONTAINER
IMAGE
BINARY RUNTIME
Cloud Native Applications
Container images are stored in an image registry
IMAGE REGISTRY
CONTAINER
CONTAINER
IMAGE
CONTAINER
IMAGE
CONTAINER
IMAGE
CONTAINER
IMAGE
CONTAINER
IMAGE
CONTAINER
IMAGE
Cloud Native Applications
An image repository contains all versions of an image in the
image registry
IMAGE REGISTRY
frontend:latest
frontend:2.0
frontend:1.1
frontend:1.0 CONTAINER
IMAGE
mongo:latest
mongo:3.7
mongo:3.6
mongo:3.4 CONTAINER
IMAGE
myregistry/frontend myregistry/mongo
Cloud Native Applications
Containers are wrapped in pods which are units of
deployment and management
POD
POD
CONTAINER CONTAINER
CONTAINER
IP: 10.1.0.11 IP: 10.1.0.55
Cloud Native Applications
Pods configuration is defined in a deployment
image name
replicas
labels
cpu
memory
storage
POD
CONTAINER
POD
CONTAINER
POD
CONTAINER
DEPLOYMENT
Cloud Native Applications
Services provide internal load-balancing and service discovery
across pods
POD
CONTAINER
POD
CONTAINER
POD
CONTAINER
BACKEND SERVICE
POD
CONTAINER
role: backend
FRONTEND
SERVICE
role: frontend
Cloud Native Applications
Apps can talk to each other via services
POD
CONTAINER
POD
CONTAINER
POD
CONTAINER
BACKEND SERVICE
POD
CONTAINER
role: backend
Invoke
Backend API
FRONTEND
SERVICE
role: frontend
Cloud Native Applications
Routes add services to the external load-balancer and
provide readable urls for the app
POD
CONTAINER
POD
CONTAINER
POD
CONTAINER
BACKEND SERVICE
ROUTE
be.app-prod.mycompany.com
> curl http://app-prod.mycompany.com
POD
CONTAINER
FRONTEND SERVICE
ROUTE
fe.app-prod.mycompany.com
Cloud Native Applications
OpenShift Architecture
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
Cloud Native Applications
RHEL
NODE
c
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
C
C
C C
C
C
C C
C C
Cloud Native Applications
RHEL
NODE
c
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
C
C
C C
C
C
C C
C C
Container
Image
Container
Pod
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
API/AUTHENTICATION
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
API/AUTHENTICATION
DATA STORE
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
API/AUTHENTICATION
DATA STORE
SCHEDULER
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
API/AUTHENTICATION
DATA STORE
SCHEDULER
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
API/AUTHENTICATION
DATA STORE
SCHEDULER
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
RHEL
NODE
RHEL
NODE
C
C
RHEL
NODE
c
C
C
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
RHEL
NODE
RHEL
NODE
C
C
RHEL
NODE
c
C
C
HEALTH/SCALING
C C
C
C
C
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
RHEL
NODE
RHEL
NODE
C
C
RHEL
NODE
c
C
C
HEALTH/SCALING
C C
C
C
C C
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
API/AUTHENTICATION
DATA STORE
SCHEDULER
RHEL
NODE
RHEL
NODE
C
C
RHEL
NODE
c
C
C
HEALTH/SCALING
C C
C
C
C C
Cloud Native Applications
PHYSICAL VIRTUAL PRIVATE PUBLIC HYBRID
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RHEL
NODE
RED HAT
ENTERPRISE LINUX
MASTER
REGISTRY
PERSISTENT
STORAGE
SERVICE LAYER
ROUTING LAYER
SCM
(GIT)
CI/CD
EXISTING AUTOMATION
TOOLSETS
API/AUTHENTICATION
DATA STORE
SCHEDULER
HEALTH/SCALING
Cloud Native Applications
Cloud Native Applications
Cloud Native Applications
Cloud Native Applications
Cloud Native Applications
OpenShift Installation
Architecture
Cloud Native Applications
Application
Traffic
Dev and Ops
User
INFRA
MASTER
NODE NODE
Proof-of-Concept Architecture
Cloud Native Applications
High-Availability Architecture
ENTERPRISE
LOAD-BALANCER
Application
Traffic
Dev and Ops
User
INFRA
MASTER INFRA
NODE NODE NODE NODE
Cloud Native Applications
Full High-Availability Architecture
ENTERPRISE LOAD-BALANCER
Application
Traffic
Dev and Ops
User
NODE
MASTER MASTER INFRA
MASTER INFRA
NODE NODE NODE NODE
NODE
INFRA
NODE
Cloud Native Applications
INFRA
MASTER
NODE
A laptop with at least 8GB of RAM to host the master, the infra
and the compute nodes.
$ oc cluster up --logging=false --metrics=true …
Cloud Native Applications
LAB and Q/A (anytime you want/need)
What you need?
Internet
Root/Admin access to your PC
Docker
JDK 1.8+
OC – OpenShift CLI tool
https://github.com/openshift/origin/releases
Cloud Native Applications
Presentation and labs available at:
https://github.com/foogaro/openslava-2018
Grazie
Ciao

OpenSlava 2018 - Cloud Native Applications with OpenShift