Если вы на пороге смены работы или хотите вырасти до уровня Senior Системного Аналитика — этот выпуск для вас.
Мы собрали 10 ключевых вопросов с собеседований на позицию Senior Системный Аналитик (Старший Системный Аналитик), разбор ответов на них и полезные ссылки для самостоятельной подготовки.
Telegram-канал сообщества:
https://t.me/getanalysts
После прослушивания вы поймёте, какие темы у вас закрыты, а какие требуют дополнительного изучения или повторения, и сможете заранее закрыть пробелы в знаниях, чтобы уверенно проходить даже самые сложные интервью.
Включайте, чтобы начать свой путь к уровню Senior!
Тайм-коды эпизода:
01:00 | Виды архитектуры: монолит, SOA, MSA, EDA.
07:42 | 8 шаблонов проектирования микросервисов.
11:44 | Подходы к интеграции сервисов в распределенных системах.
14:15 | API Gateway: что это, зачем нужен, преимущества и недостатки.
19:57 | API Gateway как точка отказа в системе.
22:54 | Оркестрация и хореография микросервисов.
32:16 | Способы управления высокой нагрузкой для систем.
34:59 | Проектирование БД: связь “многие-ко-многим”.
37:53 | Миграция данных без простоя: как реализовать?
44:44 | Виды интеграции систем.
51:03 | Брокеры и очереди сообщений. RabbitMQ и Kafka.
54:41 | Аутентификация и авторизация в API.
Оглавление:
1. Какие виды архитектуры вы знаете? В чем отличия?
1.1. Шаблоны проектирования микросервисной архитектуры
2. Подходы к интеграции сервисов в распределенных системах
3. Что такое API Gateway? Зачем нужен API Gateway? Преимущества и недостатки.
3.1. Является ли АПИ гейтвэй точкой отказа в системе?
4. Что такое хореография и оркестрация? В чем отличия? Расскажите на примерах
5. Какие способы управления высокой нагрузкой для систем вы знаете?
6. Задача на развязку “Многие-ко-многим” в БД
7. Миграция данных без простоя в продакшн: как реализовать?
8. Какие виды интеграции систем вы знаете?
9. Брокеры и очереди сообщений. RabbitMQ и Kafka.
10. Что такое аутентификация и авторизация в API? Как это работает?
Другие вопросы
Монолитная архитектура
Все компоненты приложения находятся в одной кодовой базе и работают как единое целое.
БД:
Обычно одна, но допустимо и несколько.
Внутренние интеграции:
Компоненты взаимодействуют только на уровне кода, интеграции компонентов внутри Backend по API и другими способами НЕ нужны.
Ниже приведен пример схемы архитектуры для модульного монолита для Интернет-магазина.
Сервис-ориентированная архитектура, SOA
Разделяет функциональность на отдельные сервисы.
Подходит для средних и крупных проектов, где важно обеспечивать высокий уровень производительности для отдельных частей системы.
БД:
Каждый сервис может использовать свою собственную БД.
Также несколько сервисов могут использовать одну общую БД - это отличает SOA от MSA.
Внутренние интеграции:
Сервисы взаимодействуют между собой через сетевые вызовы - по API, через шину данных (ESB) или другими способами.
Микросервисная архитектура, MSA
Состоит из множества маленьких, независимо разрабатываемых и развертываемых сервисов, каждый из которых выполняет определенную бизнес-логику. Микросервисы меньше по функциональности, чем сервисы. Подход эффективен для больших и быстро развивающихся приложений.
БД:
Каждый микросервис управляет своей собственной БД.
Внутренние интеграции:
Взаимодействие между микросервисами часто строится по API на легких протоколах, таких как REST или gRPC, и может включать брокеры для асинхронной коммуникации.
Event-Driven Architecture, EDA
Event-Driven Architecture — это архитектурный стиль, при котором взаимодействие компонентов строится на обмене событиями.
В микросервисной архитектуре EDA часто используется для асинхронного взаимодействия между сервисами через брокеры сообщений или шину событий.
Важно понимать, что Event-Driven Architecture (EDA) — это независимый архитектурный стиль, а не просто "опция" внутри микросервисной архитектуры.
Он может применяться не только в микросервисах — например, в монолите или в гибридных системах тоже можно строить обмен на событиях.
В микросервисной архитектуре EDA часто выступает как один из способов организации взаимодействия сервисов — через шину событий/брокер сообщений (Kafka, RabbitMQ и т. д.).
Выбор архитектуры проекта зависит от специфики и НФТ к системе.
На практике часто используют либо смесь подходов SOA и MSA, либо начинают проекты с монолита и через 3-5 лет задумываются о переезде на SOA в качестве первого этапа деления монолита на микросервисы.
Ключевые подходы к проектированию архитектуры фиксируют в документации. И это не только схемы архитетуры, но и правила, по которым продолжать развивать проект.
1️⃣ API Gateway
Единая точка входа для всех внешних запросов.
Отвечает за маршрутизацию, кэширование, аутентификацию.
2️⃣ Service Registry and Discovery
Динамическое обнаружение и регистрация сервисов.
Это механизм? по которому сервисы сами находят адреса друг друга. Он помогает им корректно взаимодействовать без жёстко прописанных адресов.
3️⃣ Backends for Frontends (BFF)
Отдельные адаптивные бэкенды под каждый вид клиентов. Например: Web и Mobile.
Каждый клиент получает ровно те данные и в том виде, который ему нужен.
4️⃣ Event Driven
Микросервисы обмениваются информацией не напрямую, а через публикацию и подписку на «события» в общем брокере: один сервис публикует сообщение о случившемся изменении, а все заинтересованные сервисы, подписанные на эти события, асинхронно получают и обрабатывают их.
5️⃣ CQRS (Command Query Responsibility Segregation)
Шаблон, в котором операции изменения состояния системы (Commands) отделяются от операций чтения данных (Queries).
• Commands реализуют запись данных, с их валидацией.
• Queries оптимизированы под быстрое получение и агрегации, отчёты.
6️⃣ Database-per-Service
Изоляция данных каждого сервиса в своей БД.
Минимизирует зависимость между микросервисами.
Главная проблема - сложность синхронизации данных.
7️⃣ Оркестрация
Центральный сервис управляет порядком вызовов.
Обеспечивает:
• последовательность выполнения алгоритмов, которые используют разные микросервисы,
• целостность и контроль транзакций.
Пример сервиса-оркерстратора: Camunda.
8️⃣ Хореография
Сервисы обмениваются событиями напрямую через брокер, которые управляет порядком выполнения алгоримов, в которых задействованы разные микросервисы.
⚙️ Как применяют?
• В зависимости НФТ (нефункциональных требований).
• Часто комбинируют несколько подходов.
Прямые вызовы по API
Сервисы взаимодействуют напрямую в формате запрос–ответ по протоколам HTTP/REST или gRPC.
Преимущества: простота реализации, предсказуемые контракты, низкая задержка при коротких цепочках вызовов.
Недостатки: высокая связанность; каскадные сбои при недоступности одного из сервисов; сложность масштабирования цепочек.
API Gateway Internal
API Gateway выступает в роли единой точки входа, обеспечивающей маршрутизацию запросов, аутентификацию, авторизацию, трансформацию данных и реализацию кросс-сервисных политик.
External API Gateway — для взаимодействия с внешними клиентами.
Internal API Gateway — для организации взаимодействия между внутренними сервисами.
Преимущества: централизованный контроль, унифицированная безопасность, снижение количества прямых связей.
Недостатки: потенциальная точка отказа при отсутствии отказоустойчивости; риск чрезмерной централизации.
Хореография (Event-Driven Architecture)
Взаимодействие сервисов строится на публикации и подписке на события через шину/брокер сообщений. Логика процесса распределена между сервисами, нет центрального координатора.
Преимущества: слабая связанность, высокая масштабируемость, естественная поддержка асинхронных сценариев.
Недостатки: сложность отладки и трассировки; распределённая согласованность; требования к проектированию событийных контрактов.
Оркестрация
Централизованный компонент (оркестратор) управляет выполнением бизнес-процесса, вызывая шаги и компенсации. Пример — паттерн саги с оркестратором.
Но это скорее не про интеграцию сервисов, а про управление ими через централизованный компонент. В подксте не упоминается как ответ на вопрос.
ESB (Enterprise Service Bus)
Интеграционная шина обеспечивает маршрутизацию, трансформацию данных, оркестрацию и взаимодействие между сервисами.
Преимущества: поддержка множества протоколов и форматов; централизованное управление интеграциями.
Недостатки: риск превращения в «бутылочное горлышко»; высокая сложность сопровождения; избыточная связанность при чрезмерной логике в шине.
Дополнительно и допустимо, но не всегда оптимально:
API Gateway (API-шлюз) — это единая точка входа для всех клиентских запросов к Backend.
Обычно используется в микросервисной архитектуре.
Его главная функция — маршрутизация запросов.
Но, помимо этого, API Gateway предоставляет и другие важные функции.
Как работает:
1️⃣ Первичная обработка запроса
Клиент отправляет запрос в API Gateway, а не напрямую к сервисам. Это обеспечивает централизованную точку входа в систему, а также упрощает интеграцию для клиента.
2️⃣ Валидация запроса
API Gateway проверяет корректность запроса.
Если формат нарушен — запрос отклоняется.
3️⃣ Проверка безопасности
Выполняется проверка по спискам разрешённых (allow-list) и запрещённых (deny-list) источников. Небезопасные запросы блокируются.
4️⃣ Аутентификация и авторизация
Проверяет токены и другие учетные данные. Гарантирует, что у клиента есть необходимые разрешения для доступа к запрашиваемым ресурсам.
5️⃣ Ограничение частоты запросов (Rate Limiting)
Если клиент превышает лимит запросов — они отклоняются с соответствующим ответом.
6️⃣ Маршрутизация к нужному сервису
На основе пути или других признаков API-шлюз определяет, какому микросервису должен быть направлен запрос.
7️⃣ Преобразование протоколов
При необходимости, преобразует запрос в нужный формат.
Например, если API Gateway принимает запрос в HTTP (REST API), то он может преобразовать его в gRPC для внутреннего микросервиса.
8️⃣ Агрегация ответов
Если ответ зависит от нескольких микросервисов, API Gateway собирает данные с каждого и формирует единый ответ.
9️⃣ Возврат ответа клиенту
Сформированный ответ возвращается клиенту в нужном формате и в установленный тайм-ауты.
🔟 Логирование, мониторинг, обработка ошибок и кэширование
На протяжении всего процесса обработки запроса.
API Gateway упрощает взаимодействие клиентов с распределённой системой и обеспечивает её безопасную и управляемую работу, выступая в роли централизованной точки входа.
Да — если он не масштабирован горизонтально.
Если на сервере развернут единственный инстанс (установленная копия) API Gateway и он выйдет из строя, работа всех клиентов, которые в него обращаются, остановится.
Пользователи не смогут достучаться до микросервисов, даже если сами микросервисы продолжают работать.
🚨 Что будет, если API Gateway «упадёт»?
1. Внешние клиенты потеряют доступ к сервисам.
2. Внутренние вызовы (если они идут через Gateway) тоже могут быть нарушены.
3. В логах вы увидите HTTP 502 / 503 ошибки (Bad Gateway / Service Unavailable).
4. Мониторинг начнёт фиксировать обрыв соединения и рост ошибок. Это будет сложно не заметить 🥲
👉 Как это решается?
Чтобы API Gateway не стал "узким горлышком", применяют следующие решения:
🟢 Горизонтальное масштабирование
Несколько инстансов API Gateway, развернутых за балансировщиком нагрузки. Тогда при сбое одного — остальные продолжают обслуживать запросы.
🟢 Health-check и авто-рестарт
Kubernetes и другие оркестраторы позволяют перезапускать поды/контейнеры при сбое.
🟢 Failover-механизмы
Некоторые решения "из коробки" поддерживают автоматическое переключение между инстансами при сбоях.
🟢 Разделение входящего трафика
В больших системах могут использовать несколько API Gateway по зонам или типам трафика (например, публичный API и внутренний API)
Несмотря на сбой API Gateway, внутренние сервисы продолжают жить, поэтому, если они не делают обратные вызовы в API Gateway для обращения в другие сервисы, то все начатые цепочки транзакций (запросов) будут выполнены.
Т.е. данные не теряются, процессы продолжаются.
API Gateway - потенциальная точка отказа в системе?
👉 Да
Но при нормальной инфраструктуре не должен быть ею. Мы разбираем это на программе по архитектуре. Это часть про стык Инфраструктуры и Архитектуры, который важно осознавать аналитикам.
Оркестрация
Здесь управление процессом сосредоточено в отдельном компоненте — оркестраторе.
Пример оркестратора “из коробки”: Camunda.
Оркестратор вызывает нужные микросервисы по порядку (например: сначала — платёж, затем — бонусы, потом — уведомление) и отслеживает результат выполнения каждого этапа.
Вся логика сценария сосредоточена в одном месте, что упрощает контроль и трассировку бизнес-процесса.
Пример сценария:
1. Клиент → API Gateway.
Покупатель жмёт «Оплатить».
Frontend отправляет запрос на API Gateway POST /payments
.
2. API Gateway → Сервис платежей.
Проксирование запроса, проверка аутентификации/лимитов.
3. Сервис платежей → Оркестратор.
— Проводит списание средств у платежного провайдера (интеграция с внешней системой на схеме не показана.
— Пишет запись о платеже в свою БД.
— Перенаправляет процесс в обработку на Оркестратор для продолжения сценария оплаты.
4. Оркестратор → Сервис склада (Inventory).
Проверяет остатки и принимает решение о выполнении заказа:
Oстатки есть, возможно выдать товар → помечаем резервы, продолжаем.
Нет остатков → компенсация: инициировать возврат/void платежа.
5. Оркестратор → Сервис заказов
Обновление статуса на "Оплачен" или "Отменен", в зависимости от результата предыдущего шага.
6. Оркестратор → Сервис уведомлений.
Отправляет клиенту e-mail / push / SMS.
при успехе: «Заказ №… создан, оплата принята»;
при отказе: причина (нет остатков/ошибка создания заказа/возврат средств).
7,8,9. Возврат итогового результата на клиента.
Хореография
Каждый сервис сам знает, что делать при наступлении определенного события в системе.
Взаимодействие между сервисами происходит через брокер сообщений (обычно Kafka), без централизованного управляющего компонента.
Сервисы подписываются на события в брокере, такие как charging.finished («завершение зарядки»), payment.success («оплата проведена успешно»), и реагируют на них независимо друг от друга.
Синхронная часть процесса
1. Клиент → API Gateway.
Покупатель жмёт «Оплатить».
Frontend отправляет запрос на API Gateway POST /payments
.
2. API Gateway → Сервис платежей.
Проксирование запроса, проверка аутентификации/лимитов.
3. Сервис платежей → Брокер.
— Авторизует/списывает платёж у провайдера, фиксирует результат в своей БД.
— Публикует событие в брокер: PaymentCaptured
с payment_id
, составом заказа, клиентом.
3.1. Сервис платежей → API Gateway.
Ответ 200 OK / 202 Accepted
:
3.2. API Gateway → Клиент.
Ответ 200 OK / 202 Accepted
:
Обработка события в брокере - хореография процесса
4.1. Сервис склада (подписчик).
Получает событие PaymentCaptured
и пытается зарезервировать позиции.
Успех → публикует в брокер событие StockReserved
.
Нет остатков → публикует в брокер событие StockNotAvailable
.
4.2. Сервис заказов (подписчик).
Если получает событие StockReserved
— создаёт заказ, присваивает статус confirmed
, пишет в свою БД и публикует OrderCreated
.
Если получает событие StockNotAvailable
— помечает черновик/кейс как отменённый, публикует OrderCancelled
(причина — нет остатков).
5. Сервис уведомлений (подписчик).
Если получает событие OrderCreated
— отправляет клиенту подтверждение (email/push/SMS).
Если получает событие OrderCancelled
— уведомление об отмене/возврате.
(Параллельно события могут потреблять CRM/аналитика.)
При проектировании высоконагруженных систем используются различные подходы, направленные на повышение производительности, устойчивости и отказоустойчивости.
1. Масштабирование
Вертикальное масштабирование (Scale Up) — увеличение ресурсов одного узла (CPU, RAM, диски). Быстро внедряется, но имеет физические ограничения и высокую стоимость.
Горизонтальное масштабирование (Scale Out) — добавление новых узлов в кластер с распределением нагрузки между ними. Обеспечивает лучшую масштабируемость и отказоустойчивость. (подробнее: [ссылка в Telegram])
2. Кэширование
На уровне клиента — хранение часто используемых данных в браузере/приложении.
На уровне сервера — использование in-memory систем (Redis, Memcached) для быстрой выдачи часто запрашиваемых результатов.
CDN — кэширование статического контента ближе к пользователю.
Кэширование снижает количество обращений к базам данных и backend-сервисам, уменьшая время отклика.
3. Балансировка нагрузки
Аппаратные/программные балансировщики (NGINX, HAProxy, AWS ELB) распределяют запросы между серверами.
Поддержка различных алгоритмов (Round Robin, Least Connections, IP Hash) позволяет равномерно загружать ресурсы.
Балансировка повышает производительность и отказоустойчивость.
4. Асинхронная обработка через брокеры сообщений
Использование очередей и брокеров (Kafka, RabbitMQ, NATS, AWS SQS) позволяет разгрузить систему в пиковые моменты, распределяя выполнение задач во времени.
Асинхронная модель снижает нагрузку на критические узлы и повышает устойчивость к всплескам трафика.
5. Ограничение скорости запросов (Rate Limiting)
Контроль числа запросов от клиента за единицу времени.
Предотвращает злоупотребления, атаки типа DoS и защищает backend от перегрузок.
Реализуется на уровне API Gateway, балансировщиков или приложений.
Подробный разбор вопроса в подкасте:
Связь "многие-ко-многим" в БД: разбор задачи с собеседования на системного аналитика
1. Синхронные по API (REST, SOAP, GraphQL и другие)
2. Асинхронные по API (Webhook, Polling) - рекомендую подкаст "Что такое вебхуки и зачем они нужны: собеседование на системного аналитика по API и Webhooks" и статью к нему.
3. Режим реального времени (WebSocket, SSE и другие)
4. Брокеры и очереди сообщений
5. Общая БД
6. Обмен файлами
Разница между брокерами и очередями разбирается в статье "Брокер и очередь сообщений: что это и в чем отличия?"
Чтобы глубоко разобраться с темой брокеров рекомендую познакомиться с эпизодами подкаста про Kafka и RabbitMQ:
Рекомендуем подкаст:
Авторизация в API: что нужно знать системным аналитикам для работы с требованиями и собеседований
Вопросы и ответы к собеседованию по REST API для системного аналитика:
Вопросы и ответы по REST API: собеседование на системного аналитика
Проектирование REST API: спорные вопросы с проектов и собеседований на системного аналитика (и не только)
Получайте полезные материалы и учитесь новому каждый день в наших социальных сетях.
*Instagram и LinkedIn — запрещенные на территории РФ организации
Мы используем файлы cookie, для персонализации сервисов и повышения удобства пользования сайтом. Если вы не согласны на их использование, поменяйте настройки браузера.