Architektura mikroservis bez event sourcingu

Architektura mikroservis bez event sourcingu
« kdy: 23. 08. 2022, 19:14:23 »
Ahoj,
mohu se zeptat, je event sourcing nezbytný pro mikro servisy? Přijde mi, že bez použití event sourcingu neni uplně jednoduchý nasadit další node s vlastní aktuální databází. Jak to případně řešíte vy, pokud děláte mikroservisy a nepoužíváte event sourcing?
« Poslední změna: 23. 08. 2022, 19:45:36 od Petr Krčmář »


a6b

  • ***
  • 119
    • Zobrazit profil
    • E-mail
Re:architektura mikroservis bez event sourcingu
« Odpověď #1 kdy: 23. 08. 2022, 19:31:40 »
event sourcing je hlavne kvuli spolehlivosti a reprodukovatelnosti celeho systemu.
nelpite na takovych podminkach, tak to nepotrebujte a klidne muzete nejakou udp zpravu ztratit i zahodit.

Re:architektura mikroservis bez event sourcingu
« Odpověď #2 kdy: 23. 08. 2022, 19:43:38 »
Event sourcing v žádném případě není nutný pro mikroservisy. Můžete mít mikroservisy, které nepotřebují databázi. Běžné jsou mikroservisy, které používají sdílenou databázi - ať už sdílenou mezi jednotlivými instancemi jedné služby (to je naprosto OK), nebo sdílenou mezi více službami (čímž se připravíte o některé výhody mikroservis).

Naopak váš případ, kdy chcete mít pro každý node vlastní databázi, je dost netypický. A nevím, jak by vám v tom event sourcing mohl pomoci. Bylo by lepší, kdybyste popsal, jaký problém řešíte. Takhle obecně se nedá odpovědět nic jiného, než obligátní "to záleží".

a6b

  • ***
  • 119
    • Zobrazit profil
    • E-mail
Re:Architektura mikroservis bez event sourcingu
« Odpověď #3 kdy: 23. 08. 2022, 19:53:49 »
kdyz chcete pridat novou db tak nad ni prehrajete cely event log a mate ji ve stavu jako je cely system. nebo pouzijete jine nastroje a novou db udelate treba z dumpu.
kdyz michate koktejl pomoci roboticke ruky tak je to nejjednodussi zopakovanim event logu.

Re:architektura mikroservis bez event sourcingu
« Odpověď #4 kdy: 23. 08. 2022, 20:14:23 »
Naopak váš případ, kdy chcete mít pro každý node vlastní databázi, je dost netypický. A nevím, jak by vám v tom event sourcing mohl pomoci. Bylo by lepší, kdybyste popsal, jaký problém řešíte. Takhle obecně se nedá odpovědět nic jiného, než obligátní "to záleží".

Máte pravdu. Nic konkrétního neřeším, ale chtěl bych si začít něco po večerech tvořit. Nad čim se zamýšlím je, že pokud bych měl výkonnostní problémy, chtěl bych být schopný rychle spawnout nové instance mikroservis a případně i projekce "lusknutím" prstu. A zase přebytečný po nějaké době zahodit. Je to jen cvičení pro mě, nikdo se nemusí bát, že teď budu něco půl roku vorat a pak nám nebude fungovat datovka...  ;D


Re:architektura mikroservis bez event sourcingu
« Odpověď #5 kdy: 23. 08. 2022, 20:32:55 »
Máte pravdu. Nic konkrétního neřeším, ale chtěl bych si začít něco po večerech tvořit. Nad čim se zamýšlím je, že pokud bych měl výkonnostní problémy, chtěl bych být schopný rychle spawnout nové instance mikroservis a případně i projekce "lusknutím" prstu. A zase přebytečný po nějaké době zahodit. Je to jen cvičení pro mě, nikdo se nemusí bát, že teď budu něco půl roku vorat a pak nám nebude fungovat datovka...  ;D
Typické je, že data máte v jedné databázi, která škáluje nezávisle ne mikroservisách. Pokud byste chtěl, aby každá mikroservisa měla svou databázi, stejně byste měl problém, jak je mezi sebou synchronizovat. Pokud jste chtěl eventsourcing použít proto, abyste získal aktuální stav pro novou instanci služby, stejného výsledku dosáhnete i tím, že jen zkopírujete aktuální stav nějaké aktuální databáze. Ale jak jsem psal, nepokoušejte se ,ít nezávislé databáze pro každou instanci a nějak to ručně synchronizovat. Nechte tohle na té databázi, spousta databází je na to stavěná, aby byly škálovatelné a uměly synchronizovat data napříč nody.

luvar

  • ***
  • 225
    • Zobrazit profil
    • E-mail
Re:Architektura mikroservis bez event sourcingu
« Odpověď #6 kdy: 23. 08. 2022, 21:38:44 »
Ono to skalovanie sa imho hodne precenuje. Ak poskytujete nejaku sluzbu na nejakom uzemi (napriklad jedna krajina strednej europy), viete, ze tam je X ludi, ktori mozu vasu sluzbu vyuzit (maju nad 18 rokov napriklad) a viete, ze typicky ju vyuzije maximalne jeden zo 100, tak si zratate pocet userov. A toto cislo je imho tak male, ze skalovanie nema zmysel... Zvycajne staci nerobit "chobotiny", ako napriklad posielanie jsonov do kafky, kde ich paralelne spracuje 16 workerov, ktori poslu kazdy po 5 sprav do inych kafka streamov, len aby sa spravilo nakoniec nieco, co stiha clovek na kalkulacke v rovnakom case, ako cely klaster... (a nerobim si srandu, imho dnesne navrhy ludi casto koncia takymito systemami, lebo chcu mat v CV-cku, ze robili nieco skalovatelne a bol tam kubernates a malo to 30 nodov)

Proste: "... premature optimization is the root of all evil ..."

Idris

  • *****
  • 2 286
    • Zobrazit profil
    • E-mail
Re:Architektura mikroservis bez event sourcingu
« Odpověď #7 kdy: 23. 08. 2022, 23:29:16 »
Ne, určitě to není nezbytné a na hraní bohatě stačí například gRPC nebo nějaká jednoduchá fronta zpráv. Databáze může být klidně sdílená, nebo na pokusy jedna pro každou mikroslužbu a klidně různá (třeba relační vs. NoSQL, možností je spousta). Přeju zábavné experimenty.