A Microservices Architecture That Emphasizes Rapid Development (That Conference)

52

Transcript of A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Page 1: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 2: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 3: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

A Microservices Architecture

That Emphasizes Rapid Development

Page 4: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

@robhruska

Page 5: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

@HudlEngineering

Page 6: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 7: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 8: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 9: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 10: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 11: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 12: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Customers○Coaches○Athletes○Recruiters○Video Coordinators

○Analysts○Parents○Alumni○Fans

Page 13: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

4.5MM active users130K teams

10K reqs/secondC# / JavaScript /

MongoDBAmazon Web Services

Page 14: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

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

Page 15: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

2 3 41h 2 3 6 1d12 18 5 6 7 14 21 22+

10

20

30

40

50

60

Branch Lifecycle Duration

Page 16: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Exploring ► Implementing ► Improving

Page 17: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

If you wish to make an apple pie from scratch,you must first invent the universe.

Carl Sagan

Page 18: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Problems to Solve□ Configuration□ Deployment□ Routing□ Service Discovery□ Dev. Lifecycle□ Monitoring / Tracing

□ Logging□ Testing□ Security□ ...

Page 19: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 20: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Monoliths vs. Microservices

Page 21: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Monoliths vs. Microservices

Cross-Domain Development

Page 22: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 23: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 24: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Monoliths vs. Microservices

Deployment Workflows

Page 25: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 26: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 27: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

800

100

Deploys / Week by Environment

Page 28: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

~ 46 contributors

Total # Product Team Members / Week

Page 29: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

organizations which design systems ... are constrained to produce designs which are copies of

the communication structures of these organizations

Melvin Conway

Page 30: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 31: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 32: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 33: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 34: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 35: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 36: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 37: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 38: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

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", }; }

Page 39: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 40: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

[BifrostService]public interface ISpeedTestResultService{ [Path("speedtest-result/get-latest-result-for-user")] [Idempotent] Task<SpeedTestOverallResultDto> GetLatestResultForUser(

string userId,CancellationToken? token = null);

}}

Page 41: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

using Hudl.Bifrost.Location;using Hudl.SpeedTest.Client.Services;

var result = await ServiceLocator.Get<ISpeedTestResultService>()

.GetLatestResultForUser(userId);

Page 42: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Architecture Flows With Organizational

Structure

Page 43: A Microservices Architecture That Emphasizes Rapid Development (That Conference)
Page 44: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

New Service IntroductionTeam Reorganization

○ New squads / business focus

○ Shifting focus / domain○ Replacing functionality

Reactionary

○ Deploy queue○ Build times○ Code size○ Targeted migration

Page 45: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Deploys / Week, Basketball

Page 46: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

MicroservicesLoosely coupledService orientedBounded contexts

Page 47: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

speedtest

14 files< 1000 LOC

1 Page0 APIs

1 Endpoint

users recruit

222 files44k LOC

3 Pages8 APIs

78 Endpoints

1900 Files400k LOC

Dozens ofpages & APIs64 Endpoints

Page 48: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Tiny

Small

Medium

Large

Mega

# Services by Size

Page 49: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

MicroservicesLoosely coupledService orientedBounded contexts

Page 50: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Lessons Learned & The Future

Page 51: A Microservices Architecture That Emphasizes Rapid Development (That Conference)

Thanks!@robhruska robhruska.comgithub.com/robhruska

@HudlEngineeringhudl.github.iopublic.hudl.com/bits/

Page 52: A Microservices Architecture That Emphasizes Rapid Development (That Conference)