SlideShare uma empresa Scribd logo
1 de 81
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
InfoQ.com: News & Community Site
• 750,000 unique visitors/month
• Published in 4 languages (English, Chinese, Japanese and Brazilian
Portuguese)
• Post content from our QCon conferences
• News 15-20 / week
• Articles 3-4 / week
• Presentations (videos) 12-15 / week
• Interviews 2-3 / week
• Books 1 / month
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
microservices-discovery-testing-
monitoring
Presented at QCon New York
www.qconnewyork.com
Purpose of QCon
- to empower software development by facilitating the spread of
knowledge and innovation
Strategy
- practitioner-driven conference designed for YOU: influencers of
change and innovation in your teams
- speakers and topics driving the evolution and innovation
- connecting and catalyzing the influencers and innovators
Highlights
- attended by more than 12,000 delegates since 2007
- held in 9 cities worldwide
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!
Watch the video with slide
synchronization on InfoQ.com!
https://www.infoq.com/presentations/
microservices-discovery-testing-
monitoring

Mais conteúdo relacionado

Destaque

So You Think You Can Tweet....in Multiple Languages
So You Think You Can Tweet....in Multiple LanguagesSo You Think You Can Tweet....in Multiple Languages
So You Think You Can Tweet....in Multiple Languagescenter4edupunx
 
POWERSTRUCT Formal Capability Statement V1.0
POWERSTRUCT Formal Capability Statement V1.0POWERSTRUCT Formal Capability Statement V1.0
POWERSTRUCT Formal Capability Statement V1.0David Hine
 
Of giant ferns and tiny prayer temples - Marianne Esders
Of giant ferns and tiny prayer temples - Marianne EsdersOf giant ferns and tiny prayer temples - Marianne Esders
Of giant ferns and tiny prayer temples - Marianne EsdersMarianne Esders
 
A hitchhiker’s guide to neuroevolution in Erlang
A hitchhiker’s guide to neuroevolution in ErlangA hitchhiker’s guide to neuroevolution in Erlang
A hitchhiker’s guide to neuroevolution in ErlangThoughtworks
 
งานสัปดาห์ที่3-กานต์รวี
งานสัปดาห์ที่3-กานต์รวีงานสัปดาห์ที่3-กานต์รวี
งานสัปดาห์ที่3-กานต์รวีkanrav
 
A Global Perspective of Intensification in relation to food security and clim...
A Global Perspective of Intensification in relation to food security and clim...A Global Perspective of Intensification in relation to food security and clim...
A Global Perspective of Intensification in relation to food security and clim...Sri Lmb
 
Deel communicatiebudget FOD Justitie ging naar hotel
Deel communicatiebudget FOD Justitie ging naar hotelDeel communicatiebudget FOD Justitie ging naar hotel
Deel communicatiebudget FOD Justitie ging naar hotelThierry Debels
 
Emocionalna inteligencija
Emocionalna inteligencijaEmocionalna inteligencija
Emocionalna inteligencijajcrnogorac
 
36 Motivational Business Quotes to Keep you Going!
36 Motivational Business Quotes to Keep you Going!36 Motivational Business Quotes to Keep you Going!
36 Motivational Business Quotes to Keep you Going!Rebecca - The Savvy Marketer
 
Independent healthcare in-house lawyers forum
Independent healthcare in-house lawyers forumIndependent healthcare in-house lawyers forum
Independent healthcare in-house lawyers forumBrowne Jacobson LLP
 
Interesting facts about the grand canyon
Interesting facts about the grand canyonInteresting facts about the grand canyon
Interesting facts about the grand canyonAustin Gratham
 

Destaque (15)

sales
salessales
sales
 
So You Think You Can Tweet....in Multiple Languages
So You Think You Can Tweet....in Multiple LanguagesSo You Think You Can Tweet....in Multiple Languages
So You Think You Can Tweet....in Multiple Languages
 
Resume - Lisa
Resume - LisaResume - Lisa
Resume - Lisa
 
POWERSTRUCT Formal Capability Statement V1.0
POWERSTRUCT Formal Capability Statement V1.0POWERSTRUCT Formal Capability Statement V1.0
POWERSTRUCT Formal Capability Statement V1.0
 
Of giant ferns and tiny prayer temples - Marianne Esders
Of giant ferns and tiny prayer temples - Marianne EsdersOf giant ferns and tiny prayer temples - Marianne Esders
Of giant ferns and tiny prayer temples - Marianne Esders
 
Child Well Being Assessment
Child Well Being Assessment Child Well Being Assessment
Child Well Being Assessment
 
A hitchhiker’s guide to neuroevolution in Erlang
A hitchhiker’s guide to neuroevolution in ErlangA hitchhiker’s guide to neuroevolution in Erlang
A hitchhiker’s guide to neuroevolution in Erlang
 
งานสัปดาห์ที่3-กานต์รวี
งานสัปดาห์ที่3-กานต์รวีงานสัปดาห์ที่3-กานต์รวี
งานสัปดาห์ที่3-กานต์รวี
 
Week 4 blog
Week 4 blogWeek 4 blog
Week 4 blog
 
A Global Perspective of Intensification in relation to food security and clim...
A Global Perspective of Intensification in relation to food security and clim...A Global Perspective of Intensification in relation to food security and clim...
A Global Perspective of Intensification in relation to food security and clim...
 
Deel communicatiebudget FOD Justitie ging naar hotel
Deel communicatiebudget FOD Justitie ging naar hotelDeel communicatiebudget FOD Justitie ging naar hotel
Deel communicatiebudget FOD Justitie ging naar hotel
 
Emocionalna inteligencija
Emocionalna inteligencijaEmocionalna inteligencija
Emocionalna inteligencija
 
36 Motivational Business Quotes to Keep you Going!
36 Motivational Business Quotes to Keep you Going!36 Motivational Business Quotes to Keep you Going!
36 Motivational Business Quotes to Keep you Going!
 
Independent healthcare in-house lawyers forum
Independent healthcare in-house lawyers forumIndependent healthcare in-house lawyers forum
Independent healthcare in-house lawyers forum
 
Interesting facts about the grand canyon
Interesting facts about the grand canyonInteresting facts about the grand canyon
Interesting facts about the grand canyon
 

Mais de C4Media

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoC4Media
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileC4Media
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020C4Media
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsC4Media
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No KeeperC4Media
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like OwnersC4Media
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaC4Media
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideC4Media
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDC4Media
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine LearningC4Media
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at SpeedC4Media
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsC4Media
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsC4Media
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerC4Media
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleC4Media
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeC4Media
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereC4Media
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing ForC4Media
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data EngineeringC4Media
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreC4Media
 

Mais de C4Media (20)

Streaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live VideoStreaming a Million Likes/Second: Real-Time Interactions on Live Video
Streaming a Million Likes/Second: Real-Time Interactions on Live Video
 
Next Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy MobileNext Generation Client APIs in Envoy Mobile
Next Generation Client APIs in Envoy Mobile
 
Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020Software Teams and Teamwork Trends Report Q1 2020
Software Teams and Teamwork Trends Report Q1 2020
 
Understand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java ApplicationsUnderstand the Trade-offs Using Compilers for Java Applications
Understand the Trade-offs Using Compilers for Java Applications
 
Kafka Needs No Keeper
Kafka Needs No KeeperKafka Needs No Keeper
Kafka Needs No Keeper
 
High Performing Teams Act Like Owners
High Performing Teams Act Like OwnersHigh Performing Teams Act Like Owners
High Performing Teams Act Like Owners
 
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to JavaDoes Java Need Inline Types? What Project Valhalla Can Bring to Java
Does Java Need Inline Types? What Project Valhalla Can Bring to Java
 
Service Meshes- The Ultimate Guide
Service Meshes- The Ultimate GuideService Meshes- The Ultimate Guide
Service Meshes- The Ultimate Guide
 
Shifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CDShifting Left with Cloud Native CI/CD
Shifting Left with Cloud Native CI/CD
 
CI/CD for Machine Learning
CI/CD for Machine LearningCI/CD for Machine Learning
CI/CD for Machine Learning
 
Fault Tolerance at Speed
Fault Tolerance at SpeedFault Tolerance at Speed
Fault Tolerance at Speed
 
Architectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep SystemsArchitectures That Scale Deep - Regaining Control in Deep Systems
Architectures That Scale Deep - Regaining Control in Deep Systems
 
ML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.jsML in the Browser: Interactive Experiences with Tensorflow.js
ML in the Browser: Interactive Experiences with Tensorflow.js
 
Build Your Own WebAssembly Compiler
Build Your Own WebAssembly CompilerBuild Your Own WebAssembly Compiler
Build Your Own WebAssembly Compiler
 
User & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix ScaleUser & Device Identity for Microservices @ Netflix Scale
User & Device Identity for Microservices @ Netflix Scale
 
Scaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's EdgeScaling Patterns for Netflix's Edge
Scaling Patterns for Netflix's Edge
 
Make Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home EverywhereMake Your Electron App Feel at Home Everywhere
Make Your Electron App Feel at Home Everywhere
 
The Talk You've Been Await-ing For
The Talk You've Been Await-ing ForThe Talk You've Been Await-ing For
The Talk You've Been Await-ing For
 
Future of Data Engineering
Future of Data EngineeringFuture of Data Engineering
Future of Data Engineering
 
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and MoreAutomated Testing for Terraform, Docker, Packer, Kubernetes, and More
Automated Testing for Terraform, Docker, Packer, Kubernetes, and More
 

Último

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
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
 
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 Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 

Último (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
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
 
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 Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 

What They Don’t Tell You About Microservices…

  • 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. InfoQ.com: News & Community Site • 750,000 unique visitors/month • Published in 4 languages (English, Chinese, Japanese and Brazilian Portuguese) • Post content from our QCon conferences • News 15-20 / week • Articles 3-4 / week • Presentations (videos) 12-15 / week • Interviews 2-3 / week • Books 1 / month Watch the video with slide synchronization on InfoQ.com! https://www.infoq.com/presentations/ microservices-discovery-testing- monitoring
  • 3. Presented at QCon New York www.qconnewyork.com Purpose of QCon - to empower software development by facilitating the spread of knowledge and innovation Strategy - practitioner-driven conference designed for YOU: influencers of change and innovation in your teams - speakers and topics driving the evolution and innovation - connecting and catalyzing the influencers and innovators Highlights - attended by more than 12,000 delegates since 2007 - held in 9 cities worldwide
  • 4. 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
  • 8. 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
  • 9. Expected developmental needs ▶ Platform as a Service ▶ Service Discovery ▶ Testing ▶ Containerization ▶ Monitoring Eyes Wide Open
  • 10. Unexpected implications of micro-services ▶ Impact on data access ▶ Build and Deploy Tooling ▶ Source Repository Complexity ▶ Cross application monitoring Expect the Unexpected
  • 11. Bring on the complexity Story Time 0 50 100 150 200 250 Yodle Service Count
  • 13. 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
  • 14. Baby Steps to Freedom ▶ Central data stores are leaky abstractions Microservices Macroproblems
  • 15. Baby Steps to Freedom Microservices Macroproblems ▶ Central data stores are leaky abstractions ▶ Enforce data ownership through access patterns
  • 16. Baby Steps to Freedom ▶ Central data stores are leaky abstractions ▶ Enforce data ownership through access patterns ▶ Façade for decoupling Microservices Macroproblems
  • 17. 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
  • 18. 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?
  • 20. External Connection Pooling ▶ Connection pooling outside of the container ▶ Add visibility while you’re at it ▶ Better logging, cleaner visualizations Microservices Macroproblems
  • 22. Tooling for empowerment ▶ Server spin-up ▶ Schema and Account creation ▶ Ensure externalized your configurations Microservices Macroproblems
  • 24. 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…
  • 25. 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
  • 26. 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
  • 27. Platform as a Service 0 50 100 150 200 250 Yodle Service Count Pace of Innovation Increases
  • 29. Aware Apps vs. Smart Pipes ▶ Service discovery can be baked into your application Dynamic Topologies Require Service Discovery
  • 30. 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
  • 31. 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
  • 32. Hipache by dotCloud ▶ URLs looked like https://svcb.services.prod.yodle.com ▶ Utilized dedicated routing servers Service Discovery V2
  • 33. Hipache by dotCloud ▶ Pros: Decoupled service discovery from applications ▶ Cons: Services had to be environment aware Service Discovery V2
  • 34. 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
  • 35. Discovery was simpler Service Discovery V3 Continued
  • 36. 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
  • 38. 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
  • 40. Regressions give comfort ▶ Monolithic releases are understandable ▶ We tested everything ▶ Everything works Continuous Integration
  • 41. Release code as it is written Continuous Delivery Pipeline Develop Commit to Branch Continuous Integration Merge Continuous Delivery
  • 42. Regressions take time ▶ Empower continuous delivery ▶ Broke apart our monolithic regression suite ▶ Same methodology for macro and micro-services Continuous Integration
  • 43. 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
  • 44. 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
  • 45. Continuous Delivery Pipeline ▶ Receive partial production load ▶ Monitor canary health in New Relic ▶ Validate response codes ▶ Measure throughput ▶ Promote to general availability
  • 50. Sentinel ▶ INSERT SCREENSHOTS OF SENTINEL Continuous Delivery Pipeline
  • 51. Sentinel ▶ INSERT SCREENSHOTS OF SENTINEL Continuous Delivery Pipeline
  • 52. Sentinel ▶ INSERT SCREENSHOTS OF SENTINEL Continuous Delivery Pipeline
  • 54. 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
  • 55. Hierarchical Container Images ▶ How do you roll out environmental changes when you have 200 different container builds? Containers Bring Simplicity
  • 56. Containers make a mess ▶ Docker host machines were littered ▶ Docker registry is littered with old images ▶ Developed a tagging process Containers Bring Simplicity
  • 58. 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
  • 59. Graphite and Grafana ▶ Dropwizard metrics to report data ▶ Teams built custom dashboards ▶ Too much manual effort ▶ No alerting Increased Complexity Increased Requirements
  • 60. 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
  • 61. 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
  • 62. 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
  • 64. 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
  • 65. Dependency Management ▶ INSERT IMAGE OF VANTAGE Source Repository Complexity
  • 69. 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
  • 70. Existing Build Tooling Build and Deploy Tooling 0 50 100 150 200 250 Yodle Service Count
  • 71. Directly to Marathon configurations in Bamboo Build and Deploy Tooling 0 50 100 150 200 250 Yodle Service Count
  • 72. LaunchPad as an Abstraction Layer Build and Deploy Tooling 0 50 100 150 200 250 Yodle Service Count
  • 73. Build and Deploy Tooling
  • 74. Sentinel For Human Service Discovery Source Repository Complexity
  • 75. Sentinel For Human Service Discovery Source Repository Complexity
  • 76. Sentinel For Human Service Discovery Source Repository Complexity
  • 78. 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
  • 79. Every Hurdle Was Worth It Improved Agility 0 200 400 600 800 1000 1200 1400 Monthly Deployments
  • 80. We make it easy to grow and manage profitable customer relationships It’s success simplified!
  • 81. Watch the video with slide synchronization on InfoQ.com! https://www.infoq.com/presentations/ microservices-discovery-testing- monitoring