Nebudu toto az privelmi male mikrosluzby? Cital som nejaky blog o navrhu mikrosluzieb, a kazda ms by mala riesit konkretny typ uloh (comu odpoveda tvoj navrh), ale zaroven by kazda z nich mala mat aj svoju DB, a v pripade, ze jedna sluzba nemoze fungovat bez druhej, nejedna sa o dobry navrh.
A toto mi pride ako presne tento pripad, pretoze ak writer zapisuje do svojej DB, tak reader nemoze nic precitat a posielat bez toho aby sa neustale dopytaval na data od writera. Cize by som to skor videl ako jednu sluzbu.
Hele, já mám trochu blbou zkušenost s takovýmahle poučkama. To je stejný jako když si někdo z agile vezme, že se musí dělat standupy. Ne, nemusí se dělat standupy, to přece není cíl. Ty standupy mají v nějakým systému nějakou úlohu. A ten systém má (ideálně
) nějakou vnitřní logiku, do které to musí zapadnout.
A tady to máš stejný. Vyprdni se na poučky tohodle typu. Zaměř se na to, co tvůj systém má plnit za funkce. Navrhni nejjednodušší možnou cestu k cíli. Nevymýšlej narovnáváky na ohýbáky, protože jsi někde četl, že každá microslužba musí mít ohýbák, jinak to není mikroslužba.
Takže já bych doporučil tuhle stupidní, selskou úvahu: tvůj systém je nějaká posloupnost krabiček, do každé krabičky leze A a ven z ní leze B. Proč v systému vůbec tu krabičku máš? No protože nutně potřebuješ dostat B! Nebo nepotřebuješ? No tak ji vyhoď. Potřebuješ znát změny v databázi? Ne, nepotřebuješ. Potřebuješ doručit správný zprávy správným klientům. O to ti jde. Je zjišťování změn v DB fakt ta nejpřímočařejší cesta k tomuhle cíli? No nevím, spíš bych o tom pochyboval...
Potřebuje služba S databázi? Na to je jednoduchá odpověď: když z A dělá B, potřebuje k téhle operaci znát předchozí Ačka? Ano? Jsi si tím stoprocentně jistý? Umíš vyargumentovat, proč to z principu jinak nejde? Ok, potom teda máš
stavovou službu a ta fakt nějaké úložiště potřebuje. Možná DB. Možná stačí soubor na disku. Možná tabulka v paměti. Možná že z minulých Aček si jí stačí zapamatovat si jedno číslo (např. nějaký průměr něčeho).
Každopádně kdykoli dospěješ k názoru, že tahle služba je stavová, desetkrát si promysli, jestli jdeš správnou cestou, protože bezestavové služby jsou vždycky jednodušší na správu i programování.
(to bylo jenom tak Q.E.D.)