SlideShare a Scribd company logo
Develop, Build, Deliver and
Run Microservices with
Containers in the Cloud
Eugene Fedorenko
About me
Eugene Fedorenko
Senior Architect
Flexagon
adfpractice-fedor.blogspot.com
@fisbudo
Agenda
•Microservices
•Containers
•Docker
•Build containers
•Kubernetes
•Deploy to the cloud
•OKE/AKS/GKE
•Serverless
•Build, Deploy and Test with functions
Start
Winter Olympics 2018
Dashboard microservice
Simple Development Lifecycle
Environments challenge
DEV TEST PROD
The Idea.
Virtual Machine
Container
•A lightweight, stand-alone, executable package of a piece of
software that includes everything needed to run it: code,
runtime, system tools, system libraries, settings.
•Containers share the host operating system rather than the
hardware directly
•Way more lightweight than a VM
•Docker is the most popular implementation
Docker Container Manager
Docker vs VM
Medal table microservice
Microservices
•An architecture pattern decomposing vertically a
monolith system into loosely coupled subsystems
(microservices). Nothing more. The pattern doesn't
dictate how it should be done technically.
•Just to highlight it: Microservices and Containers
are not the same and totally independent. You can
use Docker with a monolith app, and you can have
several microservices without using Docker at all.
Containers content
UI
• Alpine
• Nginx 1.10.2
• Jet app
– html, css, js
Middleware
• Ubuntu
• Java 1.8.0_171
• Tomcat 8.5
• ADF libraries
12.2.1
• ADF BC app (war)
Database
• Oracle Linux
• Oracle DB
11.2.0.2 XE
• DB schema with
dashboard tables
Build an image
FROM nginx:1.10.2-alpine
COPY web /usr/share/nginx/html
EXPOSE 80
Dockerfile
•Cloud based registry
– Public (free)
– Private
•Centralized resource for container images
•Docker CLI provides access to Docker Hub
– docker search, pull, login, push
Docker Hub
Simple Development Lifecycle
•Open Source platform (Google born)
•Orchestration engine for Ops
•A level of abstraction hiding the complexity of a hybrid
environment (prem/cloud)
•Configuration properties
•Load balancing
•Scalability
•Security
•Visibility
Kubernetes
• Cluster. Set of physical or VMs. Masters and workers.
• Node. Worker. Minion. A physical or virtual machine. Docker is installed on it.
• Kubelet. Internal service running on each worker node and managed by a master
node. Makes sure that everything works according to configuration files.
Kubernetes Architecture
• Kubectl. Kubernetes CLI.
• REST API.
• Dashboard.
Kubernetes Architecture
• Pod. Logical set of containers. A smallest deployable and scalable unit
• Replica set. Defines how many instances of a pod should be alive
• Deployment. Creates a Replica Set to bring up a desired number of Pods
Kubernetes Architecture
• Service. Logical set of pods with a stable ip/access rules and name. Has a
lightweight internal load balancer.
• Internal, External
Kubernetes Architecture
Microservice as a K8s application
Front End
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: olympics-dsh-fe
labels:
run: olympics-dsh-fe
spec:
replicas: 1
template:
metadata:
labels:
run: olympics-dsh-fe
spec:
containers:
- image: eugeneflexagon/olympics-dsh-fe:latest
imagePullPolicy: Always
name: olympics-dsh-fe
ports:
- containerPort: 80
protocol: TCP
apiVersion: v1
kind: Service
metadata:
name: olympics-dsh-fe-svc
spec:
selector:
run: olympics-dsh-fe
ports:
- port: 8088
targetPort: 80
type: ClusterIP
Middleware
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: olympics-dsh-mw
labels:
run: olympics-dsh-mw
spec:
replicas: 1
template:
metadata:
labels:
run: olympics-dsh-mw
spec:
containers:
- image: eugeneflexagon/olympics-dsh-mw:latest
env:
- name: OLYMPICS_DB_URL
value: "jdbc:oracle:thin:@olympics-dsh-db-svc:1521:XE"
name: olympics-dsh-mw
ports:
- containerPort: 8080
apiVersion: v1
kind: Service
metadata:
name: olympics-dsh-mw-svc
spec:
selector:
run: olympics-dsh-mw
ports:
- port: 8088
targetPort: 8080
type: ClusterIP
Database
apiVersion: apps/v1beta2
kind: StatefulSet
metadata:
name: olympics-dsh-db
labels:
run: olympics-dsh-db
spec:
selector:
matchLabels:
run: olympics-dsh-db
serviceName: "olympics-dsh-db-svc"
replicas: 1
template:
metadata:
labels:
run: olympics-dsh-db
spec:
containers:
- image: eugeneflexagon/olympics-dsh-db:latest
volumeMounts:
- mountPath: /u01/app/oracle/oradata
name: dsh-db
name: olympics-dsh-db
ports:
- containerPort: 1521
apiVersion: v1
kind: Service
metadata:
name: olympics-dsh-db-svc
spec:
selector:
run: olympics-dsh-db
ports:
- port: 1521
targetPort: 1521
clusterIP: None
volumeClaimTemplates:
- metadata:
name: dsh-db
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 100M
Pods communication
<Resource name="jdbc/olympics-db-connDS"
auth="Container"
type="oracle.jdbc.pool.OracleDataSource"
factory="oracle.jdbc.pool.OracleDataSourceFactory"
url="${OLYMPICS_DB_URL}"
...
spec:
containers:
- image: eugeneflexagon/olympics-dsh-mw
env:
- name: OLYMPICS_DB_URL
value: "jdbc:oracle:thin:@olympics-dsh-db-svc:1521:XE"
imagePullPolicy: Always
name: olympics-dsh-mw
Ingress
Ingress
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: olympics-ing
annotations:
kubernetes.io/ingress.class: 'nginx'
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- secretName: tls-secret
rules:
- http:
paths:
- path: /javabackend-dsh
backend:
serviceName: olympics-dsh-mw-svc
servicePort: 8088
- path: /olympics-dsh
backend:
serviceName: olympics-dsh-fe-svc
servicePort: 8088
K8S clusters in the cloud
Kubectl
•K8s command line tool
•Configured with “config” file
– $HOME/.kube/config
•Can be configured for multiple clusters (contexts)
•Configuration is provider specific
kubectl config use-context aws
kubectl apply -f olympics-fe.yaml
Build & Deploy automation
Build & Deploy automation
Workflows as Function Flows
Serverless
• A unit of work consumes resources only when it is used
– Function is a unit of work
• stateless
• serves one goal
• arguments (input) and result (output)
• Orchestration of independent pieces of work (functions as a
service FaaS)
– Carrying state of the entire flow (program)
– Error handling
– Transaction management
Serverless
• Code centric paradigm. Hyde Infrastructure.
–Focus on coding resolving business problems and forget about
infrastructure
–Everything is working on some “computing resources”
• Scalability
–Developers don't do anything for scaling. Scaling is handled
automatically.
• Billing
–Don't pay for idle time
–Pay for milliseconds
• Utilization
–Many small pieces running for short time on same VM
Serverless Platforms
•AWS Lambda
•Azure Functions
•OpenWhisk
– Open Source / Apache
•Fn
– Open Source / Oracle
– container native
•OpenFaaS
– Open Source / Alex Ellis
– container native
Fn
• Fn components are Docker containers
• Requires only Docker engine
• Can run on Kubernetes cluster
Ojet Builder Container
Ojet Builder Function
curl http://localhost:8080/ojetbuilder /build -d “$GIT_URL
$NEXUS_URL $PROJECT_VERSION"
Q&A

More Related Content

PPTX
Adf with docker
PDF
Kubernetes - Sailing a Sea of Containers
PDF
Kubernetes Architecture - beyond a black box - Part 1
PDF
Docker container basics and efficiency of Kubernetes
PPTX
Building Big Architectures
PPTX
DevOps with Kubernetes
PPTX
Orchestrating Docker Containers with Google Kubernetes on OpenStack
PDF
Containers docker-docker hub-azureacr-azure aci
Adf with docker
Kubernetes - Sailing a Sea of Containers
Kubernetes Architecture - beyond a black box - Part 1
Docker container basics and efficiency of Kubernetes
Building Big Architectures
DevOps with Kubernetes
Orchestrating Docker Containers with Google Kubernetes on OpenStack
Containers docker-docker hub-azureacr-azure aci

What's hot (20)

PDF
DockerCon SF 2015: DHE/DTR
PDF
Highly Available Persistent Applications in Containers by Kendrick Coleman, E...
PPTX
Introducing LinuxKit
PDF
On Prem Container Cloud - Lessons Learned
PPTX
Introduction to Kubernetes
PPTX
Dell Trials and Triumphs using Docker on Client Systems by Sean McGinnis and ...
PPTX
Windows Server and Docker - The Internals Behind Bringing Docker and Containe...
PDF
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
PPTX
Docker for Ops: Docker Networking Deep Dive, Considerations and Troubleshooti...
PDF
DCSF19 Containers for Beginners
PDF
JEEconf 2017
PDF
fabric8 ... and Docker, Kubernetes & OpenShift
PPTX
Docker introduction (1)
PPTX
Ultimate Guide to Microservice Architecture on Kubernetes
PDF
Introduction to Docker | Docker and Kubernetes Training
PPTX
Docker Platform 1.9
PPT
Building a Platform-as-a-Service with Docker and Node.js
PPTX
DockerCon 15 Keynote - Day 2
PPTX
Structured Container Delivery by Oscar Renalias, Accenture
PPTX
NetflixOSS for Triangle Devops Oct 2013
DockerCon SF 2015: DHE/DTR
Highly Available Persistent Applications in Containers by Kendrick Coleman, E...
Introducing LinuxKit
On Prem Container Cloud - Lessons Learned
Introduction to Kubernetes
Dell Trials and Triumphs using Docker on Client Systems by Sean McGinnis and ...
Windows Server and Docker - The Internals Behind Bringing Docker and Containe...
Proof of Concept: Serverless with Swarm by Nirmal Mehta, Booz Allen Hamilton
Docker for Ops: Docker Networking Deep Dive, Considerations and Troubleshooti...
DCSF19 Containers for Beginners
JEEconf 2017
fabric8 ... and Docker, Kubernetes & OpenShift
Docker introduction (1)
Ultimate Guide to Microservice Architecture on Kubernetes
Introduction to Docker | Docker and Kubernetes Training
Docker Platform 1.9
Building a Platform-as-a-Service with Docker and Node.js
DockerCon 15 Keynote - Day 2
Structured Container Delivery by Oscar Renalias, Accenture
NetflixOSS for Triangle Devops Oct 2013
Ad

Similar to Microservices with containers in the cloud (20)

PPTX
Kubernetes 101
PDF
99cloud Docker Training module 2
PPTX
Docker and kubernetes_introduction
PDF
Intro to Kubernetes
PDF
Kubernetes
PPTX
KubernetesPPT.pptx
PPTX
Kubernetes: від знайомства до використання у CI/CD
PPT
Kubernetes for Cloud-Native Environments
PPTX
Kubernetes 101
PPTX
Webinar: Enabling Microservices with Containers, Orchestration, and MongoDB
PDF
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
PPTX
Intro to kubernetes
PPTX
Jenkins_K8s (2).pptx
PDF
Kubernetes for Beginners
PDF
Come costruire una Platform As A Service con Docker, Kubernetes Go e Java
PDF
Dessi docker kubernetes paas cloud
PDF
oci-container-engine-oke-100.pdf
PPTX
Kubernetes is all you need
PDF
WWCode Dallas - Kubernetes: Learning from Zero to Production
PPTX
Kubernetes
Kubernetes 101
99cloud Docker Training module 2
Docker and kubernetes_introduction
Intro to Kubernetes
Kubernetes
KubernetesPPT.pptx
Kubernetes: від знайомства до використання у CI/CD
Kubernetes for Cloud-Native Environments
Kubernetes 101
Webinar: Enabling Microservices with Containers, Orchestration, and MongoDB
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
Intro to kubernetes
Jenkins_K8s (2).pptx
Kubernetes for Beginners
Come costruire una Platform As A Service con Docker, Kubernetes Go e Java
Dessi docker kubernetes paas cloud
oci-container-engine-oke-100.pdf
Kubernetes is all you need
WWCode Dallas - Kubernetes: Learning from Zero to Production
Kubernetes
Ad

Recently uploaded (20)

PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
history of c programming in notes for students .pptx
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PPTX
ai tools demonstartion for schools and inter college
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
medical staffing services at VALiNTRY
PPTX
Essential Infomation Tech presentation.pptx
PPTX
Transform Your Business with a Software ERP System
PPTX
L1 - Introduction to python Backend.pptx
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Odoo Companies in India – Driving Business Transformation.pdf
Design an Analysis of Algorithms I-SECS-1021-03
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
history of c programming in notes for students .pptx
Navsoft: AI-Powered Business Solutions & Custom Software Development
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
wealthsignaloriginal-com-DS-text-... (1).pdf
Wondershare Filmora 15 Crack With Activation Key [2025
ai tools demonstartion for schools and inter college
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Operating system designcfffgfgggggggvggggggggg
medical staffing services at VALiNTRY
Essential Infomation Tech presentation.pptx
Transform Your Business with a Software ERP System
L1 - Introduction to python Backend.pptx
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Odoo Companies in India – Driving Business Transformation.pdf

Microservices with containers in the cloud

  • 1. Develop, Build, Deliver and Run Microservices with Containers in the Cloud Eugene Fedorenko
  • 2. About me Eugene Fedorenko Senior Architect Flexagon adfpractice-fedor.blogspot.com @fisbudo
  • 3. Agenda •Microservices •Containers •Docker •Build containers •Kubernetes •Deploy to the cloud •OKE/AKS/GKE •Serverless •Build, Deploy and Test with functions
  • 10. Container •A lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings. •Containers share the host operating system rather than the hardware directly •Way more lightweight than a VM •Docker is the most popular implementation
  • 14. Microservices •An architecture pattern decomposing vertically a monolith system into loosely coupled subsystems (microservices). Nothing more. The pattern doesn't dictate how it should be done technically. •Just to highlight it: Microservices and Containers are not the same and totally independent. You can use Docker with a monolith app, and you can have several microservices without using Docker at all.
  • 15. Containers content UI • Alpine • Nginx 1.10.2 • Jet app – html, css, js Middleware • Ubuntu • Java 1.8.0_171 • Tomcat 8.5 • ADF libraries 12.2.1 • ADF BC app (war) Database • Oracle Linux • Oracle DB 11.2.0.2 XE • DB schema with dashboard tables
  • 17. FROM nginx:1.10.2-alpine COPY web /usr/share/nginx/html EXPOSE 80 Dockerfile
  • 18. •Cloud based registry – Public (free) – Private •Centralized resource for container images •Docker CLI provides access to Docker Hub – docker search, pull, login, push Docker Hub
  • 20. •Open Source platform (Google born) •Orchestration engine for Ops •A level of abstraction hiding the complexity of a hybrid environment (prem/cloud) •Configuration properties •Load balancing •Scalability •Security •Visibility Kubernetes
  • 21. • Cluster. Set of physical or VMs. Masters and workers. • Node. Worker. Minion. A physical or virtual machine. Docker is installed on it. • Kubelet. Internal service running on each worker node and managed by a master node. Makes sure that everything works according to configuration files. Kubernetes Architecture
  • 22. • Kubectl. Kubernetes CLI. • REST API. • Dashboard. Kubernetes Architecture
  • 23. • Pod. Logical set of containers. A smallest deployable and scalable unit • Replica set. Defines how many instances of a pod should be alive • Deployment. Creates a Replica Set to bring up a desired number of Pods Kubernetes Architecture
  • 24. • Service. Logical set of pods with a stable ip/access rules and name. Has a lightweight internal load balancer. • Internal, External Kubernetes Architecture
  • 25. Microservice as a K8s application
  • 26. Front End apiVersion: extensions/v1beta1 kind: Deployment metadata: name: olympics-dsh-fe labels: run: olympics-dsh-fe spec: replicas: 1 template: metadata: labels: run: olympics-dsh-fe spec: containers: - image: eugeneflexagon/olympics-dsh-fe:latest imagePullPolicy: Always name: olympics-dsh-fe ports: - containerPort: 80 protocol: TCP apiVersion: v1 kind: Service metadata: name: olympics-dsh-fe-svc spec: selector: run: olympics-dsh-fe ports: - port: 8088 targetPort: 80 type: ClusterIP
  • 27. Middleware apiVersion: extensions/v1beta1 kind: Deployment metadata: name: olympics-dsh-mw labels: run: olympics-dsh-mw spec: replicas: 1 template: metadata: labels: run: olympics-dsh-mw spec: containers: - image: eugeneflexagon/olympics-dsh-mw:latest env: - name: OLYMPICS_DB_URL value: "jdbc:oracle:thin:@olympics-dsh-db-svc:1521:XE" name: olympics-dsh-mw ports: - containerPort: 8080 apiVersion: v1 kind: Service metadata: name: olympics-dsh-mw-svc spec: selector: run: olympics-dsh-mw ports: - port: 8088 targetPort: 8080 type: ClusterIP
  • 28. Database apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: olympics-dsh-db labels: run: olympics-dsh-db spec: selector: matchLabels: run: olympics-dsh-db serviceName: "olympics-dsh-db-svc" replicas: 1 template: metadata: labels: run: olympics-dsh-db spec: containers: - image: eugeneflexagon/olympics-dsh-db:latest volumeMounts: - mountPath: /u01/app/oracle/oradata name: dsh-db name: olympics-dsh-db ports: - containerPort: 1521 apiVersion: v1 kind: Service metadata: name: olympics-dsh-db-svc spec: selector: run: olympics-dsh-db ports: - port: 1521 targetPort: 1521 clusterIP: None volumeClaimTemplates: - metadata: name: dsh-db spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 100M
  • 29. Pods communication <Resource name="jdbc/olympics-db-connDS" auth="Container" type="oracle.jdbc.pool.OracleDataSource" factory="oracle.jdbc.pool.OracleDataSourceFactory" url="${OLYMPICS_DB_URL}" ... spec: containers: - image: eugeneflexagon/olympics-dsh-mw env: - name: OLYMPICS_DB_URL value: "jdbc:oracle:thin:@olympics-dsh-db-svc:1521:XE" imagePullPolicy: Always name: olympics-dsh-mw
  • 31. Ingress apiVersion: extensions/v1beta1 kind: Ingress metadata: name: olympics-ing annotations: kubernetes.io/ingress.class: 'nginx' nginx.ingress.kubernetes.io/rewrite-target: / spec: tls: - secretName: tls-secret rules: - http: paths: - path: /javabackend-dsh backend: serviceName: olympics-dsh-mw-svc servicePort: 8088 - path: /olympics-dsh backend: serviceName: olympics-dsh-fe-svc servicePort: 8088
  • 32. K8S clusters in the cloud
  • 33. Kubectl •K8s command line tool •Configured with “config” file – $HOME/.kube/config •Can be configured for multiple clusters (contexts) •Configuration is provider specific kubectl config use-context aws kubectl apply -f olympics-fe.yaml
  • 34. Build & Deploy automation
  • 35. Build & Deploy automation
  • 37. Serverless • A unit of work consumes resources only when it is used – Function is a unit of work • stateless • serves one goal • arguments (input) and result (output) • Orchestration of independent pieces of work (functions as a service FaaS) – Carrying state of the entire flow (program) – Error handling – Transaction management
  • 38. Serverless • Code centric paradigm. Hyde Infrastructure. –Focus on coding resolving business problems and forget about infrastructure –Everything is working on some “computing resources” • Scalability –Developers don't do anything for scaling. Scaling is handled automatically. • Billing –Don't pay for idle time –Pay for milliseconds • Utilization –Many small pieces running for short time on same VM
  • 39. Serverless Platforms •AWS Lambda •Azure Functions •OpenWhisk – Open Source / Apache •Fn – Open Source / Oracle – container native •OpenFaaS – Open Source / Alex Ellis – container native
  • 40. Fn • Fn components are Docker containers • Requires only Docker engine • Can run on Kubernetes cluster
  • 42. Ojet Builder Function curl http://localhost:8080/ojetbuilder /build -d “$GIT_URL $NEXUS_URL $PROJECT_VERSION"
  • 43. Q&A