Slide 1

Slide 1 text

Startups, Monoliths and Microservices Arnav Gupta

Slide 2

Slide 2 text

an interesting exercise WeekendDevPuzzle 29 Jan 2022 by Amod Malviya (@amodm)

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

P(LB) P(N) P(WEB) P(DB) P(N)

Slide 7

Slide 7 text

P(LB) P(N) P(WEB) P(SVC) P(N) P(N) P(N) P(LB)

Slide 8

Slide 8 text

P(LB) P(N) P(N) P(N) P(SVC) P(SC) P(WEB)

Slide 9

Slide 9 text

some assumptions of the different probabilities P(LB) = 99.995% P(N) = 99.995% P(SC) = 99.99% (bound by P(N)) P(WEB) = 99.6%

Slide 10

Slide 10 text

two cases - good refactoring vs bad refactoring Hypothesis A refactoring improved web server and microservice availability P(WEB) = 99.7% P(SVC) = 99.7% Hypothesis B refactoring decreased web server and microservice availability P(WEB) = 99.5% P(SVC) = 99.5%

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

when will it make sense ? for scenario B and C to be better than scenario A, we need; P(WEB) and P(SVC) greater than 99.85% post refactoring for scenario B to be better than scenario C, we need; P(SC) >>> P(LB), but remember P(SC) is bound by P(N)

Slide 13

Slide 13 text

the saga of the user service Our company runs multiple products - - a video OTT - a forum - a customer support portal So we need “SSO”

Slide 14

Slide 14 text

video OTT forum cust support DB DB DB auth DB

Slide 15

Slide 15 text

forum auth login redirect

Slide 16

Slide 16 text

forum auth login redirect challenge DB validate save token

Slide 17

Slide 17 text

forum auth login redirect challenge DB validate save token grant-token exchange forum’s auth token

Slide 18

Slide 18 text

forum auth login redirect challenge DB validate save token grant-token exchange forum’s auth token req w/ token in header validate DB

Slide 19

Slide 19 text

video OTT forum cust support DB DB DB auth DB auth library auth library auth library

Slide 20

Slide 20 text

how this works ? classical JWT (vs token based system) Auth Service ● connected to user DB ● has private key side of JWT signing ● does not need to be exposed outside DMZ/VPC ● can be called for extra-security calls, 2FA, where required ● basic request authorization flow doesn’t touch this ● can have downtime, without affecting majority of API calls Auth Library (Embeddable) ● embeddable, stateless library that can be included in other services ● contains the public key side of the JWT signing ● can call auth service for additional checks ● simple JWT verification is handled, without needing auth service ● Cons: challenges around server-side invalidation

Slide 21

Slide 21 text

cutting across seams A trivial web backend of a blogging platform. Users, Articles, Comments

Slide 22

Slide 22 text

users clients DB other services SQ, REST APIs, grpc HTML, JSON, Graphql Presentation Layer routes controllers Domain Layer services Data Layer repositories models data sources

Slide 23

Slide 23 text

users clients DB other services SQ, REST APIs, grpc HTML, JSON, Graphql Users Controller Articles Controller Comments Controller Auth Controller Users Repository Articles Repository Comments Repository Users Service Articles Service Comments Service Moderation Service Feed Service

Slide 24

Slide 24 text

users clients DB other services SQ, REST APIs, grpc HTML, JSON, Graphql Users Controller Articles Controller Comments Controller Auth Controller Users Repository Articles Repository Comments Repository Users Service Articles Service Comments Service Moderation Service Feed Service API Gateway Data Service Auth Service

Slide 25

Slide 25 text

users clients DB other services SQ, REST APIs, grpc HTML, JSON, Graphql Users Controller Articles Controller Comments Controller Auth Controller Users Repository Articles Repository Comments Repository Users Service Articles Service Comments Service Moderation Service Feed Service

Slide 26

Slide 26 text

users clients DB other services SQL, REST APIs, grpc HTML, JSON, Graphql Users Controller Articles Controller Auth Controller User Model Article Model Comment Model Users Service Articles Service Moderation Service Feed Service Proxy Data Library Auth Service Data Library Data Library Articles Cache Comment Controller Comment Service Comment Cache Data Library ML pipelines

Slide 27

Slide 27 text

the real overheads of a microservice ● each layer introduces a new availability factor in the equation ● serialization/deserialization overheads pile up faster than expected ● documentation ● observability ● on-call (stems from Conway’s Law driven microservices too) ● introducing new single-point of failures

Slide 28

Slide 28 text

what should startups do?

Slide 29

Slide 29 text

extracting out services: the no brainers ● “dumb” labour, i.e. image upload, video transcode ● “side effects” - logging, auditing, cold-storage ● “post-processing” - MLops on ingested data, moderation workflows ● “spiky” workflows - code evaluation during online test ● “sacrifice-able” features - during IPL, Hotstar can drop recommendations

Slide 30

Slide 30 text

dragons beware: process/ops guidelines ● engineers : services ratio always N : 1, not 1 : N (ideally N>2) ● exotic services - API gateway, service registry, multi-tenant queues, non-trivial caches ● senior* engineers : exotic services also to be N : 1, (ideally N > 2) ● creating services shouldn’t be “cheap”. RFCs, arch docs, and valid reasoning

Slide 31

Slide 31 text

what should startups do ? Refer further reading: ● MonolithFirst - Martin Fowler ● How to Break a Monolith to Microservices ● Segment.com - Goodbye microservices ● Lyft Blog - Scaling productivity on microservices

Slide 32

Slide 32 text

thank you and open to questions Drop a 👋 @championswimmer