SlideShare a Scribd company logo
1 of 78
What they don’t tell you about µ-services…
Q C o n N Y – J u n e 2 0 1 6
Daniel Rolnick
C h i e f Te c h n o l o g y O f f i c e r
Daniel Rolnick
C h i e f Te c h n o l o g y O f f i c e r
daniel.rolnick@yodle.com
Story Time
September 2014
Story Time
June 2016
Story Time
Something’s gotta give
▶ Changing environments cause stress
▶ Existing processes need to be revisited
▶ Processes need to to be created
▶ New technology needs to be integrated
▶ Businesses are built on trade-offs
Evolution Requires Adaptation
Expected developmental needs
▶ Platform as a Service
▶ Service Discovery
▶ Testing
▶ Containerization
▶ Monitoring
Eyes Wide Open
Unexpected implications of micro-services
▶ Impact on data access
▶ Build and Deploy Tooling
▶ Source Repository Complexity
▶ Cross application monitoring
Expect the Unexpected
Bring on the complexity
Story Time
0
50
100
150
200
250
Yodle	Service Count
Data access
patterns
Independent Data Domains
▶ Isolated data ownership per micro-service
▶ Options: Physical Databases, Schemas, Polyglot
▶ Ideal state for new things but what about the old stuff
▶ Can’t get there in one move
Microservices Macroproblems
Baby Steps to Freedom
▶ Central data stores are leaky abstractions
Microservices Macroproblems
Baby Steps to Freedom
Microservices Macroproblems
▶ Central data stores are leaky abstractions
▶ Enforce data ownership
through access patterns
Baby Steps to Freedom
▶ Central data stores are leaky abstractions
▶ Enforce data ownership
through access patterns
▶ Façade for decoupling
Microservices Macroproblems
Baby Steps to Freedom
▶ Central data stores are leaky abstractions
▶ Enforce data ownership
through access patterns
▶ Façade for decoupling
▶ Multi-step process
Microservices Macroproblems
Shared Containers Simplify Things
Microservices Macroproblems
▶ Services in the same container reuse
connections
▶ Connection pooling goes away
▶ Base connection count starts
adding up
▶ You could always go to a minimum
idle of zero
▶ What could go wrong?
Microservices Macroproblems
0
50
100
150
200
250
Yodle	Service Count
External Connection Pooling
▶ Connection pooling outside of the container
▶ Add visibility while you’re at it
▶ Better logging, cleaner visualizations
Microservices Macroproblems
Microservices Macroproblems
Tooling for empowerment
▶ Server spin-up
▶ Schema and Account creation
▶ Ensure externalized your configurations
Microservices Macroproblems
Platform as
a Service
Static Configurations
▶ Every application deployed to a fixed set of hosts on a set of known ports
▶ Monitoring was done at a gross system synthetic level
▶ Only complete outages were easily detectable
▶ Manual restarts required
▶ PS-Watcher and Docker restart help but are not sufficient
▶ This was not going to scale
A Place for Everything and Everything…
Keeping services alive by hand is problematic
▶ Researched available PaaS Platforms available in late 2014
• Mesos / Marathon
• CoreOS
▶ What about:
• Kubernetes
• Swarm
• AWS Elastic Container Service
This Ain’t Gonna Scale
Mesos and Marathon
▶ Deploy applications to marathon
▶ Marathon decides what host and port to run applications on
▶ Health checks are built in to ensure application up-time
▶ Mesos ensures the applications run and are contained
Platform as a Service
Platform as a Service
0
50
100
150
200
250
Yodle	Service Count
Pace of Innovation Increases
Service
Discovery
Aware Apps vs. Smart Pipes
▶ Service discovery can be baked into
your application
Dynamic Topologies Require Service Discovery
Aware Apps vs. Smart Pipes
▶ Plumbing can take care of it for you
▶ Smart Pipes allows
• Easier path to polyglot ecosystem
• Decouple applications from
service discovery
▶ We chose the latter but we had to iterate a few times to get there
Dynamic Topologies Require Service Discovery
Curator already in place
▶ Already used zookeeper/curator for our thrift based macro-services
▶ Made our micro-services self register and do discovery via curator
▶ You can’t solve everything at once
▶ Not our desired end state
Use What You Know
Hipache by dotCloud
▶ URLs looked like https://svcb.services.prod.yodle.com
▶ Utilized dedicated routing servers
Service Discovery V2
Hipache by dotCloud
▶ Pros: Decoupled service discovery from applications
▶ Cons: Services had to be environment aware
Service Discovery V2
PaaS’s built-in routing layer
▶ Marathon has a built-in routing layer using haproxy
▶ Simple command to generate an haproxy config
▶ Basic listener (Qubit Bamboo) keep haproxy files up-to-date
▶ Hipache could have worked
Service Discovery V3
Discovery was simpler
Service Discovery V3 Continued
Discovery was simpler
▶ Service discovery is now fully externalized
▶ Iterate on routing and discovery independently
▶ Created tech debt for the applications
Service Discovery V3 Continued
Service Discovery V4
0
50
100
150
200
250
Yodle	Service Count
Scale Problems
Many to Many Problems
▶ As the number of slave nodes in our PaaS grew so did our problems
▶ Health checks from every host to every container
▶ Ensuring the HAproxy file was up-to-date
on all hosts was annoying
▶ Centralized onto a small cluster of routing boxes
Service Discovery V4
Testing
Regressions give comfort
▶ Monolithic releases are understandable
▶ We tested everything
▶ Everything works
Continuous Integration
Release code as it is written
Continuous Delivery Pipeline
Develop
Commit to
Branch
Continuous
Integration
Merge
Continuous
Delivery
Regressions take time
▶ Empower continuous delivery
▶ Broke apart our monolithic regression suite
▶ Same methodology for macro and micro-services
Continuous Integration
Enter the Canary
▶ Landscape is in flux
▶ If we test a subset of things how can
we be sure everything works?
▶ Canary Ensures
▶ Dependencies met
▶ Satisfying existing contracts
▶ Handle production load
Continuous Delivery Pipeline
Continuous Delivery Pipeline
▶ Special canary routing in our service discovery layer
▶ Test anywhere in the service mesh
▶ Discoverable tests using a /tests endpoint
▶ Monitor canary health in New Relic
▶ Promote to Canary Partial
Continuous Delivery Pipeline
▶ Receive partial production load
▶ Monitor canary health in New Relic
▶ Validate response codes
▶ Measure throughput
▶ Promote to general availability
Sentinel
Continuous Delivery Pipeline
Sentinel
Continuous Delivery Pipeline
Sentinel
Continuous Delivery Pipeline
Sentinel
Continuous Delivery Pipeline
Sentinel
▶ INSERT SCREENSHOTS OF SENTINEL
Continuous Delivery Pipeline
Sentinel
▶ INSERT SCREENSHOTS OF SENTINEL
Continuous Delivery Pipeline
Sentinel
▶ INSERT SCREENSHOTS OF SENTINEL
Continuous Delivery Pipeline
Containers
Standardization is required
▶ Polyglot environments buck standardization
▶ Micro-service environments increase complexity
▶ Operational complexity can grown unbounded
▶ Developers own the runtime
▶ Common runtime from an operator’s standpoint
▶ Tooling provides consistent deployments
Containers Bring Simplicity
Hierarchical Container Images
▶ How do you roll out environmental changes when you have 200 different container
builds?
Containers Bring Simplicity
Containers make a mess
▶ Docker host machines were littered
▶ Docker registry is littered with old images
▶ Developed a tagging process
Containers Bring Simplicity
Monitoring
Legacy Monitoring not cutting it
▶ Designed for testing and monitoring infrastructure
▶ Needed application performance management
▶ Wanted something that would scale with us with little effort
Increased Complexity Increased Requirements
Graphite and Grafana
▶ Dropwizard metrics to report data
▶ Teams built custom dashboards
▶ Too much manual effort
▶ No alerting
Increased Complexity Increased Requirements
Enter the Hackathon
▶ New Relic Monitoring For Microservices
▶ Simple – just add an agent
▶ Detailed per application dashboards out of the box
▶ Single score to focus attention (Useful for initial canary implementation)
▶ Basic alerting
Increased Complexity Increased Requirements
100 Apps in 100 Days
▶ Made use of our base containers
▶ Rolled out monitoring to every application in the fleet
▶ Suddenly we had visibility everywhere.
▶ Some Limitations
• No good docker support (this is better now)
• Services graphs aren’t dynamically generated
Increased Complexity Increased Requirements
Finding root causes
▶ Hundreds of Dashboards
▶ Hundreds of Individual Service Nodes
▶ Finding root causes in complex service graphs is difficult
▶ Anomalies from individual service nodes difficult to detect
▶ Still looking for a good solution
Increased Complexity Increased Requirements
Source
Repository
Complexity
Source Code Management
▶ Organizational scheme to help think about it
▶ Hound to help with code searching
▶ Repo tool to help keep up-to-date
▶ Upgrading libraries is a challenge
Source Repository Complexity
Dependency Management
▶ INSERT IMAGE OF VANTAGE
Source Repository Complexity
Dependency Management
Source Repository Complexity
Dependency Management
Source Repository Complexity
Dependency Management
Source Repository Complexity
Build tooling
▶ Many build systems don’t directly allow scripting
▶ Bamboo definitely doesn’t
▶ Build tooling iterations are painful
▶ Managing Bamboo build and deploy plans at scale is hard
Source Repository Complexity
Existing Build Tooling
Build and Deploy Tooling
0
50
100
150
200
250
Yodle	Service Count
Directly to Marathon configurations in Bamboo
Build and Deploy Tooling
0
50
100
150
200
250
Yodle	Service Count
LaunchPad as an Abstraction Layer
Build and Deploy Tooling
0
50
100
150
200
250
Yodle	Service Count
Build and Deploy Tooling
Sentinel For Human Service Discovery
Source Repository Complexity
Sentinel For Human Service Discovery
Source Repository Complexity
Sentinel For Human Service Discovery
Source Repository Complexity
Conclusion
Even if you aren’t on the bleeding edge …
▶ Every environment is different
▶ Legacy Applications present unique challenges
▶ Different business requirements
▶ Different trade-offs
Plan for Challenges
Every Hurdle Was Worth It
Improved Agility
0
200
400
600
800
1000
1200
1400
Monthly	Deployments
We make it easy to grow and manage
profitable customer relationships
It’s success simplified!

More Related Content

What's hot

Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...Daniel Bryant
 
Rule jenkins with configuration as code
Rule jenkins with configuration as codeRule jenkins with configuration as code
Rule jenkins with configuration as codeChristian Rasp
 
Private Cloud Deployment Automation with XebiaLabs and OpenShift
Private Cloud Deployment Automation with XebiaLabs and OpenShiftPrivate Cloud Deployment Automation with XebiaLabs and OpenShift
Private Cloud Deployment Automation with XebiaLabs and OpenShiftXebiaLabs
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Lean IT Consulting
 
5 steps to Network Reliability Engineering and Automated Network Operations
5 steps to Network Reliability Engineering and Automated Network Operations5 steps to Network Reliability Engineering and Automated Network Operations
5 steps to Network Reliability Engineering and Automated Network OperationsJames Kelly
 
5 steps to Automated Network Operations (NetOps)
5 steps to Automated Network Operations (NetOps)5 steps to Automated Network Operations (NetOps)
5 steps to Automated Network Operations (NetOps)James Kelly
 
Cloud native development without the toil
Cloud native development without the toilCloud native development without the toil
Cloud native development without the toilAmbassador Labs
 
Conquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOpsConquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOpsPerforce
 
Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training pptKhalidQureshi31
 
Flintstones or Jetsons? Jump Start Your Virtual Test Lab
Flintstones or Jetsons? Jump Start Your Virtual Test LabFlintstones or Jetsons? Jump Start Your Virtual Test Lab
Flintstones or Jetsons? Jump Start Your Virtual Test LabTechWell
 
Go Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationGo Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationFred George
 
JAXLondon 2017 "Continuous Delivery with Containers and Java"
JAXLondon 2017 "Continuous Delivery with Containers and Java"JAXLondon 2017 "Continuous Delivery with Containers and Java"
JAXLondon 2017 "Continuous Delivery with Containers and Java"Daniel Bryant
 
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...Daniel Bryant
 
DevNetOps Overview
DevNetOps OverviewDevNetOps Overview
DevNetOps OverviewJames Kelly
 
Kernel Con 2022: Securing Cloud Native Workloads
Kernel Con 2022: Securing Cloud Native WorkloadsKernel Con 2022: Securing Cloud Native Workloads
Kernel Con 2022: Securing Cloud Native WorkloadsGabriel Schuyler
 
Docker in Open Science Data Analysis Challenges by Bruce Hoff
Docker in Open Science Data Analysis Challenges by Bruce HoffDocker in Open Science Data Analysis Challenges by Bruce Hoff
Docker in Open Science Data Analysis Challenges by Bruce HoffDocker, Inc.
 
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...Puppet
 
Evolve 2017 - Vegas - Devops, Docker and Security
Evolve 2017 - Vegas - Devops, Docker and Security Evolve 2017 - Vegas - Devops, Docker and Security
Evolve 2017 - Vegas - Devops, Docker and Security John Willis
 
Introduction to DevOps - Rackspace tech night
Introduction to DevOps - Rackspace tech nightIntroduction to DevOps - Rackspace tech night
Introduction to DevOps - Rackspace tech nightMarc Cluet
 

What's hot (20)

Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
Devoxx 2017 "Continuous Delivery with Containers: The Good, the Bad, and the ...
 
Rule jenkins with configuration as code
Rule jenkins with configuration as codeRule jenkins with configuration as code
Rule jenkins with configuration as code
 
Private Cloud Deployment Automation with XebiaLabs and OpenShift
Private Cloud Deployment Automation with XebiaLabs and OpenShiftPrivate Cloud Deployment Automation with XebiaLabs and OpenShift
Private Cloud Deployment Automation with XebiaLabs and OpenShift
 
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
Continuos Integration and Delivery: from Zero to Hero with TeamCity, Docker a...
 
5 steps to Network Reliability Engineering and Automated Network Operations
5 steps to Network Reliability Engineering and Automated Network Operations5 steps to Network Reliability Engineering and Automated Network Operations
5 steps to Network Reliability Engineering and Automated Network Operations
 
5 steps to Automated Network Operations (NetOps)
5 steps to Automated Network Operations (NetOps)5 steps to Automated Network Operations (NetOps)
5 steps to Automated Network Operations (NetOps)
 
Cloud native development without the toil
Cloud native development without the toilCloud native development without the toil
Cloud native development without the toil
 
Conquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOpsConquering Chaos: Helix & DevOps
Conquering Chaos: Helix & DevOps
 
Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training ppt
 
Flintstones or Jetsons? Jump Start Your Virtual Test Lab
Flintstones or Jetsons? Jump Start Your Virtual Test LabFlintstones or Jetsons? Jump Start Your Virtual Test Lab
Flintstones or Jetsons? Jump Start Your Virtual Test Lab
 
Go Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid InnovationGo Faster - Remove Inhibitors to Rapid Innovation
Go Faster - Remove Inhibitors to Rapid Innovation
 
JAXLondon 2017 "Continuous Delivery with Containers and Java"
JAXLondon 2017 "Continuous Delivery with Containers and Java"JAXLondon 2017 "Continuous Delivery with Containers and Java"
JAXLondon 2017 "Continuous Delivery with Containers and Java"
 
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
O'Reilly/Nginx 2016: "Continuous Delivery with Containers: The Trials and Tri...
 
What is DevOps
What is DevOpsWhat is DevOps
What is DevOps
 
DevNetOps Overview
DevNetOps OverviewDevNetOps Overview
DevNetOps Overview
 
Kernel Con 2022: Securing Cloud Native Workloads
Kernel Con 2022: Securing Cloud Native WorkloadsKernel Con 2022: Securing Cloud Native Workloads
Kernel Con 2022: Securing Cloud Native Workloads
 
Docker in Open Science Data Analysis Challenges by Bruce Hoff
Docker in Open Science Data Analysis Challenges by Bruce HoffDocker in Open Science Data Analysis Challenges by Bruce Hoff
Docker in Open Science Data Analysis Challenges by Bruce Hoff
 
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
PuppetConf 2016: Continuous Delivery and DevOps with Jenkins and Puppet Enter...
 
Evolve 2017 - Vegas - Devops, Docker and Security
Evolve 2017 - Vegas - Devops, Docker and Security Evolve 2017 - Vegas - Devops, Docker and Security
Evolve 2017 - Vegas - Devops, Docker and Security
 
Introduction to DevOps - Rackspace tech night
Introduction to DevOps - Rackspace tech nightIntroduction to DevOps - Rackspace tech night
Introduction to DevOps - Rackspace tech night
 

Similar to What they don't tell you about micro-services

Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOpsEklove Mohan
 
Sql azure cluster dashboard public.ppt
Sql azure cluster dashboard public.pptSql azure cluster dashboard public.ppt
Sql azure cluster dashboard public.pptQingsong Yao
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service FabricDavide Benvegnù
 
Tampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerTampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerSakari Hoisko
 
Cloud foundry: The Platform for Forging Cloud Native Applications
Cloud foundry: The Platform for Forging Cloud Native ApplicationsCloud foundry: The Platform for Forging Cloud Native Applications
Cloud foundry: The Platform for Forging Cloud Native ApplicationsChip Childers
 
Case Study: How The Home Depot Built Quality Into Software Development
Case Study: How The Home Depot Built Quality Into Software DevelopmentCase Study: How The Home Depot Built Quality Into Software Development
Case Study: How The Home Depot Built Quality Into Software DevelopmentCA Technologies
 
Case Study: How The Home Depot Built Quality Into Software Development
Case Study: How The Home Depot Built Quality Into Software DevelopmentCase Study: How The Home Depot Built Quality Into Software Development
Case Study: How The Home Depot Built Quality Into Software DevelopmentCA Technologies
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationAlex Vranceanu
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019ciberkleid
 
Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Rick Hightower
 
Operational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU SeminarOperational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU SeminarCanturk Isci
 
[India Merge World Tour] Electric Cloud
[India Merge World Tour] Electric Cloud[India Merge World Tour] Electric Cloud
[India Merge World Tour] Electric CloudPerforce
 
Presentation application server diagnostics
Presentation   application server diagnosticsPresentation   application server diagnostics
Presentation application server diagnosticsxKinAnx
 
DevOps and Application Delivery for Hybrid Cloud - DevOpsSummit session
DevOps and Application Delivery for Hybrid Cloud  - DevOpsSummit sessionDevOps and Application Delivery for Hybrid Cloud  - DevOpsSummit session
DevOps and Application Delivery for Hybrid Cloud - DevOpsSummit sessionSanjeev Sharma
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneDashlane
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)CIVEL Benoit
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1CIVEL Benoit
 
A Framework to Measure and Maximize Cloud ROI
A Framework to Measure and Maximize Cloud ROIA Framework to Measure and Maximize Cloud ROI
A Framework to Measure and Maximize Cloud ROIRightScale
 
Deployit Product Demo
Deployit Product DemoDeployit Product Demo
Deployit Product DemoXebiaLabs
 
Getting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick StinematesGetting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick StinematesAtlassian
 

Similar to What they don't tell you about micro-services (20)

Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Sql azure cluster dashboard public.ppt
Sql azure cluster dashboard public.pptSql azure cluster dashboard public.ppt
Sql azure cluster dashboard public.ppt
 
.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric.NET microservices with Azure Service Fabric
.NET microservices with Azure Service Fabric
 
Tampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday DockerTampere Docker meetup - Happy 5th Birthday Docker
Tampere Docker meetup - Happy 5th Birthday Docker
 
Cloud foundry: The Platform for Forging Cloud Native Applications
Cloud foundry: The Platform for Forging Cloud Native ApplicationsCloud foundry: The Platform for Forging Cloud Native Applications
Cloud foundry: The Platform for Forging Cloud Native Applications
 
Case Study: How The Home Depot Built Quality Into Software Development
Case Study: How The Home Depot Built Quality Into Software DevelopmentCase Study: How The Home Depot Built Quality Into Software Development
Case Study: How The Home Depot Built Quality Into Software Development
 
Case Study: How The Home Depot Built Quality Into Software Development
Case Study: How The Home Depot Built Quality Into Software DevelopmentCase Study: How The Home Depot Built Quality Into Software Development
Case Study: How The Home Depot Built Quality Into Software Development
 
Docker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - PresentationDocker Birthday #5 Meetup Cluj - Presentation
Docker Birthday #5 Meetup Cluj - Presentation
 
Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019Delivery Pipelines as a First Class Citizen @deliverAgile2019
Delivery Pipelines as a First Class Citizen @deliverAgile2019
 
Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)Service Mesh CTO Forum (Draft 3)
Service Mesh CTO Forum (Draft 3)
 
Operational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU SeminarOperational Visibiliy and Analytics - BU Seminar
Operational Visibiliy and Analytics - BU Seminar
 
[India Merge World Tour] Electric Cloud
[India Merge World Tour] Electric Cloud[India Merge World Tour] Electric Cloud
[India Merge World Tour] Electric Cloud
 
Presentation application server diagnostics
Presentation   application server diagnosticsPresentation   application server diagnostics
Presentation application server diagnostics
 
DevOps and Application Delivery for Hybrid Cloud - DevOpsSummit session
DevOps and Application Delivery for Hybrid Cloud  - DevOpsSummit sessionDevOps and Application Delivery for Hybrid Cloud  - DevOpsSummit session
DevOps and Application Delivery for Hybrid Cloud - DevOpsSummit session
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at Dashlane
 
Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)Cerberus : Framework for Manual and Automated Testing (Web Application)
Cerberus : Framework for Manual and Automated Testing (Web Application)
 
Cerberus_Presentation1
Cerberus_Presentation1Cerberus_Presentation1
Cerberus_Presentation1
 
A Framework to Measure and Maximize Cloud ROI
A Framework to Measure and Maximize Cloud ROIA Framework to Measure and Maximize Cloud ROI
A Framework to Measure and Maximize Cloud ROI
 
Deployit Product Demo
Deployit Product DemoDeployit Product Demo
Deployit Product Demo
 
Getting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick StinematesGetting Started with Docker - Nick Stinemates
Getting Started with Docker - Nick Stinemates
 

Recently uploaded

Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKJago de Vreede
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...Zilliz
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamUiPathCommunity
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfOverkill Security
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 

Recently uploaded (20)

Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 

What they don't tell you about micro-services

  • 1. What they don’t tell you about µ-services… Q C o n N Y – J u n e 2 0 1 6 Daniel Rolnick C h i e f Te c h n o l o g y O f f i c e r
  • 2. Daniel Rolnick C h i e f Te c h n o l o g y O f f i c e r daniel.rolnick@yodle.com
  • 6. Something’s gotta give ▶ Changing environments cause stress ▶ Existing processes need to be revisited ▶ Processes need to to be created ▶ New technology needs to be integrated ▶ Businesses are built on trade-offs Evolution Requires Adaptation
  • 7. Expected developmental needs ▶ Platform as a Service ▶ Service Discovery ▶ Testing ▶ Containerization ▶ Monitoring Eyes Wide Open
  • 8. Unexpected implications of micro-services ▶ Impact on data access ▶ Build and Deploy Tooling ▶ Source Repository Complexity ▶ Cross application monitoring Expect the Unexpected
  • 9. Bring on the complexity Story Time 0 50 100 150 200 250 Yodle Service Count
  • 11. Independent Data Domains ▶ Isolated data ownership per micro-service ▶ Options: Physical Databases, Schemas, Polyglot ▶ Ideal state for new things but what about the old stuff ▶ Can’t get there in one move Microservices Macroproblems
  • 12. Baby Steps to Freedom ▶ Central data stores are leaky abstractions Microservices Macroproblems
  • 13. Baby Steps to Freedom Microservices Macroproblems ▶ Central data stores are leaky abstractions ▶ Enforce data ownership through access patterns
  • 14. Baby Steps to Freedom ▶ Central data stores are leaky abstractions ▶ Enforce data ownership through access patterns ▶ Façade for decoupling Microservices Macroproblems
  • 15. Baby Steps to Freedom ▶ Central data stores are leaky abstractions ▶ Enforce data ownership through access patterns ▶ Façade for decoupling ▶ Multi-step process Microservices Macroproblems
  • 16. Shared Containers Simplify Things Microservices Macroproblems ▶ Services in the same container reuse connections ▶ Connection pooling goes away ▶ Base connection count starts adding up ▶ You could always go to a minimum idle of zero ▶ What could go wrong?
  • 18. External Connection Pooling ▶ Connection pooling outside of the container ▶ Add visibility while you’re at it ▶ Better logging, cleaner visualizations Microservices Macroproblems
  • 20. Tooling for empowerment ▶ Server spin-up ▶ Schema and Account creation ▶ Ensure externalized your configurations Microservices Macroproblems
  • 22. Static Configurations ▶ Every application deployed to a fixed set of hosts on a set of known ports ▶ Monitoring was done at a gross system synthetic level ▶ Only complete outages were easily detectable ▶ Manual restarts required ▶ PS-Watcher and Docker restart help but are not sufficient ▶ This was not going to scale A Place for Everything and Everything…
  • 23. Keeping services alive by hand is problematic ▶ Researched available PaaS Platforms available in late 2014 • Mesos / Marathon • CoreOS ▶ What about: • Kubernetes • Swarm • AWS Elastic Container Service This Ain’t Gonna Scale
  • 24. Mesos and Marathon ▶ Deploy applications to marathon ▶ Marathon decides what host and port to run applications on ▶ Health checks are built in to ensure application up-time ▶ Mesos ensures the applications run and are contained Platform as a Service
  • 25. Platform as a Service 0 50 100 150 200 250 Yodle Service Count Pace of Innovation Increases
  • 27. Aware Apps vs. Smart Pipes ▶ Service discovery can be baked into your application Dynamic Topologies Require Service Discovery
  • 28. Aware Apps vs. Smart Pipes ▶ Plumbing can take care of it for you ▶ Smart Pipes allows • Easier path to polyglot ecosystem • Decouple applications from service discovery ▶ We chose the latter but we had to iterate a few times to get there Dynamic Topologies Require Service Discovery
  • 29. Curator already in place ▶ Already used zookeeper/curator for our thrift based macro-services ▶ Made our micro-services self register and do discovery via curator ▶ You can’t solve everything at once ▶ Not our desired end state Use What You Know
  • 30. Hipache by dotCloud ▶ URLs looked like https://svcb.services.prod.yodle.com ▶ Utilized dedicated routing servers Service Discovery V2
  • 31. Hipache by dotCloud ▶ Pros: Decoupled service discovery from applications ▶ Cons: Services had to be environment aware Service Discovery V2
  • 32. PaaS’s built-in routing layer ▶ Marathon has a built-in routing layer using haproxy ▶ Simple command to generate an haproxy config ▶ Basic listener (Qubit Bamboo) keep haproxy files up-to-date ▶ Hipache could have worked Service Discovery V3
  • 33. Discovery was simpler Service Discovery V3 Continued
  • 34. Discovery was simpler ▶ Service discovery is now fully externalized ▶ Iterate on routing and discovery independently ▶ Created tech debt for the applications Service Discovery V3 Continued
  • 36. Many to Many Problems ▶ As the number of slave nodes in our PaaS grew so did our problems ▶ Health checks from every host to every container ▶ Ensuring the HAproxy file was up-to-date on all hosts was annoying ▶ Centralized onto a small cluster of routing boxes Service Discovery V4
  • 38. Regressions give comfort ▶ Monolithic releases are understandable ▶ We tested everything ▶ Everything works Continuous Integration
  • 39. Release code as it is written Continuous Delivery Pipeline Develop Commit to Branch Continuous Integration Merge Continuous Delivery
  • 40. Regressions take time ▶ Empower continuous delivery ▶ Broke apart our monolithic regression suite ▶ Same methodology for macro and micro-services Continuous Integration
  • 41. Enter the Canary ▶ Landscape is in flux ▶ If we test a subset of things how can we be sure everything works? ▶ Canary Ensures ▶ Dependencies met ▶ Satisfying existing contracts ▶ Handle production load Continuous Delivery Pipeline
  • 42. Continuous Delivery Pipeline ▶ Special canary routing in our service discovery layer ▶ Test anywhere in the service mesh ▶ Discoverable tests using a /tests endpoint ▶ Monitor canary health in New Relic ▶ Promote to Canary Partial
  • 43. Continuous Delivery Pipeline ▶ Receive partial production load ▶ Monitor canary health in New Relic ▶ Validate response codes ▶ Measure throughput ▶ Promote to general availability
  • 48. Sentinel ▶ INSERT SCREENSHOTS OF SENTINEL Continuous Delivery Pipeline
  • 49. Sentinel ▶ INSERT SCREENSHOTS OF SENTINEL Continuous Delivery Pipeline
  • 50. Sentinel ▶ INSERT SCREENSHOTS OF SENTINEL Continuous Delivery Pipeline
  • 52. Standardization is required ▶ Polyglot environments buck standardization ▶ Micro-service environments increase complexity ▶ Operational complexity can grown unbounded ▶ Developers own the runtime ▶ Common runtime from an operator’s standpoint ▶ Tooling provides consistent deployments Containers Bring Simplicity
  • 53. Hierarchical Container Images ▶ How do you roll out environmental changes when you have 200 different container builds? Containers Bring Simplicity
  • 54. Containers make a mess ▶ Docker host machines were littered ▶ Docker registry is littered with old images ▶ Developed a tagging process Containers Bring Simplicity
  • 56. Legacy Monitoring not cutting it ▶ Designed for testing and monitoring infrastructure ▶ Needed application performance management ▶ Wanted something that would scale with us with little effort Increased Complexity Increased Requirements
  • 57. Graphite and Grafana ▶ Dropwizard metrics to report data ▶ Teams built custom dashboards ▶ Too much manual effort ▶ No alerting Increased Complexity Increased Requirements
  • 58. Enter the Hackathon ▶ New Relic Monitoring For Microservices ▶ Simple – just add an agent ▶ Detailed per application dashboards out of the box ▶ Single score to focus attention (Useful for initial canary implementation) ▶ Basic alerting Increased Complexity Increased Requirements
  • 59. 100 Apps in 100 Days ▶ Made use of our base containers ▶ Rolled out monitoring to every application in the fleet ▶ Suddenly we had visibility everywhere. ▶ Some Limitations • No good docker support (this is better now) • Services graphs aren’t dynamically generated Increased Complexity Increased Requirements
  • 60. Finding root causes ▶ Hundreds of Dashboards ▶ Hundreds of Individual Service Nodes ▶ Finding root causes in complex service graphs is difficult ▶ Anomalies from individual service nodes difficult to detect ▶ Still looking for a good solution Increased Complexity Increased Requirements
  • 62. Source Code Management ▶ Organizational scheme to help think about it ▶ Hound to help with code searching ▶ Repo tool to help keep up-to-date ▶ Upgrading libraries is a challenge Source Repository Complexity
  • 63. Dependency Management ▶ INSERT IMAGE OF VANTAGE Source Repository Complexity
  • 67. Build tooling ▶ Many build systems don’t directly allow scripting ▶ Bamboo definitely doesn’t ▶ Build tooling iterations are painful ▶ Managing Bamboo build and deploy plans at scale is hard Source Repository Complexity
  • 68. Existing Build Tooling Build and Deploy Tooling 0 50 100 150 200 250 Yodle Service Count
  • 69. Directly to Marathon configurations in Bamboo Build and Deploy Tooling 0 50 100 150 200 250 Yodle Service Count
  • 70. LaunchPad as an Abstraction Layer Build and Deploy Tooling 0 50 100 150 200 250 Yodle Service Count
  • 71. Build and Deploy Tooling
  • 72. Sentinel For Human Service Discovery Source Repository Complexity
  • 73. Sentinel For Human Service Discovery Source Repository Complexity
  • 74. Sentinel For Human Service Discovery Source Repository Complexity
  • 76. Even if you aren’t on the bleeding edge … ▶ Every environment is different ▶ Legacy Applications present unique challenges ▶ Different business requirements ▶ Different trade-offs Plan for Challenges
  • 77. Every Hurdle Was Worth It Improved Agility 0 200 400 600 800 1000 1200 1400 Monthly Deployments
  • 78. We make it easy to grow and manage profitable customer relationships It’s success simplified!