BA & SA | 10000 Interview questions
10.2K subscribers
175 photos
14 videos
346 links
Вопросы и задачи, которые задают на собеседованиях на позицию Бизнес и Системного аналитика. По вопросам сотрудничества- @DeliveryManager7
Download Telegram
👩‍🏫Объяснение:
Graceful Degradation — это дизайн-принцип, направленный на обеспечение отказоустойчивости. Система спроектирована так, чтобы при сбое одной из её зависимостей (например, внешнего API прогноза погоды или рекомендательного сервиса) основные функции (например, оформление заказа в интернет-магазине) продолжали работать, а дополнительный функционал (показать прогноз погоды для доставки) временно отключался или показывался в упрощенном виде (например, из старого кэша).
Это противоположность подходу «единая точка отказа», когда крах одной зависимости обрушивает всю систему (вариант A). Варианты C и D описывают другие аспекты отказоустойчивости и DR (Disaster Recovery).
🤔1
№4606 категория вопросов: #INTEGRATION
👩‍🏫Объяснение:
При Point-to-Point подходе каждая система взаимодействует с другими напрямую, по своим уникальным протоколам и форматам. Для N систем потенциальное количество связей приближается к N*(N-1). Это приводит к:
* Неподдерживаемости: Изменение одной системы может потребовать изменений во многих других.
* Сложности отслеживания: Крайне трудно понять, как данные передаются по цепочке и какие системы зависят от каких.
* Отсутствию контроля: Нет единой точки для применения политик безопасности, логирования, мониторинга.
Это классическая проблема, для решения которой и были предложены паттерны вроде Интеграционной шины (ESB) или Шины событий (Event Bus).
№4607 категория вопросов: #INTEGRATION
👩‍🏫Объяснение:
Это различие в направлении и паттерне взаимодействия.
* API Gateway: Это «фасад» для клиентов (мобильное приложение, веб-браузер). Он принимает синхронные HTTP-запросы, занимается аутентификацией, ограничением скорости (rate limiting), кэшированием, и может агрегировать данные из нескольких внутренних сервисов в один ответ для клиента (трафик «север-юг»).
* Message Broker: Это инфраструктурный компонент для внутренней коммуникации сервисов. Сервисы публикуют и подписываются на события/сообщения асинхронно. Брокер гарантирует доставку, поддерживает очереди и обеспечивает слабую связанность (трафик «восток-запад»).
Оба инструмента могут использоваться вместе в одной архитектуре.
№4608 категория вопросов: #INTEGRATION
👩‍🏫Объяснение:
Dead Letter Queue (DLQ) — это механизм повышения надежности. Если система-получатель не может обработать сообщение (например, из-за ошибки в данных, недоступности зависимостей, бага в коде), оно возвращается в очередь. После нескольких неудачных попыток обработки (retries) брокер сообщений автоматически перемещает такое «отравленное» сообщение в DLQ.
Цели DLQ:
1. Изоляция проблемных сообщений, чтобы они не блокировали обработку других сообщений в основной очереди.
2. Анализ причин сбоев инженерами вручную.
3. Возможность восстановления: после исправления ошибки сообщения из DLQ можно вернуть в основную очередь для повторной обработки.
№4609 категория вопросов: #INTEGRATION
👩‍🏫Объяснение:
CDC — это мощный паттерн интеграции, позволяющий реагировать на изменения данных почти в реальном времени с минимальной нагрузкой на источник.
* Как работает: Специальный агент (например, Debezium) читает журнал транзакций БД (например, binlog в MySQL, WAL в PostgreSQL), в который СУБД записывает все изменения. Агент преобразует эти низкоуровневые изменения в события (например, «в таблице Orders добавлена запись с id=123») и публикует их в брокер сообщений (Kafka).
* Преимущества перед опросом (polling, вариант A): Нет нагрузки лишними запросами, задержка минимальна,捕获 все изменения без пропусков.
Это основа для построения event-driven архитектур и актуальных зеркал данных.
№4610 категория вопросов: #INTEGRATION
👩‍🏫Объяснение:
В монолитной системе с одной БД согласованность обеспечивается ACID-транзакциями. В микросервисной архитектуре, где каждый сервис управляет своей собственной базой данных, классические распределенные транзакции (2PC) непрактичны. Паттерн «Сага» решает эту проблему, разбивая единую транзакцию на последовательность локальных транзакций в каждом сервисе.
* Как работает: Каждая локальная транзакция публикует событие, которое запускает следующую локальную транзакцию в другом сервисе. Если на каком-то шаге происходит ошибка, Сага запускает серию компенсирующих транзакций (compensating transactions) для отката изменений, сделанных на предыдущих шагах (например, не «отменить платеж», а «запустить процесс возврата средств»).
Это паттерн event-driven оркестрации или хореографии для поддержания eventual consistency в распределенных бизнес-процессах (например, «Оформление заказа» с участием сервисов Заказов, Платежей и Склада).
№4611 категория вопросов: #INTEGRATION
👩‍🏫Объяснение:
Идемпотентность — это не просто техническое требование, а ключевой принцип проектирования надежных интеграций в распределенных системах, где сетевые сбои, таймауты и повторные отправки запросов — это норма.
Почему это так важно?
Представьте, что клиентское приложение отправляет запрос на списание денег, но не получает ответ из-за обрыва сети. Что делает разумный клиент? Он отправляет запрос повторно. Без идемпотентности это привело бы к двойному списанию — катастрофическая ошибка.
С идемпотентностью:
* Сколько бы раз ни пришел идентичный запрос (с одним и тем же payment_id и суммой), сервис платежей обработает его так, будто это первый раз, и вернет тот же результат. Деньги спишутся один раз.
Как это достигается на практике?
1. Использование уникальных ключей: Сервис сохраняет ID обработанного запроса и проверяет, не обрабатывался ли он уже.
2. Семантика HTTP-методов: Методы GET, PUT, DELETE по спецификации должны быть идемпотентными. POST — не идемпотентен (каждый вызов создает новый ресурс), поэтому для него нужно предусматривать механизмы идемпотентности отдельно.
3. Пример из жизни: Нажатие кнопки «Отправить» в лифте. Сколько бы вы ни нажимали на кнопку этажа, лифт поедет только один раз на нужный этаж.
Роль системного аналитика: При описании интеграционных API вы должны явно указывать, какие операции должны быть идемпотентными (особенно изменяющие состояние: обновление статуса, списания, отмены), и обеспечивать это требование в контракте.
№4612 категория вопросов: #INTEGRATION