W informatyce są tylko dwie trudne rzeczy: unieważnianie pamięci podręcznej i nazywanie rzeczy... A jeżeli mówimy co systemach rozproszonych, to do tej krótkiej listy Phila Karltona należy dopisać jeszcze skuteczną komunikację sieciową. Projektując systemy często zapominamy o tym, jak zawodny może być to komponent. A złośliwie zawiedzie pewnie w bardzo ważnym momencie... Na szczęście możemy temu zapobiec korzystając z wzorca Transactional Outbox.
Do rozmów w podkaście zapraszam osoby, które nie raz czy dwa zderzyły się z danym problemem w życiu i posiadają konkretne doświadczenie. Nie inaczej jest tym razem, a moim gościem jest dziś Jacek Milewski, który na co dzień pracuje jako modelarz i architekt oprogramowania.
W tym odcinku wraz z Jackiem rozmawiamy między innymi o:
- problemach związanych z komunikacją w systemach,
- idei wzorca Transactional Outbox / Store&Forward,
- możliwych sposobach obsługi outboxa w systemie,
- zastosowaniu tego wzorca zarówno w systemach rozproszonych jak i monolitycznych,
- kolejności przetwarzania wiadomości,
- deduplikacji czy message-poisoning.
Materiały dodatkowe:
- Microservices: Transactional outbox oraz AWS Prescriptive Guidance: Transactional Outbox Pattern, opis omawianego w odcinku rozwiązania wraz z przykładowymi diagramami
- Outbox Pattern: kiedy ten strzał do API to jednak za mało, prezentacja Jacka z konferencji Confitura PL 2023
- Push-based Outbox Pattern with Postgres Logical Replication, artykuł Oskara Dudycza przedstawiający rozwiązanie oparte o bazę danych
Zapraszam także do śledzenia profili Jacka na Twitter/X oraz LinkedIn.