Архитектура на собеседовании системного аналитика
От аналитика не ждут архитектурных решений, но ждут понимания, во что обойдётся требование. Одно и то же изменение внутри сервиса едет за спринт, а поперёк четырёх сервисов и трёх команд превращается в квартал — и увидеть это надо до того, как срок пообещали.
Что спрашивают
- +Границы: почему их ведут по бизнес-областям и что такое распределённый монолит
- +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 вопросов по теме — в тренажёре, с движком повторения
Прочитать разбор и ответить самому — разные навыки. В Сеньорчике вопросы приходят сессиями, а подтему, на которой ты споткнулся, движок принесёт снова: завтра, через три дня, через неделю. Бесплатно, с дневным лимитом вопросов.
Частые вопросы
Зачем аналитику знать про границы сервисов?
Чтобы понимать цену требования до обещания срока. Знание карты позволяет формулировать требования так, чтобы не резать их поперёк владения, а если это неизбежно — предложить последовательность самостоятельно полезных шагов вместо одновременного выката.
Как сформулировать проверяемое требование к отказоустойчивости?
Через сценарий отказа, наблюдаемое поведение и порог времени: при выходе из строя узла обслуживание продолжается не позднее чем через тридцать секунд, теряется не более минуты данных. Такое можно воспроизвести на учениях и принять.