Продолжаю серию о подготовке к собеседованию на роль системного аналитика. В первой части разобрали интеграции — REST API, SOAP, брокеры. Сегодня переходим к архитектуре и базам данных.
На собеседованиях эти темы идут парой: сначала тебя спрашивают про монолит и микросервисы, потом про нормализацию и транзакции. Если знаешь оба блока — ты уже сильнее большинства кандидатов.
────────────────────────────────────────
▶ Архитектура: от Junior до Senior
Уровень Junior — базовое понимание:
Архитектура программного обеспечения — это набор фундаментальных решений о том, как организована система: какие компоненты существуют, как они взаимодействуют, какие принципы лежат в основе.
Клиент-серверная архитектура: клиент отправляет запрос, сервер обрабатывает и возвращает ответ. Это основа большинства современных приложений.
Уровень Middle — ключевые архитектурные паттерны:
Монолит vs Микросервисы — один из самых частых вопросов:
Монолитная архитектура: вся система — один деплоймент. Один проект, один запуск, все модули связаны между собой. Преимущества: просто разрабатывать и отлаживать, нет сетевых задержек между компонентами. Недостатки: масштабировать можно только целиком, любое изменение требует пересборки и перезапуска всего.
Микросервисная архитектура (MSA): система состоит из независимых сервисов, каждый отвечает за свою функцию, развёртывается отдельно. Преимущества: каждый сервис масштабируется независимо, разные команды работают параллельно, сбой одного не роняет всю систему. Недостатки: сложнее в отладке, нужна инфраструктура (оркестрация, логирование, трейсинг).
C4 нотация — как описывать архитектуру:
C4 — это четыре уровня детализации архитектурных диаграмм.
• Context (контекст): система и её окружение, внешние пользователи и системы
• Container (контейнеры): приложения, базы данных, микросервисы внутри системы
• Component (компоненты): внутренние модули одного контейнера
• Code (код): классы, методы — самый детальный уровень
На собеседовании могут попросить нарисовать C4 диаграмму для конкретного сервиса. Знание этой нотации сразу показывает уровень кандидата.
HTTP vs HTTPS:
HTTP — передаёт данные открытым текстом. HTTPS — то же самое, но с TLS шифрованием. Данные шифруются на стороне клиента и расшифровываются на сервере. Сегодня HTTPS — это обязательный стандарт.
Балансировщик нагрузки:
• L4 балансировщик работает на уровне TCP/IP — распределяет соединения по серверам
• L7 балансировщик работает на уровне HTTP — может маршрутизировать по URL, заголовкам, методам
CI/CD и Docker — что нужно знать аналитику:
CI/CD — это конвейер: разработчик делает git push, автоматически запускаются тесты, при успехе происходит деплой на сервер. Аналитик должен понимать этот процесс чтобы корректно описывать требования к выпуску фич.
Docker: Dockerfile описывает как собрать образ, Image — это собранный образ, Container — запущенный экземпляр. Один образ — много контейнеров. На практике аналитику не нужно писать Dockerfile самому — но когда коллеги говорят "развернём в контейнере" или "образ упал", нужно понимать что именно сломалось и на каком этапе. Иначе ты просто киваешь на стендапе, не понимая о чём речь.
Уровень Senior — дополнительные паттерны:
Job/Cron задачи: запуск задач по расписанию. Аналитик описывает расписание, условия запуска, поведение при ошибках.
Обратная совместимость — ключевой принцип в архитектуре: изменение системы не должно ломать текущих клиентов и интеграции. Любая миграция планируется с учётом этого принципа.
────────────────────────────────────────
▶ Базы данных: полный блок
Уровень Junior — типы данных:
На собеседованиях типы данных спрашивают почти всегда — и именно здесь слабые кандидаты дают размытые ответы вроде "ну, строка это строка". Сильный кандидат отвечает иначе: знает разницу между CHAR и VARCHAR (фиксированная vs переменная длина), понимает когда использовать DECIMAL вместо FLOAT — например, для денег, где плавающая точка даёт погрешность. Базовые типы: CHAR и VARCHAR для строк, INTEGER и DECIMAL для чисел, BOOLEAN для булевых значений, DATE и DATETIME для дат, TEXT для длинных строк.
Уровень Middle — нормализация, индексы, транзакции, связи:
Нормализация — устранение избыточности:
• 1НФ (первая нормальная форма): каждая ячейка таблицы содержит атомарное значение — нельзя хранить список в одном поле
• 2НФ: нет частичных зависимостей — каждый не-ключевой столбец зависит от всего первичного ключа, а не от его части
• 3НФ: нет транзитивных зависимостей — не-ключевой столбец не зависит от другого не-ключевого столбца
Индексы — ускоряют поиск:
• PRIMARY KEY создаёт кластеризованный индекс — строки хранятся в порядке ключа
• UNIQUE индекс — гарантирует уникальность значений
• FOREIGN KEY — индекс для связи с другой таблицей
ACID транзакций — обязательно знать расшифровку и смысл:
• Atomicity (атомарность): транзакция выполняется целиком или не выполняется вообще
• Consistency (согласованность): после транзакции данные остаются в согласованном состоянии
• Isolation (изолированность): параллельные транзакции не мешают друг другу
• Durability (долговечность): зафиксированные данные не теряются даже при сбое
Типы связей в БД:
• 1-1 (один к одному): у каждого пользователя — один паспорт
• 1-N (один ко многим): у одного автора — много статей
• N-M (многие ко многим): студент посещает много курсов, на курсе много студентов. Реализуется через промежуточную таблицу
SQL vs NoSQL:
SQL базы (PostgreSQL, MySQL): строгая схема, таблицы, транзакции, хорошо для структурированных данных с чёткими связями.
NoSQL — разные типы под разные задачи:
• Redis: хранилище ключ-значение в памяти, используется как кэш
• MongoDB: документная база, хранит JSON-подобные документы, гибкая схема
• Neo4j: графовая база, хранит узлы и рёбра, хороша для социальных графов и рекомендаций
• ClickHouse: колоночная база для аналитики, очень быстрые агрегации на больших объёмах
Уровень Senior — масштабирование данных:
Партиционирование: логическое разбиение большой таблицы на части внутри одной базы. Например, таблица заказов разбита по годам — запросы за 2025 год читают только нужную партицию.
Шардинг: физическое разбиение данных по разным серверам. Каждый сервер хранит свой шард. Позволяет горизонтально масштабировать базу.
Репликация: мастер принимает записи и реплицирует данные на реплики. Реплики обслуживают запросы на чтение. Это повышает доступность и снижает нагрузку на мастер.
────────────────────────────────────────
В следующей части — SQL запросы и диаграммы: типы JOIN, GROUP BY, UML Sequence diagram, BPMN нотация.
#системныйаналитик #собеседование #ITкарьера #аналитик #подготовка