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
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.
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.