Архитектура на собеседовании системного аналитика
От аналитика не ждут архитектурных решений, но ждут понимания, во что обойдётся требование. Одно и то же изменение внутри сервиса едет за спринт, а поперёк четырёх сервисов и трёх команд превращается в квартал — и увидеть это надо до того, как срок пообещали.
Что спрашивают
- +Границы: почему их ведут по бизнес-областям и что такое распределённый монолит
- +API: почему контракт не должен зеркалить схему базы и что каждое поле обязывает поддерживать годами
- +Согласованность: где отставание данных недопустимо и как разрешать конкурентную правку
- +Кэш: главный вопрос к бизнесу про допустимое отставание и почему кэш это тоже хранилище персональных данных
- +Отказы: деградация вместо полного отказа, таймауты против каскада, RPO и RTO с ценой
Из чего состоит тема
Так тема разложена в тренажёре: движок ведёт прогресс по каждой подтеме отдельно и возвращает те, где вы ошибаетесь.
- Дизайн API12
- Кэш и производительность12
- Монолит и микросервисы12
- Отказоустойчивость12
- Транзакции и согласованность12
Разборы подтем
Конспект по каждой: что это, как отвечать вслух, на чём валятся, плюс вопросы для самопроверки.
- Монолит и микросервисы12 вопросов
- Дизайн API12 вопросов
- Транзакции и согласованность12 вопросов
- Кэш и производительность12 вопросов
- Отказоустойчивость12 вопросов
Примеры вопросов с разбором
- Зачем в интерфейс закладывают версионирование?A)Чтобы отслеживать статистику вызововB)Чтобы ускорить обработку запросовC)Чтобы менять контракт, не ломая клиентовD)Чтобы разделить права доступа потребителей
показать ответ и разбор
+C)Чтобы менять контракт, не ломая клиентов// разбор: Версия даёт возможность выпустить несовместимое изменение и дать потребителям время на переход: старая версия работает, новая доступна параллельно. Без этого любое изменение контракта становится согласованной операцией со всеми клиентами сразу, что при десятке потребителей нереализуемо.
- Что такое время жизни записи в кэше (TTL)?A)Срок, после которого запись устарелаB)Время получения данных из источникаC)Максимальный размер хранимого значенияD)Период полной очистки всего кэша
показать ответ и разбор
+A)Срок, после которого запись устарела// разбор: TTL задаёт, сколько запись считается годной: по истечении срока следующий запрос идёт к источнику. Выбор значения — это прямой размен между нагрузкой и свежестью, и он должен опираться на бизнес-требование, а не на привычку поставить пять минут.
- Что означает отложенная согласованность?A)Данные сойдутся спустя некоторое времяB)Данные останутся разными до перезапускаC)Обновление применяется по расписанию ночьюD)Часть данных теряется при передаче
показать ответ и разбор
+A)Данные сойдутся спустя некоторое время// разбор: При отложенной согласованности реплики и подписчики догоняют источник не мгновенно: сразу после записи чтение из копии может вернуть старое значение. Со временем расхождение исчезает. Практический вывод для требований — нужно проговорить, где такое отставание допустимо, а где недопустимо.
- Что такое деградация функциональности?A)Постепенное снижение скорости со временемB)Работа в урезанном режиме при отказеC)Ухудшение качества кода при доработкахD)Плановое отключение системы на обслуживание
показать ответ и разбор
+B)Работа в урезанном режиме при отказе// разбор: Вместо полного отказа система продолжает делать главное: недоступен сервис рекомендаций — показываем каталог без персональной подборки. Для аналитика это конкретная работа: перечислить, что считается главным, а без чего можно временно обойтись, и как об этом сообщить пользователю.
- Какую цену платят за переход на микросервисы?A)Рост сложности эксплуатации и отладкиB)Обязательный отказ от синхронных вызововC)Отказ от реляционных баз данныхD)Потерю возможности горизонтального масштабирования
показать ответ и разбор
+A)Рост сложности эксплуатации и отладки// разбор: То, что в монолите было вызовом функции, становится сетевым запросом: появляются таймауты, повторы, частичные отказы. Нужны распределённая трассировка, отдельные конвейеры выпуска, согласование контрактов между командами. Для небольшой системы эти издержки перевешивают выгоду.
- Клиенту нужны данные из трёх сервисов на одном экране. Что обычно предлагают?A)Клиент делает три запроса и сшивает самB)Сервисы пишут данные в общую таблицуC)Шлюз или агрегирующий сервисD)Прямое соединение к базам сервисов
показать ответ и разбор
+C)Шлюз или агрегирующий сервис// разбор: Агрегация на стороне сервера сокращает число обращений с клиента, что особенно важно на мобильной сети, и прячет от него внутреннюю нарезку системы. Плата — новый компонент, который надо развивать и который знает про все три сервиса, поэтому он не должен обрастать бизнес-логикой.
- Что аналитик обязан выяснить у бизнеса, вводя кэш на данные о ценах?A)Какой объём памяти выделить под кэшB)Какое отставание цены допустимоC)Какой продукт кэширования выбратьD)Как часто перезапускается сервис
показать ответ и разбор
+B)Какое отставание цены допустимо// разбор: Ответ на этот вопрос определяет всё остальное. Если цена может отставать на час — задача тривиальна. Если расхождение недопустимо даже на минуту, потому что клиент увидит одну цену, а спишется другая, придётся сбрасывать кэш по событию изменения цены, и это совсем другая по сложности работа.
- Пользователь изменил профиль и сразу видит старые данные. Какова вероятная причина?A)Ошибка в проверке прав доступаB)Чтение ушло в отстающую репликуC)Транзакция не была зафиксированаD)Неверно настроен часовой пояс
показать ответ и разбор
+B)Чтение ушло в отстающую реплику// разбор: Классический эффект разделения записи и чтения: запись ушла в основной узел, а следующий запрос на чтение балансировщик отправил в реплику, которая ещё не получила изменение. Лечится чтением своих записей с основного узла в течение короткого окна после изменения.
- Внешний сервис проверки контрагента недоступен. Какое поведение стоит описать?A)Показывать пустую страницу до восстановленияB)Пропускать проверку молча и продолжатьC)Явное правило: блокировать или пометитьD)Повторять запрос бесконечно до успеха
показать ответ и разбор
+C)Явное правило: блокировать или пометить// разбор: Это бизнес-решение, а не техническое: можно ли работать с контрагентом без проверки. Ответ зависит от риска — где-то операцию блокируют, где-то пропускают и помечают на последующий разбор. Главное, чтобы правило было явным и пользователь понимал, в каком состоянии находится его заявка.
это 9 из 60
Ещё 51 вопросов по теме — в тренажёре, с движком повторения
Прочитать разбор и ответить самому — разные навыки. В Сеньорчике вопросы идут сессиями, а движок возвращает подтемы, где вы ошибаетесь, пока они не начнут отскакивать. Бесплатно, лимит по энергии.
Частые вопросы
Зачем аналитику знать про границы сервисов?
Чтобы понимать цену требования до обещания срока. Знание карты позволяет формулировать требования так, чтобы не резать их поперёк владения, а если это неизбежно — предложить последовательность самостоятельно полезных шагов вместо одновременного выката.
Как сформулировать проверяемое требование к отказоустойчивости?
Через сценарий отказа, наблюдаемое поведение и порог времени: при выходе из строя узла обслуживание продолжается не позднее чем через тридцать секунд, теряется не более минуты данных. Такое можно воспроизвести на учениях и принять.