5_Архитектура_С4_Container_BookingGA_c_комментариями.png
733.3 KB
🔵 C4 / Container - разбор на примере для монолитной архитектуры 🔵
Уровень Container в нотации C4 детализирует систему, показывая её внутреннюю структуру на уровне крупных компонент – контейнеров.
Уровень отражает:
+ какие приложения и сервисы её формируют – независимые кодовые базы,
+ как они взаимодействуют между собой, с пользователями и внешними системами,
+ как организовано хранение данных в системе.
👉 Что нужно показывать?
🔹 Пользователей и внешние системы – переносим с C4/Context.
🔹 Контейнеры – основные приложения и сервисы системы (например, веб-приложение, мобильное приложение, Backend).
🔹 БД и Файловые Хранилища (ФХ) – места хранения данных.
🔹 Брокеры – для организации асинхронного взаимодействия.
🔹 Связи – какие потоки данных существуют, протоколы (например, мобильное приложение вызывает API Backend, Backend делает SQL-запросы в базу данных).
🔹 Технологии – указываем ключевые технологии, если это полезно для понимания и они известны на текущем этапе разработки (например, Backend на Spring Boot, Frontend на React, база данных PostgreSQL).
👉 Что важно знать?
✔️ На этом уровне важно понимать какая архитектура в проекте - монолитная, сервисная (SOA) или микросервисная (MSA).
✔️ Этот уровень помогает увидеть ключевые элементы системы, но без детализации кода. То, что внутри каждой кодовой базы, мы будем показывать уже на следующих уровнях: C4 / Component и C4 / Code.
✔️ C4 / Container не связан с инфраструктурой и Docker-контейнерами, что подтверждается автором нотации.
✔️ Глядя на C4 / Container проще описывать алгоритмы и рисовать UML Sequence для интеграций.
👉 Кому полезен?
✔️ Разработчикам и архитекторам - понять, из каких сервисов состоит система, и базовые принципы её проектирования.
✔️ Аналитикам и бизнесу - наглядно видеть ключевые приложения системы и движение данных между ними.
Примеры С4/Context и C4/Container для системы бронирования жилья #BookingGA прикреплены к посту:
✅ пример для монолитной архитектуры
✅ есть схемы комментариями и чистовые
#АрхитектураGA
Уровень Container в нотации C4 детализирует систему, показывая её внутреннюю структуру на уровне крупных компонент – контейнеров.
Уровень отражает:
+ какие приложения и сервисы её формируют – независимые кодовые базы,
+ как они взаимодействуют между собой, с пользователями и внешними системами,
+ как организовано хранение данных в системе.
👉 Что нужно показывать?
🔹 Пользователей и внешние системы – переносим с C4/Context.
🔹 Контейнеры – основные приложения и сервисы системы (например, веб-приложение, мобильное приложение, Backend).
🔹 БД и Файловые Хранилища (ФХ) – места хранения данных.
🔹 Брокеры – для организации асинхронного взаимодействия.
🔹 Связи – какие потоки данных существуют, протоколы (например, мобильное приложение вызывает API Backend, Backend делает SQL-запросы в базу данных).
🔹 Технологии – указываем ключевые технологии, если это полезно для понимания и они известны на текущем этапе разработки (например, Backend на Spring Boot, Frontend на React, база данных PostgreSQL).
👉 Что важно знать?
✔️ На этом уровне важно понимать какая архитектура в проекте - монолитная, сервисная (SOA) или микросервисная (MSA).
✔️ Этот уровень помогает увидеть ключевые элементы системы, но без детализации кода. То, что внутри каждой кодовой базы, мы будем показывать уже на следующих уровнях: C4 / Component и C4 / Code.
✔️ C4 / Container не связан с инфраструктурой и Docker-контейнерами, что подтверждается автором нотации.
✔️ Глядя на C4 / Container проще описывать алгоритмы и рисовать UML Sequence для интеграций.
👉 Кому полезен?
✔️ Разработчикам и архитекторам - понять, из каких сервисов состоит система, и базовые принципы её проектирования.
✔️ Аналитикам и бизнесу - наглядно видеть ключевые приложения системы и движение данных между ними.
Примеры С4/Context и C4/Container для системы бронирования жилья #BookingGA прикреплены к посту:
✅ пример для монолитной архитектуры
✅ есть схемы комментариями и чистовые
#АрхитектураGA
👍16🔥8❤3❤🔥1
Одна из ступеней профессионального роста системного аналитика - работа в тесном сотрудничестве с архитекторами на проектах с сервисной или микросервисной архитектурой.
Мы в GetAnalyst создали программу для опытных специалистов, которая помогает на практике получить все нужные знания по архитектуре, чтобы продолжать расти в карьере и соответствовать актуальным требованиям компаний:
💥 Проектирование архитектуры
🗓 Старт: 4 марта 2025
👉 Подробности о программе и заявка на участие
🎁 Сегодня последний день, когда открыта запись на самых выгодных условиях:
спец. цена + дополнительное обучение по REST API в подарок
По всем вопросам пишите @getanalyst, info@getanalyst.ru или оставляйте заявку через сайт. Мы свяжемся с вами, поможем оценить текущие навыки и ответим на ваши вопросы 🤝
Мы в GetAnalyst создали программу для опытных специалистов, которая помогает на практике получить все нужные знания по архитектуре, чтобы продолжать расти в карьере и соответствовать актуальным требованиям компаний:
💥 Проектирование архитектуры
🗓 Старт: 4 марта 2025
👉 Подробности о программе и заявка на участие
🎁 Сегодня последний день, когда открыта запись на самых выгодных условиях:
спец. цена + дополнительное обучение по REST API в подарок
По всем вопросам пишите @getanalyst, info@getanalyst.ru или оставляйте заявку через сайт. Мы свяжемся с вами, поможем оценить текущие навыки и ответим на ваши вопросы 🤝
👍6❤2
Ранее я рассказала как выделять микросервисы. А сегодня хочу дать вам полную подборку под проект, которую мы затем представим на C4 / Container микросервисной архитектуры.
✅ Аутентификация и авторизация
Отвечает за доступ пользователей в систему, их роли и права.
Выделяется отдельно, так как авторизация общая для всех других сервисов системы
✅ Управление пользователями
Пользователь – отдельная сущность со своим жизненным циклом, которой можно управлять независимо от остальных данных системы
✅ Управление недвижимостью
Недвижимость – отдельная сущность со своим жизненным циклом и статусами, которой можно управлять независимо
✅ Поиск недвижимости
Фильтрация и поиск объектов с учетом занятости.
Самая высоконагруженная функция в системе, её стоит держать отдельно
✅ Бронирования
Бронирование – отдельная сущность и пользовательский сценарий, требующий сложной бизнес-логики
✅ Платежи
Платежи требуют высокой надежности и взаимодействия с внешними сервисами.
Должен быть изолирован, чтобы проблемы с другими сервисами не влияли на оплату
✅ Рейтинг и отзывы
Отзывы – это отдельный тип данных, с которым можно работать независимо, не нагружая основную часть системы
✅ Уведомления
Реализует общий для всех сервисов сценарий отправки email, push, SMS
✅ Отчетность и аналитика
Аналитика часто требует тяжелых запросов, которые не должны замедлять работу основной базы. Можно собирать события из всех других микросервисов (бронирования, платежи, отзывы) и обрабатывать их асинхронно
✅ Чаты и поддержка
Реализует общение пользователей с владельцами жилья и поддержку.
Позволяет реализовать обмен сообщениями с уведомлениями
✅ Лояльность
Скидки и промоакции – отдельные сущности со своим жизненным циклом и статусами, которыми можно управлять независимо
Можно ли выделить еще (или иначе) сервисы? Да.
Но уже в этом варианте мы распределили всю основную функциональность, и далее, при необходимости, можем развивать это решение 🙌
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥4❤2
🙌 DBeaver и практика SQL-запросов 🙌
Уже в следующий понедельник пройдёт продвинутый онлайн-практикум по БД и SQL:
🙌 Инструмент DBeaver. Практика SQL-запросов
🗓 3 МАРТА 2025 (ПН)
🕖 19:00 (Мск)
🔗 Подробности и регистрация
План:
1*. Знакомство с инструментом DBeaver. Подключение тестовой БД
2*. О применении SQL аналитиками. Ключевые операторы SQL-запросов.
3. Практика SQL-запросов на получение данных в DBeaver.
4. Использование AI (искусственного интеллекта) в качестве помощника в работе с SQL-запросами.
* - самостоятельная подготовка по видео-уроку в платформе, на занятии максимально практикуемся с SQL.
** - т.к. есть пересечение с открытым уроком по архитектуре, то даем всем участникам практикума расширенный доступ до 10 марта.
Практикум подойдёт, если вы:
✔️ Умеете проектировать ER-диаграммы (логический уровень минимум)
✔️ Хотите освоить SQL с нуля, на практике, за одно занятие
✔️ Научиться упрощать свою жизнь с использованием Искусственного Интеллекта при работе с SQL
Этот важный практикум для системных аналитиков, который поможет понять что такое SQL и зачем он на примере работы с реальной базой данных 🙌
Материалы по БД для знакомства и подготовки к онлайн-практикуму по DBeaver + SQL:
🔗 Статья о том, зачем БД аналитику
🔗 Статья о прекрасных возможностях DBeaver
🔗 Обучающее видео "Проектирование БД - логический уровень"
До встречи на практикуме! 😉
Уже в следующий понедельник пройдёт продвинутый онлайн-практикум по БД и SQL:
🙌 Инструмент DBeaver. Практика SQL-запросов
🕖 19:00 (Мск)
🔗 Подробности и регистрация
План:
1*. Знакомство с инструментом DBeaver. Подключение тестовой БД
2*. О применении SQL аналитиками. Ключевые операторы SQL-запросов.
3. Практика SQL-запросов на получение данных в DBeaver.
4. Использование AI (искусственного интеллекта) в качестве помощника в работе с SQL-запросами.
* - самостоятельная подготовка по видео-уроку в платформе, на занятии максимально практикуемся с SQL.
** - т.к. есть пересечение с открытым уроком по архитектуре, то даем всем участникам практикума расширенный доступ до 10 марта.
Практикум подойдёт, если вы:
✔️ Умеете проектировать ER-диаграммы (логический уровень минимум)
✔️ Хотите освоить SQL с нуля, на практике, за одно занятие
✔️ Научиться упрощать свою жизнь с использованием Искусственного Интеллекта при работе с SQL
Этот важный практикум для системных аналитиков, который поможет понять что такое SQL и зачем он на примере работы с реальной базой данных 🙌
Материалы по БД для знакомства и подготовки к онлайн-практикуму по DBeaver + SQL:
🔗 Статья о том, зачем БД аналитику
🔗 Статья о прекрасных возможностях DBeaver
🔗 Обучающее видео "Проектирование БД - логический уровень"
До встречи на практикуме! 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤5🔥5😁3⚡1
This media is not supported in your browser
VIEW IN TELEGRAM
⚙️ Микросервисная архитектура (МСА) — это современный подход к разработке высоконагруженных приложений.
Ключевые компоненты, которые используются для его реализации:
✅ Клиенты — это Frontend-приложения или другие системы, которые взаимодействуют с Backend (сервер-приложением).
✅ CDN (Content Delivery Network) — сеть серверов, стратегически распределенных по всему миру. Они кэшируют и доставляют статические ресурсы (изображения, скрипты и т. д.) пользователям с ближайшего сервера, оптимизируя время загрузки.
✅ API Gateway — единая точка входа для всех клиентов API. Он маршрутизирует запросы на нужные микросервисы, благодаря чему клиентам не надо думать о том, к какому сервису обратиться для вызова конкретной функции.
Он также может управлять аутентификацией, ограничением количества запросов (rate limiting) и другими доп. функциями.
✅ Микросервисы — это независимые компоненты, каждый из которых выполняет свою конкретную бизнес-логику.
Они взаимодействуют между собой с помощью легковесных протоколов, таких как HTTP (REST), gRPC или через асинхронные сообщения.
✅ Брокер сообщений — обеспечивает асинхронное взаимодействие между микросервисами.
Развязка сервисов через брокер (например, Kafka, RabbitMQ) делает систему более гибкой и отказоустойчивой, позволяя микросервисам работать независимо.
✅ Базы данных — в МСА действует принцип "база данных на сервис". Это принцип предотвращает жёсткие связи между сервисами и позволяет использовать разные технологии хранения данных (polyglot persistence), выбирая оптимальные решения под конкретные задачи.
✅ Identity Provider — отвечает за аутентификацию (проверку личности пользователя) и авторизацию (определение прав доступа).
✅ Service Registry and Discovery — это динамический каталог, в котором микросервисы регистрируются и находят друг друга.
✅ Service Coordination — инструменты, которые помогают управлять координацией и синхронизацией распределенных сервисов, обеспечивая их бесперебойную работу и согласованность данных.
#АрхитектураGA
Ключевые компоненты, которые используются для его реализации:
✅ Клиенты — это Frontend-приложения или другие системы, которые взаимодействуют с Backend (сервер-приложением).
✅ CDN (Content Delivery Network) — сеть серверов, стратегически распределенных по всему миру. Они кэшируют и доставляют статические ресурсы (изображения, скрипты и т. д.) пользователям с ближайшего сервера, оптимизируя время загрузки.
✅ API Gateway — единая точка входа для всех клиентов API. Он маршрутизирует запросы на нужные микросервисы, благодаря чему клиентам не надо думать о том, к какому сервису обратиться для вызова конкретной функции.
Он также может управлять аутентификацией, ограничением количества запросов (rate limiting) и другими доп. функциями.
✅ Микросервисы — это независимые компоненты, каждый из которых выполняет свою конкретную бизнес-логику.
Они взаимодействуют между собой с помощью легковесных протоколов, таких как HTTP (REST), gRPC или через асинхронные сообщения.
✅ Брокер сообщений — обеспечивает асинхронное взаимодействие между микросервисами.
Развязка сервисов через брокер (например, Kafka, RabbitMQ) делает систему более гибкой и отказоустойчивой, позволяя микросервисам работать независимо.
✅ Базы данных — в МСА действует принцип "база данных на сервис". Это принцип предотвращает жёсткие связи между сервисами и позволяет использовать разные технологии хранения данных (polyglot persistence), выбирая оптимальные решения под конкретные задачи.
✅ Identity Provider — отвечает за аутентификацию (проверку личности пользователя) и авторизацию (определение прав доступа).
✅ Service Registry and Discovery — это динамический каталог, в котором микросервисы регистрируются и находят друг друга.
✅ Service Coordination — инструменты, которые помогают управлять координацией и синхронизацией распределенных сервисов, обеспечивая их бесперебойную работу и согласованность данных.
#АрхитектураGA
🔥33❤14👍5
Архитектура МСА - C4 Container - BookingGA.png
1.3 MB
🔵 C4 / Container - пример для микросервисной архитектуры с брокером, БД и ФХ 🔵
Уровень C4 / Container показывает независимые по коду приложения системы.
И когда мы говорим про микросервисный подход к архитектуре (МСА), то этих контейнеров ооочень много.
Что мы видим на C4 / Container:
✔️ Пользователи
✔️ Внешние системы
✔️ Мобильные и веб-приложения [контейнеры]
✔️ Микросервисы [к]
✔️ API Gateway (маршрутизатор API-запросов) [к]
✔️ БД и ФХ [к]
✔️ API для взаимодействия сервисов
✔️ Брокер для асинхронного обмена [к]
Сравните схему с монолитом и увидите, как лаконично смотрится один контейнер монолитного Backend, и как перегружена схема микросервисов.
Поэтому, как лайфхак, можно показать все микросервисы, брокеров, БД и ФХ на уровне C4/Component (который нужен для модулей кода), но это будет противоречить нотации. Хотя станет удобнее читать и понимать схемы.
На практике команды часто адаптируют C4 под себя. Я рекомендую придерживаться нотации, здравого смысла и принципа понятности.
-----------
❗️ Чтобы это был не просто еще один сохраненный пост, выполните небольшие упражнения:
В результате бронирования надо занять даты в календаре и отправить уведомления владельцу + арендатору о создании нового бронирования на email.
Пройдите алгоритм по цепочке:
➡️ Пользователь нажимает кнопку бронирования ⬇️
➡️ Frontend отправляет API-запрос ⬇️
➡️ API Gateway принимает запрос и направляет на Сервис Бронирований
➡️ Сервис Бронирований...
Обратите внимание на чтение и запись событий из брокера.
-----------
Ответы разберу на следующей неделе, когда познакомлю вас с брокерами поближе 🙂
Материалы, которые помогут в понимании прикрепленных схем:
🔗 C4 - знакомство с нотацией моделирования
🔗 C4/Context - как строить для проекта BookingGA
🔗 C4/Container для монолита
🔗 Ключевые элементы МСА
🔗 Выделение микросервисов BookingGA
#АрхитектураGA
Уровень C4 / Container показывает независимые по коду приложения системы.
И когда мы говорим про микросервисный подход к архитектуре (МСА), то этих контейнеров ооочень много.
Что мы видим на C4 / Container:
✔️ Пользователи
✔️ Внешние системы
✔️ Мобильные и веб-приложения [контейнеры]
✔️ Микросервисы [к]
✔️ API Gateway (маршрутизатор API-запросов) [к]
✔️ БД и ФХ [к]
✔️ API для взаимодействия сервисов
✔️ Брокер для асинхронного обмена [к]
Сравните схему с монолитом и увидите, как лаконично смотрится один контейнер монолитного Backend, и как перегружена схема микросервисов.
Поэтому, как лайфхак, можно показать все микросервисы, брокеров, БД и ФХ на уровне C4/Component (который нужен для модулей кода), но это будет противоречить нотации. Хотя станет удобнее читать и понимать схемы.
На практике команды часто адаптируют C4 под себя. Я рекомендую придерживаться нотации, здравого смысла и принципа понятности.
-----------
❗️ Чтобы это был не просто еще один сохраненный пост, выполните небольшие упражнения:
1. Как будет реализован алгоритм создания нового бронирования?
В результате бронирования надо занять даты в календаре и отправить уведомления владельцу + арендатору о создании нового бронирования на email.
Пройдите алгоритм по цепочке:
➡️ Пользователь нажимает кнопку бронирования ⬇️
➡️ Frontend отправляет API-запрос ⬇️
➡️ API Gateway принимает запрос и направляет на Сервис Бронирований
➡️ Сервис Бронирований...
Обратите внимание на чтение и запись событий из брокера.
2. Напишите список сервисов, которые пишут сообщения в брокер Kafka, и которые читают сообщения из него.
-----------
Ответы разберу на следующей неделе, когда познакомлю вас с брокерами поближе 🙂
Материалы, которые помогут в понимании прикрепленных схем:
#АрхитектураGA
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤3
💥 Открытый урок по Архитектуре уже завтра 💥
Чтобы помочь вам в изучении основ проектирования архитектуры, мы проводим открытый урок:
💎 Проектирование архитектуры: от монолита к микросервисам
🗓 Доступ с 1 по 3 марта (сб-пн)
🔗 Подробности и регистрация
Зачем нужно это обучение:
+ Узнаете, как аналитики могут влиять на архитектуру.
+ Разберетесь в отличиях монолита, сервисов и микросервисов.
+ Научитесь проектировать схему архитектуры с нуля.
+ Поймете, с какими проблемами сталкиваются при делении монолита.
+ Получите готовые схемы и подходы по проектированию.
Навыки, полученные на практике во время занятия, вы сможете применять в реальных проектах. Они помогут стать более ценным специалистом на рынке 🙌
Регистрируйтесь, чтобы получить доступ к этому обучению!
Чтобы помочь вам в изучении основ проектирования архитектуры, мы проводим открытый урок:
Зачем нужно это обучение:
+ Узнаете, как аналитики могут влиять на архитектуру.
+ Разберетесь в отличиях монолита, сервисов и микросервисов.
+ Научитесь проектировать схему архитектуры с нуля.
+ Поймете, с какими проблемами сталкиваются при делении монолита.
+ Получите готовые схемы и подходы по проектированию.
Навыки, полученные на практике во время занятия, вы сможете применять в реальных проектах. Они помогут стать более ценным специалистом на рынке 🙌
Регистрируйтесь, чтобы получить доступ к этому обучению!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍3😁1👌1
Как каждый год деградировать в навыках и опыте? 😬 Дорасти до топовой должности.
Перейти в режим "я уже всё знаю".
Годами сидеть в одной компании.
Получать стабильное повышение 5-10% в год.
И быть уверенным, что ты вау!
А потом, спустя 5+ лет, выйти на рынок, потому что стало скучно… и офигеть.
👉 Потому что технологии ушли далеко вперёд, а твои "ценные знания" вдруг оказались базой, на которой уже давно строят что-то более сложное.
Хотя бывает, что повезло, компания в тренде, и ты постоянно пробуешь новые подходы, внедряешь современные технологии. Но так бывает не всегда. И из таких компаний не уходят, потому что скучно))
Как пример, по моим ощущениям, 5 лет назад REST API, Kafka и микросервисы были чем-то уникальным для СА 🙌
Это были бонусы, которые ценились на отдельных проектах, и делали умножение ЗП на лучший коэффициент при выходе в новую компанию.
Сегодня же про Kafka и микросервисы спрашивают на каждом третьем собеседовании. REST API — вообще must-have для Middle СА. И не выпендриться уже, что я такая вот уникальная 🙁
👉 Такой вот жестокий мир IT.
Сидеть на месте тут не очень получается.
Я вообще постоянно переживаю, что могу отстать и не узнать что-то важное. Это отлично мотивирует.
Сейчас будущее за нейросетями.
Поэтому, на страхе отстать от жизни, я:
+ Пишу прототипы приложений
+ Езжу на конференции по AI
+ Разбираюсь с инфраструктурой, безопасностью и архитектурными проблемами AI
+ Считаю токены и оптимизирую запросы
И при всём при этом...
Я сижу с "синдромом самозванца" 😁
Это обычное явление, если ты постоянно изучаешь что-то новое))
Те, кто приходят в IT только ради денег, надолго здесь не задерживаются.
Мы постоянно учимся.
Много работаем.
Это сфера, где ты либо постоянно растёшь, либо быстро устареваешь.
Так что если вам кажется, что вы ничего не знаете — это нормально.
Это ощущение заставляет
шевелить извилинами 🧠,
постоянно расти,
и быть лучшими в нашей профессии))
Перейти в режим "я уже всё знаю".
Годами сидеть в одной компании.
Получать стабильное повышение 5-10% в год.
И быть уверенным, что ты вау!
А потом, спустя 5+ лет, выйти на рынок, потому что стало скучно… и офигеть.
👉 Потому что технологии ушли далеко вперёд, а твои "ценные знания" вдруг оказались базой, на которой уже давно строят что-то более сложное.
Хотя бывает, что повезло, компания в тренде, и ты постоянно пробуешь новые подходы, внедряешь современные технологии. Но так бывает не всегда. И из таких компаний не уходят, потому что скучно))
Как пример, по моим ощущениям, 5 лет назад REST API, Kafka и микросервисы были чем-то уникальным для СА 🙌
Это были бонусы, которые ценились на отдельных проектах, и делали умножение ЗП на лучший коэффициент при выходе в новую компанию.
Сегодня же про Kafka и микросервисы спрашивают на каждом третьем собеседовании. REST API — вообще must-have для Middle СА. И не выпендриться уже, что я такая вот уникальная 🙁
👉 Такой вот жестокий мир IT.
Сидеть на месте тут не очень получается.
Я вообще постоянно переживаю, что могу отстать и не узнать что-то важное. Это отлично мотивирует.
Сейчас будущее за нейросетями.
Поэтому, на страхе отстать от жизни, я:
+ Пишу прототипы приложений
+ Езжу на конференции по AI
+ Разбираюсь с инфраструктурой, безопасностью и архитектурными проблемами AI
+ Считаю токены и оптимизирую запросы
И при всём при этом...
Я сижу с "синдромом самозванца" 😁
Это обычное явление, если ты постоянно изучаешь что-то новое))
IT — это про вечное обучение.
Те, кто приходят в IT только ради денег, надолго здесь не задерживаются.
Мы постоянно учимся.
Много работаем.
Это сфера, где ты либо постоянно растёшь, либо быстро устареваешь.
Так что если вам кажется, что вы ничего не знаете — это нормально.
Это ощущение заставляет
шевелить извилинами 🧠,
постоянно расти,
и быть лучшими в нашей профессии))
💯72👏24❤🔥17❤7👍5⚡1
📚 Системным аналитикам: полный набор материалов для подготовки к техническим собеседованиям 📚
В этой подборке вы найдёте теорию вместе с разборами реальных рабочих задач.
Каждый материал подкреплён примерами для лучшего восприятия информации 🙌
REST API
▫️ Проектирование REST API: спорные вопросы с проектов и собеседований
🔹 Вопросы и ответы по REST API: собеседование на системного аналитика
▫️ Книга по JSON в REST API
▫️ Headers
▫️ Виды авторизации в API
▫️ Протокол HTTP
🔺 Связь базы данных и дизайна REST API
🔺 Postman: навык тестирования REST API за вечер
Интеграции
▫️ Как аналитику работать с задачами на интеграции — пошаговая инструкция
▫️ Интеграции - что это и основные способы
▫️ Отличия между обычными и интеграционными Use Case
▫️ Пример интеграционного Use Case
▫️ Практическое руководство по Postman - тестирование API DaData (с нуля до результатов)
▫️ Полный шаблон постановки задачи на интеграционный REST API-метод
🔹 Проблемы в работе с задачами на интеграции
▫️ UML-диаграмма: разбор задачи и инструменты
БД и SQL
🔹 Связь "многие-ко-многим": разбор задачи с собеседования
🔺 Проектирование БД: логический уровень
🔹 Нормальные формы БД
▫️ ER-диаграмма БД через код
Архитектура
▫️ 7 шаблонов проектирования архитектуры, которые важно понимать СА
▫️ Монолит, Сервисная и Микросервисная архитектура - сравнение
▫️ Как показать схему архитектуры: примеры решений
▫️ Нотация C4 для моделирования архитектуры
🔹 gRPС vs REST - что выбрать для проекта
🔹 Нефункциональные требования
▫️ GraphQL — знакомство на практике через Postman [пошаговая инструкция]
▫️ Очередь сообщений VS Брокер - вопросы с подвохами
▫️ Kafka
▫️ - статьи и книги
🔹 - подкасты
🔺 - видео YouTube
Сохраняйте, чтобы не потерять 👌
В этой подборке вы найдёте теорию вместе с разборами реальных рабочих задач.
Каждый материал подкреплён примерами для лучшего восприятия информации 🙌
REST API
▫️ Проектирование REST API: спорные вопросы с проектов и собеседований
🔹 Вопросы и ответы по REST API: собеседование на системного аналитика
▫️ Книга по JSON в REST API
▫️ Headers
▫️ Виды авторизации в API
▫️ Протокол HTTP
🔺 Связь базы данных и дизайна REST API
🔺 Postman: навык тестирования REST API за вечер
Интеграции
▫️ Как аналитику работать с задачами на интеграции — пошаговая инструкция
▫️ Интеграции - что это и основные способы
▫️ Отличия между обычными и интеграционными Use Case
▫️ Пример интеграционного Use Case
▫️ Практическое руководство по Postman - тестирование API DaData (с нуля до результатов)
▫️ Полный шаблон постановки задачи на интеграционный REST API-метод
🔹 Проблемы в работе с задачами на интеграции
▫️ UML-диаграмма: разбор задачи и инструменты
БД и SQL
🔹 Связь "многие-ко-многим": разбор задачи с собеседования
🔺 Проектирование БД: логический уровень
🔹 Нормальные формы БД
▫️ ER-диаграмма БД через код
Архитектура
▫️ 7 шаблонов проектирования архитектуры, которые важно понимать СА
▫️ Монолит, Сервисная и Микросервисная архитектура - сравнение
▫️ Как показать схему архитектуры: примеры решений
▫️ Нотация C4 для моделирования архитектуры
🔹 gRPС vs REST - что выбрать для проекта
🔹 Нефункциональные требования
▫️ GraphQL — знакомство на практике через Postman [пошаговая инструкция]
▫️ Очередь сообщений VS Брокер - вопросы с подвохами
▫️ Kafka
▫️ - статьи и книги
🔹 - подкасты
🔺 - видео YouTube
Сохраняйте, чтобы не потерять 👌
❤89🔥41👍9❤🔥5😁1
📚 Открытый урок по архитектуре
Проектирование архитектуры: от монолита к микросервисам
‼️ Сегодня последний день доступа
Подробности и регистрация
📚 Старт обучения на программе Архитектура
4 марта открываем первый модуль для самостоятельного обучения.
Подробности о программе и заявка на участие
📚 Освоение SQL на практике в DBeaver
+ Всем участникам этой практики доступ к уроку по архитектуре продлили до 10 марта.
+ Доступ к записи онлайн-занятия будет.
‼️ Сегодня в 19:00 Мск, онлайн
Подробности тут
Такой вот бодрый понедельник в GetAnalyst 🙂
Желаем вам продуктивной недели!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤4🔥3
🚦 Очередь сообщений 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❤5❤🔥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