The Long Road to Microservices

2011

in 2011 there was a talk-server, an API that everyone would talk to to get stuff

increase in members, so needed to do more, so cooridnation needed within teams

then the team expanded again

used to be one team, and now the team needed to coordinate more and more within the team, and it was difficult to prioritize, and a lot of coordination needed within the team

the team slowed down in terms of development

split team

then the team is split by functionality

stamp team focuses on new stamp VOIP team focuses on video

2019

app server became a huge microservice

and its not really a microservice at all

but one square (functionality) included multiple services and multiple members

e.g. the stickershop has 20 services included in the stickershop team

now

now the messaging service is a 300,000 line monolith

every team moves at a different speed

the good

development speed up

the bad

entire service could have outages people from different teams needed to solve the outage together

concept needed to build microservice architecture

  1. connectivity - armeria
  2. directory service- centrla dogma
  3. routing - LEGY

Armeria

async RPC/REST library

Central Dogma

central information management

example

armeria client doesnt need to know where the server exists url included in message

LEGY

example: moving stickershop to microservices

2017

stamp ownership data is stored in REDIS redis data is used to validate the sticker information when the user buys a sticker, that data is created from scratch and placed onto the user's redis document when a user (with a large ownership of >10,000 stickers) purchases a sticker, the talk-server (API gateway) stops momentarily because it's really slow the ripple effect causes entire servies to be affected

solution

change data structure so that the slow query would not happen introducing the circuit-breaker pattern to stop ripple effects

BUT communication quanitty would be increased