🚦 Очередь сообщений VS Брокер 🚦
Очередь сообщений — это структура данных, которая хранит сообщения до тех пор, пока их не заберёт получатель.
Брокер сообщений — это программное обеспечение, которое управляет обменом сообщений между приложениями. Он может включать в себя множество очередей сообщений и дополнительно поддерживать топики, маршрутизацию, обработку и механизмы гарантии доставки.
❗️Вопросы с подвохом:
👉 1. Если у нас есть очередь сообщений, зачем нужен брокер?
Очередь сообщений — это только структура данных для хранения сообщений, а брокер сообщений предоставляет дополнительные функции, такие как:
+ Управление множеством очередей.
+ Маршрутизация сообщений.
+ Поддержка нескольких потребителей.
Брокер — это более комплексная система, в состав которой входят очереди.
👉 2. Может ли очередь работать без брокера?
Да, тогда это будет просто временное хранилище сообщений.
👉 3. Могу ли я использовать брокер без очередей сообщений?
Нет. Очереди — одна из базовых составляющих большинства брокеров. Однако брокеры предоставляют более широкую функциональность, например, топики для публикации/подписки, что выходит за рамки простых очередей.
👉 4. Если я использую очередь сообщений, могу ли я гарантировать доставку сообщения?
Не всегда. Очередь сообщений сама по себе не гарантирует доставку, если нет спец. механизмов. Брокер сообщений, с другой стороны, предоставляет такие функции, как подтверждение доставки и повторная доставка сообщений в случае сбоя.
👉 5. Очередь всегда работает по принципу FIFO (первое пришло - первое вышло из очереди)?
Нет, не всегда. Хотя FIFO — это распространённый механизм, очереди могут быть:
+ Приоритетными (Priority Queue)
+ LIFO (Last In, First Out)
и другие.
👉 6. Может ли очередь работать с несколькими производителями и потребителями?
Технически да, но это усложняет реализацию, если очередь реализована без брокера.
Развёрнутая статья:
🔗 Брокер и очередь сообщений: что это и в чем отличия?
#АрхитектураGA
Очередь сообщений — это структура данных, которая хранит сообщения до тех пор, пока их не заберёт получатель.
Брокер сообщений — это программное обеспечение, которое управляет обменом сообщений между приложениями. Он может включать в себя множество очередей сообщений и дополнительно поддерживать топики, маршрутизацию, обработку и механизмы гарантии доставки.
❗️Вопросы с подвохом:
👉 1. Если у нас есть очередь сообщений, зачем нужен брокер?
Очередь сообщений — это только структура данных для хранения сообщений, а брокер сообщений предоставляет дополнительные функции, такие как:
+ Управление множеством очередей.
+ Маршрутизация сообщений.
+ Поддержка нескольких потребителей.
Брокер — это более комплексная система, в состав которой входят очереди.
👉 2. Может ли очередь работать без брокера?
Да, тогда это будет просто временное хранилище сообщений.
👉 3. Могу ли я использовать брокер без очередей сообщений?
Нет. Очереди — одна из базовых составляющих большинства брокеров. Однако брокеры предоставляют более широкую функциональность, например, топики для публикации/подписки, что выходит за рамки простых очередей.
👉 4. Если я использую очередь сообщений, могу ли я гарантировать доставку сообщения?
Не всегда. Очередь сообщений сама по себе не гарантирует доставку, если нет спец. механизмов. Брокер сообщений, с другой стороны, предоставляет такие функции, как подтверждение доставки и повторная доставка сообщений в случае сбоя.
👉 5. Очередь всегда работает по принципу FIFO (первое пришло - первое вышло из очереди)?
Нет, не всегда. Хотя FIFO — это распространённый механизм, очереди могут быть:
+ Приоритетными (Priority Queue)
+ LIFO (Last In, First Out)
и другие.
👉 6. Может ли очередь работать с несколькими производителями и потребителями?
Технически да, но это усложняет реализацию, если очередь реализована без брокера.
Развёрнутая статья:
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥13❤6❤🔥1
Брокеры — это посредники в передаче сообщений между системами или сервисами.
Они позволяют асинхронно обмениваться данными и обеспечивают гарантию доставки сообщений.
👉 Принцип работы:
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
❤24🔥10👍6😁1
🔥 3 реальных задачи, которые решают брокеры 🔥
Брокеры сообщений — это не просто очереди для передачи данных. Это ТОП-инструмент для построения асинхронных, отказоустойчивых и масштабируемых систем.
Они позволяют сервисам взаимодействовать без жесткой связанности, гарантируют доставку сообщений и помогают балансировать нагрузку.
Разберем три основных кейса, когда без брокеров не обойтись:
📌 1. Централизованная отправка уведомлений
Без брокера каждый сервис должен напрямую взаимодействовать с системой уведомлений, что создает жесткую зависимость.
Вместо этого сервисы просто отправляют события в брокер, а сервис уведомлений обрабатывает их, когда будет готов.
👍 Почему так лучше?
+ Уменьшается связанность между сервисами
Если сервис уведомлений перегружен и не может принять сообщение сразу, оно сохранится в брокере.
Отправивший задачу на уведомление сервис не зависает в ожидании ответа, а продолжает работу.
+ Гибкое масштабирование
Когда 15 сервисов генерируют уведомления, для их обработки может понадобиться от 5 до 15 экземпляров сервиса уведомлений.
Без брокера система должна мгновенно реагировать на всплески нагрузки и увеличивать количество работающих копий сервиса уведомлений.
С брокером это не критично — сообщения просто ставятся в очередь и обрабатываются позже.
+ Можно легко добавлять новые каналы уведомлений (почта, пуши, SMS)
Например, в сервисе заказов сменился статус товара на "Доставлен".
Пользователь подписан на push, SMS и email-уведомления
Вместо того, чтобы сервису заказов делать три запроса или один долгий и ждать, пока каждое уведомление отправится, мы положим событие о смене статуса в брокер с пометкой о каналах доставки. А сервис уведомлений позже его обработает.
Таким образом, сервису заказов не придётся длительно ожидать ответ о доставке всех уведомлений.
📌 2. Централизованный сбор событий для мониторинга
Все сервисы отправляют в брокер данные о своих состояниях, ошибках, метриках. Из брокера эти события забирает система мониторинга, анализирует их и отправляет алерты DevOps-инженерам.
👍 Почему так лучше?
+ Все данные собираются в одном месте
Логи, ошибки, метрики и другие события поступают в брокер от всех сервисов, упрощая их обработку и анализ.
+ Гибкость и независимость от конкретной системы мониторинга
Можно легко подключать новые инструменты анализа и визуализации (Prometheus, ELK, Grafana и др.), не внося изменения в код сервисов, которые генерируют события.
Без брокера пришлось бы перенастраивать все сервисы на доставку в новый сервис мониторинга.
+ Гибкое масштабирование
📌 3. Реакция нескольких сервисов на одно событие
Один сервис отправляет событие в брокер, а сразу несколько других сервисов на него реагируют.
Пример:
При успешной оплате заказа в Интернет-Магазине сервис платежей отправляет событие "Оплата успешна" в брокер.
На это событие реагируют три сервиса:
▫️ Сервис заказов переводит статус заказа в "Оплачен"
▫️ Сервис склада списывает товары и создает задачу на сборку
▫️ Сервис уведомлений отправляет клиенту подтверждение об оплате
Если бы сервис платежей напрямую дергал API каждого сервиса, это привело бы к сильной связанности и проблемам при сбоях.
Сервис склада упал?
➖ Прервали процесс обработки события оплаты, потому что не получилось достучаться до склада
➖ Или потеряли уведомление о платеже и оно не дошло на склад
Брокер позволяет сделать процесс асинхронным и надежным.
👍 Почему так лучше?
+ Уменьшается связанность между сервисами
За счет асинхронного обмена и отвязки от режима реального времени, когда все должны работать и быть доступны.
+ Можно легко добавлять новые подписчики без изменений в коде исходного сервиса
Например, когда после успешной оплаты надо еще начислить бонусные баллы в сервисе лояльности, то мы добавим новый обработчик события из брокера, но не будем трогать код сервиса платежей.
+ Лучше отказоустойчивость
Нет риска, что событие не обработается в каком-либо сервисе - брокер даёт гарантию доставки.
+ Гибкое масштабирование
Итого:
Брокеры — залог гибкой, масштабируемой и отказоустойчивой архитектуры 👍
#АрхитектураGA
Брокеры сообщений — это не просто очереди для передачи данных. Это ТОП-инструмент для построения асинхронных, отказоустойчивых и масштабируемых систем.
Они позволяют сервисам взаимодействовать без жесткой связанности, гарантируют доставку сообщений и помогают балансировать нагрузку.
Разберем три основных кейса, когда без брокеров не обойтись:
📌 1. Централизованная отправка уведомлений
Без брокера каждый сервис должен напрямую взаимодействовать с системой уведомлений, что создает жесткую зависимость.
Вместо этого сервисы просто отправляют события в брокер, а сервис уведомлений обрабатывает их, когда будет готов.
👍 Почему так лучше?
+ Уменьшается связанность между сервисами
Если сервис уведомлений перегружен и не может принять сообщение сразу, оно сохранится в брокере.
Отправивший задачу на уведомление сервис не зависает в ожидании ответа, а продолжает работу.
+ Гибкое масштабирование
Когда 15 сервисов генерируют уведомления, для их обработки может понадобиться от 5 до 15 экземпляров сервиса уведомлений.
Без брокера система должна мгновенно реагировать на всплески нагрузки и увеличивать количество работающих копий сервиса уведомлений.
С брокером это не критично — сообщения просто ставятся в очередь и обрабатываются позже.
+ Можно легко добавлять новые каналы уведомлений (почта, пуши, SMS)
Например, в сервисе заказов сменился статус товара на "Доставлен".
Пользователь подписан на push, SMS и email-уведомления
Вместо того, чтобы сервису заказов делать три запроса или один долгий и ждать, пока каждое уведомление отправится, мы положим событие о смене статуса в брокер с пометкой о каналах доставки. А сервис уведомлений позже его обработает.
Таким образом, сервису заказов не придётся длительно ожидать ответ о доставке всех уведомлений.
📌 2. Централизованный сбор событий для мониторинга
Все сервисы отправляют в брокер данные о своих состояниях, ошибках, метриках. Из брокера эти события забирает система мониторинга, анализирует их и отправляет алерты DevOps-инженерам.
👍 Почему так лучше?
+ Все данные собираются в одном месте
Логи, ошибки, метрики и другие события поступают в брокер от всех сервисов, упрощая их обработку и анализ.
+ Гибкость и независимость от конкретной системы мониторинга
Можно легко подключать новые инструменты анализа и визуализации (Prometheus, ELK, Grafana и др.), не внося изменения в код сервисов, которые генерируют события.
Без брокера пришлось бы перенастраивать все сервисы на доставку в новый сервис мониторинга.
+ Гибкое масштабирование
📌 3. Реакция нескольких сервисов на одно событие
Один сервис отправляет событие в брокер, а сразу несколько других сервисов на него реагируют.
Пример:
При успешной оплате заказа в Интернет-Магазине сервис платежей отправляет событие "Оплата успешна" в брокер.
На это событие реагируют три сервиса:
▫️ Сервис заказов переводит статус заказа в "Оплачен"
▫️ Сервис склада списывает товары и создает задачу на сборку
▫️ Сервис уведомлений отправляет клиенту подтверждение об оплате
Если бы сервис платежей напрямую дергал API каждого сервиса, это привело бы к сильной связанности и проблемам при сбоях.
Сервис склада упал?
➖ Прервали процесс обработки события оплаты, потому что не получилось достучаться до склада
➖ Или потеряли уведомление о платеже и оно не дошло на склад
Брокер позволяет сделать процесс асинхронным и надежным.
👍 Почему так лучше?
+ Уменьшается связанность между сервисами
За счет асинхронного обмена и отвязки от режима реального времени, когда все должны работать и быть доступны.
+ Можно легко добавлять новые подписчики без изменений в коде исходного сервиса
Например, когда после успешной оплаты надо еще начислить бонусные баллы в сервисе лояльности, то мы добавим новый обработчик события из брокера, но не будем трогать код сервиса платежей.
+ Лучше отказоустойчивость
Нет риска, что событие не обработается в каком-либо сервисе - брокер даёт гарантию доставки.
+ Гибкое масштабирование
Итого:
Брокеры — залог гибкой, масштабируемой и отказоустойчивой архитектуры 👍
#АрхитектураGA
🔥29❤9👍8🤔1
Forwarded from 👩🏻💻 Подкаст Системных Аналитиков | GetAnalyst
В этом эпизоде мы подробно разбираем устройство Kafka и ключевые особенности, которые важно понимать аналитикам.
Вы узнаете, что важно учитывать при постановке задач разработчикам, познакомитесь с принципами работы распределенной архитектуры и асинхронным взаимодействием сервисов внутри системы на примере подсистемы технической поддержки.
Эпизод будет полезен как опытным аналитикам, уже работающим с Kafka, так и тем, кто только планирует развиваться в этом направлении, чтобы начать работать на проектах с распределенной архитектурой.
Видео эпизода доступно в:
⏯ RuTube
⏯ YouTube
⏯ VK Video
⏯ Telegram
Аудио-эпизод доступен в:
⏯ Apple Podcast
⏯ Яндекс.Музыка
⏯ Castbox
⏯ Spotify
Получайте новые знания с сообществом системных аналитиков GetAnalyst каждый день!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍6❤4
This media is not supported in your browser
VIEW IN TELEGRAM
💫 Kafka - что надо знать для работы Системному аналитику 💫
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
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
🔥32👍12❤7
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
🔥27👍13❤6
GetAnalyst_Интеграции_мини_книга_для_БА_и_СА.pdf
10.7 MB
📚 Мини-книга по Интеграциям для Системных аналитиков: самое важное 📚
Интеграция — это процесс объединения различных систем и приложений в единое целое, чтобы они могли работать вместе, обмениваться данными и выполнять задачи, как одна система.
Например, нам в приложении для медитаций надо сделать возможность оплаты подписки 🧘♀️
Получается, надо делать сложный банковский процессинг для проверки карт кучи банков, списания с них денег, проверки CVV, отправки проверочных кодов, безопасность приема и обработки платежей...?
В общем эту всю кучу банковских задач мы делать не хотим. Мы же не банк! 🥲
Поэтому, для упрощения своей жизни, мы подключим готовое банковское решение "Интернет-эквайринг" - то есть сделаем интеграцию с банковской системой.
Обычно это интеграции по API.
Главная идея интеграций:
👉 Виды интеграций:
1) по окружениям:
▫️ Внешние - когда мы хотим подключить к нашей системе чужую систему, от других разработчиков.
▫️ Внутренние
- у нас на проекте сервисная или микросервисная архитектура, и нам надо сделать так, чтобы сервисы обменивались данными друг с другом по API или через брокеры (очереди).
- мобильное приложение работает с данными благодаря интеграции с сервером по API.
2) по направлению:
▫️ Во внешние системы - когда мы используем API чужих систем.
▫️ К нашей системе - когда мы сами разрабатываем свой API, чтобы к нам подключались (например, по примеру выше, мы банк, и даем другим свой API для подключения)
👉 Способы обмена данными:
▫️ Синхронный - отправили данные и получили ответ сразу.
▫️ Асинхронный - отправили данные и продолжили работу без ожидания ответа. Обработка в фоне.
👉 Основные способы интеграции:
▫️ API
▫️ Библиотеки и SDK
▫️ Брокеры (очереди сообщений)
▫️ Файлы
▫️ Общая БД
📚 Подробнее о том, что такое интеграции и какие они бывают, рассказала в мини-книге с картинками и примерами.
Файл прикреплен к посту.
Загружаем, изучаем и запоминаем 👍
#ИнтеграцииGA
Интеграция — это процесс объединения различных систем и приложений в единое целое, чтобы они могли работать вместе, обмениваться данными и выполнять задачи, как одна система.
Например, нам в приложении для медитаций надо сделать возможность оплаты подписки 🧘♀️
Получается, надо делать сложный банковский процессинг для проверки карт кучи банков, списания с них денег, проверки CVV, отправки проверочных кодов, безопасность приема и обработки платежей...?
В общем эту всю кучу банковских задач мы делать не хотим. Мы же не банк! 🥲
Поэтому, для упрощения своей жизни, мы подключим готовое банковское решение "Интернет-эквайринг" - то есть сделаем интеграцию с банковской системой.
Обычно это интеграции по API.
Главная идея интеграций:
Если не хочешь "изобретать велосипед", просто подключи (интегрируй) уже готовое решение в свою систему.
👉 Виды интеграций:
1) по окружениям:
▫️ Внешние - когда мы хотим подключить к нашей системе чужую систему, от других разработчиков.
▫️ Внутренние
- у нас на проекте сервисная или микросервисная архитектура, и нам надо сделать так, чтобы сервисы обменивались данными друг с другом по API или через брокеры (очереди).
- мобильное приложение работает с данными благодаря интеграции с сервером по API.
2) по направлению:
▫️ Во внешние системы - когда мы используем API чужих систем.
▫️ К нашей системе - когда мы сами разрабатываем свой API, чтобы к нам подключались (например, по примеру выше, мы банк, и даем другим свой API для подключения)
👉 Способы обмена данными:
▫️ Синхронный - отправили данные и получили ответ сразу.
▫️ Асинхронный - отправили данные и продолжили работу без ожидания ответа. Обработка в фоне.
👉 Основные способы интеграции:
▫️ API
▫️ Библиотеки и SDK
▫️ Брокеры (очереди сообщений)
▫️ Файлы
▫️ Общая БД
📚 Подробнее о том, что такое интеграции и какие они бывают, рассказала в мини-книге с картинками и примерами.
Файл прикреплен к посту.
Загружаем, изучаем и запоминаем 👍
#ИнтеграцииGA
❤43👍18❤🔥12🔥2👏1🍾1
GetAnalyst - Архитектура С4 с Kafka - BookingGA.png
1.3 MB
Рассказываю про внутреннюю интеграцию через Kafka и, в завершении проекта с микросервисами #BookingGA, показываю на нём наглядный пример.
📌Процесс:
Оплата бронирования жилья
📌Сложность:
Сразу после оплаты надо в фоне (асинхронно) выполнить несколько внутренних задач. Обеспечить гарантию их выполнения.
📌Алгоритм:
1. Пользователь произвел платеж за аренду в любом Frontend-приложении.
2. Сразу после завершения оплаты, с Frontend идёт запрос на Backend (API Gateway) для проверки статуса платежа, т.к. оплата проводилась на стороне внешней платежной системы и надо подтвердить её успех на бэке.
3. API Gateway перенаправляет запрос на Сервис Платежей, который:
+ выполняет проверку статуса в системе RaifPay
+ обновляет статус платежа в БД
+ кладёт событие (сообщ.) об оплате 👉в Kafka(4), чтобы на него среагировали связанные сервисы - это нужно для дальнейшей асинхронной работы системы
-> После этого Сервис Платежей возвращает успешный ответ на API Gateway
-> API Gateway возвращает успешный ответ с актуальным статусом платежа на Front
-> Front показывает пользователю "Платеж успешен"
4. Сообщение попадает в Kafka, в определенные топик и партицию, которые предназначены для событий "Платеж успешен".
Сервисы Уведомлений, Бронирований и Аналитики (Консьюмеры) подписаны на этот топик Kafka, с событиями "Платеж успешен".
5. Далее, каждый сервис по отдельности, в любом порядке и когда ему удобно, забирает и обрабатывает событие (сообщ.) "Платеж успешен":
5.1. Уведомления: отправляет email/sms о платеже
5.2. Бронирования: подтверждает бронь и обновляет статус в БД
5.3. Аналитики: получает данные для отчетов и сохраняет в свою БД
Kafka гарантирует, что даже если какой-то сервис недоступен сразу, в реальном времени, то событие об оплате он всё равно получит и обработает позже, когда включится
Полезное:
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19❤9❤🔥4💯4
На самом деле BookingGA уже не новый проект. Весь прошлый месяц мы проектировали его архитектуру.
Это основа, которая поможет нам в работе над проектированием интеграции.
👉 В этом месяце мы погрузимся глубже в детали, касающиеся интеграции Сервиса Уведомлений (и монолита) с внешней системой Unisender для создания email и SMS рассылок.
🔷 Задача:
Подключить сервис email-рассылок, чтобы пользователи, кто включил маркетинговые уведомления в настройках или при регистрации (галочка "Получать новости о новых объектах недвижимости и выгодных предложениях"), получали соответствующую рассылку раз в неделю.
🔷 Процесс к автоматизации:
1. Пользователи включают настройку "Получать новости..." и выбирают один город, по которому хотят получать обновления.
2. В течение недели владельцы недвижимости могут создавать новые объявления о сдаче в аренду, т.е. создавать новые дома и квартиры в системе для аренды, менять цены.
3. Раз в неделю, в пн, в 12:00 по Мск, должна быть выполнена рассылка email-уведомлений всем подписанным на неё пользователям с использованием Unisender.
🔷 Задачи аналитика:
1. Выделить список Use Case для реализации доработки
2. Провести первичный анализ API-документации Unisender
3. Показать архитектуру системы, которая будет затронута
4. Протестировать API Unisender в Postman, чтобы понять как реально работает API
5. Описать логику работы - детальную постановку задачи (интеграционный Use Case)
6. Сформировать требования для интеграционных REST API-методов Backend BookingGA
7. Дополнить требования UML-диаграммой
8. Описать маппинг данных и доработки БД
Мы будем последовательно разбирать эти шаги весь март.
Результат:
✅ детализированные постановки задач + доп. артефакты
✅ коллекция запросов в Postman для API Unisender
✅ ваше понимание процесса работы с задачами на интеграции + новый реальный опыт
Чтобы участвовать, достаточно быть подписанным на GetAnalyst и следить за обновлениями 😉
Добро пожаловать на проект!
#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥39❤14❤🔥5
✅ Получить вводные от заказчика
☑️ Выделить компоненты системы: внешние, внутренние, которые будут участвовать в интеграции
✅ Получить API-документацию для каждой из внешних систем, с которой интеграция, а если необходимо, то и для внутренних
✅ Нарисовать схему архитектуры, связанную с интеграцией — первое приближение
☑️ Описать процессы, которые нужно поддержать в системе
☑️ Найти по API-документации соответствующие процессам методы, добавить их в описание
☑️ Уточнить схему архитектуры, и далее постоянно актуализировать по ходу детального проектирования и создания постановок задач
☑️ Получить доступы к API внешних систем
☑️ Протестировать API своими силами в Postman или с помощью разработчиков
☑️ Сопоставить данные между системами, базой данных и UI. Доработать/спроектировать БД нашей системы. Описать маппинги данных
☑️ Создать задачи в Jira и выстроить порядок разработки:
+ задачи на Frontend,
+ задачи на интеграционные API-методы нашего Backend,
+ задачи на доработки БД,
+ и другие.
☑️ Сделать детализацию постановок задач в Confluence на основе исследований, проведенных ранее.
👉 Полный пошаговый план работы с задачами на интеграции доступен по этой ссылке.
Пусть он станет вашим помощником при проектировании интеграционных взаимодействий в любых системах.
#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33⚡4
Forwarded from 👩🏻💻 Подкаст Системных Аналитиков | GetAnalyst
💫 ПРОБЛЕМЫ В РАБОТЕ С ЗАДАЧАМИ НА ИНТЕГРАЦИИ 💫
В новом эпизоде подкаста мы погрузимся в проблемы разработки требований на интеграции систем, с которыми могут встретиться системные аналитики, а также обсудим варианты их решения.
Этот эпизод представляет ценную информацию для начинающих и опытных системных аналитиков, стремящихся разобраться в работе с интеграционными задачами и обеспечить стабильное взаимодействие систем.
1:18 - Что такое интеграции?
4:25 - Роль системного аналитика в процессе работы с задачами на интеграции.
11:41 - Как изменилась работа с задачами на интеграции за последние годы?
16:49 - Написал требования в соответствии с API-документацией внешней системы, а потом оказалось, что работает не так.
19:40 - Интеграция работала в продакшн и всё было хорошо, а потом всё внезапно сломалось.
22:57 - Что делать если предстоит интегрироваться с системой у которой еще нет API, а сроки горят?
26:18 - Разработчик системы, с которой предстоит интегрироваться, не предоставляет API и доступы, а задачу нужно реализовать, потому что сроки (P.S. Влиять через заказчика на внешнюю команду при возможности).
28:07 - Что, если вы тот самый разработчик, у которого просят API, но вам пока не до этого?
29:21 - Платные подписки и использование внешних систем. Примеры: DaData.ru, сервисы SMS-рассылок с поштучной оплатой со счета заказчика и другие.
31:58 - Разные структуры данных в разных системах: как собрать всё в нашей системе воедино? Про агрегаторы.
36:07 - Высокие нагрузки и длительное ожидание ответов. Асинхронные запросы и вебхуки.
39:37 - Не работал с видом API, по которому предстоит интеграция (REST API, GraphQL, gRPC, SOAP API и WebSocket - основные, посмотрите на них).
42:02 - Заключение и рекомендации
Эпизод доступен в:
⏯ Яндекс.Музыка
⏯ YouTube
⏯ Telegram
⏯ Apple Podcast
⏯ Castbox
⏯ Spotify
⏯ Amazon Music
Подписывайтесь на подкаст и делитесь с коллегами, начинающими и опытными системными аналитиками!
В новом эпизоде подкаста мы погрузимся в проблемы разработки требований на интеграции систем, с которыми могут встретиться системные аналитики, а также обсудим варианты их решения.
Этот эпизод представляет ценную информацию для начинающих и опытных системных аналитиков, стремящихся разобраться в работе с интеграционными задачами и обеспечить стабильное взаимодействие систем.
1:18 - Что такое интеграции?
4:25 - Роль системного аналитика в процессе работы с задачами на интеграции.
11:41 - Как изменилась работа с задачами на интеграции за последние годы?
16:49 - Написал требования в соответствии с API-документацией внешней системы, а потом оказалось, что работает не так.
19:40 - Интеграция работала в продакшн и всё было хорошо, а потом всё внезапно сломалось.
22:57 - Что делать если предстоит интегрироваться с системой у которой еще нет API, а сроки горят?
26:18 - Разработчик системы, с которой предстоит интегрироваться, не предоставляет API и доступы, а задачу нужно реализовать, потому что сроки (P.S. Влиять через заказчика на внешнюю команду при возможности).
28:07 - Что, если вы тот самый разработчик, у которого просят API, но вам пока не до этого?
29:21 - Платные подписки и использование внешних систем. Примеры: DaData.ru, сервисы SMS-рассылок с поштучной оплатой со счета заказчика и другие.
31:58 - Разные структуры данных в разных системах: как собрать всё в нашей системе воедино? Про агрегаторы.
36:07 - Высокие нагрузки и длительное ожидание ответов. Асинхронные запросы и вебхуки.
39:37 - Не работал с видом API, по которому предстоит интеграция (REST API, GraphQL, gRPC, SOAP API и WebSocket - основные, посмотрите на них).
42:02 - Заключение и рекомендации
Эпизод доступен в:
⏯ Яндекс.Музыка
⏯ YouTube
⏯ Telegram
⏯ Apple Podcast
⏯ Castbox
⏯ Spotify
⏯ Amazon Music
Подписывайтесь на подкаст и делитесь с коллегами, начинающими и опытными системными аналитиками!
🔥23👍9
GetAnalyst _Интеграционные User Stories.pdf
3.9 MB
🔷 User Stories: подход и применение в интеграциях 🔷
Этот метод широко применяется в гибких методологиях разработки (Agile, Scrum) и помогает командам формулировать задачи так, чтобы они отражали реальную ценность для пользователей или стейкхолдеров.
Это делает требования более понятными для всех участников проекта – от бизнеса до разработчиков.
Детализация требований может быть (и будет) сделана на следующих этапах аналитики и разработки.
👉 Пример User Story:
Как пользователь-арендатор платформы #BookingGA,
я хочу видеть отзывы по домам и квартирам, предлагаемым в ней,
чтобы принимать более взвешенное и уверенное решение перед началом аренды.
👉 Критерии приемки:
+ После окончания аренды пользователю предлагается оставить отзыв по бронированию:
++ при просмотре истории бронирований в приложении,
++ через email и push-уведомления.
+ При размещении отзыва пользователь может поставить количество звезд, написать текстовое сообщение и прикрепить фотографии.
+ …
При формулировке таких историй и их критериев приемки важно учитывать:
✅ 1. Событийный характер данных
✅ 2. Взаимодействие с API внешних систем
✅ 3. Авторизация систем и пользователей
✅ 4. Логирование и мониторинг
✅ 5. Требования к гарантии доставки
✅ 6. Обработка дубликатов данных
✅ 7. Обработка конфликтов данных
✅ 8. Ограничения и лимиты API внешних систем
✅ 9. Масштабируемость и обработка больших объемов данных
Подробности каждого пункта и примеры разобрала в мини-книге к посту 📚
#ИнтеграцииGA
User Stories –
это формат описания требований с фокусом на конечного пользователя и его потребности.
Этот метод широко применяется в гибких методологиях разработки (Agile, Scrum) и помогает командам формулировать задачи так, чтобы они отражали реальную ценность для пользователей или стейкхолдеров.
Вместо детального технического описания требований, User Story фиксирует:
👉 цель,
которую хочет достичь пользователь,
👉 основные критерии приемки,
которые являются аналогом функциональных требований.
Это делает требования более понятными для всех участников проекта – от бизнеса до разработчиков.
Детализация требований может быть (и будет) сделана на следующих этапах аналитики и разработки.
👉 Пример User Story:
Как пользователь-арендатор платформы #BookingGA,
я хочу видеть отзывы по домам и квартирам, предлагаемым в ней,
чтобы принимать более взвешенное и уверенное решение перед началом аренды.
👉 Критерии приемки:
+ После окончания аренды пользователю предлагается оставить отзыв по бронированию:
++ при просмотре истории бронирований в приложении,
++ через email и push-уведомления.
+ При размещении отзыва пользователь может поставить количество звезд, написать текстовое сообщение и прикрепить фотографии.
+ …
🔷 Особенность User Stories в интеграционных проектах – это акцент не только на взаимодействии пользователей с системой, но и на том, как разные системы обмениваются данными.
При формулировке таких историй и их критериев приемки важно учитывать:
✅ 1. Событийный характер данных
✅ 2. Взаимодействие с API внешних систем
✅ 3. Авторизация систем и пользователей
✅ 4. Логирование и мониторинг
✅ 5. Требования к гарантии доставки
✅ 6. Обработка дубликатов данных
✅ 7. Обработка конфликтов данных
✅ 8. Ограничения и лимиты API внешних систем
✅ 9. Масштабируемость и обработка больших объемов данных
Подробности каждого пункта и примеры разобрала в мини-книге к посту 📚
#ИнтеграцииGA
❤🔥21👍15❤6🔥5
💥🎁 Открыта запись на Интеграции: старт 2 апреля 🎁💥
Почти во всех современных системах есть интеграции:
▫️ мобильные и веб- приложения обмениваются данными с сервером по API, чтобы сохранять и отображать их пользователям,
▫️ для приема оплаты в приложениях подключают банковские платежные системы,
▫️ микросервисы обмениваются данными между собой.
Можно приводить много примеров.
Поэтому от системных аналитиков требуют знания и опыт в интеграциях, особенно ведущие ИТ-компании рынка.
👉 В программе Интеграции систем мы на практике разбираем все детали работы с задачами: от анализа API-документации до создания структуры требований и постановок задач на разработчиков.
🗓 Старт: 2 апреля 2025
🗓 В онлайн: с 9 апреля 2025 (всегда по ср)
🔗 Подробности и регистрация
Вас ждут:
✅ 10 живых онлайн-встреч.
✅ Решение реальных задач.
✅ Один проект в течение всей программы.
✅ Обратная связь и индивидуальный подход.
✅ Структурированные знания и опыт.
🎁 По заявкам до 24 марта дарим дополнительное обучение по БД+SQL в подарок + самые выгодные условия.
Есть вопросы?
Пишите @getanalyst,
на почту info@getanalyst.ru
или заполняйте анкету предзаписи на сайте.
Мы поможем оценить ваши текущие навыки, пришлем дополнительную информацию и ответим на все вопросы 🤝
Почти во всех современных системах есть интеграции:
▫️ мобильные и веб- приложения обмениваются данными с сервером по API, чтобы сохранять и отображать их пользователям,
▫️ для приема оплаты в приложениях подключают банковские платежные системы,
▫️ микросервисы обмениваются данными между собой.
Можно приводить много примеров.
Поэтому от системных аналитиков требуют знания и опыт в интеграциях, особенно ведущие ИТ-компании рынка.
👉 В программе Интеграции систем мы на практике разбираем все детали работы с задачами: от анализа API-документации до создания структуры требований и постановок задач на разработчиков.
🗓 Старт: 2 апреля 2025
🗓 В онлайн: с 9 апреля 2025 (всегда по ср)
Вас ждут:
✅ 10 живых онлайн-встреч.
✅ Решение реальных задач.
✅ Один проект в течение всей программы.
✅ Обратная связь и индивидуальный подход.
✅ Структурированные знания и опыт.
🎁 По заявкам до 24 марта дарим дополнительное обучение по БД+SQL в подарок + самые выгодные условия.
Есть вопросы?
Пишите @getanalyst,
на почту info@getanalyst.ru
или заполняйте анкету предзаписи на сайте.
Мы поможем оценить ваши текущие навыки, пришлем дополнительную информацию и ответим на все вопросы 🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
GetAnalyst_Use_Cases_Обычные_VS_Интеграционные_.pdf
1.1 MB
📂 Use Cases: обычные VS интеграционные 📂
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥11❤9
🐺 Работа не волк, но может и загрызть 🐺
Еще год назад я думала, что главное — это успеть как можно больше.
Работала по 10-12 часов в день, почти без выходных.
Жила в режиме «ещё чуть-чуть, и можно выдохнуть».
Но потом в очередной раз поняла:
Уже не первое озарение.
И каждый раз с новой стороны.
👉 Именно поэтому сегодня моя дисциплина — это не только про работу, но и про здоровье, энергию и качество жизни.
Делюсь самым сокровенным.
◻️ Физическое здоровье
1. Спорт — неотъемлемая часть моей жизни уже почти 10 лет.
Даже если день загружен под завязку, я нахожу время подвигаться. Бегаю, делаю силовые, хожу на длинные прогулки.
Это не про «надо» — это про «если не сделаю, почувствую себя хуже».
2. Добавила регулярные чекапы.
Раз в год сдаю анализы, проверяю, какие показатели улучшились, а где капец.
В прошлом году нашелся дефицит железа. А еще слишком высокий уровень стресса.
Весь год работала над исправлением.
+ Витаминки и правильные продукты - мои лучшие друзья
+ Увеличение сна до 8+ часов (хотя всё ещё периодически косячу)
+ Два выходных в неделю без компьютера
В конце марта снова пойду проверять показатели.
Надеюсь, что ситуацию поправила.
◻️ Питание
С едой у меня вечно какая-то история.
Считаю калории, экспериментирую с выбором продуктов.
В этом году — полный отказ от кофе и алкоголя.
Пока похоже на интересный опыт и улучшение самочувствия.
Но самое неожиданное: год назад убрала из рациона молочку.
И впервые с подросткового возраста у меня чистая кожа. Ни один косметолог не дал такого результата! 😱
Приготовила сырники один раз за всё время, думала жаренный творог норм. Ага 🤣 Моё лицо дало реакцию на следующий день. На чипсы по неосторожности такой реакции нет, как на молоко))
У кого проблемы с кожей - рекомендую попробовать.
Привыкаешь со временем, но иногда скучаю 😅
◻️ Уход за собой
Дисциплина — это не только про работу и спорт, но и про заботу о себе.
Через "галочки" в ежедневнике каждый день заставляла себя пользоваться кремами, маслами для волос, делать маски.
Уже почти сделала рутиной это всё))
Для девушек это точно важно!!!
Ведь красота — это не только про внешность, но и про ощущение себя, самочувствие и качество жизни.
◻️ Ментальное здоровье
Путешествовать, делать выходные, спрашивать себя: «Как я себя чувствую?».
А если внутри хаос — не бояться пойти к психологу или коучу. Это реально помогает.
За 2 выходных в неделю мне до сих пор иногда стыдно. Но я работаю над этим и понимаю, что зато в будни я продуктивнее, и чувствую себя живее.
Работа в IT — круто, но порой стрессово.
Мы постоянно думаем, решаем задачи, держим в голове десятки процессов.
👉 И если не следить за своим состоянием, можно загнать себя так, что никакие достижения не принесут радости.
Работа загрызёт 🐺
💡 Итого:
Если не заботиться о себе, здоровье и энергия уйдут раньше, чем ты успеешь сказать «сгорел».
Так что следите за собой, проверяйтесь у врачей, вовремя отдыхайте и держите в рутине всё, что делает вас сильнее.
Берегите себя ❤️
Еще год назад я думала, что главное — это успеть как можно больше.
Работала по 10-12 часов в день, почти без выходных.
Жила в режиме «ещё чуть-чуть, и можно выдохнуть».
Но потом в очередной раз поняла:
Если не заботиться о себе, никакие успехи не спасут от выгорания, а потом никакие деньги не вытащат из больниц.
Уже не первое озарение.
И каждый раз с новой стороны.
👉 Именно поэтому сегодня моя дисциплина — это не только про работу, но и про здоровье, энергию и качество жизни.
Делюсь самым сокровенным.
◻️ Физическое здоровье
1. Спорт — неотъемлемая часть моей жизни уже почти 10 лет.
Даже если день загружен под завязку, я нахожу время подвигаться. Бегаю, делаю силовые, хожу на длинные прогулки.
Это не про «надо» — это про «если не сделаю, почувствую себя хуже».
2. Добавила регулярные чекапы.
Раз в год сдаю анализы, проверяю, какие показатели улучшились, а где капец.
В прошлом году нашелся дефицит железа. А еще слишком высокий уровень стресса.
Весь год работала над исправлением.
+ Витаминки и правильные продукты - мои лучшие друзья
+ Увеличение сна до 8+ часов (хотя всё ещё периодически косячу)
+ Два выходных в неделю без компьютера
В конце марта снова пойду проверять показатели.
Надеюсь, что ситуацию поправила.
◻️ Питание
С едой у меня вечно какая-то история.
Считаю калории, экспериментирую с выбором продуктов.
В этом году — полный отказ от кофе и алкоголя.
Пока похоже на интересный опыт и улучшение самочувствия.
Но самое неожиданное: год назад убрала из рациона молочку.
И впервые с подросткового возраста у меня чистая кожа. Ни один косметолог не дал такого результата! 😱
Приготовила сырники один раз за всё время, думала жаренный творог норм. Ага 🤣 Моё лицо дало реакцию на следующий день. На чипсы по неосторожности такой реакции нет, как на молоко))
У кого проблемы с кожей - рекомендую попробовать.
Привыкаешь со временем, но иногда скучаю 😅
◻️ Уход за собой
Дисциплина — это не только про работу и спорт, но и про заботу о себе.
Через "галочки" в ежедневнике каждый день заставляла себя пользоваться кремами, маслами для волос, делать маски.
Уже почти сделала рутиной это всё))
Для девушек это точно важно!!!
Ведь красота — это не только про внешность, но и про ощущение себя, самочувствие и качество жизни.
◻️ Ментальное здоровье
Отдыхать — это не слабость, а необходимость.
Путешествовать, делать выходные, спрашивать себя: «Как я себя чувствую?».
А если внутри хаос — не бояться пойти к психологу или коучу. Это реально помогает.
За 2 выходных в неделю мне до сих пор иногда стыдно. Но я работаю над этим и понимаю, что зато в будни я продуктивнее, и чувствую себя живее.
Работа в IT — круто, но порой стрессово.
Мы постоянно думаем, решаем задачи, держим в голове десятки процессов.
👉 И если не следить за своим состоянием, можно загнать себя так, что никакие достижения не принесут радости.
Работа загрызёт 🐺
💡 Итого:
Если не заботиться о себе, здоровье и энергия уйдут раньше, чем ты успеешь сказать «сгорел».
Так что следите за собой, проверяйтесь у врачей, вовремя отдыхайте и держите в рутине всё, что делает вас сильнее.
Берегите себя ❤️
👍65💯27❤🔥20🔥12❤10🤣1
Если вам кажется, что для организации простых задач:
1. Подписать пользователя на email-рассылку в веб-приложении
2. Делать рассылку раз в неделю
не надо прикладывать много усилий, то это не так.
В задаче для #BookingGA есть особенности, которые делают интеграцию в меру сложной.
В этом посте я покажу свой подход к анализу API-документации внешних систем, и соберу все важные данные в одном месте.
✅ Документация
Ссылка на раздел по email
✅ Вид API
✔ HTTPS-запросы (HTTP API)
✔ Все запросы GET, но можно делать и все POST
На заметку про безопасность в API:
Более того, параметр api_key мы настоятельно рекомендуем передавать через POST, чтобы он не сохранялся в логах прокси-серверов.
✔ Кодировка параметров запроса: UTF-8
✔ Ответы всегда в JSON (книга).
✅ Авторизация и аутентификация
✔ Вид: API-KEY (постоянный ключ
✔ Чтобы получить доступ к API для email-рассылок нужен ключ, который можно скопировать в личном кабинете.
На заметку про безопасность:
Ключ доступа не следует передавать посторонним лицам или делать видимым в коде веб-страниц. Иначе кто-то другой сможет отправлять рассылки от вашего имени.
✅ Тестовые доступы
Упрощенное получение:
Пользоваться API можно бесплатно на любом аккаунте.
Для будущих экспериментов в Postman, уже можете создавать свой ЛК.
✅ Рекомендации по использованию
Есть общее описание "Принцип использования API" - все запросы вида:
https://api.unisender.com/LANG/api/METHOD?format=json&api_key=KEY&arg1=ARG_1&argN=ARG_N
И рекомендуемый сценарий "Порядок вызова методов".
✅ Ограничения и особенности
Лимиты по запросам:
общее — 1200 запросов/60 секунд
Бывают и другие ограничения, зависит от API.
✅ Общие требования к обработке ошибок
Полный перечень:
Не всегда есть.
✅ Список методов для нашей задачи
Для работы с этой частью надо на базовом уровне понимать будущие алгоритмы работы системы.
Список доступных методов
#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥7❤2🤔2
В задаче для #BookingGA есть особенности, которые делают интеграцию сложной.
Они связаны с подбором методов под Use Cases для:
Еженедельной рассылки новостей о новых объектах недвижимости и выгодных предложениях
В этом посте я покажу, как простая задача на интеграцию может скрывать под собой много скрытых работ. И все "подводные камни" найдём благодаря анализу Списка доступных API-методов
Часть 1. Подписка пользователей
✅ UC1. Создать лист контактов при создании нового города в справочнике Администратором
createList
Удаление и редактирование поддерживать пока не будем, хотя тоже можно.
✅ UC2. Добавление пользователя в лист контактов по городу при настройке подписки
subscribe
+ в процессе регистрации
+ в настройках уведомлений
Часть 2. Рассылка email
✅ UC3. Создать шаблон письма с новыми актуальными предложениями по городу
Редактировать существующий шаблон сообщения в Unisender:
updateEmailTemplate
✅ UC4. Сделать рассылку обновленного шаблона для выбранного города
+ вручную
+ автоматически, по крону (расписанию)
createEmailMessage - создать сообщение, используя шаблон, но не отправлять
createCampaign - запланировать или немедленно запустить рассылку на основе созданного сообщения
Часть 3. Отписка пользователей
✅ UC5. Отписать пользователя от рассылки на выбранный город
unsubscribe
Дополнительно:
✅ Подготовка стандартного сценария авторизации всех запросов к Unisender и типовой обработки ошибок
✅ Импорт всех контактов системы в общий лист контактов Unisender из БД #BookingGA
Скрипты для разового прогона, можно вручную. Нужно для других рассылок по системе. Не обязательно в рамках этой истории
✅ Первичная настройка шаблонов и сопоставление их с городами в БД
---
UC = Use Case
---
👉 Итого:
+ 5 интеграционных Use Cases
+ 7 API-методов внешней системы
+ 3 тех.задачи
👉 Моменты, на которые стоит обратить внимание: UС4 с двумя API-методами, и сценарий авторизации, который аналитики забывают описывать.
#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤4🔥3👌1
🧑🔬🟠 Сначала исследовательское тестирование API в Postman, а потом сценарий интеграции 🟠🧑🔬
Прежде чем писать детализированный интеграционный Use Case, настоятельно рекомендую протестировать API, чтобы понять, как он работает, и убедиться, что документация соответствует реальности.
👉 Проверять важно только те методы, которые необходимы для работы системы.
Вообще всё по API-документации проверять не нужно.
Исследовательское тестирование API позволяет:
✅ Понять поведение API, особенно момент с работой авторизации запросов.
✅ Выявить расхождения между документацией и фактической реализацией API.
✅ Определить, какие данные реально передаются и принимаются.
✅ Понять, как API обрабатывает ошибки и исключения; найти то, что не задокументировано, чтобы продумать обработки на свои "узкие места" в сценарии.
🟠 Postman — главный инструмент аналитика для работы с API и проведения его исследовательского тестирования. А также один из ключевых навыков в резюме СА.
Если вы хотите работать с Backend-командами и понимать API, то без него никуда.
Он помогает проверять, как работают API-методы, не написав ни одной строчки кода.
С помощью Postman можно проверять:
+ REST API
+ GraphQL
+ gRPC
+ WebSocket
и другие виды API.
Чтобы познакомиться с инструментом в деле, предлагаю поработать с этими практическими руководствами:
🔗 Практическое руководство по Postman - тестирование API DaData (с нуля до результатов)
🔗 Postman: навык тестирования REST API за вечер
🔗 Знакомство с GraphQL на практике через Postman
Знание Postman — это не просто навык, а шаг к карьерному росту!
Он поможет вам разбираться в API на практике, уверенно работать с интеграциями и открыть двери в работу с Backend-командами 🤩
#ИнтеграцииGA
Прежде чем писать детализированный интеграционный Use Case, настоятельно рекомендую протестировать API, чтобы понять, как он работает, и убедиться, что документация соответствует реальности.
👉 Проверять важно только те методы, которые необходимы для работы системы.
Вообще всё по API-документации проверять не нужно.
Исследовательское тестирование API позволяет:
✅ Понять поведение API, особенно момент с работой авторизации запросов.
✅ Выявить расхождения между документацией и фактической реализацией API.
✅ Определить, какие данные реально передаются и принимаются.
✅ Понять, как API обрабатывает ошибки и исключения; найти то, что не задокументировано, чтобы продумать обработки на свои "узкие места" в сценарии.
🟠 Postman — главный инструмент аналитика для работы с API и проведения его исследовательского тестирования. А также один из ключевых навыков в резюме СА.
Если вы хотите работать с Backend-командами и понимать API, то без него никуда.
Он помогает проверять, как работают API-методы, не написав ни одной строчки кода.
С помощью Postman можно проверять:
+ REST API
+ GraphQL
+ gRPC
+ WebSocket
и другие виды API.
Чтобы познакомиться с инструментом в деле, предлагаю поработать с этими практическими руководствами:
Знание Postman — это не просто навык, а шаг к карьерному росту!
Он поможет вам разбираться в API на практике, уверенно работать с интеграциями и открыть двери в работу с Backend-командами 🤩
#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤5👍4
2_GetAnalyst_Интеграции_BookingGA_Unisender_Авторассылка.png
575.2 KB
Чтобы сделать четкую и структурированную постановку задачи на интеграцию - технический Use Case (UC), сначала надо изучить архитектуру проекта.
👉 Это помогает:
1. Явно определять участников UC на каждом шаге
2. Понимать где, когда и какой API вызывать
3. Наглядно видеть потоки данных
Из огромной схемы архитектуры проекта #BookingGA, сделанной в рамках этой публикации, я выделила часть, которая связана с задачей:
Подключить Unisender, чтобы пользователи подписывались и получали рассылку по новым и выгодным объектам недвижимости в выбранном городе.
Далее обзорно рассказываю, как будут "ходить" запросы и данные по архитектуре для реализации задачи.
UC 1: Подписка на рассылку
1. Пользователь с Frontend подписывается на рассылку.
2. Frontend отправляет REST API запрос на подписку в Backend (API Gateway).
3. API Gateway перенаправляет запрос на сервис авторизации для проверки валидности токена.
Если успешно, то API Gateway проксирует запрос на сервис Управления Пользователями (УП), чтобы включить настройку.
4. Сервис УП сохраняет изменения настроек в своей БД и отправляет сообщение (JSON) в Kafka о новом подписчике.
Асинхронно, в фоновом режиме, Сервис Уведомлений:
4.1. Читает сообщение о подписке из Kafka.
4.2. Уточняет лист рассылок по БД, в который внести пользователя.
4.3. Отправляет запрос на подписку пользователя в Unisender.
4.4. Сохраняет в БД результат и делает отметку в Kafka об успешной обработке.
5. Сервис УП возвращает ответ об успешном включении подписки на API Gateway.
6. API Gateway возвращает ответ на Frontend, который отражает результат пользователю.
UC 2: Авторассылка новостей подписчикам
Начинается со срабатывания крона (задачи по расписанию), а далее расскажу в детальной постановке задачи 😉
Дополнительно:
Только после понимания как "ходят" данные в архитектуре, мы можем переходить к постановке задач на интеграции 🙌
#ИнтеграцииGA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍6❤🔥3❤3