С чего начать
С чего начать изучение системного анализа? Эта страница — ваш персональный навигатор по базе знаний. Если вы только входите в профессию, не пытайтесь объять необъятное. Вместо этого пройдите по готовому пути: от понимания роли аналитика и работы с требованиями до моделирования, API и архитектуры. Просто идите по этапам сверху вниз, и вы соберете прочный фундамент без выгорания.
Эта страница помогает пройти базу знаний без хаоса. Если ты только начинаешь изучать системный анализ, не нужно открывать все разделы подряд. Сначала важно собрать фундамент: понять роль аналитика, жизненный цикл разработки, требования, документацию, моделирование, данные, API, интеграции и базовую архитектуру.
Люди с опытом могут пользоваться сайтом как справочником через поиск. Новичку лучше идти по маршруту ниже.
Как пользоваться роадмапом
Иди по этапам сверху вниз. Не пытайся изучить все материалы раздела сразу. На каждом этапе есть обязательный минимум и дополнительные темы.
Принцип простой:
Понять роль → разобраться в устройстве IT-систем → научиться работать с требованиями → моделировать процессы → понимать данные → понимать API → понимать интеграции → видеть архитектуру → оформлять артефактыЭтап 1. Понять профессию системного аналитика
Цель этапа — понять, кто такой системный аналитик, чем он отличается от бизнес-аналитика, где он находится в команде и какие артефакты создает.
Что изучить
| Материал | Зачем читать |
|---|---|
| Кто такой системный аналитик | Понять роль, зону ответственности и результат работы СА |
| Кто такой бизнес-аналитик | Понять соседнюю роль и не путать бизнес-анализ с системным анализом |
| Бизнес-аналитик vs системный аналитик | Разобраться в границе между бизнес-требованиями и технической детализацией |
| Роли в команде и коммуникация | Понять, с кем аналитик взаимодействует каждый день |
| SDLC | Понять жизненный цикл разработки ПО |
| Методологии разработки | Понять Agile, Scrum, Kanban и место аналитика в процессе |
| Требования и артефакты документации | Понять, какие документы и описания делает аналитик |
| Обзор инструментов | Понять базовый набор инструментов аналитика |
Что должно стать понятно
После этапа ты должен уметь объяснить:
- чем занимается системный аналитик;
- чем системный аналитик отличается от бизнес-аналитика;
- что такое SDLC;
- на каких этапах разработки участвует аналитик;
- какие документы и артефакты обычно готовит аналитик;
- с кем аналитик взаимодействует в команде.
Этап 2. Понять базовое устройство IT-систем
Цель этапа — перестать воспринимать систему как “черный ящик”. Нужно понять, из каких частей обычно состоит приложение и как они взаимодействуют между собой.
Что изучить
| Материал | Зачем читать |
|---|---|
| Frontend | Понять клиентскую часть приложения и ее ответственность |
| Backend | Понять серверную часть, бизнес-логику и работу с данными |
| Micro Frontend | Понять разделение frontend-приложения на независимые части |
| Модель OSI | Получить базовое представление о сетевом взаимодействии |
| Полезные сервисы | Познакомиться с инструментами, которые помогают в работе аналитика |
| Англо-русский словарь | Быстрее разбирать технические термины в документации |
Что должно стать понятно
После этапа ты должен понимать:
- чем frontend отличается от backend;
- где находится API между клиентом и сервером;
- зачем нужны микрофронтенды;
- почему аналитику важно понимать базовую сетевую терминологию;
- какие инструменты помогают читать API, схемы, данные и документацию.
Этап 3. Научиться работать с требованиями
Цель этапа — понять, как из бизнес-идеи получить понятные требования для разработки.
Что изучить
| Материал | Зачем читать |
|---|---|
| BRD, FRD, SRS | Понять виды документов с требованиями |
| Сбор требований | Понять, откуда берутся требования и как их уточнять |
| Приоритизация требований | Понять, почему не все требования делают сразу |
| Бизнес-требования | Понять уровень целей бизнеса |
| Пользовательские требования | Понять потребности пользователей |
| Функциональные требования | Научиться описывать поведение системы |
| Нефункциональные требования | Понять требования к качеству системы |
| Бизнес-правила | Понять ограничения и правила предметной области |
| User Story | Понять формат пользовательской истории |
| Acceptance Criteria | Научиться фиксировать критерии приемки |
| INVEST | Проверять качество User Story |
| Use Case | Описывать пользовательские сценарии более детально |
Что должно стать понятно
После этапа ты должен уметь:
- отличать бизнес-требования, пользовательские требования, функциональные и нефункциональные требования;
- формулировать простую User Story;
- писать Acceptance Criteria;
- понимать, когда использовать User Story, а когда Use Case;
- отличать требование от решения;
- задавать уточняющие вопросы бизнесу и команде.
Этап 4. Научиться моделировать процессы и систему
Цель этапа — научиться показывать систему не только текстом, но и схемами. Схемы помогают быстрее договориться с бизнесом, разработкой, тестированием и архитектурой.
Что изучить
| Материал | Зачем читать |
|---|---|
| BPMN | Описывать бизнес-процессы и пользовательские процессы |
| UML | Описывать структуру и поведение системы |
| C4 | Показывать архитектуру системы на разных уровнях детализации |
| EPC | Понимать событийные цепочки процессов |
| IDEF | Познакомиться с классическим подходом к функциональному моделированию |
| Event Storming | Понимать доменные события и совместное моделирование предметной области |
Что должно стать понятно
После этапа ты должен уметь:
- читать простую BPMN-схему;
- отличать процесс от сценария;
- понимать, зачем нужны UML-диаграммы;
- понимать, чем C4 отличается от UML;
- выбирать тип схемы под задачу;
- не рисовать схемы ради схем.
Этап 5. Разобраться с данными и SQL
Цель этапа — понять, как системы хранят данные, как устроены базы данных и как аналитик может читать данные через SQL.
Что изучить в первую очередь
| Материал | Зачем читать |
|---|---|
| Основы баз данных | Понять, что такое база данных и зачем она нужна |
| Основы проектирования баз данных | Понять базовый подход к структуре данных |
| Реляционные БД | Понять таблицы, строки, столбцы и связи |
| Ключи | Понять primary key, foreign key и связи между таблицами |
| Нормализация | Понять, как уменьшать дублирование данных |
| Денормализация | Понять, когда дублирование данных бывает осознанным решением |
| ER-диаграмма | Научиться читать и проектировать структуру данных |
| Что такое SQL | Понять язык работы с реляционными БД |
| JOIN | Научиться связывать данные из разных таблиц |
| Агрегация и группировка | Понять GROUP BY, COUNT, SUM, AVG |
| Подзапросы | Понять вложенные запросы |
| Оконные функции | Разобраться с аналитическими запросами |
Что изучить после базы
| Материал | Зачем читать |
|---|---|
| DDL | Понять команды описания структуры БД |
| DML | Понять команды работы с данными |
| DCL | Понять команды управления доступом |
| TCL | Понять команды управления транзакциями |
| SQL Best Practices | Понять базовые правила написания читаемых SQL-запросов |
| EXPLAIN | Научиться смотреть, как БД выполняет запрос |
| Транзакции | Понять атомарность изменений в БД |
| ACID | Понять надежность транзакций |
| Commit и Rollback | Понять фиксацию и откат изменений |
| Уровни изоляции | Понять конкурентный доступ к данным |
| Механизмы изоляции | Понять блокировки и MVCC на базовом уровне |
| Аномалии транзакций | Понять проблемы параллельной работы |
| WAL | Понять журналирование изменений |
| Индексы | Понять ускорение поиска данных |
| Типы индексов | Понять B-tree, hash, composite и другие индексы |
| Алгоритмы индексирования | Понять, почему разные индексы подходят под разные задачи |
Что изучить по NoSQL и типам хранилищ
| Материал | Зачем читать |
|---|---|
| Реляционные vs нереляционные БД | Понять, когда нужны разные подходы к хранению |
| NoSQL | Познакомиться с нереляционными БД |
| BASE | Понять подход к согласованности в NoSQL-системах |
| Key-Value | Понять быстрые хранилища ключ-значение |
| Document DB | Понять документные базы данных |
| Columnar / Wide-column | Понять колоночные и wide-column хранилища |
| Graph DB | Понять хранение связей между сущностями |
| Search Engines | Понять поисковые движки как отдельный тип хранилища |
| Time Series DB | Понять хранение временных рядов |
| Blob Storage | Понять объектное хранение файлов и бинарных данных |
| OLTP vs OLAP | Понять операционные и аналитические нагрузки |
| In-memory vs Persistent | Понять хранение в памяти и на диске |
| HTAP | Понять гибридные transactional/analytical системы |
Что должно стать понятно
После этапа ты должен уметь:
- читать простую структуру БД;
- понимать связи между таблицами;
- писать базовые SELECT-запросы;
- использовать JOIN, GROUP BY, подзапросы и оконные функции;
- понимать primary key и foreign key;
- читать ER-диаграммы;
- понимать, зачем нужны индексы и транзакции;
- объяснить разницу между SQL и NoSQL на уровне сценариев применения.
Этап 6. Разобраться с API и интеграциями
Цель этапа — понять, как системы общаются друг с другом, как проектировать API и как описывать интеграционные взаимодействия.
Базовый REST и форматы данных
| Материал | Зачем читать |
|---|---|
| Что такое API | Понять базовую идею взаимодействия систем |
| REST: принципы | Понять самый распространенный стиль API |
| Ресурсы | Научиться мыслить сущностями в REST |
| HTTP-методы | Понять GET, POST, PUT, PATCH, DELETE |
| HTTP-статусы | Понять ответы API и ошибки |
| Идемпотентность в REST | Понять безопасные повторы запросов |
| Пагинация | Понять выдачу больших списков |
| Фильтрация и сортировка | Понять параметры поиска и отбора данных |
| Версионирование API | Понять развитие API без поломки клиентов |
| JSON | Понять основной формат обмена данными |
| XML | Понять формат, который часто встречается в enterprise и legacy |
| YAML | Понять формат конфигураций и спецификаций |
| Protobuf | Понять бинарный контрактный формат для gRPC |
Документация и проектирование API
| Материал | Зачем читать |
|---|---|
| OpenAPI | Научиться читать и описывать REST API |
| AsyncAPI | Понять документацию асинхронных API и событий |
| Postman | Научиться проверять API руками |
| gRPC Reflection | Понять способ изучать gRPC-сервисы через reflection |
| Contract-first vs Code-first API | Понять подходы к созданию API-контракта |
| Идемпотентность в интеграциях | Понять idempotency key, deduplication и repeat request |
| Корреляция запросов | Понять correlationId, traceId, requestId и causationId |
| Обратная и прямая совместимость | Понять, как развивать API без поломки клиентов |
Другие стили API
| Материал | Зачем читать |
|---|---|
| gRPC: основные понятия | Понять контрактное взаимодействие через protobuf |
| gRPC vs REST | Понять различия подходов |
| Типы вызовов gRPC | Понять unary и streaming-вызовы |
| HTTP/2 | Понять транспортную основу gRPC |
| Когда использовать gRPC | Понять подходящие сценарии применения |
| GraphQL: основные понятия | Познакомиться с альтернативным подходом к API |
| GraphQL vs REST | Понять различия подходов |
| Когда использовать GraphQL | Понять, где GraphQL уместен |
| SOAP | Понять legacy/enterprise-интеграции |
| SOAP vs REST | Понять различия старого enterprise-подхода и REST |
| Webhook | Понять обратные вызовы между системами |
| Webhook vs Polling | Понять разницу между ожиданием события и периодическим опросом |
| WebSocket | Понять двустороннее realtime-взаимодействие |
| Когда использовать WebSocket | Понять подходящие сценарии realtime |
Безопасность API
| Материал | Зачем читать |
|---|---|
| Аутентификация | Понять, кто пользователь или система |
| Авторизация | Понять, что пользователю разрешено |
| JWT | Понять токены, claims и срок жизни токена |
| OAuth | Понять протокол авторизации |
| Keycloak | Понять IAM/SSO-инструмент и его место в архитектуре |
| HTTPS/TLS | Понять защищенную передачу данных |
| mTLS | Понять взаимную TLS-аутентификацию между системами |
| Валидация входных данных | Понять защиту от некорректных данных |
| Rate Limiting | Понять ограничение частоты запросов |
| CORS | Понять ограничения браузера при запросах |
Паттерны интеграций
| Материал | Зачем читать |
|---|---|
| Point-to-Point | Понять прямое взаимодействие систем |
| ESB | Понять интеграцию через шину данных |
| Message Broker Integration | Понять интеграцию через брокер сообщений |
| API Gateway | Понять единую точку входа, маршрутизацию и политики доступа |
| BFF Pattern | Понять backend под конкретный frontend |
| Orchestration vs Choreography | Понять два подхода к управлению процессом между сервисами |
Что должно стать понятно
После этапа ты должен уметь:
- читать REST API и OpenAPI-спецификацию;
- понимать HTTP-методы, статусы, параметры и тело запроса;
- описывать request и response;
- понимать базовую безопасность API;
- понимать idempotency key и correlationId;
- понимать, чем REST отличается от gRPC, SOAP, GraphQL, Webhook и WebSocket;
- понимать, где уместны API Gateway, BFF, ESB и брокер сообщений.
Этап 7. Разобраться с брокерами сообщений и очередями
Цель этапа — понять асинхронные интеграции. Это уровень, на котором новичок начинает отличаться от человека, который знает только REST.
Что изучить в первую очередь
| Материал | Зачем читать |
|---|---|
| Что такое брокер сообщений | Понять базовую идею асинхронного обмена |
| Модели доставки | Понять point-to-point и publish/subscribe |
| Гарантии доставки | Понять at-most-once, at-least-once, exactly-once |
| Exactly-once | Понять ограничения и практический смысл exactly-once |
| Паттерны обмена | Понять варианты взаимодействия через сообщения |
| Kafka vs RabbitMQ | Понять различия популярных брокеров |
| Другие брокеры | Познакомиться с альтернативами Kafka и RabbitMQ |
Kafka
| Материал | Зачем читать |
|---|---|
| Архитектура Kafka | Понять broker, topic, partition, producer, consumer group |
| Когда использовать Kafka | Понять подходящие сценарии Kafka |
| Partition Key Design | Понять, как ключ влияет на порядок и распределение нагрузки |
| Ordering Guarantees | Понять гарантии порядка сообщений |
| Consumer Group Rebalancing | Понять перераспределение партиций между consumer |
| Replication | Понять отказоустойчивость Kafka |
| Data Retention | Понять хранение сообщений по времени или размеру |
| Log Compaction | Понять хранение последнего состояния по ключу |
| Kafka Transactions | Понять транзакционные возможности Kafka |
| Kafka как хранилище | Понять, когда Kafka используют не только как транспорт |
| Poison Message | Понять проблему сообщений, которые ломают обработчик |
RabbitMQ и интеграционные паттерны
| Материал | Зачем читать |
|---|---|
| Архитектура RabbitMQ | Понять exchange, queue, binding |
| Когда использовать RabbitMQ | Понять подходящие сценарии RabbitMQ |
| Acknowledgements | Понять подтверждение обработки сообщений |
| Dead Letter Queue | Понять обработку проблемных сообщений |
| Message Queue | Понять очередь сообщений как базовый паттерн |
| Publish/Subscribe | Понять рассылку событий нескольким потребителям |
| Competing Consumers | Понять параллельную обработку сообщений |
| Idempotent Consumer | Понять защиту от дублей сообщений |
| Dead Letter Channel | Понять канал для сообщений, которые не удалось обработать |
| Outbox / Inbox Pattern | Понять надежную публикацию событий и защиту от дублей |
| Message Router | Понять маршрутизацию сообщений |
| Message Filter | Понять фильтрацию сообщений |
| Message Splitter | Понять разбиение большого сообщения на части |
Что должно стать понятно
После этапа ты должен уметь:
- объяснить, зачем нужен брокер сообщений;
- отличать синхронное API от асинхронной интеграции;
- понимать topic, queue, exchange, partition, consumer group;
- понимать гарантии доставки;
- понимать, почему нужны идемпотентные обработчики;
- понимать базовые отличия Kafka и RabbitMQ;
- понимать, как проектировать топик, ключ, обработку ошибок, retry и DLQ.
Этап 8. Понять архитектуру и проектирование систем
Цель этапа — научиться видеть систему целиком: компоненты, связи, компромиссы, масштабирование, надежность и ограничения.
База архитектуры
| Материал | Зачем читать |
|---|---|
| Что такое архитектура ПО | Понять, что такое архитектурное мышление |
| Архитектуры информационных систем | Понять типовые варианты построения ИС |
| Основные свойства системы | Понять свойства, которые важны для системы |
| Главные критерии систем | Понять критерии оценки технического решения |
| Quality Attributes | Понять атрибуты качества и связь с NFR |
| Clean Architecture | Понять разделение ответственности в системе |
| Bounded Context | Понять границы доменной модели |
| ADR | Понять фиксацию архитектурных решений |
Архитектурные стили
| Материал | Зачем читать |
|---|---|
| Что такое монолит | Понять простой стиль построения системы |
| Типы монолитов | Понять, что монолит бывает разным |
| Проблемы монолита | Понять ограничения монолитной архитектуры |
| Когда выбирать монолит | Понять, что монолит не всегда плохое решение |
| Что такое микросервисы | Понять микросервисный подход |
| Принципы микросервисов | Понять базовые принципы микросервисной архитектуры |
| Монолит vs микросервисы | Понять ключевой архитектурный выбор |
| Проблемы микросервисов | Понять цену распределенной архитектуры |
| Когда выбирать микросервисы | Понять условия, при которых микросервисы оправданы |
| Event-Driven Architecture | Понять событийную архитектуру |
| Когда использовать EDA | Понять сценарии применения событийного подхода |
| Serverless | Понять бессерверный подход |
| Functions as a Service | Понять FaaS как модель выполнения функций |
| Backend as a Service | Понять BaaS как готовый backend-сервис |
| Когда выбирать Serverless | Понять ограничения и сценарии применения |
Масштабирование, надежность и эксплуатация
| Материал | Зачем читать |
|---|---|
| Основы масштабирования | Понять, как системы растут под нагрузкой |
| Вертикальное масштабирование | Понять увеличение мощности узла |
| Горизонтальное масштабирование | Понять увеличение количества узлов |
| Load Balancing | Понять распределение нагрузки |
| Replication | Понять копирование данных и отказоустойчивость |
| Sharding | Понять разделение данных по шардам |
| CAP-теорема | Понять компромиссы распределенных систем |
| PACELC | Понять развитие CAP для реальных распределенных систем |
| Proxy | Понять промежуточный слой между клиентом и сервисом |
| Cache | Понять ускорение чтения через кеширование |
| Observability | Понять наблюдаемость как свойство системы |
| Логирование, метрики, трассировка | Понять production-наблюдаемость системы |
| SLO, SLA, SLI | Понять измеримые требования к надежности |
| Blue-Green и Canary Deployment | Понять безопасный выпуск изменений |
Архитектурные паттерны
| Материал | Зачем читать |
|---|---|
| CQRS | Понять разделение чтения и записи |
| Saga | Понять распределенные бизнес-транзакции |
| Circuit Breaker | Понять защиту от каскадных отказов |
| Retry Pattern | Понять повторные попытки вызова |
| Bulkhead | Понять изоляцию отказов |
| Sidecar Pattern | Понять вынесение вспомогательных функций рядом с сервисом |
| Database per Service | Понять данные в микросервисах |
| Event Sourcing | Понять хранение состояния через события |
| API Composition | Понять сбор данных из нескольких сервисов |
| Strangler Fig | Понять миграцию legacy-систем |
Данные в архитектуре
| Материал | Зачем читать |
|---|---|
| CDC | Понять передачу изменений из БД в другие системы |
| Data Lake vs Data Warehouse | Понять разные подходы к аналитическому хранению данных |
| Data Mesh | Познакомиться с доменным подходом к данным |
| Polyglot Persistence | Понять использование разных БД под разные задачи |
Архитектурные компромиссы
| Материал | Зачем читать |
|---|---|
| Скорость vs безопасность | Понять компромисс между быстрыми изменениями и стабильностью |
| Производительность vs стоимость | Понять цену производительности |
| Гибкость vs простота | Понять, почему не всегда нужен универсальный механизм |
| Latency vs Throughput | Понять разные виды производительности |
| Consistent vs Available | Понять выбор между согласованностью и доступностью |
| ACID vs BASE | Понять разные модели надежности и согласованности |
| Технический долг | Понять последствия быстрых решений |
Что должно стать понятно
После этапа ты должен уметь:
- объяснить разницу между монолитом, микросервисами, EDA и serverless;
- понимать, что микросервисы не всегда лучше монолита;
- видеть архитектурные компромиссы;
- понимать базовые паттерны надежности;
- понимать масштабирование, кеширование, балансировку, репликацию и шардинг;
- читать C4-схемы и архитектурные описания;
- задавать вопросы архитектору и разработчикам на одном языке.
Этап 9. Научиться оформлять документацию и артефакты
Цель этапа — перейти от теории к рабочим артефактам: требованиям, API-контрактам, схемам, маппингам, логированию и постановкам в разработку.
Шаблоны документации
| Материал | Зачем читать |
|---|---|
| Шаблон FR | Понять структуру функциональных требований |
| Шаблон NFR | Понять структуру нефункциональных требований |
| Шаблон UC | Понять структуру Use Case |
| Шаблон REST API | Понять, как описывать REST-метод |
| Шаблон gRPC | Понять, как описывать gRPC-метод |
| Шаблон WebSocket | Понять, как описывать realtime-взаимодействие |
| Шаблон Kafka-топика | Понять, как описывать асинхронный контракт |
| Шаблон логирования | Понять, какие события и поля нужно логировать |
| Шаблон ADR | Понять, как фиксировать архитектурное решение |
| Шаблон маппинга | Понять, как описывать преобразование данных |
| Шаблон матрицы прав | Понять, как фиксировать доступы по ролям |
Практический кейс
| Материал | Зачем читать |
|---|---|
| Описание кейса | Понять контекст задачи на досрочное расторжение договора |
| BR | Посмотреть пример бизнес-требований |
| FR | Посмотреть пример функциональных требований |
| NFR | Посмотреть пример нефункциональных требований |
| UC | Посмотреть пример сценариев использования |
| REST | Посмотреть пример REST-контракта |
| gRPC | Посмотреть пример gRPC-контракта |
| REST to gRPC | Посмотреть пример маппинга REST в gRPC |
| Модель данных | Посмотреть пример описания данных |
| Ошибки | Посмотреть пример описания ошибок |
| Статусы | Посмотреть пример жизненного цикла статусов |
| Sequence Diagram | Посмотреть пример схемы взаимодействия |
| Jira Task | Посмотреть пример постановки в разработку |
Что должно стать понятно
После этапа ты должен уметь:
- выбирать нужный артефакт под задачу;
- описывать требования не только текстом, но и контрактами, схемами и таблицами;
- фиксировать маппинг данных между системами;
- описывать ошибки, статусы, логирование и права доступа;
- готовить постановку в разработку на основе аналитических артефактов.
Этап 10. Подготовиться к реальной работе и собеседованиям
Цель этапа — закрепить знания через вопросы, логические задачи, примеры документации и прикладные материалы.
Что изучить
| Материал | Зачем читать |
|---|---|
| Как работать с любой задачей | Получить общий алгоритм разбора рабочих задач |
| Вопросы и ответы для собеседования | Проверить теорию и подготовиться к интервью |
| Скрининг | Понять первый этап отбора |
| Логические задачи | Подготовиться к задачам на мышление |
| Вопросы | Использовать как список тем для самопроверки |
| Терминология по доменам | Расширить словарь предметных областей |
| Глоссарий | Быстро освежать термины по системному анализу и IT |
Что должно стать понятно
После этапа ты должен уметь:
- быстро объяснять основные темы системного анализа;
- отвечать на вопросы по REST, SQL, Kafka, архитектуре и требованиям;
- разбирать неизвестную задачу по понятному алгоритму;
- показывать на собеседовании не только термины, но и проектное мышление.