digital-garden/_inbox/Доклад. PG Saga зависимые изменения данных в нескольких сервисах.md
2024-06-13 21:01:37 +03:00

34 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
aliases:
tags:
- зрелость/🌱
date:
- - 2024-04-04
zero-link:
- "[[00 Архитектура ПО]]"
parents:
linked:
- "[[Реализация повествования (Saga)]]"
author:
- "[[Евтеев Константин]]"
link: https://www.youtube.com/watch?v=OOP_4kuzaWI
---
## Заметки
Докладчик рассказывает про то, как они справлялись с переходом с монолитной архитектуры на микросервисную в Avito. Они реализуют [Database per service](Database%20per%20service.md)
Цели, которые хотели достичь:
- Обеспечивать зависимые изменения для бизнес критичных данных.
- Иметь возможность задать строгий порядок.
- Соблюсти 100% консистентность (согласовать данные, даже в случае аварий).
- Обеспечить проверку работоспособности на всех уровнях.
Был реализован сервис PG Saga. В качестве хранилища в этом сервисе используется синхронный PostgreSQL. Таким образом у них единый сервис для всех саг.
![](Pasted%20image%2020240404122458.png)
Механизм работы. На примере покупки премиальной подписки.
- Владелец саги регистрирует сагу в PG Saga
- Дальше он генерирует класс саги (с payload)
- Дальше executor в PG Saga поднимает накопившиеся саги и начинает выполнять ее по шагам
- В Billing Service выполняется резервирование денег
- В User Service применяются VAS операции. Что это?