📚 Очередь VS Брокер: подборка вопросов с собеседований 📚
Очередь сообщений — это структура данных,
которая хранит сообщения до тех пор, пока их не заберёт получатель.
Брокер сообщений — это программное обеспечение,
которое управляет обменом сообщений между приложениями. Он может включать в себя множество очередей сообщений и дополнительно поддерживать топики, маршрутизацию, обработку и механизмы гарантии доставки.
Вопросы с подвохом, которые вы можете встретить на собеседованиях на Middle+ Системного Аналитика:
👉 1. Если у нас есть очередь сообщений, зачем нужен брокер?
👉 2. Может ли очередь работать без брокера?
👉 3. Могу ли я использовать брокер без очередей сообщений?
👉 4. Если я использую очередь сообщений, могу ли я гарантировать доставку сообщения?
👉 5. Очередь всегда работает по принципу FIFO (первое пришло - первое вышло из очереди)?
👉 6. Может ли очередь работать с несколькими производителями и потребителями?
Подробная статья:
🔗 Брокер и очередь сообщений: что это и в чем отличия?
#АрхитектураGA
Очередь сообщений — это структура данных,
которая хранит сообщения до тех пор, пока их не заберёт получатель.
Брокер сообщений — это программное обеспечение,
которое управляет обменом сообщений между приложениями. Он может включать в себя множество очередей сообщений и дополнительно поддерживать топики, маршрутизацию, обработку и механизмы гарантии доставки.
Вопросы с подвохом, которые вы можете встретить на собеседованиях на Middle+ Системного Аналитика:
👉 1. Если у нас есть очередь сообщений, зачем нужен брокер?
👉 2. Может ли очередь работать без брокера?
👉 3. Могу ли я использовать брокер без очередей сообщений?
👉 4. Если я использую очередь сообщений, могу ли я гарантировать доставку сообщения?
👉 5. Очередь всегда работает по принципу FIFO (первое пришло - первое вышло из очереди)?
👉 6. Может ли очередь работать с несколькими производителями и потребителями?
Прежде чем открывать картинки с ответами, попробуйте ответить сами! 😉
Подробная статья:
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤35👍17🔥12😁2
Брокеры — это посредники в передаче сообщений между системами или сервисами.
Они позволяют асинхронно обмениваться данными и обеспечивают гарантию доставки сообщений.
👉 Принцип работы:
1. Сервис 1 (Producer/ Производитель) хочет отправить данные в Сервис 2 (Consumer/ Потребитель).
2. Сервис 2 в это время может быть перегружен или занят.
3. Чтобы Сервис 1 не ждал, пока Сервис 2 станет доступен, он кладет сообщение в Брокер и продолжает свою работу.
4. Брокер сохраняет сообщение и ставит его в очередь к обработке.
5. Как только Сервис 2 становится доступен, то он забирает сообщение из Брокера и обрабатывает его.
По сути брокеры - это временные Базы Данных,
которые гарантируют, что сообщения (данные) в них будут храниться, пока их не заберут и не обработают соответствующие системы или сервисы.
👉 Брокеры могут использоваться:
+ в сервисной и микросервисной архитектуре,
+ в событийно-ориентированной архитектуре (EDA),
+ когда нужна фоновая обработка событий в монолите,
+ для асинхронных интеграций.
👉 Брокеры сообщений предлагают два основных шаблона обмена данными:
1. Точка-точка (Point-to-Point Messaging)
Это паттерн, используемый в очередях сообщений, где существует один отправитель и один получатель. Каждое сообщение в очереди отправляется только одному получателю и может быть обработано только один раз.
2. Публикация-подписка (Publish/Subscribe Messaging)
В этом паттерне отправитель (producer) публикует сообщения в определённую тему (topic), а подписчики (consumers) подписываются на темы, чтобы получать сообщения.
Все сообщения, опубликованные в теме, доставляются всем приложениям, подписанным на неё.
Применяется в случаях, где несколько систем должны получить одну и ту же информацию.
Возможности и логика работы брокеров отличаются в зависимости от конкретного решения.
Основные решения по брокерам на рынке:
✅ Apache Kafka
✅ RabbitMQ
✅ ActiveMQ
✅ Amazon MQ, Amazon SQS
✅ Яндекс Message Queue (YMQ) - аналог Amazon
✅ и другие.
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21❤10🔥8😁1
Хотите развиваться в теме проектирования архитектуры и работать в IT-продуктах с брокерами и микросервисами? Тогда вам сюда!
👉 Узнать подробнее и зарегистрироваться
🎥 Урок в записи — смотрите в удобное время.
Что разберём:
1. Монолит: плюсы и минусы
2. SOA vs MSA: в чём разница и когда что выбрать
3. Пошаговый план деления монолита на микросервисы
4. Разбор кейса по вынесению модуля из монолита в деталях: архитектура, вынесение данных в отдельную БД, особенности
5. Почему молодым продуктам лучше делать модульный монолит
6. Как аналитику расти в сторону архитектура и что для этого нужно
Практика, реальные кейсы и ответы на вопросы.
Регистрируйтесь, получайте опыт и переходите на новый уровень в системном анализе! 🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14👍9🔥7😁1
Forwarded from 👩🏻💻 Подкаст Системных Аналитиков | GetAnalyst
🤔 Всё про Agile, Scrum, Kanban и «Документация не нужна» 🤔
В этом выпуске разбираемся, что такое Agile на самом деле, и как системные аналитики работают в таких командах.
Если вы начинающий системный аналитик или только делаете первые шаги в IT, этот эпизод поможет разобраться, что такое Agile (Scrum, Kanban).
👉 А если вас раздражает фраза “документация не нужна”, вы не понимаете, зачем столько созвонов и почему это всё в Agile — этот выпуск также для вас.
🔗 Сайт эпизода
Слушайте эпизод и расширяйте свою профессиональную экспертизу!
Эпизод доступен в:
⏯ Apple Podcast
⏯ Яндекс.Музыка
⏯ Telegram
⏯ Castbox
⏯ Звук
⏯ Spotify
⏯ RuTube
⏯ YouTube
⏯ VK Video
Участие в сообществе Системных Аналитиков GetAnalyst — это шаг к новому опыту и развитию в карьере каждый день!💫
В этом выпуске разбираемся, что такое Agile на самом деле, и как системные аналитики работают в таких командах.
Если вы начинающий системный аналитик или только делаете первые шаги в IT, этот эпизод поможет разобраться, что такое Agile (Scrum, Kanban).
👉 А если вас раздражает фраза “документация не нужна”, вы не понимаете, зачем столько созвонов и почему это всё в Agile — этот выпуск также для вас.
Слушайте эпизод и расширяйте свою профессиональную экспертизу!
Эпизод доступен в:
⏯ Apple Podcast
⏯ Яндекс.Музыка
⏯ Telegram
⏯ Castbox
⏯ Звук
⏯ Spotify
⏯ RuTube
⏯ YouTube
⏯ VK Video
Участие в сообществе Системных Аналитиков GetAnalyst — это шаг к новому опыту и развитию в карьере каждый день!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍6🤩3
This media is not supported in your browser
VIEW IN TELEGRAM
Есть такая фраза: "не усложняй".
Это работает и в разработке систем.
Лучшие решения - простые 🙌
И иногда джуны находят эти решения случайно, и лучше, чем опытные специалисты 😀
P.S. Не знаю кто в Hendai сделал эту прекрасную рекламу с котами, но она проста и прекрасна (Оригинал в запретграме)🐈⬛
P.S.S. Доступ к бесплатному обучению по Архитектуре открыт 📚
Это работает и в разработке систем.
Лучшие решения - простые 🙌
И иногда джуны находят эти решения случайно, и лучше, чем опытные специалисты 😀
P.S. Не знаю кто в Hendai сделал эту прекрасную рекламу с котами, но она проста и прекрасна (Оригинал в запретграме)
P.S.S. Доступ к бесплатному обучению по Архитектуре открыт 📚
Please open Telegram to view this post
VIEW IN TELEGRAM
❤20🔥9😁9🤩1
Я способна отложить абсолютно всё: от похода к врачу до обучения в Гарварде 🙌
Вроде хочешь перемен, а вместо действий — бесконечное «сделаю завтра».
Поход к врачу откладывается до следующего месяца, пробежка вдоль океана — до «когда будет настроение», мечты о новом образовании — на неопределённое «потом»🙌
А внутри — растущее разочарование и усталость от самой себя.
Так может продолжаться долго.
Мой актуальный рекорд прокрастинации: почти год откладывала обучение и сертификацию Гарварде 🎓
Казалось, ну куда мне — нет времени, а если я тупить буду на английском, бизнес пока маленький… синдром самозванца forever💗
Но в итоге просто взяла и отправила заявку, пока в очередной раз изучала сайт и раздумывала.
И всё: я в деле, назад дороги нет 🤪🥲
Цель есть. Энергия появилась.
Сейчас готовлюсь, планирую как команды меня подстрахуют, чтобы я могла держать фокус на учёбе.
Получится? Не знаю.
Но я уже в деле и надо будет сдать кучу домашек с жесткими дедлайнами.
У меня появился чёткий план.
И поддерживающее сообщество студентов, кто будет со мной проходить этот путь.
Я уже убедилась: стоит сделать первый шаг — и появляется ощущение лёгкости и силы.
Едва сдвинешься с места — и мир как-будто сам начинает тебе помогать реализовать план 🪄
Так что если ты тоже постоянно откладываешь что-то важное, попробуй сделать маленький шаг уже сегодня.
Просто один шаг навстречу цели.
Ты удивишься, сколько энергии и перемен он может дать 🦄
Вроде хочешь перемен, а вместо действий — бесконечное «сделаю завтра».
Поход к врачу откладывается до следующего месяца, пробежка вдоль океана — до «когда будет настроение», мечты о новом образовании — на неопределённое «потом»
А внутри — растущее разочарование и усталость от самой себя.
Так может продолжаться долго.
Мой актуальный рекорд прокрастинации: почти год откладывала обучение и сертификацию Гарварде 🎓
Казалось, ну куда мне — нет времени, а если я тупить буду на английском, бизнес пока маленький… синдром самозванца forever
Но в итоге просто взяла и отправила заявку, пока в очередной раз изучала сайт и раздумывала.
И всё: я в деле, назад дороги нет 🤪🥲
Цель есть. Энергия появилась.
Сейчас готовлюсь, планирую как команды меня подстрахуют, чтобы я могла держать фокус на учёбе.
Получится? Не знаю.
Но я уже в деле и надо будет сдать кучу домашек с жесткими дедлайнами.
У меня появился чёткий план.
И поддерживающее сообщество студентов, кто будет со мной проходить этот путь.
Я уже убедилась: стоит сделать первый шаг — и появляется ощущение лёгкости и силы.
Едва сдвинешься с места — и мир как-будто сам начинает тебе помогать реализовать план 🪄
Так что если ты тоже постоянно откладываешь что-то важное, попробуй сделать маленький шаг уже сегодня.
Просто один шаг навстречу цели.
Ты удивишься, сколько энергии и перемен он может дать 🦄
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥83❤28👏14❤🔥9👎2
GetAnalyst - Kafka - 8 шагов для понимания.png
522.6 KB
1️⃣ Что такое Kafka?
2️⃣ Сообщения в Kafka
3️⃣ Topics & Partitions
4️⃣ Kafka Producer
5️⃣ Kafka Consumer
6️⃣ Kafka Cluster
7️⃣ Сценарии использования Kafka
Подробнее про Kafka в подкасте GetAnalyst
Сохраняйте картинку в личный архив.
Это идеальный чек-лист для подготовки к собеседованиям ✅
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤12😍11🔥5🥰2👏1
This media is not supported in your browser
VIEW IN TELEGRAM
Apache Kafka — это распределённая платформа потоковой обработки данных.
Предназначена для публикации, хранения и обработки событий/сообщений в реальном времени.
Основные компоненты:
✔️ Продюсеры (Producers)
1) Генерируют сообщения/события к обработке и отправляют в топики (темы).
2) Определяют, в какую партицию топика записывать данные: автоматически или по заданным правилам.
3) Могут быть чем угодно: микросервисы, устройства IoT и другие приложения.
4) Поддерживают режимы отправки:
+ Синхронный — ждёт подтверждения от Kafka перед отправкой следующего сообщения.
+ Асинхронный — отправляет сообщения без ожидания ответа.
5) Могут гарантировать доставку с разными уровнями подтверждения (acks):
+ acks=0 — без ожидания подтверждения (возможна потеря данных, высокая скорость).
+ acks=1 — подтверждение только от лидера партиции (среднее).
+ acks=all — подтверждение от всех реплик (максимальная надёжность).
✔️ Потребители (Consumers)
1) Подписываются на один или несколько топиков и получают сообщения/события.
2) Могут работать как отдельные клиенты или объединяться в группы (Consumer Groups) для параллельной обработки сообщений.
3) В группе консьюмеров каждый участник обрабатывает свою часть партиций.
4) Kafka гарантирует, что каждое сообщение будет обработано хотя бы одним потребителем в группе.
5) Модели доставки сообщений:
+ at-least-once — как минимум 1 раз, возможны дубликаты.
+ exactly-once — ровно один раз.
✔️ Топики (Topics) — логическая тема, куда продюсеры отправляют сообщения, а потребители их читают
✔️ Партиции (Partitions) — подмножество данных внутри топика, которое позволяет распределять нагрузку и масштабировать обработку сообщений. Каждый топик состоит из одной или нескольких партиций
✔️ Брокер (Broker) — сервер Kafka, который отвечает за хранение, управление и передачу данных внутри кластера
✔️ Кластер — это группа брокеров, работающих вместе для масштабирования и распределённой обработки данных
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
❤40👍22🔥6😁3👏1
This media is not supported in your browser
VIEW IN TELEGRAM
✔️ Топики (Topics)
1) Логическая категория или тема, куда Продюсеры отправляют сообщения, а Потребители их читают.
2) Представляют собой поток сообщений, где каждое имеет: ключ, значение, метаданные.
3) Не удаляют сообщения сразу после обработки — данные хранятся в топике в течение заданного времени.
4) Могут быть разделены на партиции, что позволяет распределять нагрузку между Продюсерами и Консьюмерами.
✔️ Партиции (Partitions)
1) Каждый топик состоит из одной или нескольких партиций (разделов).
2) Сообщения внутри партиции хранятся в строгом порядке (FIFO — "первым пришёл, первым обработался").
3) Разные партиции могут обрабатываться параллельно, что увеличивает производительность Kafka.
4) Каждое сообщение в партиции получает уникальный порядковый номер (offset), который используется Потребителями для чтения данных.
5) Продюсеры могут отправлять сообщения в партиции автоматически или по определённому ключу (например, все заказы одного клиента попадут в одну партицию).
6) Один потребитель из Группы Консьюмеров читает данные только из своей партиции, что позволяет распределять нагрузку.
7) Повышение надежности обеспечивается через репликацию: выделяют Leader Replica (основная копия данных партиции) и Follower Replica (копирует данные лидера в синхронном или асинхронном режиме).
✔️ Брокеры (Brokers)
1) Хранят топики и их партиции.
2) Обрабатывают запросы Продюсеров на запись и Консьюмеров на чтение данных.
3) Управляют репликацией партиций для отказоустойчивости.
4) Автоматически перераспределяют нагрузку при добавлении новых брокеров в кластер.
✔️ Кластер (Cluster)
1) Это группа брокеров, работающих вместе для масштабирования и распределённой обработки данных.
2) Использует ZooKeeper или KRaft для координации (назначает лидеров партиций, отслеживает состояние брокеров).
3) Позволяет добавлять новые брокеры без остановки системы.
4) Поддерживает автоматическое восстановление при сбоях отдельных узлов.
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
❤29👏14🔥1
Ранее мы спроектировали схему архитектуры проекта для станций зарядки электро-авто.
Но если в архитектуре не использовать брокер сообщений, а делать прямые синхронные вызовы между микросервисами (через REST/gRPC), могут возникнуть проблемы:
Чтобы решить их, в архитектуру встраивают брокеры сообщений.
Давайте разберём как это работает на примере:
👉 Сценарий обработки события окончания зарядки
👉 Без брокера
1. Сервис Телеметрии отправляет запрос на API Gateway об окончании зарядки
2. API Gateway проксирует его на Сервис Платежей
3. Сервис Платежей регистрирует кол-во израсходованной энергии, определяет цену и списывает средства с банковской карты, привязанной к ЛК пользователя
4. Сервис Платежей вызывает Сервис Программы Лояльности для начисления бонусных баллов
5. Сервис Платежей вызывает Сервис Уведомлений для отправки уведомления
6. Возврат ответа на Сервис Телеметрии об успешной обработке события завершения зарядки
❌ Проблема:
Если Сервис Программы Лояльности или Сервис Платежей недоступны, то....? Начинаем "городить костыли" в алгоритме с ретраями (повторами) и не только... 🥲
👉 С брокером Kafka
1. Сервис Телеметрии отправляет событие (сообщение) charging.finished в Kafka об окончании зарядки, в топик charging-events.
2. Сервис Платежей подписан на топик charging-events и событие charging.finished в Kafka. Он забирает оттуда это событие, когда готов и не нагружен (хоть сразу, хоть через 3 часа)
3. Сервис Платежей обрабатывает это событие:
3.1. Регистрирует кол-во израсходованной энергии, определяет итоговую цену и списывает средства с карты
3.2. Отправляет событие о списании средств charging.paid в Kafka, топик charging-events
4. На событие charging.paid в топике charging-events подписаны Сервисы Программы Лояльности и Уведомлений.
Когда они будут готовы, то тогда и заберут в обработку событие, и каждый обработает его по отдельности.
✅ Преимущества:
Даже если сервисы Платежей, Лояльности или Уведомлений будут недоступны или будут реагировать ошибкой, необработанное событие об окончании зарядки / завершении платежа будет храниться в брокере и ожидать обработки.
Обычно обработка происходит очень быстро, что процесс выглядит как-будто синхронно, но на самом деле это не так. За счёт брокера мы организовали фоновую обработку событий (=задач), когда один сервис не ждёт завершения работы другого.
Брокер - как временная БД, гарантирует, что событие рано или поздно обработают.
А сервисам, которые участвуют в сценарии, не надо рассчитывать на его строго-последовательное и синхронное выполнение.
👉 Итого получаем:
Внедренный механизм асинхронной обработки событий с использованием Kafka сделал систему более устойчивой к сбоям и гибкой для масштабирования.
Если ещё не изучали Kafka, то здесь можно найти самые важные материалы:
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
GetAnalyst - Навыки • Системный анализ • Бизнес-анализ
🔵 C4 / Container - пример микросервисной архитектуры #GreenChargeGA 🔵
Уровень C4 / Container показывает независимые по коду приложения в системе — так называемые контейнеры [к].
Что включает схема на этом уровне:
✔️ Пользователи
✔️ Внешние системы
✔️ Мобильные…
Уровень C4 / Container показывает независимые по коду приложения в системе — так называемые контейнеры [к].
Что включает схема на этом уровне:
✔️ Пользователи
✔️ Внешние системы
✔️ Мобильные…
👍25❤15🔥9👌3
💃 Хореография и Оркестрация в микросервисной архитектуре 🎻
В микросервисной архитектуре (МСА) есть два основных подхода для управления работой сервисов:
💃 хореография,
🎻 оркестрация.
Суть — организовать работу нескольких микросервисов, которые должны отработать в рамках одного алгоритма.
Например, завершение зарядки электромобиля — это не просто «всё, машина заряжена».
Это триггер для цепочки действий:
🔸 списание оплаты с карты,
🔸 начисление бонусов по программе лояльности,
🔸 отправка уведомления.
С точки зрения архитектуры, этот процесс может быть реализован по-разному:
📌 Хореография
Каждый сервис сам знает, что делать при наступлении определенного события в системе.
Взаимодействие между сервисами происходит через брокер сообщений (обычно Kafka), без централизованного управляющего компонента.
Сервисы подписываются на события в брокере, такие как charging.finished («завершение зарядки»), payment.success («оплата проведена успешно»), и реагируют на них независимо друг от друга.
Например, сервис бонусов может слушать событие об успешной оплате и начислить бонусы, а сервис уведомлений — сформировать и отправить сообщение пользователю.
📌 Оркестрация
Здесь управление процессом сосредоточено в отдельном компоненте — оркестраторе.
Пример оркестратора “из коробки”: Camunda.
Оркестратор вызывает нужные микросервисы по порядку (например: сначала — платёж, затем — бонусы, потом — уведомление) и отслеживает результат выполнения каждого этапа.
Вся логика сценария сосредоточена в одном месте, что упрощает контроль и трассировку бизнес-процесса.
Оба подхода имеют свои преимущества и применяются в зависимости от целей:
💃 Хореография подходит для гибких, масштабируемых систем с высокой степенью независимости компонентов;
🎻 Оркестрация — для сценариев, требующих строгой последовательности, централизованного контроля и отслеживания хода выполнения.
#АрхитектураGA
В микросервисной архитектуре (МСА) есть два основных подхода для управления работой сервисов:
💃 хореография,
🎻 оркестрация.
Суть — организовать работу нескольких микросервисов, которые должны отработать в рамках одного алгоритма.
Например, завершение зарядки электромобиля — это не просто «всё, машина заряжена».
Это триггер для цепочки действий:
🔸 списание оплаты с карты,
🔸 начисление бонусов по программе лояльности,
🔸 отправка уведомления.
С точки зрения архитектуры, этот процесс может быть реализован по-разному:
📌 Хореография
Каждый сервис сам знает, что делать при наступлении определенного события в системе.
Взаимодействие между сервисами происходит через брокер сообщений (обычно Kafka), без централизованного управляющего компонента.
Сервисы подписываются на события в брокере, такие как charging.finished («завершение зарядки»), payment.success («оплата проведена успешно»), и реагируют на них независимо друг от друга.
Например, сервис бонусов может слушать событие об успешной оплате и начислить бонусы, а сервис уведомлений — сформировать и отправить сообщение пользователю.
📌 Оркестрация
Здесь управление процессом сосредоточено в отдельном компоненте — оркестраторе.
Пример оркестратора “из коробки”: Camunda.
Оркестратор вызывает нужные микросервисы по порядку (например: сначала — платёж, затем — бонусы, потом — уведомление) и отслеживает результат выполнения каждого этапа.
Вся логика сценария сосредоточена в одном месте, что упрощает контроль и трассировку бизнес-процесса.
Оба подхода имеют свои преимущества и применяются в зависимости от целей:
💃 Хореография подходит для гибких, масштабируемых систем с высокой степенью независимости компонентов;
🎻 Оркестрация — для сценариев, требующих строгой последовательности, централизованного контроля и отслеживания хода выполнения.
#АрхитектураGA
👍37❤13🔥8❤🔥1
💃 Хореография в микросервисах: разбор примера для #GreenChargeGA 🕺
Хореография — это подход, при котором каждый сервис самостоятельно реагирует на события, происходящие в системе.
В отличие от оркестрации, здесь нет центрального управляющего компонента, который знает про все шаги алгоритма и все микросервисы для выполнения процесса.
Координация действий происходит через брокер сообщений: Kafka, RabbitMQ и др.
👉 Важно для понимания!
Брокер это место хранения сообщений, как временная БД, и он ничем не управляет, а только временно хранит события к обработке.
Каждый микросервис:
✅ подписан на определённые события в брокере,
✅ обрабатывает их, когда они появляются,
✅ не знает, какие другие сервисы участвуют в процессе.
👉 Пример 1:
Завершение зарядки электромобиля на станции GreenChargeGA
🟢 После завершения сессии зарядки Сервис Телеметрии публикует событие charging.finished в брокер.
Что происходит дальше:
1. Сервис Платежей получает событие charging.finished, списывает средства с карты пользователя и публикует событие payment.success.
2. Сервис Лояльности слушает событие об успешной оплате payment.success и начисляет бонусы. После чего генерирует событие о добавлении бонусов loyalty.bonusAdded.
3. Сервис Уведомлений слушает события payment.success и loyalty.bonusAdded и отправляет пользователю уведомление с итогами.
Таким образом, за счёт правильно спроектированной событийной модели, мы можем организовать асинхронное выполнение всей цепочки действий — без необходимости задерживать пользователя у зарядной станции.
Все шаги выполняются в фоне, это пример гибкой и масштабируемой архитектуры.
👉 Пример 2
Пользователь завершил настройку профиля
После регистрации пользователь может пройти начальную настройку профиля: указать номер автомобиля, предпочитаемые станции, способ оплаты и т.д.
Сразу после завершения настройки можно запустить ряд независимых процессов, реализованных через хореографию:
🟢 Событие profile.setupCompleted — публикуется в брокер от Сервиса Управления Пользователями, когда пользователь завершил заполнение профиля.
Подписанные микросервисы:
🔸 Сервис Уведомлений — отправляет приветственное сообщение с подсказками по началу использования.
🔸 Сервис Лояльности — активирует стартовые бонусы в рамках приветственной кампании.
🔸 Сервис Аналитики — сохраняет событие завершения настройки для последующего анализа поведения новых пользователей.
Все эти действия автономны и могут запускаться независимо, без координации друг с другом. Ни один из них не зависит от результата другого — если, например, уведомление не ушло, это не повлияет на выдачу бонусов или сбор аналитики.
Преимущества хореографии:
💫 Масштабируемость:
Можно легко подключить новые сервисы, которые будут реагировать на события.
Например, маркетинговый сервис, который будет запускать цепочку писем — просто подписав его на profile.setupCompleted.
💫 Устойчивость:
Ошибки одного сервиса не мешают другим.
💫 Параллельность:
Все действия выполняются максимально быстро для пользователя, без задержек на обработку.
Часть схемы архитектуры проекта с хореографией:
🔗 [открыть схему архитектуры C4]
#АрхитектураGA
Хореография — это подход, при котором каждый сервис самостоятельно реагирует на события, происходящие в системе.
В отличие от оркестрации, здесь нет центрального управляющего компонента, который знает про все шаги алгоритма и все микросервисы для выполнения процесса.
Координация действий происходит через брокер сообщений: Kafka, RabbitMQ и др.
👉 Важно для понимания!
Брокер это место хранения сообщений, как временная БД, и он ничем не управляет, а только временно хранит события к обработке.
Каждый микросервис:
✅ подписан на определённые события в брокере,
✅ обрабатывает их, когда они появляются,
✅ не знает, какие другие сервисы участвуют в процессе.
👉 Пример 1:
Завершение зарядки электромобиля на станции GreenChargeGA
🟢 После завершения сессии зарядки Сервис Телеметрии публикует событие charging.finished в брокер.
Что происходит дальше:
1. Сервис Платежей получает событие charging.finished, списывает средства с карты пользователя и публикует событие payment.success.
2. Сервис Лояльности слушает событие об успешной оплате payment.success и начисляет бонусы. После чего генерирует событие о добавлении бонусов loyalty.bonusAdded.
3. Сервис Уведомлений слушает события payment.success и loyalty.bonusAdded и отправляет пользователю уведомление с итогами.
Таким образом, за счёт правильно спроектированной событийной модели, мы можем организовать асинхронное выполнение всей цепочки действий — без необходимости задерживать пользователя у зарядной станции.
Все шаги выполняются в фоне, это пример гибкой и масштабируемой архитектуры.
👉 Пример 2
Пользователь завершил настройку профиля
После регистрации пользователь может пройти начальную настройку профиля: указать номер автомобиля, предпочитаемые станции, способ оплаты и т.д.
Сразу после завершения настройки можно запустить ряд независимых процессов, реализованных через хореографию:
🟢 Событие profile.setupCompleted — публикуется в брокер от Сервиса Управления Пользователями, когда пользователь завершил заполнение профиля.
Подписанные микросервисы:
🔸 Сервис Уведомлений — отправляет приветственное сообщение с подсказками по началу использования.
🔸 Сервис Лояльности — активирует стартовые бонусы в рамках приветственной кампании.
🔸 Сервис Аналитики — сохраняет событие завершения настройки для последующего анализа поведения новых пользователей.
Все эти действия автономны и могут запускаться независимо, без координации друг с другом. Ни один из них не зависит от результата другого — если, например, уведомление не ушло, это не повлияет на выдачу бонусов или сбор аналитики.
Преимущества хореографии:
💫 Масштабируемость:
Можно легко подключить новые сервисы, которые будут реагировать на события.
Например, маркетинговый сервис, который будет запускать цепочку писем — просто подписав его на profile.setupCompleted.
💫 Устойчивость:
Ошибки одного сервиса не мешают другим.
💫 Параллельность:
Все действия выполняются максимально быстро для пользователя, без задержек на обработку.
Часть схемы архитектуры проекта с хореографией:
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤15🔥3
Я не планировала выкладывать это сейчас… Но не могу удержаться ❤️🔥🥰 😻
На этой неделе мы завершили мартовский поток по Архитектуре.
И сразу после занятия коллега прислала мне скрин из чата с последней онлайн-встречи, которую она вела.
Сердце взрывается от благодарности — вам, нашим аналитикам, и моим потрясающим коллегам: Екатерине Герасимовой и Екатерине Пантелей, кто помогает мне с ведением онлайн-встреч и поддержанием программы в актуальном состоянии.
Такие слова нельзя просто оставить в архиве 😊
Спасибо!
Что не боитесь идти вглубь.
Что выбираете системность.
Что растёте на наших глазах.
Вы — вдохновляете 💚🦭
#АрхитектураGA #студентыGetAnalyst
На этой неделе мы завершили мартовский поток по Архитектуре.
И сразу после занятия коллега прислала мне скрин из чата с последней онлайн-встречи, которую она вела.
Сердце взрывается от благодарности — вам, нашим аналитикам, и моим потрясающим коллегам: Екатерине Герасимовой и Екатерине Пантелей, кто помогает мне с ведением онлайн-встреч и поддержанием программы в актуальном состоянии.
Такие слова нельзя просто оставить в архиве 😊
Спасибо!
Что не боитесь идти вглубь.
Что выбираете системность.
Что растёте на наших глазах.
Вы — вдохновляете 💚🦭
#АрхитектураGA #студентыGetAnalyst
Please open Telegram to view this post
VIEW IN TELEGRAM
❤36🔥14👏1
GetAnalyst_Интеграции_книга_для_БА_и_СА.pdf
10.7 MB
📚 Мини-книга по Интеграциям для Системных аналитиков: самое важное 📚
Интеграция — это процесс объединения различных систем и приложений в единое целое, чтобы они могли работать вместе, обмениваться данными и выполнять задачи, как одна система.
👉 Пример 1
Платформа по доставке еды хочет отправлять клиенту SMS о процессе доставки.
Надо ли этой платформе:
1. Покупать оборудование для отправки SMS?
2. Заключать договоры и делать интеграции со всеми операторами сотовой связи?
Конечно, нет.
Мы подключаем готовый SMS-сервис (например, Unisender) через API — и задача по доставке SMS решена 🙌
👉 Пример 2
Тот же сервис доставки хочет принимать оплату банковскими картами.
Надо ли ему:
1. Реализовывать проверку карты?
2. Поддерживать 3-D Secure?
3. Хранить токены и проходить банковскую сертификацию PCI DSS?
Нет. Мы просто подключаем готовое решение по API, например, от ТБанка.
Главная идея интеграций:
👉 Виды интеграций:
1) по окружениям:
▫️ Внешние - когда мы хотим подключить к нашей системе чужую, от других разработчиков.
▫️ Внутренние
- на проекте сервисная или микросервисная архитектура, сервисы обмениваются данными по API или через брокеры.
- мобильное приложение работает с данными благодаря интеграции с сервером по API.
2) по направлению:
▫️ Во внешние системы - когда мы используем API чужих систем.
▫️ К нашей системе - когда мы сами разрабатываем свой API, чтобы к нам подключались (например, по примеру выше, мы банк, и даем другим свой API для подключения)
👉 Способы обмена данными:
▫️ Синхронный - отправили данные и получили ответ сразу.
▫️ Асинхронный - отправили данные и продолжили работу без ожидания ответа. Обработка в фоне.
👉 Основные способы интеграции:
▫️ API
▫️ Библиотеки и SDK
▫️ Брокеры
▫️ Файлы
▫️ Общая БД
📚 Подробнее об интеграциях рассказала в мини-книге с картинками и примерами.
Файл прикреплен к посту.
Загружаем, изучаем и используем 👍
#ИнтеграцииGA
Интеграция — это процесс объединения различных систем и приложений в единое целое, чтобы они могли работать вместе, обмениваться данными и выполнять задачи, как одна система.
👉 Пример 1
Платформа по доставке еды хочет отправлять клиенту SMS о процессе доставки.
Надо ли этой платформе:
1. Покупать оборудование для отправки SMS?
2. Заключать договоры и делать интеграции со всеми операторами сотовой связи?
Конечно, нет.
Мы подключаем готовый SMS-сервис (например, Unisender) через API — и задача по доставке SMS решена 🙌
👉 Пример 2
Тот же сервис доставки хочет принимать оплату банковскими картами.
Надо ли ему:
1. Реализовывать проверку карты?
2. Поддерживать 3-D Secure?
3. Хранить токены и проходить банковскую сертификацию PCI DSS?
Нет. Мы просто подключаем готовое решение по API, например, от ТБанка.
Главная идея интеграций:
Если не хочешь "изобретать велосипед", просто подключи (интегрируй) уже готовое решение в свою систему.
👉 Виды интеграций:
1) по окружениям:
▫️ Внешние - когда мы хотим подключить к нашей системе чужую, от других разработчиков.
▫️ Внутренние
- на проекте сервисная или микросервисная архитектура, сервисы обмениваются данными по API или через брокеры.
- мобильное приложение работает с данными благодаря интеграции с сервером по API.
2) по направлению:
▫️ Во внешние системы - когда мы используем API чужих систем.
▫️ К нашей системе - когда мы сами разрабатываем свой API, чтобы к нам подключались (например, по примеру выше, мы банк, и даем другим свой API для подключения)
👉 Способы обмена данными:
▫️ Синхронный - отправили данные и получили ответ сразу.
▫️ Асинхронный - отправили данные и продолжили работу без ожидания ответа. Обработка в фоне.
👉 Основные способы интеграции:
▫️ API
▫️ Библиотеки и SDK
▫️ Брокеры
▫️ Файлы
▫️ Общая БД
📚 Подробнее об интеграциях рассказала в мини-книге с картинками и примерами.
Файл прикреплен к посту.
Загружаем, изучаем и используем 👍
#ИнтеграцииGA
❤40👍20🔥9😢1
Путешествия всегда востребованы — а мы проектируем систему, которая поможет не только найти интересную экскурсию, но и оплатить её онлайн.
🟢 Задача:
В текущих мобильных и веб-приложениях #TravelGA реализован только просмотр экскурсий.
Цель — добавить функциональность бронирования и онлайн-оплаты эксскурсий через платёжную систему ВТБ.
🟢 Сценарии к проектированию:
1. Пользователь выбирает одну или несколько экскурсий и оплачивает бронирование.
2. Пользователь отменяет часть оплаченных экскурсий (или все) и оформляет возврат, если это допустимо по правилам экскурсии.
👉 Что предстоит сделать Системному Аналитику:
1. Выделить ключевые Use Case
2. Провести первичный анализ API-документации ВТБ: наличие нужных методов, рекомендуемый порядок интеграции
3. Определить влияние интеграции на архитектуру системы
4. Протестировать платёжное API ВТБ в Postman, чтобы понять, как он реально работает
5. Описать интеграционные Use Cases: логику работу системы с техническими деталями
6. Сформировать требования для интеграционных REST API-методов
7. Дополнить требования UML-диаграммами
8. Описать маппинги данных и доработки БД
Мы будем последовательно разбирать эти шаги для проекта.
🟢 Результаты
✔️ Полные постановки задач на интеграцию с банком
✔️ Коллекция Postman-запросов для API ВТБ
✔️ Отработанный кейс интеграции от анализа до реализации
Хотите участвовать? Подписывайтесь на GetAnalyst и следите за обновлениями 😉
Добро пожаловать в наш интеграционный проект!
#ИнтеграцииGA #vtbAPI
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥54❤16🤩3
✅ Интеграции: чек-лист по работе с задачами ✅
Системный аналитик должен уметь рассказывать про свой процесс работы с задачами на интеграции: от момента получения требований до создания задач на разработку.
Хочу поделиться с вами пошаговым планом, описывающим этот процесс.
Пусть он станет вашим помощником при работе с задачами на интеграции и в подготовке к собеседованиям.
👉 Краткий чек-лист по работе с задачами на интеграции:
☑️ Получить вводные от заказчика
☑️ Выделить компоненты системы: внешние, внутренние
☑️ Найти API-документацию для каждого из внешних сервисов, а если необходимо, то и для внутренних
☑️ Нарисовать схему архитектуры — первое приближение
☑️ Описать процессы, которые нужно поддержать в системе
☑️ Найти по API-документации соответствующие процессам методы, добавить их в описание
☑️ Уточнить схему архитектуры (и далее постоянно актуализировать по ходу детального проектирования и постановок задач)
☑️ Получить доступы к API
☑️ Протестировать API своими силами или с помощью разработчиков
☑️ Сопоставить наборы данных, доработать/спроектировать БД нашей системы при необходимости, описать маппинг данных
☑️ Создать задачи в Jira и выстроить порядок разработки
☑️ Сделать детализацию постановок задач в Confluence на основе исследований, проведенных ранее
👉 Полный пошаговый план работы с задачами на интеграции доступен по этой ссылке.
#ИнтеграцииGA
Системный аналитик должен уметь рассказывать про свой процесс работы с задачами на интеграции: от момента получения требований до создания задач на разработку.
Хочу поделиться с вами пошаговым планом, описывающим этот процесс.
Пусть он станет вашим помощником при работе с задачами на интеграции и в подготовке к собеседованиям.
👉 Краткий чек-лист по работе с задачами на интеграции:
☑️ Получить вводные от заказчика
☑️ Выделить компоненты системы: внешние, внутренние
☑️ Найти API-документацию для каждого из внешних сервисов, а если необходимо, то и для внутренних
☑️ Нарисовать схему архитектуры — первое приближение
☑️ Описать процессы, которые нужно поддержать в системе
☑️ Найти по API-документации соответствующие процессам методы, добавить их в описание
☑️ Уточнить схему архитектуры (и далее постоянно актуализировать по ходу детального проектирования и постановок задач)
☑️ Получить доступы к API
☑️ Протестировать API своими силами или с помощью разработчиков
☑️ Сопоставить наборы данных, доработать/спроектировать БД нашей системы при необходимости, описать маппинг данных
☑️ Создать задачи в Jira и выстроить порядок разработки
☑️ Сделать детализацию постановок задач в Confluence на основе исследований, проведенных ранее
👉 Полный пошаговый план работы с задачами на интеграции доступен по этой ссылке.
#ИнтеграцииGA
❤30👍5🔥4
GetAnalyst_Use_Cases_Обычные_VS_Интеграционные.pdf
1.1 MB
🛠️ Особенности Use Cases для Интеграций — разбор с примерами 🛠️
Use Case — это:
▫️ детализированные функциональные требования;
▫️ описание, как пользователь взаимодействует с системой для достижения цели;
▫️ сценарий, который показывает шаги пользователя и системы в процессе выполнения задачи;
▫️ алгоритм работы системы.
👉 Стандартный шаблон Use Case:
▪ Предусловие
▪ Роли пользователей
▪ Приложения и системы
▪ Входные данные
▪ Основной сценарий
▪ Обработка ошибок и альтернативные сценарии
▪ Ожидаемый результат
👉 Интеграционный Use Case дополняется:
▪ техническими деталями по вызовам API методов, которые аналитику важно прописать в постановке задачи,
▪ а также маппингом данных.
Важно понимать, что Интеграции — это не просто "еще одна задача".
Это серьезная работа по анализу взаимосвязей
+ БД
+ Функций
+ UI/UX
+ API нашей и внешних систем,
которая требует нашего опыта, внимания и профессионализма 🙌
Мини-книгу про отличия обычных Use Case от интеграционных прикрепила к посту 🤝
#ИнтеграцииGA
Use Case — это:
▫️ детализированные функциональные требования;
▫️ описание, как пользователь взаимодействует с системой для достижения цели;
▫️ сценарий, который показывает шаги пользователя и системы в процессе выполнения задачи;
▫️ алгоритм работы системы.
👉 Стандартный шаблон Use Case:
▪ Предусловие
▪ Роли пользователей
▪ Приложения и системы
▪ Входные данные
▪ Основной сценарий
▪ Обработка ошибок и альтернативные сценарии
▪ Ожидаемый результат
👉 Интеграционный Use Case дополняется:
▪ техническими деталями по вызовам API методов, которые аналитику важно прописать в постановке задачи,
▪ а также маппингом данных.
Важно понимать, что Интеграции — это не просто "еще одна задача".
Это серьезная работа по анализу взаимосвязей
+ БД
+ Функций
+ UI/UX
+ API нашей и внешних систем,
которая требует нашего опыта, внимания и профессионализма 🙌
Мини-книгу про отличия обычных Use Case от интеграционных прикрепила к посту 🤝
#ИнтеграцииGA
❤26👍13🔥3
📚🎧 Интеграции для СА и БА: актуальная подборка материалов 🎧📚
Длинные выходные — редкая возможность совместить отдых и саморазвитие.
Даже если нет времени на видео или статьи, включите подкаст во время прогулки, дороги или тренировки.
Маленький шаг к лучшей версии себя — уже сегодня 😉
Послушать и посмотреть:
🎧 Подкаст "Проблемы в работе с задачами на интеграции"
📹 Postman: навык тестирования REST API за вечер
📹 Опасные интеграции - про альтернативные сценарии и обработку типовых ошибок
🎧 Подкаст "Идемпотентность и коммутативность API: что это и как применяют на практике" - про проблемы дубликатов запросов
🎧 Подкаст "Что такое вебхуки (Webhooks) и зачем они нужны" - оптимизация работы интеграций
📹 Доставить и не потерять: синхронизация данных в распределенных системах - основы очередей сообщений
🎧 Подкаст "Kafka: что нужно знать Системному аналитику" - глубже в понимание очередей и брокеров
🎧 Подкаст "RabbitMQ и его отличия от Kafka: что важно знать системным аналитикам"
Практические руководства по Postman:
📚 Практическое руководство по Postman - тестирование API DaData (с нуля до результатов)
📚 Практическое руководство по Postman - тестирование API ChatGPT
📚 Практическое руководство по Postman - тестирование API Unisender
Шаблоны постановок задач:
💎 Полный интеграционный Use Case - рассылка email через Unisender (с брокерами и микросервисами)
💎 Полный интеграционный Use Case - автоматическое создание задач во внутренней системе ToDoist для сотрудников компании после оплаты заказов
💎 Интеграционный REST API-метод - структурирование адресов через DaData
Ещё больше про интеграции:
🎓 Практический курс Интеграции Систем - работа онлайн с Екатериной Ананьевой и экспертами программы
🎓 Материалы для самообучения по Интеграциям (пакеты вебинаров)
Всё по интеграциям от GetAnalyst вы всегда можете найти в канале по хэштегу #ИнтеграцииGA 🙌
Прекрасных выходных!
Длинные выходные — редкая возможность совместить отдых и саморазвитие.
Даже если нет времени на видео или статьи, включите подкаст во время прогулки, дороги или тренировки.
Маленький шаг к лучшей версии себя — уже сегодня 😉
Послушать и посмотреть:
🎧 Подкаст "Проблемы в работе с задачами на интеграции"
📹 Postman: навык тестирования REST API за вечер
📹 Опасные интеграции - про альтернативные сценарии и обработку типовых ошибок
🎧 Подкаст "Идемпотентность и коммутативность API: что это и как применяют на практике" - про проблемы дубликатов запросов
🎧 Подкаст "Что такое вебхуки (Webhooks) и зачем они нужны" - оптимизация работы интеграций
📹 Доставить и не потерять: синхронизация данных в распределенных системах - основы очередей сообщений
🎧 Подкаст "Kafka: что нужно знать Системному аналитику" - глубже в понимание очередей и брокеров
🎧 Подкаст "RabbitMQ и его отличия от Kafka: что важно знать системным аналитикам"
Практические руководства по Postman:
📚 Практическое руководство по Postman - тестирование API DaData (с нуля до результатов)
📚 Практическое руководство по Postman - тестирование API ChatGPT
📚 Практическое руководство по Postman - тестирование API Unisender
Шаблоны постановок задач:
Ещё больше про интеграции:
🎓 Практический курс Интеграции Систем - работа онлайн с Екатериной Ананьевой и экспертами программы
🎓 Материалы для самообучения по Интеграциям (пакеты вебинаров)
Всё по интеграциям от GetAnalyst вы всегда можете найти в канале по хэштегу #ИнтеграцииGA 🙌
Прекрасных выходных!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤25🔥19❤🔥6👍4⚡1
GetAnalyst_Архитектура_МС_с_брокером_C4_Container_GreenChargeGA.png
1.3 MB
🔵 C4 / Container — итоговая схема микросервисной архитектуры с брокером для проекта #GreenChargeGA 🔵
В первой версии архитектуры GreenChargeGA были упрощения, которые могли бы стать блокерами для масштабирования и отказоустойчивости.
В этой публикации — обновлённая схема и разбор архитектурных ошибок и проблем, которые удалось устранить:
❌ Нет связи от Firebase к фронтам с push-уведомлениями
✅ Добавлены.
На первом этапе пытались минимизировать линии и пересечения, но без них схему нельзя считать полной.
❌ Синхронизация только через один API Gateway
✅ Для синхронизации данных между микросервисами внедрён брокер событий.
Ранее все внутренние синхронизации шли через один и тот же Gateway, обрабатывающий внешние и внутренние запросы — это создавало риски перегрузки и уязвимости в одной точке.
Теперь данные между микросервисами передаются через брокер — при изменении данных в одном сервисе заинтересованные сервисы получают события и обрабатывают их.
Альтернативой мог быть отдельный Gateway для внутренних вызовов.
❌ Всё синхронно внутри? Не надёжно
✅ Если бы мы пошли по пути отдельного Gateway, взаимодействие между микросервисами оставалось бы синхронным.
Вместо этого внедрили Kafka — для асинхронной коммуникации, снижения связанности и повышения отказоустойчивости.
🥲 Надо ещё брокеров
✅ RabbitMQ, использовавшийся для уведомлений, заменён на Kafka — надёжное решение для потоков событий и хореографии микросервисов.
Это повысило отказоустойчивость и снизило связанность.
❌ Не показаны WebHooks от платежных систем
✅ Добавлены двусторонние стрелки вызовов.
По схеме теперь видно, что платёжные системы вызывают нас обратно при смене статуса платежа.
📚 Связанные материалы по проекту GreenChargeGA:
▫️ C4 / Context
▫️ C4 / Container - версия с проблемами
▫️ Часть архитектуры с демо хореографии
Сохраняйте, изучайте, обсуждайте 💙
И помните — архитектура не бывает финальной. Но она должна быть продуманной.
#АрхитектураGA
В первой версии архитектуры GreenChargeGA были упрощения, которые могли бы стать блокерами для масштабирования и отказоустойчивости.
В этой публикации — обновлённая схема и разбор архитектурных ошибок и проблем, которые удалось устранить:
❌ Нет связи от Firebase к фронтам с push-уведомлениями
✅ Добавлены.
На первом этапе пытались минимизировать линии и пересечения, но без них схему нельзя считать полной.
❌ Синхронизация только через один API Gateway
✅ Для синхронизации данных между микросервисами внедрён брокер событий.
Ранее все внутренние синхронизации шли через один и тот же Gateway, обрабатывающий внешние и внутренние запросы — это создавало риски перегрузки и уязвимости в одной точке.
Теперь данные между микросервисами передаются через брокер — при изменении данных в одном сервисе заинтересованные сервисы получают события и обрабатывают их.
Альтернативой мог быть отдельный Gateway для внутренних вызовов.
❌ Всё синхронно внутри? Не надёжно
✅ Если бы мы пошли по пути отдельного Gateway, взаимодействие между микросервисами оставалось бы синхронным.
Вместо этого внедрили Kafka — для асинхронной коммуникации, снижения связанности и повышения отказоустойчивости.
🥲 Надо ещё брокеров
✅ RabbitMQ, использовавшийся для уведомлений, заменён на Kafka — надёжное решение для потоков событий и хореографии микросервисов.
Это повысило отказоустойчивость и снизило связанность.
❌ Не показаны WebHooks от платежных систем
✅ Добавлены двусторонние стрелки вызовов.
По схеме теперь видно, что платёжные системы вызывают нас обратно при смене статуса платежа.
📚 Связанные материалы по проекту GreenChargeGA:
▫️ C4 / Context
▫️ C4 / Container - версия с проблемами
▫️ Часть архитектуры с демо хореографии
Сохраняйте, изучайте, обсуждайте 💙
И помните — архитектура не бывает финальной. Но она должна быть продуманной.
#АрхитектураGA
🔥20❤13❤🔥4
GetAnalyst_Архитектура_GreenChargeGA_Use_Case_оплата_зарядки.png
1.3 MB
⚡ Пример технического Use Case с брокером в микросервисной архитектуре⚡
👉 Задача:
Нужно корректно завершить сессию, рассчитать оплату, списать деньги и уведомить пользователя.
👉 Проект:
#GreenChargeGA - зарядка электрических автомобилей
👉 Предусловия:
▫️ Пользователь завершает зарядку электромобиля на станции.
▫️ В его аккаунте уже привязана банковская карта.
👉 Система должна:
➕ зафиксировать окончание зарядки
➕ рассчитать потреблённую энергию и стоимость
➕ провести списание средств через эквайринг
➕ тправить уведомление
➕ начислить бонусы
➕ передать данные в аналитику
Все шаги проходят через брокер сообщений Kafka, который играет роль хореографа — он направляет выполнение событий:
✅ где-то в строго заданной последовательности,
✅ где-то — независимо, но не параллельно в прямом смысле, а асинхронно, по мере готовности подписчиков на брокер.
📎 В прикреплённом документе пример технического Use Case —
не просто “что делает пользователь”, а как работает система под капотом, какие внутренние и внешние интеграции есть, и как они организованы через событийно-ориентированную архитектуру (EDA).
Его можно использовать как основу для постановки задачи разработчикам или для обсуждения решения с архитекторами.
#АрхитектураGA
👉 Задача:
Нужно корректно завершить сессию, рассчитать оплату, списать деньги и уведомить пользователя.
👉 Проект:
#GreenChargeGA - зарядка электрических автомобилей
👉 Предусловия:
▫️ Пользователь завершает зарядку электромобиля на станции.
▫️ В его аккаунте уже привязана банковская карта.
👉 Система должна:
➕ зафиксировать окончание зарядки
➕ рассчитать потреблённую энергию и стоимость
➕ провести списание средств через эквайринг
➕ тправить уведомление
➕ начислить бонусы
➕ передать данные в аналитику
Все шаги проходят через брокер сообщений Kafka, который играет роль хореографа — он направляет выполнение событий:
✅ где-то в строго заданной последовательности,
✅ где-то — независимо, но не параллельно в прямом смысле, а асинхронно, по мере готовности подписчиков на брокер.
📎 В прикреплённом документе пример технического Use Case —
не просто “что делает пользователь”, а как работает система под капотом, какие внутренние и внешние интеграции есть, и как они организованы через событийно-ориентированную архитектуру (EDA).
Его можно использовать как основу для постановки задачи разработчикам или для обсуждения решения с архитекторами.
#АрхитектураGA
❤28👍12❤🔥6