SlideShare a Scribd company logo
Evolution of the IBM Cloud Console:
From Monolith to Microservices and Beyond
Tony Erwin
Senior Technical Staff Member
Lead Architect, IBM Cloud Console
aerwin@us.ibm.com
Agenda
• IBM Cloud Console & Early Days as a Monolith
• Modernization with Microservices
• New Problems Created by Microservices
• Continued Evolution of the Architecture to Achieve Higher Availability
IBM Cloud Console & Early Days as a Monolith
What is the IBM Cloud Console?
• Large UI serving as front-end to the IBM
Cloud
• Lets users create, view, and manage
PaaS/IaaS resources
• Kubernetes clusters
• Virtual servers
• Bare metal
• Cloud Foundry apps & services
• Provides additional functionality for:
• Registration/onboarding
• Identity and Access Management (IAM)
• Billing/usage
• Docs
• Serves as the front-end to IBM Cloud
Console History: Origins as Monolith
• Released in 2014
as monolithic
single-page app
(SPA)
• All HTML, CSS, and
JavaScript loaded
within single web
page
• Served from a
single Java app
(which also
provided APIs)
• Totally centered
around Cloud
Foundry
Home Catalog … Dashboard
Resource
Details
Account
Backend APIs
(CF, MCCP, BSS, UAA, etc.)
DB/2
Cloud Console UI Server
(Java)
Cloud Console UI (Client)
Cloud Foundry
Problems with the Monolith
• Bad performance
• Heavy weight JavaScript loaded to browser was slow (used Dojo framework)
• Volume of client-initiated AJAX requests created bottlenecks
• Difficult to integrate code from other teams
• Have to push whole product even for small changes
• Poor Search Engine Optimization (SEO)
• New hires wanted nothing to do with Dojo
Modernization with Microservices
Solution: New Microservice Architecture
• Allows paced migration to more modern, lighter-weight stack without starting
over
• Improves performance with small services optimized for speed and page size
• Increases developer productivity with less chance of breaking other parts of
the product
• Loosely-coupled microservices can deploy at their own schedule
• Teams use stack of their choosing
• Teams don’t have to wait on others
• Improves cross-team UI consistency via microservice composition
• Leads to improved SEO
• Proxy facilitates “clean” URLs
• Server side generation results in crawlable content
Today’s Microservice Architecture
• Starting in 2015,
steadily
refactored to new
architecture over
next ~2 years
• Introduced proxy
to route requests
based on URL
path
• Core pipleline
now deploys 40+
microservices
• Expanded
beyond Cloud
Foundry
beginnings to
include other
PaaS and IaaS
offerings
Home Catalog …
Resource
Details
Dashboard
Watson and Cloud Platform APIs
(CF, Containers, BSS, RC, RG, IAM, GhoST, Hyperwarp, etc.)
Kubernetes
Proxy
Common
Monitoring
Framework
Console (Client)
Java API
Server
Redis
Cloudant
Typical UI Microservice Pattern
• Written with Node.js
• Serves lightweight HTML, CSS, JS
based on Carbon Design System
• When framework needed, React is the most
common choice
• Uses server-side templating (Dust.js) to
make as much data available to the
client as possible for fast rendering &
SEO
• Invokes Common Header API to get
HTML for shared header to include in
initial payload
• Consults shared session store (Redis)
for user token, etc.
• Leverages backend APIs and/or API
microservices as appropriate
Node.js (w/
Dust.js)
Cloud Console UI (Client)
Kubernetes
Proxy
Common
Header
• HTML
• CSS
• JavaScript (Vanilla, Polymer.js, React, Angular)
API
Microservice
Watson and Cloud Platform APIs
(CF, Containers, BSS, RC, RG, IAM, GhoST, Hyperwarp, etc.)
Page Composition with Microservices
header
inline
combined
Common
Microservice
Architecture for Supporting Plugins
• Console team adds proxy
rules that pass requests
through to plugin endpoints
• 30+ teams outside core
console contribute plugins
Home Catalog … Dashboard
Resource
Details
Console UI (Client)
Proxy
Common
Monitoring
Framework
Kubernetes
Watson DevOps
Functions Containers
Mobile Etc.
Watson and Cloud Platform APIs
(CF, Containers, BSS, RC, RG, IAM, GhoST, Hyperwarp, etc.)
New Problems to Solve
New Problems to Solve
• More moving parts, more complexity
• Build pipeline becomes all the more important
• Collecting federated status, monitoring health of the system
• Granularity of microservices vs. memory allocation (before move to
Kube)
• Monolith: 3 instances of Java app = 6 GB
• New console: ~27 apps, ~95 instances, ~55.5 GB
• Seamless navigation with existing monolith
• Blue-green deployments
• Promoting uniformity & consistency while still giving teams freedom
Importance of Monitoring
• We quickly learned that you can’t run a microservice-based system without monitoring
• Lots of things can go wrong
• Root cause determination can be difficult
• Examples of needed metrics:
• Data for every inbound/outbound request for every microservice
• Response time
• Response code
• Memory usage, CPU usage, and uptime for every microservice
• General health of ourselves and dependencies
• Synthetic page load data with Sitespeed.io
Continued Evolution of the Architecture to Achieve Higher Availability
Geo Load Balancing and Failover for HA
• One global URL (console.bluemix.net)
went live in Summer 2017
• 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
• Outages, PagerDuty’s, etc. decreased
dramatically after going live
Geo Load Balancing Impact to Microservices
• Microservices
should not be tied
to specific region
• E.g., Dallas
microservice ought
to be able to work
with API &
resources in
London
Runtime Environment: Moving to Kubernetes
• Originally the console was deployed to several Cloud Foundry public regions
• Migrated to Kubernetes clusters in early 2018, to gain advantages such as:
• More granular control to better manage our large, complex microservice system
• Dedicated clusters to avoid performance/availability problems from friendly fire
• Simpler “front door” stack with built-in Ingress proxy (NGINX) 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 services (like Redis)
• Integrated monitoring with Prometheus
Wrapping Up
Conclusion
• Original monolithic app had many limitations given how we wanted to
grow the console ecosystem
• Nothing is free, and we had to solve several new problems along the
way as we migrated to a microservice architecture
• Allowed us to achieve greater performance, scalability, reliability, and
security than we had before
• Paved the way for continued architectural evolution
Any Questions?
Tony Erwin
Email: aerwin@us.ibm.com
Twitter: @tonyerwin

More Related Content

What's hot

Jelastic (PaaS + IaaS) Virtual Cluster on Google Cloud Engine
Jelastic (PaaS + IaaS) Virtual Cluster on Google Cloud EngineJelastic (PaaS + IaaS) Virtual Cluster on Google Cloud Engine
Jelastic (PaaS + IaaS) Virtual Cluster on Google Cloud Engine
Ruslan Synytsky
 
Tokyo Azure Meetup #9 - Azure Update, september
Tokyo Azure Meetup #9 - Azure Update, septemberTokyo Azure Meetup #9 - Azure Update, september
Tokyo Azure Meetup #9 - Azure Update, september
Tokyo Azure Meetup
 
Tokyo azure meetup #8 - Azure Update, August
Tokyo azure meetup #8 - Azure Update, AugustTokyo azure meetup #8 - Azure Update, August
Tokyo azure meetup #8 - Azure Update, August
Kanio Dimitrov
 
[Webinar] AWS Monitoring with Site24x7
[Webinar] AWS Monitoring with Site24x7[Webinar] AWS Monitoring with Site24x7
[Webinar] AWS Monitoring with Site24x7
Site24x7
 
Spring one pivotal
Spring one pivotalSpring one pivotal
Spring one pivotal
Mallika Iyer
 
Kubernetes Basics - ICP Workshop Batch II
Kubernetes Basics - ICP Workshop Batch IIKubernetes Basics - ICP Workshop Batch II
Kubernetes Basics - ICP Workshop Batch II
PT Datacomm Diangraha
 
NServiceBus introduction
NServiceBus introductionNServiceBus introduction
NServiceBus introduction
Ladendirekt OÜ
 
Openstack - Enterprise cloud management platform
Openstack - Enterprise cloud management platformOpenstack - Enterprise cloud management platform
Openstack - Enterprise cloud management platform
Nagaraj Shenoy
 
Cloud computing stack
Cloud computing stackCloud computing stack
Cloud computing stack
Pedro Alexander Romero Tortosa
 
[WSO2Con EU 2017] WSO2 Unleashed: Full Stack Automation, Pitfalls and Solutions
[WSO2Con EU 2017] WSO2 Unleashed: Full Stack Automation, Pitfalls and Solutions[WSO2Con EU 2017] WSO2 Unleashed: Full Stack Automation, Pitfalls and Solutions
[WSO2Con EU 2017] WSO2 Unleashed: Full Stack Automation, Pitfalls and Solutions
WSO2
 
Cloud Computing Principles and Paradigms: 7 enhancing cloud computing environ...
Cloud Computing Principles and Paradigms: 7 enhancing cloud computing environ...Cloud Computing Principles and Paradigms: 7 enhancing cloud computing environ...
Cloud Computing Principles and Paradigms: 7 enhancing cloud computing environ...
Majid Hajibaba
 
Site24x7 Server Monitoring from the Cloud
Site24x7 Server Monitoring from the CloudSite24x7 Server Monitoring from the Cloud
Site24x7 Server Monitoring from the Cloud
Site24x7
 
Sitecore JSS at scale
Sitecore JSS at scaleSitecore JSS at scale
Sitecore JSS at scale
Jonathan BOBO
 
[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...
[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...
[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...
WSO2
 
Jelastic Cluster Admin Panel Overview
Jelastic Cluster Admin Panel OverviewJelastic Cluster Admin Panel Overview
Jelastic Cluster Admin Panel Overview
Jelastic Multi-Cloud PaaS
 
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaSAWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
RightScale
 
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
PT Datacomm Diangraha
 
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
PT Datacomm Diangraha
 
Hosting rails apps
Hosting rails appsHosting rails apps
Hosting rails apps
Pravin Mishra
 
Architecture evolution
Architecture evolutionArchitecture evolution
Architecture evolution
amit bezalel
 

What's hot (20)

Jelastic (PaaS + IaaS) Virtual Cluster on Google Cloud Engine
Jelastic (PaaS + IaaS) Virtual Cluster on Google Cloud EngineJelastic (PaaS + IaaS) Virtual Cluster on Google Cloud Engine
Jelastic (PaaS + IaaS) Virtual Cluster on Google Cloud Engine
 
Tokyo Azure Meetup #9 - Azure Update, september
Tokyo Azure Meetup #9 - Azure Update, septemberTokyo Azure Meetup #9 - Azure Update, september
Tokyo Azure Meetup #9 - Azure Update, september
 
Tokyo azure meetup #8 - Azure Update, August
Tokyo azure meetup #8 - Azure Update, AugustTokyo azure meetup #8 - Azure Update, August
Tokyo azure meetup #8 - Azure Update, August
 
[Webinar] AWS Monitoring with Site24x7
[Webinar] AWS Monitoring with Site24x7[Webinar] AWS Monitoring with Site24x7
[Webinar] AWS Monitoring with Site24x7
 
Spring one pivotal
Spring one pivotalSpring one pivotal
Spring one pivotal
 
Kubernetes Basics - ICP Workshop Batch II
Kubernetes Basics - ICP Workshop Batch IIKubernetes Basics - ICP Workshop Batch II
Kubernetes Basics - ICP Workshop Batch II
 
NServiceBus introduction
NServiceBus introductionNServiceBus introduction
NServiceBus introduction
 
Openstack - Enterprise cloud management platform
Openstack - Enterprise cloud management platformOpenstack - Enterprise cloud management platform
Openstack - Enterprise cloud management platform
 
Cloud computing stack
Cloud computing stackCloud computing stack
Cloud computing stack
 
[WSO2Con EU 2017] WSO2 Unleashed: Full Stack Automation, Pitfalls and Solutions
[WSO2Con EU 2017] WSO2 Unleashed: Full Stack Automation, Pitfalls and Solutions[WSO2Con EU 2017] WSO2 Unleashed: Full Stack Automation, Pitfalls and Solutions
[WSO2Con EU 2017] WSO2 Unleashed: Full Stack Automation, Pitfalls and Solutions
 
Cloud Computing Principles and Paradigms: 7 enhancing cloud computing environ...
Cloud Computing Principles and Paradigms: 7 enhancing cloud computing environ...Cloud Computing Principles and Paradigms: 7 enhancing cloud computing environ...
Cloud Computing Principles and Paradigms: 7 enhancing cloud computing environ...
 
Site24x7 Server Monitoring from the Cloud
Site24x7 Server Monitoring from the CloudSite24x7 Server Monitoring from the Cloud
Site24x7 Server Monitoring from the Cloud
 
Sitecore JSS at scale
Sitecore JSS at scaleSitecore JSS at scale
Sitecore JSS at scale
 
[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...
[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...
[WSO2Con EU 2017] How a Large Organization Weighted on a WSO2 Integration Pla...
 
Jelastic Cluster Admin Panel Overview
Jelastic Cluster Admin Panel OverviewJelastic Cluster Admin Panel Overview
Jelastic Cluster Admin Panel Overview
 
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaSAWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
 
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
Creating Microservices Application with IBM Cloud Private (ICP) - Container a...
 
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
Creating Microservices Application with IBM Cloud Private (ICP) - ICP Archite...
 
Hosting rails apps
Hosting rails appsHosting rails apps
Hosting rails apps
 
Architecture evolution
Architecture evolutionArchitecture evolution
Architecture evolution
 

Similar to Evolution of the IBM Cloud Console: From Monolith to Microservices and Beyond

Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Tony Erwin
 
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
Khalid Ahmed
 
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
 
Microservices and Best Practices
Microservices and Best Practices Microservices and Best Practices
Microservices and Best Practices
Weaveworks
 
Microservices and Serverless for Mega Startups - DevOps IL Meetup
Microservices and Serverless for Mega Startups - DevOps IL MeetupMicroservices and Serverless for Mega Startups - DevOps IL Meetup
Microservices and Serverless for Mega Startups - DevOps IL Meetup
Boaz Ziniman
 
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...
IndicThreads
 
Kubernetes solutions
Kubernetes solutionsKubernetes solutions
Kubernetes solutions
Eric Cattoir
 
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
Animesh Singh
 
Designing Microservices
Designing MicroservicesDesigning Microservices
Designing Microservices
David Chou
 
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
Andrew Ferrier
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
Lino Telera
 
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
 
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
David Currie
 
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
 
Integration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob DaviesIntegration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob Davies
Judy Breedlove
 
Cloud-native Data
Cloud-native DataCloud-native Data
Cloud-native Data
cornelia davis
 
Cloud-Native-Data with Cornelia Davis
Cloud-Native-Data with Cornelia DavisCloud-Native-Data with Cornelia Davis
Cloud-Native-Data with Cornelia Davis
VMware Tanzu
 
The Need of Cloud-Native Application
The Need of Cloud-Native ApplicationThe Need of Cloud-Native Application
The Need of Cloud-Native Application
Emiliano Pecis
 
CSE2013-cloud computing-L3-L4.pptx
CSE2013-cloud computing-L3-L4.pptxCSE2013-cloud computing-L3-L4.pptx
CSE2013-cloud computing-L3-L4.pptx
Madhura Arvind
 
CC Notes.pdf of jdjejwiwu22u28938ehdh3y2u2838e
CC Notes.pdf of jdjejwiwu22u28938ehdh3y2u2838eCC Notes.pdf of jdjejwiwu22u28938ehdh3y2u2838e
CC Notes.pdf of jdjejwiwu22u28938ehdh3y2u2838e
RamzanShareefPrivate
 

Similar to Evolution of the IBM Cloud Console: From Monolith to Microservices and Beyond (20)

Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
Migration of an Enterprise UI Microservice System from Cloud Foundry to Kuber...
 
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
 
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...
 
Microservices and Best Practices
Microservices and Best Practices Microservices and Best Practices
Microservices and Best Practices
 
Microservices and Serverless for Mega Startups - DevOps IL Meetup
Microservices and Serverless for Mega Startups - DevOps IL MeetupMicroservices and Serverless for Mega Startups - DevOps IL Meetup
Microservices and Serverless for Mega Startups - DevOps IL Meetup
 
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...
Power Your Mobile Applications On The Cloud [IndicThreads Mobile Application ...
 
Kubernetes solutions
Kubernetes solutionsKubernetes solutions
Kubernetes solutions
 
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
 
Designing Microservices
Designing MicroservicesDesigning Microservices
Designing Microservices
 
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
 
Serverless brewbox
Serverless   brewboxServerless   brewbox
Serverless brewbox
 
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...
 
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
 
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...
 
Integration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob DaviesIntegration in the Cloud, by Rob Davies
Integration in the Cloud, by Rob Davies
 
Cloud-native Data
Cloud-native DataCloud-native Data
Cloud-native Data
 
Cloud-Native-Data with Cornelia Davis
Cloud-Native-Data with Cornelia DavisCloud-Native-Data with Cornelia Davis
Cloud-Native-Data with Cornelia Davis
 
The Need of Cloud-Native Application
The Need of Cloud-Native ApplicationThe Need of Cloud-Native Application
The Need of Cloud-Native Application
 
CSE2013-cloud computing-L3-L4.pptx
CSE2013-cloud computing-L3-L4.pptxCSE2013-cloud computing-L3-L4.pptx
CSE2013-cloud computing-L3-L4.pptx
 
CC Notes.pdf of jdjejwiwu22u28938ehdh3y2u2838e
CC Notes.pdf of jdjejwiwu22u28938ehdh3y2u2838eCC Notes.pdf of jdjejwiwu22u28938ehdh3y2u2838e
CC Notes.pdf of jdjejwiwu22u28938ehdh3y2u2838e
 

Recently uploaded

Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
Jhone kinadey
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
Reetu63
 
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio, Inc.
 
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
kgyxske
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
Alberto Brandolini
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
safelyiotech
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
ShulagnaSarkar2
 
Orca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container OrchestrationOrca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container Orchestration
Pedro J. Molina
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
dakas1
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
campbellclarkson
 
Liberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptxLiberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptx
Massimo Artizzu
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
gapen1
 
DevOps Consulting Company | Hire DevOps Services
DevOps Consulting Company | Hire DevOps ServicesDevOps Consulting Company | Hire DevOps Services
DevOps Consulting Company | Hire DevOps Services
seospiralmantra
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
Luigi Fugaro
 
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISDECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
Tier1 app
 

Recently uploaded (20)

Boost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management AppsBoost Your Savings with These Money Management Apps
Boost Your Savings with These Money Management Apps
 
ppt on the brain chip neuralink.pptx
ppt  on   the brain  chip neuralink.pptxppt  on   the brain  chip neuralink.pptx
ppt on the brain chip neuralink.pptx
 
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio Webinar | 10x Faster Trino Queries on Your Data Platform
Alluxio Webinar | 10x Faster Trino Queries on Your Data Platform
 
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
一比一原版(sdsu毕业证书)圣地亚哥州立大学毕业证如何办理
 
Modelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - AmsterdamModelling Up - DDDEurope 2024 - Amsterdam
Modelling Up - DDDEurope 2024 - Amsterdam
 
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
Safelyio Toolbox Talk Softwate & App (How To Digitize Safety Meetings)
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision14 th Edition of International conference on computer vision
14 th Edition of International conference on computer vision
 
Orca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container OrchestrationOrca: Nocode Graphical Editor for Container Orchestration
Orca: Nocode Graphical Editor for Container Orchestration
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdf
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理一比一原版(USF毕业证)旧金山大学毕业证如何办理
一比一原版(USF毕业证)旧金山大学毕业证如何办理
 
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
🏎️Tech Transformation: DevOps Insights from the Experts 👩‍💻
 
Liberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptxLiberarsi dai framework con i Web Component.pptx
Liberarsi dai framework con i Web Component.pptx
 
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
如何办理(hull学位证书)英国赫尔大学毕业证硕士文凭原版一模一样
 
DevOps Consulting Company | Hire DevOps Services
DevOps Consulting Company | Hire DevOps ServicesDevOps Consulting Company | Hire DevOps Services
DevOps Consulting Company | Hire DevOps Services
 
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
WMF 2024 - Unlocking the Future of Data Powering Next-Gen AI with Vector Data...
 
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISDECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSIS
 

Evolution of the IBM Cloud Console: From Monolith to Microservices and Beyond

  • 1. Evolution of the IBM Cloud Console: From Monolith to Microservices and Beyond Tony Erwin Senior Technical Staff Member Lead Architect, IBM Cloud Console aerwin@us.ibm.com
  • 2. Agenda • IBM Cloud Console & Early Days as a Monolith • Modernization with Microservices • New Problems Created by Microservices • Continued Evolution of the Architecture to Achieve Higher Availability
  • 3. IBM Cloud Console & Early Days as a Monolith
  • 4. What is the IBM Cloud Console? • Large UI serving as front-end to the IBM Cloud • Lets users create, view, and manage PaaS/IaaS resources • Kubernetes clusters • Virtual servers • Bare metal • Cloud Foundry apps & services • Provides additional functionality for: • Registration/onboarding • Identity and Access Management (IAM) • Billing/usage • Docs • Serves as the front-end to IBM Cloud
  • 5. Console History: Origins as Monolith • Released in 2014 as monolithic single-page app (SPA) • All HTML, CSS, and JavaScript loaded within single web page • Served from a single Java app (which also provided APIs) • Totally centered around Cloud Foundry Home Catalog … Dashboard Resource Details Account Backend APIs (CF, MCCP, BSS, UAA, etc.) DB/2 Cloud Console UI Server (Java) Cloud Console UI (Client) Cloud Foundry
  • 6. Problems with the Monolith • Bad performance • Heavy weight JavaScript loaded to browser was slow (used Dojo framework) • Volume of client-initiated AJAX requests created bottlenecks • Difficult to integrate code from other teams • Have to push whole product even for small changes • Poor Search Engine Optimization (SEO) • New hires wanted nothing to do with Dojo
  • 8. Solution: New Microservice Architecture • Allows paced migration to more modern, lighter-weight stack without starting over • Improves performance with small services optimized for speed and page size • Increases developer productivity with less chance of breaking other parts of the product • Loosely-coupled microservices can deploy at their own schedule • Teams use stack of their choosing • Teams don’t have to wait on others • Improves cross-team UI consistency via microservice composition • Leads to improved SEO • Proxy facilitates “clean” URLs • Server side generation results in crawlable content
  • 9. Today’s Microservice Architecture • Starting in 2015, steadily refactored to new architecture over next ~2 years • Introduced proxy to route requests based on URL path • Core pipleline now deploys 40+ microservices • Expanded beyond Cloud Foundry beginnings to include other PaaS and IaaS offerings Home Catalog … Resource Details Dashboard Watson and Cloud Platform APIs (CF, Containers, BSS, RC, RG, IAM, GhoST, Hyperwarp, etc.) Kubernetes Proxy Common Monitoring Framework Console (Client) Java API Server Redis Cloudant
  • 10. Typical UI Microservice Pattern • Written with Node.js • Serves lightweight HTML, CSS, JS based on Carbon Design System • When framework needed, React is the most common choice • Uses server-side templating (Dust.js) to make as much data available to the client as possible for fast rendering & SEO • Invokes Common Header API to get HTML for shared header to include in initial payload • Consults shared session store (Redis) for user token, etc. • Leverages backend APIs and/or API microservices as appropriate Node.js (w/ Dust.js) Cloud Console UI (Client) Kubernetes Proxy Common Header • HTML • CSS • JavaScript (Vanilla, Polymer.js, React, Angular) API Microservice Watson and Cloud Platform APIs (CF, Containers, BSS, RC, RG, IAM, GhoST, Hyperwarp, etc.)
  • 11. Page Composition with Microservices header inline combined Common Microservice
  • 12. Architecture for Supporting Plugins • Console team adds proxy rules that pass requests through to plugin endpoints • 30+ teams outside core console contribute plugins Home Catalog … Dashboard Resource Details Console UI (Client) Proxy Common Monitoring Framework Kubernetes Watson DevOps Functions Containers Mobile Etc. Watson and Cloud Platform APIs (CF, Containers, BSS, RC, RG, IAM, GhoST, Hyperwarp, etc.)
  • 14. New Problems to Solve • More moving parts, more complexity • Build pipeline becomes all the more important • Collecting federated status, monitoring health of the system • Granularity of microservices vs. memory allocation (before move to Kube) • Monolith: 3 instances of Java app = 6 GB • New console: ~27 apps, ~95 instances, ~55.5 GB • Seamless navigation with existing monolith • Blue-green deployments • Promoting uniformity & consistency while still giving teams freedom
  • 15. Importance of Monitoring • We quickly learned that you can’t run a microservice-based system without monitoring • Lots of things can go wrong • Root cause determination can be difficult • Examples of needed metrics: • Data for every inbound/outbound request for every microservice • Response time • Response code • Memory usage, CPU usage, and uptime for every microservice • General health of ourselves and dependencies • Synthetic page load data with Sitespeed.io
  • 16. Continued Evolution of the Architecture to Achieve Higher Availability
  • 17. Geo Load Balancing and Failover for HA • One global URL (console.bluemix.net) went live in Summer 2017 • 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 • Outages, PagerDuty’s, etc. decreased dramatically after going live
  • 18. Geo Load Balancing Impact to Microservices • Microservices should not be tied to specific region • E.g., Dallas microservice ought to be able to work with API & resources in London
  • 19. Runtime Environment: Moving to Kubernetes • Originally the console was deployed to several Cloud Foundry public regions • Migrated to Kubernetes clusters in early 2018, to gain advantages such as: • More granular control to better manage our large, complex microservice system • Dedicated clusters to avoid performance/availability problems from friendly fire • Simpler “front door” stack with built-in Ingress proxy (NGINX) 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 services (like Redis) • Integrated monitoring with Prometheus
  • 21. Conclusion • Original monolithic app had many limitations given how we wanted to grow the console ecosystem • Nothing is free, and we had to solve several new problems along the way as we migrated to a microservice architecture • Allowed us to achieve greater performance, scalability, reliability, and security than we had before • Paved the way for continued architectural evolution
  • 22. Any Questions? Tony Erwin Email: aerwin@us.ibm.com Twitter: @tonyerwin