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

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

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!