SlideShare a Scribd company logo
Monolith to Microservices
with containers
Marcel Dempers - Solutions Architect @ Webjet
$> whoami
● Solutions Architect
○ Distributed System Platforms
○ Performance Engineering
○ Microservice Architectures
○ Containers & Kubernetes
● YouTube
● I also lift weights
● https://marcel.guru
@marceldempers https://youtube.com/c/marceldempers
Monolith Paradigm: example
User Interface
(Web site)
Business logic
(Back end) API
Large
Database
LOCALHOST
Identify your pain points
- Our release cycles were slow - Every 3-6 months deployments
- Monolithic code is complex
- Difficult to implement change
- Test surface is large (feature pileup)
- High Risk deployments
- Low team morale
Taking the First step
- Reduce operational overhead on monolith
- Target low hanging fruit
- For Webjet, this was automated deployments
- Without downtime
- Teams gained confidence
- Business gained confidence
- Agile  DevOps
- Automate yourself out of a job
- Deploy weekly
Selecting first candidate
- Decoupling the monolith
- Don’t decouple for the sake of decoupling
- Don’t over-engineer
- If it ain’t broke, don’t fix it
- Low hanging fruit
- Do what adds value
- MVP
- Found Low critical, valuable feature candidate
- Write it in .NET Core
Azure Web Apps
- We deployed our first web app
- IIS as a service model
- don’t have to manage VMs and infrastructure
- Less operational overhead
- At some point we had 60
- - Allowed teams to learn about microservices
- - Less unknowns (Managed IIS)
- Focus on agility and value
New pain points
- We needed more
- Became quite expensive at scale
- 60 apps
- 60 servers
- 120 servers data center HA
- 240 servers = cross geo HA
- Shared infrastructure = noisy neighbour
- Lot's more infrastructure
- Release cycles not fast enough
- Network not efficient enough
Era of containers
- Why containers ???
- Containers are enablers
- Resource isolation = contain noisy neighbour
- Port mappings
- Host machines are immutable
- Give me a kernel
- Stateless architectures
- Utilise PaaS for data (S3,blob etc)
- Immutable builds
- Don’t install anything on a build server ever!
- Only docker :)
- Jenkins pipelines as code
- Describe entire app and its dependencies in a single dockerfile
Choosing an orchestrator
- What is a container orchestrator?
- Deploys and runs containers
- Scheduler
- Monitor container health, restarts, probes
- Enforce resource limits
- DC/OS by Mesosphere , Kubernetes , Docker Enterprise ??? which one ?
- It doesn’t matter which one
- We did not lock ourselves to the platform
- We chose DC/OS
- We switched to K8s a week after going live
Kubernetes
- Platform to build platform
- Desired State Configuration
- Entire infrastructure described in a YAML file
- kubectl apply -f environment.yaml
- Manages ports for containers
- Internal DNS
- Ingress Traffic
- Deployments & Pods
VM VM VM VM VM
KUBERNETES API db
node node node node node
*Deployments - replicas=3 How to deploy=graceful
* Pod
- name=app
- port=80
- myimage:v0.0.1
- environment variables
appappapp app
*Services
- Describes
traffic
SERVICE (private DNS)SERVICE (type = LoadBalancer)
LOAD
BALANCER
(PUBLIC IP)
OTHERS
● CONFIGMAP
● SECRETS (passwordskeys)
KUBERNETES API db- Namespace
- Ingress
- Deployment
- Pod
- Ingress controller
- Service
- Type = LoadBalancer
Ingress controller
LOAD
BALANCER
(PUBLIC IP)- Namespace
- flights
- Deployment
- Pod
- flights-search-service
- Service
- Type = ClusterIP
- Ingress
- Host = host.com
- Path /api/flightsearch
Service
Pod 1
Pod 2
Ingress
Host.com
/api/flightssearch
Service
Pod A
Pod B
Ingress
Host.com
/api/bookservice
What’s next
- Scaling for performance
- Scale traffic to 100k+ requests  sec
- Scheduling for scale
- CPU + Memory allocation efficiency
- Capacity planning
- Quality of Service tuning
- Multitenancy
- Performance engineering
- Flame graph style metrics
- Developer Experience Improvements
We're hiring :
Careers Email : rrhh@sunhotels.com
Jobs Link : https://www.linkedin.com/company/webbeds-europe/jobs/

More Related Content

PDF
From Zero to Hero @ PyGrunn 2014
PDF
Speed Up Uber's Presto with Alluxio
PDF
Splitgraph: Open data and beyond - SF ClickHouse Meetup Sep 2020
PPT
Key Challenges in Cloud Computing and How Yahoo! is Approaching Them
PDF
Netflix Data Benchmark @ HPTS 2017
PPTX
Cost Effective Presto on AWS with Spot Nodes - Strata SF 2019
PPTX
How Docker Accelerates Continuous Development at ironSource: Containers #101 ...
PDF
OpenNebulaConf2017EU: IPP Cloud by Jimmy Goffaux, IPPON
From Zero to Hero @ PyGrunn 2014
Speed Up Uber's Presto with Alluxio
Splitgraph: Open data and beyond - SF ClickHouse Meetup Sep 2020
Key Challenges in Cloud Computing and How Yahoo! is Approaching Them
Netflix Data Benchmark @ HPTS 2017
Cost Effective Presto on AWS with Spot Nodes - Strata SF 2019
How Docker Accelerates Continuous Development at ironSource: Containers #101 ...
OpenNebulaConf2017EU: IPP Cloud by Jimmy Goffaux, IPPON

What's hot (20)

PPTX
Hyperloglog Lightning Talk
PDF
OpenNebulaConf2017EU: FairShare Scheduling by Valentina Zaccolo, INDIGO
PPTX
Sizing Your Scylla Cluster
PDF
OpenNebulaConf2017EU: Hyper converged infrastructure with OpenNebula and Ceph...
PDF
OpenNebulaConf2017EU: Elastic Clusters for Data Analysis by Carlos de Alfonso...
PDF
Introducing MagnetoDB, a key-value storage sevice for OpenStack
PDF
Scalable Clusters On Demand
PPTX
CoreOS fest 2016 Summary - DevOps BP 2016 June
PDF
Logging for Containers
PDF
OpenNebulaConf2017EU: Enabling Dev and Infra teams by Lodewijk De Schuyter,De...
PDF
Containers and Logging
PPTX
Amazon Web Services lection 4
PDF
Why You Definitely Don’t Want to Build Your Own Time Series Database
PPTX
Apache Cassandra Lunch #52: Airflow and Cassandra for Cluster Management
PDF
Dynomite - PerconaLive 2017
PDF
Strip your TEXT fields - Exeter Web Feb/2016
PDF
Introduction to new high performance storage engines in mongodb 3.0
PDF
Zentrales logging mit dem Elastic Stack
PDF
Cloud Native Logging / Fluentd Summit Tokyo
PDF
Fluent Bit: Log Forwarding at Scale
Hyperloglog Lightning Talk
OpenNebulaConf2017EU: FairShare Scheduling by Valentina Zaccolo, INDIGO
Sizing Your Scylla Cluster
OpenNebulaConf2017EU: Hyper converged infrastructure with OpenNebula and Ceph...
OpenNebulaConf2017EU: Elastic Clusters for Data Analysis by Carlos de Alfonso...
Introducing MagnetoDB, a key-value storage sevice for OpenStack
Scalable Clusters On Demand
CoreOS fest 2016 Summary - DevOps BP 2016 June
Logging for Containers
OpenNebulaConf2017EU: Enabling Dev and Infra teams by Lodewijk De Schuyter,De...
Containers and Logging
Amazon Web Services lection 4
Why You Definitely Don’t Want to Build Your Own Time Series Database
Apache Cassandra Lunch #52: Airflow and Cassandra for Cluster Management
Dynomite - PerconaLive 2017
Strip your TEXT fields - Exeter Web Feb/2016
Introduction to new high performance storage engines in mongodb 3.0
Zentrales logging mit dem Elastic Stack
Cloud Native Logging / Fluentd Summit Tokyo
Fluent Bit: Log Forwarding at Scale
Ad

Similar to From monolith to microservice with containers. (20)

PDF
Kash Kubernetified
PDF
minimesos. Apache Mesos made easy
PPTX
Performance and Scale: Billions of request per day (DDD2019)
PDF
Modern Elastic Datacenter Architecture
PDF
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
PDF
KubeCon 2017: Kubernetes from Dev to Prod
PDF
IBM Think Session 8598 Domino and JavaScript Development MasterClass
PDF
Apache Mesos Overview and Integration
PDF
Docker dev ops for cd meetup 12-14
PDF
Openstack devops challenges
PDF
Demystifying Containerization Principles for Data Scientists
PPTX
Docker - Demo on PHP Application deployment
PPTX
Kubernetes @ meetic
PPTX
Integration in the age of DevOps
PPTX
Microservices with Node and Docker
PDF
EVE Microservices Platform
PDF
Open shift and docker - october,2014
PPTX
OpenStack @ Workday - CI/CD
PPTX
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
PDF
Cloud Native Dünyada CI/CD
Kash Kubernetified
minimesos. Apache Mesos made easy
Performance and Scale: Billions of request per day (DDD2019)
Modern Elastic Datacenter Architecture
OSDC 2018 | Three years running containers with Kubernetes in Production by T...
KubeCon 2017: Kubernetes from Dev to Prod
IBM Think Session 8598 Domino and JavaScript Development MasterClass
Apache Mesos Overview and Integration
Docker dev ops for cd meetup 12-14
Openstack devops challenges
Demystifying Containerization Principles for Data Scientists
Docker - Demo on PHP Application deployment
Kubernetes @ meetic
Integration in the age of DevOps
Microservices with Node and Docker
EVE Microservices Platform
Open shift and docker - october,2014
OpenStack @ Workday - CI/CD
Webinar: OpenEBS - Still Free and now FASTEST Kubernetes storage
Cloud Native Dünyada CI/CD
Ad

Recently uploaded (20)

PDF
Machine learning based COVID-19 study performance prediction
PPTX
Cloud computing and distributed systems.
PDF
cuic standard and advanced reporting.pdf
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
PPTX
Big Data Technologies - Introduction.pptx
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Review of recent advances in non-invasive hemoglobin estimation
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Empathic Computing: Creating Shared Understanding
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
Machine learning based COVID-19 study performance prediction
Cloud computing and distributed systems.
cuic standard and advanced reporting.pdf
20250228 LYD VKU AI Blended-Learning.pptx
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Building Integrated photovoltaic BIPV_UPV.pdf
ACSFv1EN-58255 AWS Academy Cloud Security Foundations.pptx
Big Data Technologies - Introduction.pptx
The AUB Centre for AI in Media Proposal.docx
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Review of recent advances in non-invasive hemoglobin estimation
MYSQL Presentation for SQL database connectivity
Mobile App Security Testing_ A Comprehensive Guide.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Advanced methodologies resolving dimensionality complications for autism neur...
Empathic Computing: Creating Shared Understanding
The Rise and Fall of 3GPP – Time for a Sabbatical?
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Per capita expenditure prediction using model stacking based on satellite ima...

From monolith to microservice with containers.

  • 1. Monolith to Microservices with containers Marcel Dempers - Solutions Architect @ Webjet
  • 2. $> whoami ● Solutions Architect ○ Distributed System Platforms ○ Performance Engineering ○ Microservice Architectures ○ Containers & Kubernetes ● YouTube ● I also lift weights ● https://marcel.guru @marceldempers https://youtube.com/c/marceldempers
  • 3. Monolith Paradigm: example User Interface (Web site) Business logic (Back end) API Large Database LOCALHOST
  • 4. Identify your pain points - Our release cycles were slow - Every 3-6 months deployments - Monolithic code is complex - Difficult to implement change - Test surface is large (feature pileup) - High Risk deployments - Low team morale
  • 5. Taking the First step - Reduce operational overhead on monolith - Target low hanging fruit - For Webjet, this was automated deployments - Without downtime - Teams gained confidence - Business gained confidence - Agile DevOps - Automate yourself out of a job - Deploy weekly
  • 6. Selecting first candidate - Decoupling the monolith - Don’t decouple for the sake of decoupling - Don’t over-engineer - If it ain’t broke, don’t fix it - Low hanging fruit - Do what adds value - MVP - Found Low critical, valuable feature candidate - Write it in .NET Core
  • 7. Azure Web Apps - We deployed our first web app - IIS as a service model - don’t have to manage VMs and infrastructure - Less operational overhead - At some point we had 60 - - Allowed teams to learn about microservices - - Less unknowns (Managed IIS) - Focus on agility and value
  • 8. New pain points - We needed more - Became quite expensive at scale - 60 apps - 60 servers - 120 servers data center HA - 240 servers = cross geo HA - Shared infrastructure = noisy neighbour - Lot's more infrastructure - Release cycles not fast enough - Network not efficient enough
  • 9. Era of containers - Why containers ??? - Containers are enablers - Resource isolation = contain noisy neighbour - Port mappings - Host machines are immutable - Give me a kernel - Stateless architectures - Utilise PaaS for data (S3,blob etc) - Immutable builds - Don’t install anything on a build server ever! - Only docker :) - Jenkins pipelines as code - Describe entire app and its dependencies in a single dockerfile
  • 10. Choosing an orchestrator - What is a container orchestrator? - Deploys and runs containers - Scheduler - Monitor container health, restarts, probes - Enforce resource limits - DC/OS by Mesosphere , Kubernetes , Docker Enterprise ??? which one ? - It doesn’t matter which one - We did not lock ourselves to the platform - We chose DC/OS - We switched to K8s a week after going live
  • 11. Kubernetes - Platform to build platform - Desired State Configuration - Entire infrastructure described in a YAML file - kubectl apply -f environment.yaml - Manages ports for containers - Internal DNS - Ingress Traffic - Deployments & Pods
  • 12. VM VM VM VM VM KUBERNETES API db node node node node node *Deployments - replicas=3 How to deploy=graceful * Pod - name=app - port=80 - myimage:v0.0.1 - environment variables appappapp app *Services - Describes traffic SERVICE (private DNS)SERVICE (type = LoadBalancer) LOAD BALANCER (PUBLIC IP) OTHERS ● CONFIGMAP ● SECRETS (passwordskeys)
  • 13. KUBERNETES API db- Namespace - Ingress - Deployment - Pod - Ingress controller - Service - Type = LoadBalancer Ingress controller LOAD BALANCER (PUBLIC IP)- Namespace - flights - Deployment - Pod - flights-search-service - Service - Type = ClusterIP - Ingress - Host = host.com - Path /api/flightsearch Service Pod 1 Pod 2 Ingress Host.com /api/flightssearch Service Pod A Pod B Ingress Host.com /api/bookservice
  • 14. What’s next - Scaling for performance - Scale traffic to 100k+ requests sec - Scheduling for scale - CPU + Memory allocation efficiency - Capacity planning - Quality of Service tuning - Multitenancy - Performance engineering - Flame graph style metrics - Developer Experience Improvements
  • 15. We're hiring : Careers Email : rrhh@sunhotels.com Jobs Link : https://www.linkedin.com/company/webbeds-europe/jobs/