SlideShare a Scribd company logo
Monolith to Microservices – Our Journey
February 2014
• 2 Presentation Layers:
• Customer Services Backend
• Simple Marketing Website
• Single Backend API
• Hosting:
• 3 apps on Heroku
• 1 engineer
• c. £80 / day in transactions
API
MySQL
(Heroku addon)
Customer
services
Marketing
site
March 2014
• 4 Presentation Layers:
• Customer Services Backend
• Online Booking Website
• Hotel Booking Interface
• Therapist Mobile Website
• Single Backend API
• Hosting:
• 5 apps on Heroku
• 1 engineer
• c. £250 / day in transactions
API
MySQL
(Heroku addon)
Neo4J
(Heroku addon)
Customer
services
Online
booking
Hotel
booking
Therapist
site
December 2014
• More Presentation Layers:
• Customer Services Backend
• Online Booking Website
• Hotel Booking Interface
• Therapist Responsive Website
• Therapist Mobile Apps
• Consumer iOS App
• Consumer Android App
• Hotel Group Login Interface
• Ever-growing Monolithic Backend
API
• Hosting:
• 8 apps on Heroku
Starting to get expensive…
• 2 engineers
• Over £1.5k / day in transactions
Customer
services
Online
booking
API
MySQL
(Heroku addon)
Hotel
booking
Therapist
site
Neo4J
(Heroku addon)
redis
(Heroku addon)
Hotel
groups
Consumer
iOS
Consumer
Android
Therapist
Android
Therapist
iOS
Native apps
RabbitMQ(EC2)
Time for a new architecture…
Monoliths
Pros
• Simple ops tasks (deployment,
scaling)
• Very fast development
• Single tech stack
(easy to understand)
Cons
• Harder to add new features with
stability confidence
• Overwhelming to develop
• Long build +test times
• Long term commitment to tech
stack
• Larger instance sizes
Microservices
Pros
• Tiny applications = tiny build +
test time
• Pick and choose stack for each
case + easy to rewrite a service
• More efficient scaling
• Independent deploy processes
• Prevent faults in one service
affecting entire platform
Cons
• More applications to deploy
• Inter-service communication has
to be dealt with
• Harder to aggregate logs and
trace across systems
• Not necessary for a simple
codebase / platform
Where to host?
• Practically zero learning
curve
• Expensive to run at large
scale
• No access to OS / VM
• Git-push deploys can cause
issues when bugs arise (CI /
build pipeline)
• Super configurable
networking layer (security!)
• Easy to go ‘back to OS’ for
trickier setups
• Attractive startup
programme
• Great services
infrastructure (RDS / EC etc)
More applications to deploy
• Problem:
– More applications means more ops work to do to deploy
and scale efficiently
• Solution:
– Containerize your apps (stop thinking about instances)
– Automate your deployment, uptime management and
scaling
Empire (PAAS)
emp deploy user/repository:tag
Deployments
emp set VARIABLE=value -a app-name
Environment Variables
emp scale web=3:CPU:RAM -a app-name
Scaling
emp ps -a app-name
Process State
emp rollback v21 -a app-name
Fast Release Rollback
github.com/remind101/empire
Inter-service communication
• Problem
– Maintaining knowledge of traditional REST API endpoints
& DNS names can grow out of control with lots of services
involved
• Solution
– Use a centralised service bus (e.g. RabbitMQ)
RabbitMQ Service Bus
Server application
Client application
npmjs.com/package/rabbitr
Logs and tracing through multiple layers
• Problem
– You need to view logs for all your applications
– Nested requests can become difficult to trace
• Solution
– Use a standardised logging & tracing solution that can link
requests through multiple application levels
FlightControl
FlightControl
github.com/urbanmassage/flight-control
Now
Customer services
Online
booking
MySQL
(RDS)
Hotel
booking
Therapist
site
redis
(ElastiCache)
Hotel
groups
Consumer
iOS
Consumer
Android
Therapist
Android
Therapist
iOS
RabbitMQ Cluster on EC2
Therapist API gateway Customer + Hotel API gateway
Microservice
A
NodeJS
MySQL
(RDS)
redis
(ElastiCache)
Microservice
B
NodeJS
Microservice
C
PHP
MySQL
(RDS)
redis
(ElastiCache)
Microservice
D
NodeJS
Postgres
(RDS)
Microservice E
NodeJS
Andmore…
S3
@gileze33
@JackCKTang
@MassageApp

More Related Content

What's hot

ASP.NET MVC 4
ASP.NET MVC 4ASP.NET MVC 4
ASP.NET MVC 4
Danijel Malik
 
IoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
IoT and Serverless - AWS - Serverless Summit - Madhusudan ShekarIoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
IoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
CodeOps Technologies LLP
 
Alfresco tech talk live mobile sdks
Alfresco tech talk live mobile sdksAlfresco tech talk live mobile sdks
Alfresco tech talk live mobile sdks
Alfresco Software
 
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform TutorialECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
European Collaboration Summit
 
How to automate the SharePoint Provisioning
How to automate the SharePoint Provisioning How to automate the SharePoint Provisioning
How to automate the SharePoint Provisioning
Knut Relbe-Moe [MVP, MCT]
 
Making your API behave like a big boy
Making your API behave like a big boyMaking your API behave like a big boy
Making your API behave like a big boy
Andrew Siemer
 
App Services - Connecting the dots of Web Mobile and Integration_published
App Services - Connecting the dots of Web Mobile and Integration_publishedApp Services - Connecting the dots of Web Mobile and Integration_published
App Services - Connecting the dots of Web Mobile and Integration_published
Wagner Silveira
 
Infrastructure as code (iac) - Terraform for AWS
Infrastructure as code (iac) - Terraform for AWSInfrastructure as code (iac) - Terraform for AWS
Infrastructure as code (iac) - Terraform for AWS
Johanes Glenn
 
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
Sencha
 
Tracing Java Applications on Azure
Tracing Java Applications on AzureTracing Java Applications on Azure
Tracing Java Applications on Azure
CodeOps Technologies LLP
 
Fury road to a worldwide API - API Days - December 2015
Fury road to a worldwide API - API Days - December 2015Fury road to a worldwide API - API Days - December 2015
Fury road to a worldwide API - API Days - December 2015
Julien Lemoine
 
MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...
MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...
MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...
MongoDB
 
C# 8 and .NET Core 3
C# 8 and .NET Core 3C# 8 and .NET Core 3
C# 8 and .NET Core 3
Christian Nagel
 
Ben Kehoe - Serverless Architecture for the Internet of Things
Ben Kehoe - Serverless Architecture for the Internet of ThingsBen Kehoe - Serverless Architecture for the Internet of Things
Ben Kehoe - Serverless Architecture for the Internet of Things
ServerlessConf
 
Ohio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCPOhio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCP
Wesley Workman
 
Benefits of developing single page web applications using angular js
Benefits of developing single page web applications using angular jsBenefits of developing single page web applications using angular js
Benefits of developing single page web applications using angular js
Harbinger Systems - HRTech Builder of Choice
 
MongoDB World 2018: Using Puppet, Ansible and Ops Manager to Create Your Own ...
MongoDB World 2018: Using Puppet, Ansible and Ops Manager to Create Your Own ...MongoDB World 2018: Using Puppet, Ansible and Ops Manager to Create Your Own ...
MongoDB World 2018: Using Puppet, Ansible and Ops Manager to Create Your Own ...
MongoDB
 
Deep Dive building solutions on the SharePoint Framework - SPS Brussels 2016
Deep Dive building solutions on the SharePoint Framework - SPS Brussels 2016Deep Dive building solutions on the SharePoint Framework - SPS Brussels 2016
Deep Dive building solutions on the SharePoint Framework - SPS Brussels 2016
Waldek Mastykarz
 
Scale net apps in aws
Scale net apps in awsScale net apps in aws
Scale net apps in aws
Codecamp Romania
 
Algolia's Fury Road to a Worldwide API - Take Off Conference 2016
Algolia's Fury Road to a Worldwide API - Take Off Conference 2016Algolia's Fury Road to a Worldwide API - Take Off Conference 2016
Algolia's Fury Road to a Worldwide API - Take Off Conference 2016
Olivier Lance
 

What's hot (20)

ASP.NET MVC 4
ASP.NET MVC 4ASP.NET MVC 4
ASP.NET MVC 4
 
IoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
IoT and Serverless - AWS - Serverless Summit - Madhusudan ShekarIoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
IoT and Serverless - AWS - Serverless Summit - Madhusudan Shekar
 
Alfresco tech talk live mobile sdks
Alfresco tech talk live mobile sdksAlfresco tech talk live mobile sdks
Alfresco tech talk live mobile sdks
 
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform TutorialECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
ECS19 - Ahmad Najjar and Serge Luca - Power Platform Tutorial
 
How to automate the SharePoint Provisioning
How to automate the SharePoint Provisioning How to automate the SharePoint Provisioning
How to automate the SharePoint Provisioning
 
Making your API behave like a big boy
Making your API behave like a big boyMaking your API behave like a big boy
Making your API behave like a big boy
 
App Services - Connecting the dots of Web Mobile and Integration_published
App Services - Connecting the dots of Web Mobile and Integration_publishedApp Services - Connecting the dots of Web Mobile and Integration_published
App Services - Connecting the dots of Web Mobile and Integration_published
 
Infrastructure as code (iac) - Terraform for AWS
Infrastructure as code (iac) - Terraform for AWSInfrastructure as code (iac) - Terraform for AWS
Infrastructure as code (iac) - Terraform for AWS
 
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
SenchaCon 2016: Refine Enterprise Applications by Focusing on U0ser Experienc...
 
Tracing Java Applications on Azure
Tracing Java Applications on AzureTracing Java Applications on Azure
Tracing Java Applications on Azure
 
Fury road to a worldwide API - API Days - December 2015
Fury road to a worldwide API - API Days - December 2015Fury road to a worldwide API - API Days - December 2015
Fury road to a worldwide API - API Days - December 2015
 
MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...
MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...
MongoDB World 2018: Replatforming: Switching to MongoDB for Flexibility, Scal...
 
C# 8 and .NET Core 3
C# 8 and .NET Core 3C# 8 and .NET Core 3
C# 8 and .NET Core 3
 
Ben Kehoe - Serverless Architecture for the Internet of Things
Ben Kehoe - Serverless Architecture for the Internet of ThingsBen Kehoe - Serverless Architecture for the Internet of Things
Ben Kehoe - Serverless Architecture for the Internet of Things
 
Ohio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCPOhio Devfest - Visual Analysis with GCP
Ohio Devfest - Visual Analysis with GCP
 
Benefits of developing single page web applications using angular js
Benefits of developing single page web applications using angular jsBenefits of developing single page web applications using angular js
Benefits of developing single page web applications using angular js
 
MongoDB World 2018: Using Puppet, Ansible and Ops Manager to Create Your Own ...
MongoDB World 2018: Using Puppet, Ansible and Ops Manager to Create Your Own ...MongoDB World 2018: Using Puppet, Ansible and Ops Manager to Create Your Own ...
MongoDB World 2018: Using Puppet, Ansible and Ops Manager to Create Your Own ...
 
Deep Dive building solutions on the SharePoint Framework - SPS Brussels 2016
Deep Dive building solutions on the SharePoint Framework - SPS Brussels 2016Deep Dive building solutions on the SharePoint Framework - SPS Brussels 2016
Deep Dive building solutions on the SharePoint Framework - SPS Brussels 2016
 
Scale net apps in aws
Scale net apps in awsScale net apps in aws
Scale net apps in aws
 
Algolia's Fury Road to a Worldwide API - Take Off Conference 2016
Algolia's Fury Road to a Worldwide API - Take Off Conference 2016Algolia's Fury Road to a Worldwide API - Take Off Conference 2016
Algolia's Fury Road to a Worldwide API - Take Off Conference 2016
 

Viewers also liked

IS-702.a FEMA Certification.asp
IS-702.a FEMA Certification.aspIS-702.a FEMA Certification.asp
IS-702.a FEMA Certification.asp
Corey Honeycutt
 
Stuart Wynn Resume
Stuart Wynn ResumeStuart Wynn Resume
Stuart Wynn Resume
Stuart Wynn
 
YEO 2012_South and South East Asia Regional Association
YEO 2012_South and South East Asia Regional AssociationYEO 2012_South and South East Asia Regional Association
YEO 2012_South and South East Asia Regional Association
Rotary International
 
Foot & Calf Relaxer - Venante
Foot & Calf Relaxer - VenanteFoot & Calf Relaxer - Venante
Foot & Calf Relaxer - Venante
Vissco
 
3 worksheet unhealthy habits
3 worksheet unhealthy habits3 worksheet unhealthy habits
3 worksheet unhealthy habits
Juan Car Guerrero
 
Trabajo requerimientos
Trabajo requerimientosTrabajo requerimientos
Trabajo requerimientos
edward2815
 
Top stories
Top storiesTop stories
Top stories
LindseyLouise
 
Why Do Younger Consumers Oppose EMV Technology?
Why Do Younger Consumers Oppose EMV Technology?Why Do Younger Consumers Oppose EMV Technology?
Why Do Younger Consumers Oppose EMV Technology?
First American Payment Systems
 
Pensamientos del Padre Pío
Pensamientos del Padre PíoPensamientos del Padre Pío
Pensamientos del Padre Pío
Breinner Rueda
 
Dia de hallowen
Dia de hallowenDia de hallowen
Dia de hallowen
santiagoestudiante
 
UXD_2015_08_Letter_of_Completion.30
UXD_2015_08_Letter_of_Completion.30UXD_2015_08_Letter_of_Completion.30
UXD_2015_08_Letter_of_Completion.30
Bridget Rutter
 
Game system design
Game system designGame system design
Game system design
Petri Lankoski
 
Slash n: Tech Talk Track 2 – Website Architecture-Mistakes & Learnings - Sidd...
Slash n: Tech Talk Track 2 – Website Architecture-Mistakes & Learnings - Sidd...Slash n: Tech Talk Track 2 – Website Architecture-Mistakes & Learnings - Sidd...
Slash n: Tech Talk Track 2 – Website Architecture-Mistakes & Learnings - Sidd...
slashn
 
GOOGLE: Designs, Lessons and Advice from Building Large Distributed Systems
GOOGLE: Designs, Lessons and Advice from Building Large   Distributed Systems GOOGLE: Designs, Lessons and Advice from Building Large   Distributed Systems
GOOGLE: Designs, Lessons and Advice from Building Large Distributed Systems
xlight
 
NodeJS guide for beginners
NodeJS guide for beginnersNodeJS guide for beginners
NodeJS guide for beginners
Enoch Joshua
 
Building Highly Scalable Web Applications
Building Highly Scalable Web ApplicationsBuilding Highly Scalable Web Applications
Building Highly Scalable Web Applications
IWMW
 

Viewers also liked (18)

IS-702.a FEMA Certification.asp
IS-702.a FEMA Certification.aspIS-702.a FEMA Certification.asp
IS-702.a FEMA Certification.asp
 
Stuart Wynn Resume
Stuart Wynn ResumeStuart Wynn Resume
Stuart Wynn Resume
 
CIPS
CIPSCIPS
CIPS
 
YEO 2012_South and South East Asia Regional Association
YEO 2012_South and South East Asia Regional AssociationYEO 2012_South and South East Asia Regional Association
YEO 2012_South and South East Asia Regional Association
 
Foot & Calf Relaxer - Venante
Foot & Calf Relaxer - VenanteFoot & Calf Relaxer - Venante
Foot & Calf Relaxer - Venante
 
3 worksheet unhealthy habits
3 worksheet unhealthy habits3 worksheet unhealthy habits
3 worksheet unhealthy habits
 
Trabajo requerimientos
Trabajo requerimientosTrabajo requerimientos
Trabajo requerimientos
 
IIPMM certificate
IIPMM certificateIIPMM certificate
IIPMM certificate
 
Top stories
Top storiesTop stories
Top stories
 
Why Do Younger Consumers Oppose EMV Technology?
Why Do Younger Consumers Oppose EMV Technology?Why Do Younger Consumers Oppose EMV Technology?
Why Do Younger Consumers Oppose EMV Technology?
 
Pensamientos del Padre Pío
Pensamientos del Padre PíoPensamientos del Padre Pío
Pensamientos del Padre Pío
 
Dia de hallowen
Dia de hallowenDia de hallowen
Dia de hallowen
 
UXD_2015_08_Letter_of_Completion.30
UXD_2015_08_Letter_of_Completion.30UXD_2015_08_Letter_of_Completion.30
UXD_2015_08_Letter_of_Completion.30
 
Game system design
Game system designGame system design
Game system design
 
Slash n: Tech Talk Track 2 – Website Architecture-Mistakes & Learnings - Sidd...
Slash n: Tech Talk Track 2 – Website Architecture-Mistakes & Learnings - Sidd...Slash n: Tech Talk Track 2 – Website Architecture-Mistakes & Learnings - Sidd...
Slash n: Tech Talk Track 2 – Website Architecture-Mistakes & Learnings - Sidd...
 
GOOGLE: Designs, Lessons and Advice from Building Large Distributed Systems
GOOGLE: Designs, Lessons and Advice from Building Large   Distributed Systems GOOGLE: Designs, Lessons and Advice from Building Large   Distributed Systems
GOOGLE: Designs, Lessons and Advice from Building Large Distributed Systems
 
NodeJS guide for beginners
NodeJS guide for beginnersNodeJS guide for beginners
NodeJS guide for beginners
 
Building Highly Scalable Web Applications
Building Highly Scalable Web ApplicationsBuilding Highly Scalable Web Applications
Building Highly Scalable Web Applications
 

Similar to Monolith to microservices - our journey

Disruptive Trends in Application Development
Disruptive Trends in Application DevelopmentDisruptive Trends in Application Development
Disruptive Trends in Application Development
WaveMaker, Inc.
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSS
aspyker
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!
Jeremy Likness
 
Add Apache Web Server to your Unified Monitoring Toolkit
Add Apache Web Server to your Unified Monitoring ToolkitAdd Apache Web Server to your Unified Monitoring Toolkit
Add Apache Web Server to your Unified Monitoring Toolkit
AppDynamics
 
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Amazon Web Services
 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Engine
Chakkrit (Kla) Tantithamthavorn
 
Code first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with AzureCode first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with Azure
Jeremy Likness
 
System center seminar presentation
System center seminar presentationSystem center seminar presentation
System center seminar presentation
C/D/H Technology Consultants
 
Ibm cloud nativenetflixossfinal
Ibm cloud nativenetflixossfinalIbm cloud nativenetflixossfinal
Ibm cloud nativenetflixossfinal
aspyker
 
Netflix0SS Services on Docker
Netflix0SS Services on DockerNetflix0SS Services on Docker
Netflix0SS Services on Docker
Docker, Inc.
 
Building a [micro]services platform on AWS
Building a [micro]services platform on AWSBuilding a [micro]services platform on AWS
Building a [micro]services platform on AWS
Shaun Pearce
 
Architectural considerations when building an API
Architectural considerations when building an APIArchitectural considerations when building an API
Architectural considerations when building an API
Rod Hemphill
 
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
 
Migrate from WS2003 to WS2008 or WS2012 in One Step
Migrate from WS2003 to WS2008 or WS2012 in One Step Migrate from WS2003 to WS2008 or WS2012 in One Step
Migrate from WS2003 to WS2008 or WS2012 in One Step
AppZero Inc
 
Un-clouding the cloud
Un-clouding the cloudUn-clouding the cloud
Un-clouding the cloud
Davinder Kohli
 
Building Modern Digital Services on Scalable Private Government Infrastructur...
Building Modern Digital Services on Scalable Private Government Infrastructur...Building Modern Digital Services on Scalable Private Government Infrastructur...
Building Modern Digital Services on Scalable Private Government Infrastructur...
Andrés Colón Pérez
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React Applications
Denis Izmaylov
 
IW14 Session: webMethods World
IW14 Session: webMethods WorldIW14 Session: webMethods World
IW14 Session: webMethods World
Software AG
 
Refactoring to Microservices
Refactoring to MicroservicesRefactoring to Microservices
Refactoring to Microservices
Jacinto Limjap
 
Cloud-native Data
Cloud-native DataCloud-native Data
Cloud-native Data
cornelia davis
 

Similar to Monolith to microservices - our journey (20)

Disruptive Trends in Application Development
Disruptive Trends in Application DevelopmentDisruptive Trends in Application Development
Disruptive Trends in Application Development
 
Cloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSSCloud Services Powered by IBM SoftLayer and NetflixOSS
Cloud Services Powered by IBM SoftLayer and NetflixOSS
 
Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!Single Page Applications: Your Browser is the OS!
Single Page Applications: Your Browser is the OS!
 
Add Apache Web Server to your Unified Monitoring Toolkit
Add Apache Web Server to your Unified Monitoring ToolkitAdd Apache Web Server to your Unified Monitoring Toolkit
Add Apache Web Server to your Unified Monitoring Toolkit
 
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
Cloud Connected Devices on a Global Scale (CPN303) | AWS re:Invent 2013
 
Introduction to Google App Engine
Introduction to Google App EngineIntroduction to Google App Engine
Introduction to Google App Engine
 
Code first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with AzureCode first in the cloud: going serverless with Azure
Code first in the cloud: going serverless with Azure
 
System center seminar presentation
System center seminar presentationSystem center seminar presentation
System center seminar presentation
 
Ibm cloud nativenetflixossfinal
Ibm cloud nativenetflixossfinalIbm cloud nativenetflixossfinal
Ibm cloud nativenetflixossfinal
 
Netflix0SS Services on Docker
Netflix0SS Services on DockerNetflix0SS Services on Docker
Netflix0SS Services on Docker
 
Building a [micro]services platform on AWS
Building a [micro]services platform on AWSBuilding a [micro]services platform on AWS
Building a [micro]services platform on AWS
 
Architectural considerations when building an API
Architectural considerations when building an APIArchitectural considerations when building an API
Architectural considerations when building an API
 
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 ...
 
Migrate from WS2003 to WS2008 or WS2012 in One Step
Migrate from WS2003 to WS2008 or WS2012 in One Step Migrate from WS2003 to WS2008 or WS2012 in One Step
Migrate from WS2003 to WS2008 or WS2012 in One Step
 
Un-clouding the cloud
Un-clouding the cloudUn-clouding the cloud
Un-clouding the cloud
 
Building Modern Digital Services on Scalable Private Government Infrastructur...
Building Modern Digital Services on Scalable Private Government Infrastructur...Building Modern Digital Services on Scalable Private Government Infrastructur...
Building Modern Digital Services on Scalable Private Government Infrastructur...
 
Performance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React ApplicationsPerformance and Scalability Art of Isomorphic React Applications
Performance and Scalability Art of Isomorphic React Applications
 
IW14 Session: webMethods World
IW14 Session: webMethods WorldIW14 Session: webMethods World
IW14 Session: webMethods World
 
Refactoring to Microservices
Refactoring to MicroservicesRefactoring to Microservices
Refactoring to Microservices
 
Cloud-native Data
Cloud-native DataCloud-native Data
Cloud-native Data
 

Recently uploaded

AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdfAI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
Techgropse Pvt.Ltd.
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 

Recently uploaded (20)

AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdfAI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
AI-Powered Food Delivery Transforming App Development in Saudi Arabia.pdf
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 

Monolith to microservices - our journey

  • 1. Monolith to Microservices – Our Journey
  • 2. February 2014 • 2 Presentation Layers: • Customer Services Backend • Simple Marketing Website • Single Backend API • Hosting: • 3 apps on Heroku • 1 engineer • c. £80 / day in transactions API MySQL (Heroku addon) Customer services Marketing site
  • 3. March 2014 • 4 Presentation Layers: • Customer Services Backend • Online Booking Website • Hotel Booking Interface • Therapist Mobile Website • Single Backend API • Hosting: • 5 apps on Heroku • 1 engineer • c. £250 / day in transactions API MySQL (Heroku addon) Neo4J (Heroku addon) Customer services Online booking Hotel booking Therapist site
  • 4. December 2014 • More Presentation Layers: • Customer Services Backend • Online Booking Website • Hotel Booking Interface • Therapist Responsive Website • Therapist Mobile Apps • Consumer iOS App • Consumer Android App • Hotel Group Login Interface • Ever-growing Monolithic Backend API • Hosting: • 8 apps on Heroku Starting to get expensive… • 2 engineers • Over £1.5k / day in transactions Customer services Online booking API MySQL (Heroku addon) Hotel booking Therapist site Neo4J (Heroku addon) redis (Heroku addon) Hotel groups Consumer iOS Consumer Android Therapist Android Therapist iOS Native apps RabbitMQ(EC2)
  • 5. Time for a new architecture…
  • 6. Monoliths Pros • Simple ops tasks (deployment, scaling) • Very fast development • Single tech stack (easy to understand) Cons • Harder to add new features with stability confidence • Overwhelming to develop • Long build +test times • Long term commitment to tech stack • Larger instance sizes
  • 7. Microservices Pros • Tiny applications = tiny build + test time • Pick and choose stack for each case + easy to rewrite a service • More efficient scaling • Independent deploy processes • Prevent faults in one service affecting entire platform Cons • More applications to deploy • Inter-service communication has to be dealt with • Harder to aggregate logs and trace across systems • Not necessary for a simple codebase / platform
  • 8. Where to host? • Practically zero learning curve • Expensive to run at large scale • No access to OS / VM • Git-push deploys can cause issues when bugs arise (CI / build pipeline) • Super configurable networking layer (security!) • Easy to go ‘back to OS’ for trickier setups • Attractive startup programme • Great services infrastructure (RDS / EC etc)
  • 9. More applications to deploy • Problem: – More applications means more ops work to do to deploy and scale efficiently • Solution: – Containerize your apps (stop thinking about instances) – Automate your deployment, uptime management and scaling
  • 10. Empire (PAAS) emp deploy user/repository:tag Deployments emp set VARIABLE=value -a app-name Environment Variables emp scale web=3:CPU:RAM -a app-name Scaling emp ps -a app-name Process State emp rollback v21 -a app-name Fast Release Rollback github.com/remind101/empire
  • 11. Inter-service communication • Problem – Maintaining knowledge of traditional REST API endpoints & DNS names can grow out of control with lots of services involved • Solution – Use a centralised service bus (e.g. RabbitMQ)
  • 12. RabbitMQ Service Bus Server application Client application npmjs.com/package/rabbitr
  • 13. Logs and tracing through multiple layers • Problem – You need to view logs for all your applications – Nested requests can become difficult to trace • Solution – Use a standardised logging & tracing solution that can link requests through multiple application levels FlightControl
  • 15. Now Customer services Online booking MySQL (RDS) Hotel booking Therapist site redis (ElastiCache) Hotel groups Consumer iOS Consumer Android Therapist Android Therapist iOS RabbitMQ Cluster on EC2 Therapist API gateway Customer + Hotel API gateway Microservice A NodeJS MySQL (RDS) redis (ElastiCache) Microservice B NodeJS Microservice C PHP MySQL (RDS) redis (ElastiCache) Microservice D NodeJS Postgres (RDS) Microservice E NodeJS Andmore… S3

Editor's Notes

  1. Good morning everyone, my name is Jack Tang and I'm the co founder and CEO of UrbanMassage.com We launched urban massage with a simple goal: giving our customers a solution to conveniently and easily treat themselves to all the healing properties a massage can offer.  We firmly believe that looking after your body and mind is more important than ever in today’s fast-paced world, and we are dedicated to making wellbeing accessible, affordable and available for everyone.  This is why we've built urbanmassage.com where you can book our vetted and qualified therapists to your home within the hour. Our technology has given us an unfair advantage to the growth and loyalty of our customers for the past 18 months. Now I pass you to my co founder and CTO Giles Williams to tell you a little more about our technical infrastructure 
  2. To give an idea of the scaling of the product that lead us to look into a new architecture
  3. Added online booking for customers, an interface for hotels to book via, plus a website for therapists to manage their appointments Also started expermenting with Neo4J for our logistics logic Up to 5 apps on heroku now
  4. Just coming out of beta By this point we’re up to 8 apps on heroku, we’ve started exploring other Heroku addons for caching etc Now also supporting native apps for customers and therapists You can see we’ve started simplifying parts of our API by using RabbitMQ to perform some pub/sub work Eg. Create a booking controller, used to contain logic to email customer, sms therapist, clear stats caches, send a notification to our customer service chat room Now broken out into separate modules that subscribe to a ‘booking created’ event
  5. At this point we realised we needed to investigate other possibilities for our backend architecture so started comparing our current monolithic system to a micro services approach
  6. * Deploy and scale commands are simple – you only have one application to worry about * At first, development is pretty quick, you can just keep bolting features on top * Having a single tech stack can help if you only have one or two people on the project --- * It becomes hard to decouple parts of the system so changes in one area don’t affect other areas * Takes a while for developers to learn enough about the platform to be productive * Your builds and tests will take a while as you have to rebuild everything at once * It’s hard to experment with new technologies * No control over which parts of the app you scale, so you end up scaling everything disproportionaly
  7. Quick to run build and tests - More fine grained control over which parts of the ecosystem you scale Easy to deploy incremental changes to parts of the platform Sneaky prod bugs won’t bring whole platform down – e.g. customer entity output doesn’t affect customer support - Not necessary for simple codebases – website with a form that sends an email
  8. Heroku Pro: * If you know git, you can deploy your work Heroku cons: * Becomes expensive as you scale – you get more bang for your buck using say a t2.micro or small on EC2 than a dyno for the same price * Sometimes you need to run something custom, such as OpenOffice on an instance * Having to commit code if a bug crops up and you need to do a really quick fix can become an issue as your team scales AWS: * Ensuring good security between services is a lot easier when you have more control over the network – basically everything is publicly exposed on Heroku * Custom VM setups are possible * Really great startup programme including options of credit, support and advice along the way * Services infrastructure provides Heroku-addon style ease for managing DBs, cache, static file storage etc -------- Now that we’ve pretty much decided on AWS as our IaaS provider, let’s walk through a few of the issues we mentioned with the MicroServices archicture and some of the solutions we came up with
  9. Read problem….. * Containerisation can help you guarantee portability of your apps between your local dev machine and hosted environments * Automation will stop you having to delve into instances every time you want to deploy, or an instance drops out of a cluster
  10. Mention: Hackathon (date TBC) CTO slack group