SlideShare a Scribd company logo
1 of 28
Migration of an Enterprise UI Microservice System
from Cloud Foundry to Kubernetes
Tony Erwin, Senior Technical Staff Member, IBM
Jonathan Schweikhart, Console DevOps Lead, IBM
Agenda
• Overview of IBM Cloud Console Architecture
• What is Cloud Foundry? What is Kubernetes? Why Switch?
• Experiences And Lessons Learned During Migration
• Conclusion
Overview of IBM Cloud
Console Architecture
IBM Cloud Console
• Large UI serving as front-end to the IBM Cloud
• Lets users create, view, and manage PaaS/IaaS resources:
• Cloud Foundry apps & services
• Kubernetes clusters
• Virtual servers
• Bare metal
• Provides additional functionality for:
• Registration/onboarding
• Identity and Access Management (IAM)
• Billing/usage
• Docs
IBM Cloud Console Architecture
• Started life about 5 years
ago as a monolithic Java
app
• Now composed of around
50 Node.js, cloud-native
microservices + more than
30 external plugins
• Originally deployed as
apps to Cloud Foundry
• Currently deployed as
containers on Kubernetes
uService 1 uService 2 … uService nuService n-1
Backend APIs (CF, Containers, VMs, IAM, Billing/Usage, etc.)
Console Client
Proxy
Core Deployment
Watson IoT
Functions Clusters
Mobile …
(External Plugins)
What is Cloud Foundry?
What is Kubernetes?
Why Switch?
What is Cloud Foundry*?
• Provides a PaaS with an abstraction at the
application level
• Developers can focus on code rather than underlying
infrastructure
• Leverages the Open Service Broker API to make
it easy to use services from apps
• Manages apps as Diego containers (internally)
* Technically describing the Cloud Foundry Application Runtime which is one of the two open source components from the CF Foundation.
What is Kubernetes?
• Abstracts at the container level
• Provides many of the benefits of PaaS with the
flexibility of IaaS
• Often referred to as IaaS+
• Orchestrates computing, networking, and storage
infrastructure on behalf of user workloads
• Enables portability across infrastructure providers
Why Did We Switch?
• Nothing “wrong” with CF
• Very easy to get apps running, relatively low learning curve, etc.
• Used in some way by at least half of the Fortune 500
• Kubernetes offers several advantages for our use case
• More granular control to better manage our large, complex microservice system
• Dedicated clusters to avoid performance/availability problems from friendly fire
• In fairness, CF can be installed in a dedicated manner as well (even on Kubernetes!)
• Simpler “front door” stack with built-in Ingress proxy to avoid extra network hops
• Private host names
• All apps in CF have public host names, so not possible to have a “private” microservice
• Private networking
• Calls between microservices in CF require going out over the public internet
• Improved memory and CPU usage (dynamic allocation)
• Ability to run our own local services (like Redis)
• Integrated monitoring with Prometheus
Experiences And Lessons
Learned During Migration
Need to Dockerize
Migrating Manifest to Helm
•Helm - Deployment
•Docker image
•CPU & memory
•Environment variables
•Helm – Service
•Single alias for the deployment
•Helm – Ingress
•Hostname/URL mapping to service
Deployment Configuration
•Cloud Foundry
• Configuration per deployment environment
•Kubernetes
• Helm cli makes hierarchical simple
• Global
• Global-<Environment>
• Cluster
• Cluster-<namespace>
Exposure of Microservices
• Cloud Foundry
• Public URL per microservice
• Each microservice has to protect against direct access
• Security concerns
• Common code repeated
• Kubernetes
• Microservice gets to choose exposure
• Service – Allows an internal only route to the application
• Ingress – Allows external routes to be defined to map to Services
• Protections take place at a higher level to allow microservices
to focus less on exposure issues
Common Code Migration Problems
•Cloud Foundry assumptions
• Environment variable assumptions
• VCAP_SERVICES
• PORT
• Invalid OS name characters like hyphens
• URL format for intra-microservice communication
• CF: https://ace-common-production.us-south.bluemix.net
• Kubernetes: http://common
• URL construction vs URL variables
Installing a Local Redis w/ Stateful Sets
Monitoring in Kubernetes
Monitoring NGINX Ingress
• Nginx logs contain invaluable metrics about incoming calls
• Timestamp
• HTTP method
• HTTP status codes
• Headers
• URI
• Response time
• Implemented custom solution for accessing those metrics
• Configure nginx to log to syslog
• Create microservice that scrapes the syslog and exposes the data to
Prometheus
• Filter, monitor, and alert
Red/Black Deployments
Built-in Liveness/Readiness Checks
• /readiness
• ”I am ready to accept traffic”
• One time initialization checks
• Connections to resources (URLs, DBs, etc..)
• Periodic checks
• Circuit breakers
• Current status
• Content Throttling
• /liveness
• “I should keep living“
• Unrecoverable situations/Unexpected Failures
• “Have you tried turning it off and on again?”
Rolling Out Kubernetes
Geo Load Balancing and Failover (CF)
• One global URL
(https://console.bluemix.net)
• Use Dyn geo load balancing
to serve UI from the nearest
healthy region
• If healthcheck in a region
shows a problem, Dyn routes
to the next closest healthy
region
• Odds of all regions being
down at the same time much
less than one region being
down
• Reduces regional latency
Geo Load Balancing and Failover (Migration)
• Needed to verify stability
of Kube clusters before
turning off CF
deployments in
production
• Solution: Add Kube
clusters to Dyn rotation
and run CF deployments
side-by-side with Kube
deployments
Geo Load Balancing and Failover (Final)
• Once satisfied,
removed CF
deployments from
rotation and only
Kube deployments
remained
Conclusion
Conclusion
•CF is a great technology, but Kubernetes better
meets the needs of our microservice system
•Nothing is free, and we had to solve several new
problems along the way
•Allowed us to achieve greater performance,
scalability, reliability, and security than we had
before
Questions?
•Tony Erwin
•Email: aerwin@us.ibm.com
•Twitter: @tonyerwin
•Jonathan Schweikhart
•Email: jschweik@us.ibm.com
The End

More Related Content

What's hot

Building a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackBuilding a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackAnimesh Singh
 
Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Stuart Charlton
 
WSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OSWSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OSImesh Gunaratne
 
Introduction into Windows Azure Pack and Service Management Automation
Introduction into Windows Azure Pack and Service Management AutomationIntroduction into Windows Azure Pack and Service Management Automation
Introduction into Windows Azure Pack and Service Management AutomationMichael Rüefli
 
Planning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud FoundryPlanning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud FoundryImesh Gunaratne
 
User Transparent Service Migration to the Cloud
User Transparent Service Migration to the CloudUser Transparent Service Migration to the Cloud
User Transparent Service Migration to the CloudTim Mackey
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentDave Ward
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesRobin Howlett
 
Delivering Hybrid Cloud Solutions on Microsoft Azure
Delivering Hybrid Cloud Solutions on Microsoft AzureDelivering Hybrid Cloud Solutions on Microsoft Azure
Delivering Hybrid Cloud Solutions on Microsoft AzureKemp
 
REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesEberhard Wolff
 
Using Packer to Migrate XenServer Infrastructure to CloudStack
Using Packer to Migrate XenServer Infrastructure to CloudStackUsing Packer to Migrate XenServer Infrastructure to CloudStack
Using Packer to Migrate XenServer Infrastructure to CloudStackTim Mackey
 
Containers docker-docker hub-azureacr-azure aci
Containers docker-docker hub-azureacr-azure aciContainers docker-docker hub-azureacr-azure aci
Containers docker-docker hub-azureacr-azure aciRajesh Kolla
 
Container Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher KubernetesContainer Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher KubernetesVishal Biyani
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...Ido Flatow
 
Service discovery in mesos miguel, Angel Guillen
Service discovery in mesos miguel, Angel GuillenService discovery in mesos miguel, Angel Guillen
Service discovery in mesos miguel, Angel GuillenJ On The Beach
 
Cloud Messaging with NServiceBus and Microsoft Azure
Cloud Messaging with NServiceBus and Microsoft AzureCloud Messaging with NServiceBus and Microsoft Azure
Cloud Messaging with NServiceBus and Microsoft AzureParticular Software
 
Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014
Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014
Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014Jason Anderson
 
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...Tony Erwin
 

What's hot (20)

Building a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStackBuilding a PaaS Platform like Bluemix on OpenStack
Building a PaaS Platform like Bluemix on OpenStack
 
Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!Platform Clouds, Containers, Immutable Infrastructure Oh My!
Platform Clouds, Containers, Immutable Infrastructure Oh My!
 
WSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OSWSO2 API Manager Reference Architecture for DC/OS
WSO2 API Manager Reference Architecture for DC/OS
 
Introduction into Windows Azure Pack and Service Management Automation
Introduction into Windows Azure Pack and Service Management AutomationIntroduction into Windows Azure Pack and Service Management Automation
Introduction into Windows Azure Pack and Service Management Automation
 
Planning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud FoundryPlanning WSO2 Deployments on Pivotal Cloud Foundry
Planning WSO2 Deployments on Pivotal Cloud Foundry
 
User Transparent Service Migration to the Cloud
User Transparent Service Migration to the CloudUser Transparent Service Migration to the Cloud
User Transparent Service Migration to the Cloud
 
Preparing your dockerised application for production deployment
Preparing your dockerised application for production deploymentPreparing your dockerised application for production deployment
Preparing your dockerised application for production deployment
 
Camel Based Development Application
Camel Based Development ApplicationCamel Based Development Application
Camel Based Development Application
 
Azure service fabric
Azure service fabricAzure service fabric
Azure service fabric
 
Cloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web ServicesCloud Development with Camel and Amazon Web Services
Cloud Development with Camel and Amazon Web Services
 
Delivering Hybrid Cloud Solutions on Microsoft Azure
Delivering Hybrid Cloud Solutions on Microsoft AzureDelivering Hybrid Cloud Solutions on Microsoft Azure
Delivering Hybrid Cloud Solutions on Microsoft Azure
 
REST vs. Messaging For Microservices
REST vs. Messaging For MicroservicesREST vs. Messaging For Microservices
REST vs. Messaging For Microservices
 
Using Packer to Migrate XenServer Infrastructure to CloudStack
Using Packer to Migrate XenServer Infrastructure to CloudStackUsing Packer to Migrate XenServer Infrastructure to CloudStack
Using Packer to Migrate XenServer Infrastructure to CloudStack
 
Containers docker-docker hub-azureacr-azure aci
Containers docker-docker hub-azureacr-azure aciContainers docker-docker hub-azureacr-azure aci
Containers docker-docker hub-azureacr-azure aci
 
Container Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher KubernetesContainer Conf 2017: Rancher Kubernetes
Container Conf 2017: Rancher Kubernetes
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
 
Service discovery in mesos miguel, Angel Guillen
Service discovery in mesos miguel, Angel GuillenService discovery in mesos miguel, Angel Guillen
Service discovery in mesos miguel, Angel Guillen
 
Cloud Messaging with NServiceBus and Microsoft Azure
Cloud Messaging with NServiceBus and Microsoft AzureCloud Messaging with NServiceBus and Microsoft Azure
Cloud Messaging with NServiceBus and Microsoft Azure
 
Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014
Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014
Cloud Foundry and OpenStack: How They Fit - Cloud Expo 2014
 
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
To Kill a Monolith: Slaying the Demons of a Monolith with Node.js Microservic...
 

Similar to Migrating Enterprise Microservices From Cloud Foundry to Kubernetes

Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceMigrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceDavid Currie
 
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...Jack-Junjie Cai
 
Flying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native ApplicationsFlying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native ApplicationsJacek Bukowski
 
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?PROIDEA
 
Microservices and Best Practices
Microservices and Best Practices Microservices and Best Practices
Microservices and Best Practices Weaveworks
 
Edge 2016 Session 1886 Building your own docker container cloud on ibm power...
Edge 2016 Session 1886  Building your own docker container cloud on ibm power...Edge 2016 Session 1886  Building your own docker container cloud on ibm power...
Edge 2016 Session 1886 Building your own docker container cloud on ibm power...Yong Feng
 
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup
 
Centralizing Kubernetes and Container Operations
Centralizing Kubernetes and Container OperationsCentralizing Kubernetes and Container Operations
Centralizing Kubernetes and Container OperationsKublr
 
Containers as Infrastructure for New Gen Apps
Containers as Infrastructure for New Gen AppsContainers as Infrastructure for New Gen Apps
Containers as Infrastructure for New Gen AppsKhalid Ahmed
 
AWS re:Invent 2016: Netflix: Container Scheduling, Execution, and Integration...
AWS re:Invent 2016: Netflix: Container Scheduling, Execution, and Integration...AWS re:Invent 2016: Netflix: Container Scheduling, Execution, and Integration...
AWS re:Invent 2016: Netflix: Container Scheduling, Execution, and Integration...Amazon Web Services
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013aspyker
 
One Kubernetes to rule them all (ZEUS 2019 Keynote)
One Kubernetes to rule them all (ZEUS 2019 Keynote)One Kubernetes to rule them all (ZEUS 2019 Keynote)
One Kubernetes to rule them all (ZEUS 2019 Keynote)Simon Harrer
 
Understanding Docker and IBM Bluemix Container Service
Understanding Docker and IBM Bluemix Container ServiceUnderstanding Docker and IBM Bluemix Container Service
Understanding Docker and IBM Bluemix Container ServiceAndrew Ferrier
 
Re:invent 2016 Container Scheduling, Execution and AWS Integration
Re:invent 2016 Container Scheduling, Execution and AWS IntegrationRe:invent 2016 Container Scheduling, Execution and AWS Integration
Re:invent 2016 Container Scheduling, Execution and AWS Integrationaspyker
 
[WSO2 API Day Dallas 2019] Cloud-native Integration for the Enterprise
[WSO2 API Day Dallas 2019] Cloud-native Integration for the Enterprise[WSO2 API Day Dallas 2019] Cloud-native Integration for the Enterprise
[WSO2 API Day Dallas 2019] Cloud-native Integration for the EnterpriseWSO2
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)Simon Haslam
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1makker_nl
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service FabricDavide Benvegnù
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerWeb à Québec
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?Dmitry Buzdin
 

Similar to Migrating Enterprise Microservices From Cloud Foundry to Kubernetes (20)

Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-ServiceMigrating Java EE applications to IBM Bluemix Platform-as-a-Service
Migrating Java EE applications to IBM Bluemix Platform-as-a-Service
 
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
Migrating Java EE applications to IBM Bluemix platform as-a-service (CloudFou...
 
Flying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native ApplicationsFlying to clouds - can it be easy? Cloud Native Applications
Flying to clouds - can it be easy? Cloud Native Applications
 
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
JDD 2016 - Jacek Bukowski - "Flying To Clouds" - Can It Be Easy?
 
Microservices and Best Practices
Microservices and Best Practices Microservices and Best Practices
Microservices and Best Practices
 
Edge 2016 Session 1886 Building your own docker container cloud on ibm power...
Edge 2016 Session 1886  Building your own docker container cloud on ibm power...Edge 2016 Session 1886  Building your own docker container cloud on ibm power...
Edge 2016 Session 1886 Building your own docker container cloud on ibm power...
 
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
Tokyo Azure Meetup #7 - Introduction to Serverless Architectures with Azure F...
 
Centralizing Kubernetes and Container Operations
Centralizing Kubernetes and Container OperationsCentralizing Kubernetes and Container Operations
Centralizing Kubernetes and Container Operations
 
Containers as Infrastructure for New Gen Apps
Containers as Infrastructure for New Gen AppsContainers as Infrastructure for New Gen Apps
Containers as Infrastructure for New Gen Apps
 
AWS re:Invent 2016: Netflix: Container Scheduling, Execution, and Integration...
AWS re:Invent 2016: Netflix: Container Scheduling, Execution, and Integration...AWS re:Invent 2016: Netflix: Container Scheduling, Execution, and Integration...
AWS re:Invent 2016: Netflix: Container Scheduling, Execution, and Integration...
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013
 
One Kubernetes to rule them all (ZEUS 2019 Keynote)
One Kubernetes to rule them all (ZEUS 2019 Keynote)One Kubernetes to rule them all (ZEUS 2019 Keynote)
One Kubernetes to rule them all (ZEUS 2019 Keynote)
 
Understanding Docker and IBM Bluemix Container Service
Understanding Docker and IBM Bluemix Container ServiceUnderstanding Docker and IBM Bluemix Container Service
Understanding Docker and IBM Bluemix Container Service
 
Re:invent 2016 Container Scheduling, Execution and AWS Integration
Re:invent 2016 Container Scheduling, Execution and AWS IntegrationRe:invent 2016 Container Scheduling, Execution and AWS Integration
Re:invent 2016 Container Scheduling, Execution and AWS Integration
 
[WSO2 API Day Dallas 2019] Cloud-native Integration for the Enterprise
[WSO2 API Day Dallas 2019] Cloud-native Integration for the Enterprise[WSO2 API Day Dallas 2019] Cloud-native Integration for the Enterprise
[WSO2 API Day Dallas 2019] Cloud-native Integration for the Enterprise
 
The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)The Kubernetes WebLogic revival (part 1)
The Kubernetes WebLogic revival (part 1)
 
20191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 120191201 kubernetes managed weblogic revival - part 1
20191201 kubernetes managed weblogic revival - part 1
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric
 
Rami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with DockerRami Sayar - Node microservices with Docker
Rami Sayar - Node microservices with Docker
 
How to grow your own Microservice?
How to grow your own Microservice?How to grow your own Microservice?
How to grow your own Microservice?
 

Recently uploaded

Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfIdiosysTechnologies1
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 

Recently uploaded (20)

Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Best Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdfBest Web Development Agency- Idiosys USA.pdf
Best Web Development Agency- Idiosys USA.pdf
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 

Migrating Enterprise Microservices From Cloud Foundry to Kubernetes

  • 1. Migration of an Enterprise UI Microservice System from Cloud Foundry to Kubernetes Tony Erwin, Senior Technical Staff Member, IBM Jonathan Schweikhart, Console DevOps Lead, IBM
  • 2. Agenda • Overview of IBM Cloud Console Architecture • What is Cloud Foundry? What is Kubernetes? Why Switch? • Experiences And Lessons Learned During Migration • Conclusion
  • 3. Overview of IBM Cloud Console Architecture
  • 4. IBM Cloud Console • Large UI serving as front-end to the IBM Cloud • Lets users create, view, and manage PaaS/IaaS resources: • Cloud Foundry apps & services • Kubernetes clusters • Virtual servers • Bare metal • Provides additional functionality for: • Registration/onboarding • Identity and Access Management (IAM) • Billing/usage • Docs
  • 5. IBM Cloud Console Architecture • Started life about 5 years ago as a monolithic Java app • Now composed of around 50 Node.js, cloud-native microservices + more than 30 external plugins • Originally deployed as apps to Cloud Foundry • Currently deployed as containers on Kubernetes uService 1 uService 2 … uService nuService n-1 Backend APIs (CF, Containers, VMs, IAM, Billing/Usage, etc.) Console Client Proxy Core Deployment Watson IoT Functions Clusters Mobile … (External Plugins)
  • 6. What is Cloud Foundry? What is Kubernetes? Why Switch?
  • 7. What is Cloud Foundry*? • Provides a PaaS with an abstraction at the application level • Developers can focus on code rather than underlying infrastructure • Leverages the Open Service Broker API to make it easy to use services from apps • Manages apps as Diego containers (internally) * Technically describing the Cloud Foundry Application Runtime which is one of the two open source components from the CF Foundation.
  • 8. What is Kubernetes? • Abstracts at the container level • Provides many of the benefits of PaaS with the flexibility of IaaS • Often referred to as IaaS+ • Orchestrates computing, networking, and storage infrastructure on behalf of user workloads • Enables portability across infrastructure providers
  • 9. Why Did We Switch? • Nothing “wrong” with CF • Very easy to get apps running, relatively low learning curve, etc. • Used in some way by at least half of the Fortune 500 • Kubernetes offers several advantages for our use case • More granular control to better manage our large, complex microservice system • Dedicated clusters to avoid performance/availability problems from friendly fire • In fairness, CF can be installed in a dedicated manner as well (even on Kubernetes!) • Simpler “front door” stack with built-in Ingress proxy to avoid extra network hops • Private host names • All apps in CF have public host names, so not possible to have a “private” microservice • Private networking • Calls between microservices in CF require going out over the public internet • Improved memory and CPU usage (dynamic allocation) • Ability to run our own local services (like Redis) • Integrated monitoring with Prometheus
  • 12. Migrating Manifest to Helm •Helm - Deployment •Docker image •CPU & memory •Environment variables •Helm – Service •Single alias for the deployment •Helm – Ingress •Hostname/URL mapping to service
  • 13. Deployment Configuration •Cloud Foundry • Configuration per deployment environment •Kubernetes • Helm cli makes hierarchical simple • Global • Global-<Environment> • Cluster • Cluster-<namespace>
  • 14. Exposure of Microservices • Cloud Foundry • Public URL per microservice • Each microservice has to protect against direct access • Security concerns • Common code repeated • Kubernetes • Microservice gets to choose exposure • Service – Allows an internal only route to the application • Ingress – Allows external routes to be defined to map to Services • Protections take place at a higher level to allow microservices to focus less on exposure issues
  • 15. Common Code Migration Problems •Cloud Foundry assumptions • Environment variable assumptions • VCAP_SERVICES • PORT • Invalid OS name characters like hyphens • URL format for intra-microservice communication • CF: https://ace-common-production.us-south.bluemix.net • Kubernetes: http://common • URL construction vs URL variables
  • 16. Installing a Local Redis w/ Stateful Sets
  • 18. Monitoring NGINX Ingress • Nginx logs contain invaluable metrics about incoming calls • Timestamp • HTTP method • HTTP status codes • Headers • URI • Response time • Implemented custom solution for accessing those metrics • Configure nginx to log to syslog • Create microservice that scrapes the syslog and exposes the data to Prometheus • Filter, monitor, and alert
  • 20. Built-in Liveness/Readiness Checks • /readiness • ”I am ready to accept traffic” • One time initialization checks • Connections to resources (URLs, DBs, etc..) • Periodic checks • Circuit breakers • Current status • Content Throttling • /liveness • “I should keep living“ • Unrecoverable situations/Unexpected Failures • “Have you tried turning it off and on again?”
  • 22. Geo Load Balancing and Failover (CF) • One global URL (https://console.bluemix.net) • Use Dyn geo load balancing to serve UI from the nearest healthy region • If healthcheck in a region shows a problem, Dyn routes to the next closest healthy region • Odds of all regions being down at the same time much less than one region being down • Reduces regional latency
  • 23. Geo Load Balancing and Failover (Migration) • Needed to verify stability of Kube clusters before turning off CF deployments in production • Solution: Add Kube clusters to Dyn rotation and run CF deployments side-by-side with Kube deployments
  • 24. Geo Load Balancing and Failover (Final) • Once satisfied, removed CF deployments from rotation and only Kube deployments remained
  • 26. Conclusion •CF is a great technology, but Kubernetes better meets the needs of our microservice system •Nothing is free, and we had to solve several new problems along the way •Allowed us to achieve greater performance, scalability, reliability, and security than we had before
  • 27. Questions? •Tony Erwin •Email: aerwin@us.ibm.com •Twitter: @tonyerwin •Jonathan Schweikhart •Email: jschweik@us.ibm.com