SlideShare ist ein Scribd-Unternehmen logo
1 von 22
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

Weitere ähnliche Inhalte

Was ist angesagt?

NServiceBus introduction
NServiceBus introductionNServiceBus introduction
NServiceBus introduction
Boris Tveritnev
 

Was ist angesagt? (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
 

Ähnlich wie 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
 
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
 

Ähnlich wie 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
 

Kürzlich hochgeladen

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Kürzlich hochgeladen (20)

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 

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