📦 Новый проект #PostamatGA: брокеры, микросервисы, интеграции, IoT 📦
В этом месяце будем проектировать архитектуру и интеграции платформы для управления сетью постаматов.
Разберём не абстрактную систему из учебника, а сценарии, в которых Backend должен управлять тысячами физических устройств, переживать потерю связи и при этом не выдавать одну посылку дважды.
👉 Сеть постаматов #PostamatGA — платформа, где:
▫️ интернет-магазины и маркетплейсы передают отправления на доставку
▫️ система подбирает и резервирует свободные ячейки
▫️ курьеры загружают посылки и забирают возвраты
▫️ пользователи оплачивают и получают заказы
▫️ операторы следят за постаматами и отправлениями в реальном времени
👉 Как работает основной сценарий
1. Курьер сканирует посылку.
2. Система подбирает свободную ячейку подходящего размера.
3. Постамат открывает ячейку.
4. Курьер загружает посылку и закрывает дверцу.
5. Пользователь получает код или QR для получения заказа.
6. Пользователь забирает посылку, а заказ получает статус «Получен».
7. Если заказ не забрали за 72 часа, запускается процесс возврата.
В постамат попадают только оплаченные заказы.
👉 На первый взгляд, архитектура простая:
🔹 приложение получателя
🔹 интерфейс постамата с пользовательским и служебным режимами
🔹 админ-панель
🔹 Backend
🔹 база данных
👉 Что важно знать про постамат?
Это проблемное физическое IoT-устройство 😃, которое может:
🔻 временно потерять соединение
🔻 повторно отправить одно и то же событие
🔻 выполнить команду открытия дверцы, но не передать подтверждение на backend
🔻 не получить команду на открытие ячейки
🔻 восстановить связь и отправить накопившиеся сообщения одной большой пачкой
А если постаматов тысячи, платформа параллельно получает события о загрузке и выдаче посылок, открытии и закрытии дверей, изменении статусов оплаты, истечении сроков хранения и возвратах.
📌 Поэтому в #PostamatGA начнём с простой C4-схемы и будем постепенно развивать её до распределённой event-driven архитектуры.
На каждом шаге будем решать:
+ где достаточно синхронного API
+ где действительно нужен брокер
+ какие компоненты стоит выделить в микросервисы
+ как не потерять событие и не выполнить одну команду дважды
👉 С чем будем работать на проекте
1️⃣ Проектирование микросервисов
Как разделить систему на независимые части: отправления, ячейки, доступ к заказам, оплаты, уведомления, возвраты и управление устройствами.
2️⃣ API Gateway
Единая точка входа для приложений пользователей и курьеров.
Отдельно разберём, должен ли постамат взаимодействовать через тот же API Gateway или для устройств нужен отдельный контур.
3️⃣ Интеграции
Подключение интернет-магазинов, маркетплейсов, платёжных систем, курьерских служб и самих постаматов.
4️⃣ Брокеры RabbitMQ и Kafka
Какие события передавать через брокер, где оставить синхронные API и какой брокер лучше подходит под разные сценарии системы.
5️⃣ Команды и события
Чем команда «Открыть ячейку» отличается от события «Ячейка открыта» и почему неправильная модель сообщений создаёт связанность между сервисами.
6️⃣ Оркестрация vs хореография
Как управлять процессами доставки, получения и возврата заказа.
7️⃣ Надёжность обработки процессов
Идемпотентность, retry, DLQ, Transactional Outbox, порядок сообщений и восстановление после сбоев.
8️⃣ Схемы архитектуры в C4
Будем постепенно развивать одну C4/Container-схему и показывать, как каждое решение меняет архитектуру проекта.
Всё как обычно: будем делать схемы, продумывать потоки данных и разбирать, почему одно архитектурное решение здесь работает лучше другого.
👉 Хотите участвовать?
Подписывайтесь на @getanalysts и следите за хэштегами #PostamatGA и #АрхитектураGA.
Добро пожаловать в команду нового проекта! 🤝
📱 GetAnalyst | 💙 VK | 💬 Max
Post #3614
2.69K

- 🔥 30
- 👍 14
- ❤🔥 3