digital-garden/_inbox/Доклад. PG Saga зависимые изменения данных в нескольких сервисах.md

34 lines
1.9 KiB
Markdown
Raw Normal View History

2024-06-13 21:01:37 +03:00
---
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 операции. Что это?