SlideShare a Scribd company logo
1 of 52
A Microservices Architecture
That Emphasizes Rapid Development
@robhruska
@HudlEngineering
Customers
○Coaches
○Athletes
○Recruiters
○Video Coordinators
○Analysts
○Parents
○Alumni
○Fans
4.5MM active users
130K teams
10K reqs/second
C# / JavaScript / MongoDB
Amazon Web Services
Culturally Fast / Rapid
○Small cross-cutting squads
○Ship early, ship often; MVP
○Anyone can deploy, anytime
○Deploys, rollbacks are fast and easy
○Low friction for service operation
2 3 41h 2 3 6 1d12 18 5 6 7 14 21 22+
10
20
30
40
50
60
Branch Lifecycle Duration
Exploring ► Implementing ► Improving
If you wish to make an apple pie from scratch,
you must first invent the universe.
Carl Sagan
“
Problems to Solve
□ Configuration
□ Deployment
□ Routing
□ Service Discovery
□ Dev. Lifecycle
□ Monitoring / Tracing
□ Logging
□ Testing
□ Security
□ ...
Monoliths vs. Microservices
Monoliths vs. Microservices
Cross-Domain Development
Monoliths vs. Microservices
Deployment Workflows
800
100
Deploys / Week by Environment
~ 46 contributors
Total # Product Team Members / Week
organizations which design systems ... are constrained to produce
designs which are copies of the communication structures of
these organizations
Melvin Conway
“
public class RouteConfig : IRouteConfig
{
public IEnumerable<string> GetApplicationRoutes()
{
return new List<string>
{
"speedtest.*",
"api/v2/speedtest/.*",
"bifrost/speedtest/.*",
"scripts/speedtest/.*",
"bundles/speedtest/.*",
"css/speedtest/speedtest.css",
};
}
[BifrostService]
public interface ISpeedTestResultService
{
[Path("speedtest-result/get-latest-result-for-user")]
[Idempotent]
Task<SpeedTestOverallResultDto> GetLatestResultForUser(
string userId,
CancellationToken? token = null);
}
}
using Hudl.Bifrost.Location;
using Hudl.SpeedTest.Client.Services;
var result = await ServiceLocator.Get<ISpeedTestResultService>()
.GetLatestResultForUser(userId);
Architecture Flows With
Organizational Structure
New Service Introduction
Team Reorganization
○ New squads / business
focus
○ Shifting focus / domain
○ Replacing functionality
Reactionary
○ Deploy queue
○ Build times
○ Code size
○ Targeted migration
Deploys / Week, Basketball
Microservices
Loosely coupled
Service oriented
Bounded contexts
speedtest
14 files
< 1000 LOC
1 Page
0 APIs
1 Endpoint
users recruit
222 files
44k LOC
3 Pages
8 APIs
78 Endpoints
1900 Files
400k LOC
Dozens of
pages & APIs
64 Endpoints
Tiny
Small
Medium
Large
Mega
# Services by Size
Microservices
Loosely coupled
Service oriented
Bounded contexts
Lessons Learned & The Future
Thanks!
@robhruska
robhruska.com
github.com/robhruska
@HudlEngineering
hudl.github.io
public.hudl.com/bits/
A Microservices Architecture That Emphasizes Rapid Development (That Conference)

More Related Content

What's hot

Cloud Foundry: Cloud Native, Community, and Momentum
Cloud Foundry: Cloud Native, Community, and MomentumCloud Foundry: Cloud Native, Community, and Momentum
Cloud Foundry: Cloud Native, Community, and MomentumVMware Tanzu
 
stackconf 2021 | Building the first European open source Edge Computing platf...
stackconf 2021 | Building the first European open source Edge Computing platf...stackconf 2021 | Building the first European open source Edge Computing platf...
stackconf 2021 | Building the first European open source Edge Computing platf...NETWAYS
 
Highway to heaven - Microservices Meetup Munich
Highway to heaven - Microservices Meetup MunichHighway to heaven - Microservices Meetup Munich
Highway to heaven - Microservices Meetup MunichChristian Deger
 
Optimizing DevOps in the Enterprise, Eyal Edri & Oded Ramraz, Red Hat
Optimizing DevOps in the Enterprise, Eyal Edri & Oded Ramraz, Red HatOptimizing DevOps in the Enterprise, Eyal Edri & Oded Ramraz, Red Hat
Optimizing DevOps in the Enterprise, Eyal Edri & Oded Ramraz, Red HatDevOpsDays Tel Aviv
 
CakePHP in a containerized CI/CD environment | Cakefest 2017
CakePHP in a containerized CI/CD environment | Cakefest 2017CakePHP in a containerized CI/CD environment | Cakefest 2017
CakePHP in a containerized CI/CD environment | Cakefest 2017Stefan van Gastel
 
Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Michele Orsi
 
The Evolution of SpeedyCloud Resources Scheduling System
The Evolution of  SpeedyCloud Resources Scheduling SystemThe Evolution of  SpeedyCloud Resources Scheduling System
The Evolution of SpeedyCloud Resources Scheduling SystemSpeedyCloud
 
Highway to heaven - Microservices Meetup Dublin
Highway to heaven - Microservices Meetup DublinHighway to heaven - Microservices Meetup Dublin
Highway to heaven - Microservices Meetup DublinChristian Deger
 
Schlomo Schapiro - Why I like to use the proprietary Cloud services without f...
Schlomo Schapiro - Why I like to use the proprietary Cloud services without f...Schlomo Schapiro - Why I like to use the proprietary Cloud services without f...
Schlomo Schapiro - Why I like to use the proprietary Cloud services without f...Schlomo Schapiro
 
[Konveyor] roles &amp; processes that make application modernization projects...
[Konveyor] roles &amp; processes that make application modernization projects...[Konveyor] roles &amp; processes that make application modernization projects...
[Konveyor] roles &amp; processes that make application modernization projects...Konveyor Community
 
Cloud Native Practice
Cloud Native PracticeCloud Native Practice
Cloud Native PracticePhilip Zheng
 
Webinar [16 Oct, 1 PM EDT]: Modernize and Simplify IT Operations Management ...
Webinar [16 Oct, 1 PM EDT]: Modernize and Simplify IT Operations Management  ...Webinar [16 Oct, 1 PM EDT]: Modernize and Simplify IT Operations Management  ...
Webinar [16 Oct, 1 PM EDT]: Modernize and Simplify IT Operations Management ...IBM DevOps
 
Introduction of k8s-cluster-simulator
Introduction of k8s-cluster-simulatorIntroduction of k8s-cluster-simulator
Introduction of k8s-cluster-simulatorDaisuke Taniwaki
 
Migrating Java JBoss EAP Applications to Kubernetes With S2I
Migrating Java JBoss EAP Applications to Kubernetes With S2IMigrating Java JBoss EAP Applications to Kubernetes With S2I
Migrating Java JBoss EAP Applications to Kubernetes With S2IKonveyor Community
 
Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Michele Orsi
 
Cloud native principles
Cloud native principlesCloud native principles
Cloud native principlesDiego Pacheco
 
Kubecon 2019 Recap
Kubecon 2019 RecapKubecon 2019 Recap
Kubecon 2019 RecapAarno Aukia
 
DevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipelineDevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipelineAarno Aukia
 
Cloud-Native Microservices
Cloud-Native MicroservicesCloud-Native Microservices
Cloud-Native MicroservicesDiego Pacheco
 

What's hot (20)

Cloud Foundry: Cloud Native, Community, and Momentum
Cloud Foundry: Cloud Native, Community, and MomentumCloud Foundry: Cloud Native, Community, and Momentum
Cloud Foundry: Cloud Native, Community, and Momentum
 
stackconf 2021 | Building the first European open source Edge Computing platf...
stackconf 2021 | Building the first European open source Edge Computing platf...stackconf 2021 | Building the first European open source Edge Computing platf...
stackconf 2021 | Building the first European open source Edge Computing platf...
 
Highway to heaven - Microservices Meetup Munich
Highway to heaven - Microservices Meetup MunichHighway to heaven - Microservices Meetup Munich
Highway to heaven - Microservices Meetup Munich
 
Optimizing DevOps in the Enterprise, Eyal Edri & Oded Ramraz, Red Hat
Optimizing DevOps in the Enterprise, Eyal Edri & Oded Ramraz, Red HatOptimizing DevOps in the Enterprise, Eyal Edri & Oded Ramraz, Red Hat
Optimizing DevOps in the Enterprise, Eyal Edri & Oded Ramraz, Red Hat
 
CakePHP in a containerized CI/CD environment | Cakefest 2017
CakePHP in a containerized CI/CD environment | Cakefest 2017CakePHP in a containerized CI/CD environment | Cakefest 2017
CakePHP in a containerized CI/CD environment | Cakefest 2017
 
Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...
 
The Evolution of SpeedyCloud Resources Scheduling System
The Evolution of  SpeedyCloud Resources Scheduling SystemThe Evolution of  SpeedyCloud Resources Scheduling System
The Evolution of SpeedyCloud Resources Scheduling System
 
Highway to heaven - Microservices Meetup Dublin
Highway to heaven - Microservices Meetup DublinHighway to heaven - Microservices Meetup Dublin
Highway to heaven - Microservices Meetup Dublin
 
Schlomo Schapiro - Why I like to use the proprietary Cloud services without f...
Schlomo Schapiro - Why I like to use the proprietary Cloud services without f...Schlomo Schapiro - Why I like to use the proprietary Cloud services without f...
Schlomo Schapiro - Why I like to use the proprietary Cloud services without f...
 
[Konveyor] roles &amp; processes that make application modernization projects...
[Konveyor] roles &amp; processes that make application modernization projects...[Konveyor] roles &amp; processes that make application modernization projects...
[Konveyor] roles &amp; processes that make application modernization projects...
 
Cloud Native Practice
Cloud Native PracticeCloud Native Practice
Cloud Native Practice
 
Webinar [16 Oct, 1 PM EDT]: Modernize and Simplify IT Operations Management ...
Webinar [16 Oct, 1 PM EDT]: Modernize and Simplify IT Operations Management  ...Webinar [16 Oct, 1 PM EDT]: Modernize and Simplify IT Operations Management  ...
Webinar [16 Oct, 1 PM EDT]: Modernize and Simplify IT Operations Management ...
 
Introduction of k8s-cluster-simulator
Introduction of k8s-cluster-simulatorIntroduction of k8s-cluster-simulator
Introduction of k8s-cluster-simulator
 
Migrating Java JBoss EAP Applications to Kubernetes With S2I
Migrating Java JBoss EAP Applications to Kubernetes With S2IMigrating Java JBoss EAP Applications to Kubernetes With S2I
Migrating Java JBoss EAP Applications to Kubernetes With S2I
 
Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...Kubernetes and lastminute.com: our course towards better scalability and proc...
Kubernetes and lastminute.com: our course towards better scalability and proc...
 
Cloud native principles
Cloud native principlesCloud native principles
Cloud native principles
 
Drupal on azure dcb2015
Drupal on azure   dcb2015Drupal on azure   dcb2015
Drupal on azure dcb2015
 
Kubecon 2019 Recap
Kubecon 2019 RecapKubecon 2019 Recap
Kubecon 2019 Recap
 
DevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipelineDevSecOps: Bringing security to the DevOps pipeline
DevSecOps: Bringing security to the DevOps pipeline
 
Cloud-Native Microservices
Cloud-Native MicroservicesCloud-Native Microservices
Cloud-Native Microservices
 

Viewers also liked

Deploy Magnolia CMS in the Cloud with OpenShift
Deploy Magnolia CMS in the Cloud with OpenShiftDeploy Magnolia CMS in the Cloud with OpenShift
Deploy Magnolia CMS in the Cloud with OpenShiftMagnolia
 
Magnolia CMS - on Jelastic
Magnolia CMS - on JelasticMagnolia CMS - on Jelastic
Magnolia CMS - on JelasticInfo.nl
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSMagnolia
 
Magnolia CMS 5.0 - Architecture
Magnolia CMS 5.0 - ArchitectureMagnolia CMS 5.0 - Architecture
Magnolia CMS 5.0 - ArchitecturePhilipp Bärfuss
 
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedJoão Pedro Martins
 
Deploying your apps in the cloud - the options: an overview
Deploying your apps in the cloud - the options: an overviewDeploying your apps in the cloud - the options: an overview
Deploying your apps in the cloud - the options: an overviewCisco DevNet
 
IBGPのコンバージェンスの改善qunog3
IBGPのコンバージェンスの改善qunog3IBGPのコンバージェンスの改善qunog3
IBGPのコンバージェンスの改善qunog3Noriyuki Yamaguchi
 
Ddd boundaries & responsibilities
Ddd   boundaries & responsibilitiesDdd   boundaries & responsibilities
Ddd boundaries & responsibilitiesDennis Loktionov
 
【さくらのクラウド】データベースアプライアンス(プレビュー版)紹介資料
【さくらのクラウド】データベースアプライアンス(プレビュー版)紹介資料【さくらのクラウド】データベースアプライアンス(プレビュー版)紹介資料
【さくらのクラウド】データベースアプライアンス(プレビュー版)紹介資料さくらインターネット株式会社
 
Azure Web App services
Azure Web App servicesAzure Web App services
Azure Web App servicesAlexey Bokov
 
Cloud & OSGi - The Dawn of Composite Clouds (Now with demo videos)
Cloud & OSGi - The Dawn of Composite Clouds (Now with demo videos)Cloud & OSGi - The Dawn of Composite Clouds (Now with demo videos)
Cloud & OSGi - The Dawn of Composite Clouds (Now with demo videos)mfrancis
 
Creating an all-purpose REST API for Cloud services using OSGi and Sling - C ...
Creating an all-purpose REST API for Cloud services using OSGi and Sling - C ...Creating an all-purpose REST API for Cloud services using OSGi and Sling - C ...
Creating an all-purpose REST API for Cloud services using OSGi and Sling - C ...mfrancis
 
Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012
Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012
Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012mfrancis
 
Robust collaboration services with OSGi - Satya Maheshwari
Robust collaboration services with OSGi - Satya MaheshwariRobust collaboration services with OSGi - Satya Maheshwari
Robust collaboration services with OSGi - Satya Maheshwarimfrancis
 
Lessons learned from a large scale OSGii web app - P Bakker & J de Vreede
Lessons learned from a large scale OSGii web app - P Bakker & J de VreedeLessons learned from a large scale OSGii web app - P Bakker & J de Vreede
Lessons learned from a large scale OSGii web app - P Bakker & J de Vreedemfrancis
 
Eclipse Gyrex OSGi based PaaS-Like Programming Stack - OSGi Cloud Workshop Ma...
Eclipse Gyrex OSGi based PaaS-Like Programming Stack - OSGi Cloud Workshop Ma...Eclipse Gyrex OSGi based PaaS-Like Programming Stack - OSGi Cloud Workshop Ma...
Eclipse Gyrex OSGi based PaaS-Like Programming Stack - OSGi Cloud Workshop Ma...mfrancis
 

Viewers also liked (20)

Deploy Magnolia CMS in the Cloud with OpenShift
Deploy Magnolia CMS in the Cloud with OpenShiftDeploy Magnolia CMS in the Cloud with OpenShift
Deploy Magnolia CMS in the Cloud with OpenShift
 
Magnolia CMS - on Jelastic
Magnolia CMS - on JelasticMagnolia CMS - on Jelastic
Magnolia CMS - on Jelastic
 
Start Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMSStart Developing Apps for Magnolia CMS
Start Developing Apps for Magnolia CMS
 
Magnolia CMS 5.0 - Architecture
Magnolia CMS 5.0 - ArchitectureMagnolia CMS 5.0 - Architecture
Magnolia CMS 5.0 - Architecture
 
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons LearnedITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
ITARC15 Workshop - Architecting a Large Software Project - Lessons Learned
 
さくらのクラウドサービス概要資料2016年8月版
さくらのクラウドサービス概要資料2016年8月版さくらのクラウドサービス概要資料2016年8月版
さくらのクラウドサービス概要資料2016年8月版
 
Rm0582
Rm0582Rm0582
Rm0582
 
Deploying your apps in the cloud - the options: an overview
Deploying your apps in the cloud - the options: an overviewDeploying your apps in the cloud - the options: an overview
Deploying your apps in the cloud - the options: an overview
 
Justice
JusticeJustice
Justice
 
IBGPのコンバージェンスの改善qunog3
IBGPのコンバージェンスの改善qunog3IBGPのコンバージェンスの改善qunog3
IBGPのコンバージェンスの改善qunog3
 
Ddd boundaries & responsibilities
Ddd   boundaries & responsibilitiesDdd   boundaries & responsibilities
Ddd boundaries & responsibilities
 
【さくらのクラウド】データベースアプライアンス(プレビュー版)紹介資料
【さくらのクラウド】データベースアプライアンス(プレビュー版)紹介資料【さくらのクラウド】データベースアプライアンス(プレビュー版)紹介資料
【さくらのクラウド】データベースアプライアンス(プレビュー版)紹介資料
 
Azure Web App services
Azure Web App servicesAzure Web App services
Azure Web App services
 
Cloud & OSGi - The Dawn of Composite Clouds (Now with demo videos)
Cloud & OSGi - The Dawn of Composite Clouds (Now with demo videos)Cloud & OSGi - The Dawn of Composite Clouds (Now with demo videos)
Cloud & OSGi - The Dawn of Composite Clouds (Now with demo videos)
 
Creating an all-purpose REST API for Cloud services using OSGi and Sling - C ...
Creating an all-purpose REST API for Cloud services using OSGi and Sling - C ...Creating an all-purpose REST API for Cloud services using OSGi and Sling - C ...
Creating an all-purpose REST API for Cloud services using OSGi and Sling - C ...
 
Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012
Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012
Paremus Cloud and OSGi Beyond the VM - OSGi Cloud Workshop March 2012
 
OSGi Cloud Ecosystems
OSGi Cloud EcosystemsOSGi Cloud Ecosystems
OSGi Cloud Ecosystems
 
Robust collaboration services with OSGi - Satya Maheshwari
Robust collaboration services with OSGi - Satya MaheshwariRobust collaboration services with OSGi - Satya Maheshwari
Robust collaboration services with OSGi - Satya Maheshwari
 
Lessons learned from a large scale OSGii web app - P Bakker & J de Vreede
Lessons learned from a large scale OSGii web app - P Bakker & J de VreedeLessons learned from a large scale OSGii web app - P Bakker & J de Vreede
Lessons learned from a large scale OSGii web app - P Bakker & J de Vreede
 
Eclipse Gyrex OSGi based PaaS-Like Programming Stack - OSGi Cloud Workshop Ma...
Eclipse Gyrex OSGi based PaaS-Like Programming Stack - OSGi Cloud Workshop Ma...Eclipse Gyrex OSGi based PaaS-Like Programming Stack - OSGi Cloud Workshop Ma...
Eclipse Gyrex OSGi based PaaS-Like Programming Stack - OSGi Cloud Workshop Ma...
 

Similar to A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Deploy Microservices in the Real World
Deploy Microservices in the Real WorldDeploy Microservices in the Real World
Deploy Microservices in the Real WorldElana Krasner
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolithMarkus Eisele
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
Aws uk ug #8 not everything that happens in vegas stay in vegas
Aws uk ug #8   not everything that happens in vegas stay in vegasAws uk ug #8   not everything that happens in vegas stay in vegas
Aws uk ug #8 not everything that happens in vegas stay in vegasPeter Mounce
 
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Jakarta_EE
 
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019The Eclipse Foundation
 
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"Daniel Bryant
 
Rally--OpenStack Benchmarking at Scale
Rally--OpenStack Benchmarking at ScaleRally--OpenStack Benchmarking at Scale
Rally--OpenStack Benchmarking at ScaleMirantis
 
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...DataStax
 
muCon 2019: "Creating an Effective Developer Experience for Cloud-Native Apps"
muCon 2019: "Creating an Effective Developer Experience for Cloud-Native Apps"muCon 2019: "Creating an Effective Developer Experience for Cloud-Native Apps"
muCon 2019: "Creating an Effective Developer Experience for Cloud-Native Apps"Daniel Bryant
 
OpenStack Control Plane Architectures - Design Solutions
OpenStack Control Plane Architectures - Design SolutionsOpenStack Control Plane Architectures - Design Solutions
OpenStack Control Plane Architectures - Design SolutionsShane Gibson
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015aspyker
 
Workday "Creating an Effective Developer Experience on Kubernetes"
Workday "Creating an Effective Developer Experience on Kubernetes"Workday "Creating an Effective Developer Experience on Kubernetes"
Workday "Creating an Effective Developer Experience on Kubernetes"Daniel Bryant
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open SourceAll Things Open
 
Breaking the Monolith Road to Containers
Breaking the Monolith Road to ContainersBreaking the Monolith Road to Containers
Breaking the Monolith Road to ContainersAmazon Web Services
 
Containerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptxContainerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptxRavi Yadav
 

Similar to A Microservices Architecture That Emphasizes Rapid Development (That Conference) (20)

Deploy Microservices in the Real World
Deploy Microservices in the Real WorldDeploy Microservices in the Real World
Deploy Microservices in the Real World
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Stay productive while slicing up the monolith
Stay productive while slicing up the monolithStay productive while slicing up the monolith
Stay productive while slicing up the monolith
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
TestIstanbul 2015
TestIstanbul 2015TestIstanbul 2015
TestIstanbul 2015
 
Aws uk ug #8 not everything that happens in vegas stay in vegas
Aws uk ug #8   not everything that happens in vegas stay in vegasAws uk ug #8   not everything that happens in vegas stay in vegas
Aws uk ug #8 not everything that happens in vegas stay in vegas
 
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
 
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
Kubernetes Native Java and Eclipse MicroProfile | EclipseCon Europe 2019
 
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
CNCF Webinar Series: "Creating an Effective Developer Experience on Kubernetes"
 
Rally--OpenStack Benchmarking at Scale
Rally--OpenStack Benchmarking at ScaleRally--OpenStack Benchmarking at Scale
Rally--OpenStack Benchmarking at Scale
 
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
Webinar: Dyn + DataStax - helping companies deliver exceptional end-user expe...
 
muCon 2019: "Creating an Effective Developer Experience for Cloud-Native Apps"
muCon 2019: "Creating an Effective Developer Experience for Cloud-Native Apps"muCon 2019: "Creating an Effective Developer Experience for Cloud-Native Apps"
muCon 2019: "Creating an Effective Developer Experience for Cloud-Native Apps"
 
OpenStack Control Plane Architectures - Design Solutions
OpenStack Control Plane Architectures - Design SolutionsOpenStack Control Plane Architectures - Design Solutions
OpenStack Control Plane Architectures - Design Solutions
 
Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015Triangle Devops Meetup 10/2015
Triangle Devops Meetup 10/2015
 
Workday "Creating an Effective Developer Experience on Kubernetes"
Workday "Creating an Effective Developer Experience on Kubernetes"Workday "Creating an Effective Developer Experience on Kubernetes"
Workday "Creating an Effective Developer Experience on Kubernetes"
 
Netflix Architecture and Open Source
Netflix Architecture and Open SourceNetflix Architecture and Open Source
Netflix Architecture and Open Source
 
Breaking the Monolith Road to Containers
Breaking the Monolith Road to ContainersBreaking the Monolith Road to Containers
Breaking the Monolith Road to Containers
 
The Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian CockcroftThe Future of Cloud Innovation, featuring Adrian Cockcroft
The Future of Cloud Innovation, featuring Adrian Cockcroft
 
Containerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptxContainerizing couchbase with microservice architecture on mesosphere.pptx
Containerizing couchbase with microservice architecture on mesosphere.pptx
 
Digital Workloads on AWS
Digital Workloads on AWSDigital Workloads on AWS
Digital Workloads on AWS
 

Recently uploaded

MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Rob Geurden
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 

Recently uploaded (20)

MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...Simplifying Microservices & Apps - The art of effortless development - Meetup...
Simplifying Microservices & Apps - The art of effortless development - Meetup...
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 

A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Editor's Notes

  1. 5-10 mins for Q at end. Ask via link. Vote. Context = important. This presentation is descriptive, not prescriptive. Netflix, a huge, global video streaming service, is going to do things differently than a government contract shop; a 1000-person development team will approach problems differently from a 10-person team. How many users do we have? What kind of users are they? What are their needs for availability, performance, etc.? Don’t get caught up in what’s right and wrong; it’s trade-offs, and those trade-offs depend on who you, what you do, and why you do it. Background up front to establish, and talk about things like org structure / team size throughout to help frame how we thought about our problems in our situations at the time.
  2. My name’s Rob, engineer at Hudl on our Foundation tribe.
  3. Build the platform and lifecycle that helps squads across the rest of the company ship code and products quickly and safely. On microservices transition team about 2.5 years ago.
  4. At hudl, we build sports software that helps teams and athletes win. Teams record video at their games and practices.
  5. They upload that video to hudl.com, we provide tools to help them break down and analyze the video they record. share it with coaches, athletes, and analysts…
  6. who use it to better understand their game, build reports to identify tendencies and areas to improve in the future.
  7. Highlights for athletes and teams to showcase and share.
  8. Notification and event feeds for team communication...
  9. Playbooks that integrate with video Significant number of other features.
  10. Our customers. These are the people we solve problems for.
  11. 4.5MM active users in dozens of sports in over 70 countries 130k teams from small, local basketball league teams all the way up to elite teams in leagues like the NFL, EPL 10k reqs/second during american football season Mainly C# / JS / MongoDB - Running on IIS on windows server, a number of frameworks (ASP.NET MVC, React). A lot of supplementary tech as well for cache, queue, etc. All cloud, AWS. No on-premises hosting or datacenters.
  12. Small, cross-cutting teams that focus on a particular domain. Developers, designers, QA, Product Manager pave their own way and ship at their own speed. Volleyball squad that figures out what they need to do to solve customers’ problems. Most squads ship early and often. MVP: playbook @ 400 deploys and counting Anyone can deploy; in fact, most often our QA or PMs are the ones pushing code to production Deploys: zero downtime, fast and easy; moving fast comes with some risk, and the ability to react to that quickly is important No gatekeepers or throwing-over-the-wall; squads operate their services; If memory leak, they’re the ones remoting on and digging into it
  13. We measure something called Branch Lifecycle. Branch is the atomic unit of “shipping” for us, want to know how long it takes a branch to get from creation to production. Histogram breaking down that lifecycle duration for all the branches our teams have shipped in the last 30 days. The blue bars are histogram buckets for the first 24 hours, and the green bars are buckets for each day afterward. Example: Just over 60 branches have gone from created to shipped in less than one hour Median lifecycle 32 hours; half of the team’s branches go out in < 1.5 days My goal is to make sure we have platform that enables a wide spectrum here. Don’t force the fast iterations, but enable them. TRANSITION: For us, arch/plat/lifecycle is a means to keep us nimble as a product team so we can deliver fixes and features to our coaches and athletes quickly. Transition to microservices was one thing that helped us achieve that as we’ve grown our team.
  14. Ask question Interested in talking specifics about your architecture and how you think about microservices, find me afterward and I’d love to chat more about it
  15. Transition: don’t take microservices lightly
  16. Architectural Complexity Need teams to build these and support them if they break. You need test and local development environments that can work with this model. Your company’s business is probably not to “build a microservices architecture.” Time spent away from building products for your customers, and doing the things that actually make your business money. Runtime complexity, also. Change the way you think about writing code to be more tolerant of individual service failures. Build your application differently. The universe you have to invent and live in for microservices is much more complex. Don’t take it lightly.
  17. There are existing tools. Buy or OSS. There are smaller pieces that you can build with, or complete PaaS offerings. Read, read, read. I will be prescriptive here. You shouldn’t try to invent the universe yourself. Don’t go writing a strongly-consistent service registry yourself. Solved problems, leverage them. C# + Windows made this challenging for us, which is why we hand-rolled some. Custom deployment was one of those; IIS + Windows, and Windows servers are slower to start, so rolling deploys made our deploy process slower; swap out deployment payloads on existing instances Know the trade-offs. How much control do you need over the pieces? How complex is it to operate?
  18. TRANSITION: Tons of advantages and disadvantage between. Highlight a couple that are important to us relative to dev speed.
  19. We do this a lot. Anyone can make changes to others’ codebases. I’ve done a lot of development on our users service (manages users and authentication) but team mgmt may want to make a change to our role management. Awesome! Work I don’t have to do. No work order, wait for backlog, hope it was to spec. Code reviews. Probably different from some orgs that have more rigid ownership. Monolith Advantage
  20. Recruit - Athletes play at the next level of their career, college recruiting programs Profiles - Public athlete pages, showcase highlights and other strengths Profiles squad new feature, show colleges an athlete is being recruited to on their profile. Add some data and query it a bit differently on the Recruit side. Example: recruiting college, display on athlete profile page
  21. Today, these two domains are microservices for us. Data layer changes on recruit Expose via API. Contract, versioning, backwards compatibility Get that code pushed first Make changes on profiles, now it’s an API call over the network. Data transport, service discovery. Have to consider failure, set timeouts. Render to view. If bug found during testing, especially on the recruit changes, do that dance all over again. Monoliths have advantage, much simpler, much faster to code.
  22. Describe old monolith deploy lifecycle For us, 30m each. If problems or rollback, longer. Blocks everyone.
  23. Loosely coupled and independently deployable, many queues Also “Blast radius”, problem with deployment or code is limited. TRANSITION: These two concepts (cross-domain dev, deploy orchestration) are both important to us. Want to allow teams to have the flexibility to quickly make changes across domains Want to be able to get code out to production quickly when it’s ready to go Second one, having to queue up for deploys, was one of the biggest catalysts for our transition
  24. Code deploys / week since 2012 Test deploys, prod deploys Orange line, max @ 90/week (18/day) Vertical line, first micro in Jan 2014 Why was that becoming more of a problem for us at that time?
  25. Had been slowly growing our development team. Blue line is product team size. From a small team of maybe a dozen developers or so to a slightly larger team 46 contributors to the same code base. 6-7 squads, each working on a different domain Knew we were going to hire a lot in the coming years, so it was only going to get worse. Monolith for 6-7 years. Had reorganized our teams to the point where the underlying arch was fighting organizational structure.
  26. Remnant of a smaller company with a single team split among tasks in the same website. Narrower customer focus (US HS FB coaches and athletes).
  27. To follow Conway, we’d need something like this. Break it up, let teams create and work on their services. Pause, transition. Go into some detail on these blue boxes, these microservices that our teams work on today. Describe the architecture, and a couple things we do to let team work on them quickly.
  28. Describe speedtest, coach runs, we persist, load in admin. Support asks where uploading from, suggests alternatives
  29. Full-stack microservices, everything a squad needs to build an application end-to-end and deliver it as a service. ASP.NET MVC Serves static resources for client-side apps, views, APIs, and inter-service endpoints. Data layer Stateless at runtime, nothing that can’t be reconstructed quickly on startup. State and data is stored in databases like MongoDB, caches, external queueing systems, etc. Easier to manage lifecycle in production.
  30. NGINX in front. Takes incoming web requests and does routing and load balancing. Can autoscale clusters independently based on load or seasonality
  31. 35 different clusters, each covering a domain. One of these is still our monolith, still co-existing alongside all of the newer microservices we create.
  32. Run several NGINX nodes for capacity and fault tolerance. Amazon’s Elastic Load Balancer in front In triplicate, one in each of three amazon AZs
  33. NGINX for both load balancing and smart routing It looks at the requested path (/speedtest) and needs to figure out where to send it, because only a few servers specific to that application can field the route. Routes coded into service itself
  34. Easy for devs to add new routes, it’s coded right into their app
  35. Isolated mongo, admin page doesn’t reach into speedtest mongodb. Contract. Describe diagram Mitigate the pain that’s introduced into the cross-domain development workflows. For us, important to make this easy for developers, so they don’t have to re-invent service discovery, serialization, and load balancing.
  36. On the Speedtest side, publish an interface with service methods. Automatically build a Nuget package that contains the interfaces and types - lightweight contract package
  37. If our admin service wants to make this call, they import the client package Use it as a Type passed to a ServiceLocator that we’ve written. ServiceLocator intercepts the call uses attributes on the interface to help locate the service with its internal route table built from Eureka inject an HTTP call and make it over to speedtest deserializes the result back into the DTO Looks RPC-like, but the interceptor does JSON over HTTP. Lets us solve a lot of problems for the caller: Retries, Load Balancing, Health Checks; patterns like Circuit Breaker Abstracted away the complexity and lets teams get to work on the important stuff: solving problems for our users and not solving problems specific to the architecture they’re building on.
  38. Transition Microservices have been pretty helpful for us in terms of scalability - I mentioned earlier how we can scale services independently, which is really convenient. However, when it comes to scalability, in our experience, microservices have been much more beneficial for scaling our organization and teams, and not as much about scaling the application itself.. Not downplaying other adv. of microservices. In terms of scalability, app scalability (# users, amount of data) is a solvable problem in most all archs. SO as example. Code optimization, hardware, tuning. 670MM pageviews / month on a small, powerful setup. 9 webservers, a few different code bases 9 webservers, 1/1 HAproxy, 2/2 SQL, http://stackexchange.com/performance Microservices let us add more teams or restructure the teams we have, and allows our architecture flow with that restructuring
  39. Inspired by Spotify. Organized into tribes; 4 primary tribes, about 50 people average per. Tribes are a large business unit. Have a tribe focused on media and fan-facing content. Another focused on Coaching Tools for all sports. Tribe is composed of squads, cross-cutting teams with dev/QA/PM/design. CT tribe has Football, Basketball, Volleyball We re-organize fairly frequently. New business opportunities, or shifting business focus. Solve different problems or build new products. In practice, because re-org squads frequently, services don’t really line up 1:1. Temporal ownership. Squads tend to own their services while they’re devving and releasing on them. Inevitable that we shift squads. Tribes own ops duty and alerting. Each has an on-call rotation they manage. Responsible for making sure they’re staying up to date with new library versions Organizational restructuring loosely-coupled relationship between squads and services, and is also one of the primary reasons that new microservices are introduced A few other reasons that new services get created.
  40. What causes introduction of new services? Structural/Direction: Reorganization (basketball -> split) Often implies new product development by existing squad (conversion -> getpaid [new signup]) Shifting project focus on a squad (platform -> users) Adding/replacing new functionality to an existing service (recruit + recruitsearch) Reactionary, often because of service getting too large: Deploy queue Build times Not wanting to work in the monolith (10k files, 2MM lines) Targeted migration; still have monolith that handles a good number of domains; if we feel like that’s a risk as our product changes, we’ll migrate code/data out.
  41. Great example that combines several of those reasons, both reorganization and reactionary, can be seen in the way we’ve built our basketball product over the last couple years. Deploys/week, basketball. Introduce video, reports, library, record. That service grew quite large. Jokinly a “minilith” or “microlith”. If we had known at the start that we’d have split off several services, would we have started? I don’t think we woudl have. Architecting multiple services up front wouldn’t have let us prove or disprove that product as quickly as we were able to. Letting it grow larger let the team leverage faster cross-domain development
  42. Basketball, not “micro” for sure, and that’s okay with us. Loose - independent and isolated Service - communicate by contract Bounded - understood, intentionally scoped domain We don’t prescribe a max size for services, and have a range of differently-sized services.
  43. Speedtest / Users / Recruit Mega services, still an intentional scope or domain.
  44. “Monolith” gets a bad rap, and the word “micro” doesn’t need to be the emphasis when talking microservices; services can grow large and still adhere to these principles. That lets leverage the benefits of microservices while getting some of the development speed strengths of the monolith when it comes to MVPing, experimentation, and cross-domain development.
  45. Parity Differences between the way our prod and test/dev environments are set up. Pulsar + local NGINX, co-locate apps on test servers to save cost. A lot of maintenance and operational overhead in test, and bringing closer parity with production will be part of our next architectural iteration. Currently planning out the next evolution: .NET Core Containers Cross-Platform - devs with macs, parallels .NET Core should be a game-changer for us. Simplify deployment and let us run apps on Linux, which will be cheaper and let us run them more easily in containers. Conclusion To wrap up, what’s helped us the most has been having a microservices platform that’s flexible enough to follow our organizational structure, without getting too caught up on the “micro” prefix. It enables a fast development lifecycle and has helped us effectively scale our team from 50 to 200 product team, and should sets us up to grow our team even more moving forward.