← Natrag na blog

S monolita na mikroservise dok aukcije traju

Aukcija rabljenih automobila traje u stvarnom vremenu i ne trpi zastoj. Šest godina vodili smo razvoj takve platforme i mijenjali arhitekturu sustava u hodu.

Arhitekturu sustava najteže je mijenjati ondje gdje taj sustav radi bez prekida. Na aukciji ponude stižu u razmaku od nekoliko sekundi, iza svake stoji novac, a mirnog vikenda za zamjenu motora nema.

Na Nettbilu smo to izveli kroz šest godina i nijedna aukcija zbog toga nije stala. Sve se svodi na jedno pravilo: režite po granicama poslovnih domena, nikada po tehničkim slojevima.

Rez ide ondje gdje se posao ionako dijeli

Aukcija, procjena vozila, obračun. To su pojmovi koje u tvrtki svi razumiju i bez dijagrama, pa je svaki od njih mogao izaći iz monolita kad je bio spreman, sa svojim rasporedom i svojim planom za rollback.

  • Jedan servis odjednom, svaki iza vlastitog prekidača
  • Rollback smo pisali prije migracije, a ne dok incident traje
  • Prvo shadow čitanja, onda 1 % prometa, pa ostatak: stari put ostaje dostupan dok novi ne odradi stvarno opterećenje
monolitaukcijeprocjenaobračunsvaki po svom rasporeduaukcije se ne zaustavljaju
Strangler fig: rez po rez, stari put ostaje dostupan dok novi ne preuzme promet.

Platforma ide prva, servisi poslije

Negdje na pola puta produkcija je prešla na upravljanu kontejnersku platformu, a cijeli cloud držali smo opisan u kodu.

Redoslijed nije slučajan. Iz migracije je izašlo dvadesetak zasebnih cjelina za deploy; da platforma prije toga nije bila automatizirana, svaka bi od njih samo dodala posao umjesto da ga smanji. Ispred produkcije stajalo je zasebno QA okruženje, iza nje monitoring, pa je svaki izdvojeni servis morao pokazati da radi, i prije i poslije deploya.

shadow1 %25 %100 %put kroz monolitizdvojeni servis
Prvo shadow promet, pa rollout po postocima. Iz svakog se koraka može natrag.

Druga migracija: tim

Arhitektura sustava ne može rasti brže od tima koji ga održava. Kako su servisi nastajali, uvodili smo nove inženjere u tim i svaki servis prepustili nekome od njih.

Preselite li samo kod, dobit ćete distribuirani monolit i još više dežurstava.

Imate isti problem?

Imate projekt u planu?