Представьте профессию, в которой нужно одновременно мыслить как инженер, говорить как консультант и чувствовать бизнес как продакт. Архитектор ПО — это не просто старший разработчик с модным названием должности, а человек, который соединяет технологии, людей и цели в устойчивую, масштабируемую систему. Но какими навыками он должен владеть сегодня, чтобы быть действительно востребованным?
Привет, Хабр! Меня зовут Любовь Кулева, я руководитель отдела разработки и методологии Учебного центра IBS. В этой статье расскажу об актуальных навыках, необходимых современному архитектору ПО. Свой список мы взяли не с потолка и не запросили у нейросети — он появился в результате глубокого исследования требований рынка, который был проведен при разработке курса «Архитектор ПО. Путь к мастерству в проектировании систем». Мы опросили практикующих ИТ-экспертов, проанализировали более 16 000 реальных проектов IBS, оценили матрицу компетенций и запросы заказчиков, а также провели свыше 200 продуктовых интервью с B2C- и B2B-клиентами из разных отраслей, включая телеком, банкинг и ИТ-аутсорс. Семантический анализ 100+ вакансий крупных ИТ-компаний и собранных CustDev-отзывов сделали с использованием языковой модели GPT-4o, а затем вручную составили карту компетенций, которая затем легла в основу программы профессиональной переподготовки.
Архитектор программного обеспечения — ключевой специалист в процессе разработки сложных ИТ-систем, который отвечает за проектирование архитектуры решений, выбор технологий и определение технических стандартов. Как правило, архитекторы — это вчерашние разработчики с 7–9-летним стажем, тимлиды или системные аналитики с сильной технологической базой, то есть люди, априори знающие как минимум один, а чаще несколько языков программирования. Но чтобы успешно справляться с этой ролью, недостаточно многолетнего опыта разработки — необходим широкий кругозор, развитое системное мышление, глубокие знания в области структуры данных, управления проектами и коммуникаций. ИТ-архитектор — настоящий визионер, который способен вникнуть в суть бизнеса и придумать, как создать необходимую систему с нуля, а потом убедить всех вокруг, что именно так — правильно.
В ходе нашего исследования стало понятно, что специалисты, которые стремятся перейти на позицию архитектора ПО, часто сталкиваются с одними и теми же проблемами: разрозненность информации, недостаток практических навыков в предварительном проектировании перед кодированием, отсутствие фундаментальных знаний и систематизации интуитивного опыта. Эта статья — взгляд на проектирование архитектуры как на процесс и попытка собрать воедино все технологии и компетенции, которые нужно активно прокачивать архитекторам, чтобы точно и быстро решать задачи бизнеса.
Must-have знания и навыки для архитектора ПО
1. Архитектурные стили
Основой профессиональной подготовки архитектора является понимание подходов к построению архитектуры и знание проверенных временем моделей. База:
различные архитектурные стили, их характеристики и применимость под конкретные бизнес-задачи;
выбор между монолитными и микросервисными решениями, наиболее типовые компромиссы, какие плюсы и минусы с ними связаны;
принципы предметно-ориентированного проектирования (Domain-Driven Design, DDD);
понятия слоистой и чистой архитектуры.
Сверх этих базовых требований Middle-специалистам нужно знать референс-архитектуры своего бизнес-домена и ИТ-архитектуры иных предприятий в отрасли, понимать требования и уместность облачных решений, ИИ и блокчейна, а также иметь представление о том, как осуществить миграцию с монолита на микросервисы.
2. Работа с требованиями
Архитектор должен уметь работать на стыке технологий и бизнеса, поэтому важна способность разбираться в исходных данных и выявлять архитектурные ориентиры на ранних этапах. Что нужно:
понимание бизнес-процессов в целом и методология погружения в процессы (поверхностный бизнес-анализ);
умение анализировать бизнес-процессы компании-заказчика и понимать их влияние на будущую архитектуру;
работа с бизнес-сценариями и верхнеуровневыми требованиями;
выделение нефункциональных требований на основе собранных функциональных требований;
создание контекстных диаграмм и разбиение системы на модули и микросервисы;
работа с архитектурными изменениями на уровне подсистем, версионирование и чейндж-менеджмент.
На Middle-/Senior-уровне дополнительно нужно уметь проводить детальную проработку и тестирование функциональных требований, выявлять скрытые требования, находить несоответствия и связанные с ними риски и при необходимости даже уметь выдвигать предложения по исправлению бизнес-процессов.
3. Создание устойчивых решений: принципы проектирования
Переходим от бизнес-целей к концепции архитектуры:
формализация нефункциональных требований в шаблонах атрибутов качества и их приоритизация;
тактики надежности, производительности, отказоустойчивости и модифицируемости;
базовое обеспечение безопасности системы на основе стандартных инструментов.
Уже с уровня мидла нужно не просто иметь общее представление о надежности и производительности приложений, но и понимать вычислительную сложность алгоритмов, уметь анализировать влияние типов и объемов данных на производительность, использовать конкретные метрики, применять тактики повышения показателей и знать об особенностях проектирования и тестирования отказоустойчивых приложений.
Кроме того, Middle-/Senior-специалистам, которые общаются с заказчиком, нужно уметь детально обосновывать выбранные решения и оправдывать неизбежные компромиссы. Не менее важно понимание архитектурных фреймворков и умение комбинировать разные подходы по ситуации, а также умение применять автоматизированные средства контроля за архитектурой.
4. Технологии интеграции и взаимодействие микросервисов
Интеграция — неотъемлемая часть любой распределенной системы, и архитектору важно ориентироваться в типовых способах организации взаимодействия компонентов:
общее понимание методов интеграции между приложениями, включая работу с базами данных и файлами, удаленный вызов и брокеров;
синхронное взаимодействие и REST;
проектирование REST API и асинхронный обмен данными;
технологии интеграции: HTTP(s), HTTP/2, gRPC, WebSocket, REST, OpenAPI, RabbitMQ/ActiveMQ, Kafka;
при этом важно знать чуть больше, чем просто о существовании технологии: обладать пониманием безопасности, пакетной передачи, принципов работы REST, генерирования API, основных плюсов и минусов организации топиков, ограничений и состава сообщения.
На более глубоком уровне можно погрузиться в особенности конкретных продуктов интеграции, вникнуть в подходы Service Mesh и Data Mesh, узнать о паттернах для интеграции приложений предприятия (Enterprise Integration Patterns, EIP) и научиться гибкому применению шаблонов устойчивости.
5. Технологии хранения и управления информацией
Эффективное принятие решений в архитектуре невозможно без понимания того, как устроены системы хранения и какие подходы применяются к работе с данными:
общее понимание систем хранения данных, различия между реляционными и нереляционными базами;
какие блокировки могут происходить во всей таблице или ее частях;
проектирование моделей данных и отрисовка ER-диаграмм.
Как правило, начинающие архитекторы не принимают решение о выборе конкретного инструмента, а полагаются на принципы корпоративной архитектуры, а вот Middle-специалисты уже должны быть уверены, какое решение подойдет лучше всего, исходя из требований, стоимости и контекста проекта. В случае с SQL это, вероятно, будет PostgreSQL или MySQL, Oracle SQL под вопросом из-за платной лицензии, либо ClickHouse, который поддерживает SQL, но все же сильно отличается от классических реляционных баз, в случае с NoSQL — скорее всего, Redis, MongoDB или Apache Cassandra. Чтобы сделать правильный выбор, необходимо четко понимать отличия между разными базами данных, включая объектные и графовые, и знать про особенности лицензирования. Также мидлам стоит углубиться во внутреннее устройство баз, вопросы производительности, индексы, репликацию, шардирование, изоляцию транзакций, восстановление и другие аспекты работы с данными.
В свете текущего обновления законодательства отдельно стоит погрузиться в тему хранения и шифрования персональных данных, рисков безопасности системы и OWASP-уязвимостей веб-приложений. Middle-специалисты должны разбираться в таких принципах безопасности, как разделение обязанностей (Segregation of Duties, SoD), глубинная оборона (Defence in Depth), принцип четырех глаз и принцип минимальных привилегий. В связи с этим нужно знать целый ряд технологий, включая:
SSO / JWT / OAuth 2.0 / OpenID Connect;
2FA / MFA;
SSL / TLS / mTLS;
RBAC / ABAC / ACL.
6. Системная архитектура: дизайн и оптимизация инфраструктуры
Любая система функционирует внутри конкретной инфраструктуры, поэтому архитектор должен понимать ее ограничения и возможности:
общее понимание топологии инфраструктуры, чтобы уметь прочитать и понять, как она повлияет на разрабатываемую систему;
основные характеристики серверов: RAM, CPU, Disk;
администрирование Linux и отличия этой операционной системы от Windows;
основы DevOps, CI/CD-процессы и средства организации мониторинга системы на уровне ресурсов и бизнес-процессов;
вопросы виртуализации, контейнеризации и сетевых протоколов;
анализ достижимости целевой архитектуры, оценка рисков, трудозатрат, лицензий и сайзинг оборудования.
Сеньорам нужно знать все те же вещи, но уже на уровне работы с конкретными решениями, а не общего понимания. Например:
главный инструмент для контейнеризации — Docker, а для оркестровки контейнеризированных приложений — Kubernetes;
ключевые технологии при выстраивании CI/CD-процессов — Jenkins, GitLab и Ansible;
для мониторинга и сбора логов обычно используются ELK, Prometheus, Grafana, Zabbix или Nagios;
для виртуализации — OpenStack и VMware;
надежность можно оценить с помощью метрик SLA, SLO, SLI, RPO, RTO, Uptime или Downtime.
В «облаках» тоже важно разбираться на уровне конкретных провайдеров и понимать разницу между ключевыми облачными платформами, такими как AWS, Azure и Google Cloud, а также «Яндекс.Облако» и VK Cloud.
Помимо этого, Senior-архитекторы должны понимать принципы построения информационных сетей, СХД, отказоустойчивых ЦОД и многоцодовых конфигураций. Нужно понимать, что опытные архитекторы обычно участвуют в составлении опросника для вендоров, а значит, должны уметь проводить глубокий анализ инфраструктурных решений относительно требований, стоимости, поддержки, законов и других релевантных факторов.
7. Документирование архитектурных решений
Архитектурные идеи должны быть доступны и понятны всем участникам проекта, поэтому документирование становится неотъемлемой частью работы архитектора:
знание хотя бы одного формата документирования архитектурных решений;
создание разнообразных диаграмм и описание бизнес-процессов с использованием популярных нотаций UML, C4 и 4+1;
работа с BPMN-диаграммами для интеграции и последовательности;
умение читать и править диаграммы, а также переносить их на кодовую базу.
Middle-архитекторы дополнительно должны уметь строить метамодели и работать с записями архитектурных решений (Architectural Decision Records, ADR).
8. Гибкие и бизнес-навыки
Технические знания — лишь часть профессии архитектора. Умение взаимодействовать с людьми и сохранять фокус на цели делает специалиста по-настоящему эффективным. Важно:
аналитическое мышление;
способность принимать решения и брать на себя ответственность за результат;
личная эффективность и навык управления временем;
организация коммуникаций, включая умение защищать свой проект и доказывать правильность решения.
По мнению опрошенных работодателей и экспертов, многим начинающим архитекторам ПО не хватает именно софт-скилов. Это объяснимо. Очень часто архитекторов растят внутри команды, выбирая самых проактивных разработчиков. Но несмотря на повышение по рангу, для технаря это не всегда работа мечты — в работе архитектора очень много общения с людьми, а это мало кто любит, и очень мало работы с кодом.
На уровнях повыше, где речь идет уже о полуменеджерских ролях, архитектору важно уметь работать с командой, а именно делегировать, распределять задачи, а также мотивировать и наставлять таланты. Кроме того, старшие архитекторы обычно напрямую работают с бизнесом и участвуют в пресейлах, а значит, должны обладать определенным навыком продаж, понимать, как выглядит карта пути клиента и цепочка создания стоимости, и уметь выявлять фичи, несущие максимальную прибыль.
В целом чем больше у специалиста знаний по устройству различных процессов и «деловой чуйки», тем лучше — опытные архитекторы ПО нередко работают над общим видением цифровизации и принимают участие в подготовке комплексной ИТ-стратегии.
Подборка материалов для самостоятельного изучения
Для архитектора ПО крайне важна постоянная прокачка теоретической базы. Наши эксперты рекомендуют такой список.
Книги:
Design it!, Michael Keeling — работа с требованиями и архитектурные практики
Release it! 2nd Edition, Michael Nygard — шаблоны стабильности
Clean Code, Robert Martin — общие правила оформления и создания кода
Clean Architecture, Robert Martin— общие правила оформления и создания архитектуры
Designing Data-Intensive Application, Martin Kleppmann — работа с данными, идеи стоящие за реализацией хранилищ данных
Software Architecture in Practice, 4th edition — архитектурные практики, шаблоны обеспечения атрибутов качества
Software Architecture: The Hard Parts: Modern Trade-Off Analyses for Distributed Architectures
Team Topologies: Organizing Business and Technology Teams for Fast Flow — организация команд, закон Конвея
Договориться не проблема, Крисс Восс
Analysis Patterns, Martin Fowler — концептуальные модели архитектуры и метамодели бизнес-процессов
Design Patterns, GoF
Статьи:
Заключение, или Думай как архитектор
Напоследок хочется сказать про ключевой метанавык, необходимый архитектору программных решений, — это способность к постоянному самообразованию, можно даже сказать, неутомимое любопытство. Насмотренность позволяет быть в курсе инноваций и помогает принимать обоснованные решения при проектировании систем и выборе подходящих технологий для реализации проектов. Здесь важно умение вести собственную базу знаний и желание проактивно отслеживать ИТ-тренды. Если на рынке появилась новая технология, архитектор должен не бояться зарыться в документацию и прочитать больше, чем требуется для решения текущей задачи, чтобы знать, как еще можно применить эту технологию в будущем, а заодно отделить хайп от реально полезных инструментов.
Умение сочетать технические знания с креативным мышлением, а также способность эффективно взаимодействовать с командой и бизнесом позволяют архитекторам создавать решения, которые не только отвечают текущим требованиям, но и предвосхищают будущее. Развивая свои навыки в области проектирования, анализа и управления, архитекторы ПО могут не только повысить свою ценность на рынке труда, но и внести значительный вклад в развитие инновационных продуктов и услуг.
P. S. В следующий раз мы расскажем про один конкретный и очень актуальный для архитектора навык — работу с генеративными нейросетями. Подписывайтесь на блог, чтобы не пропустить.
ZvoogHub
"дорожная" это то что берут с собой в дорогу. Дорожная сумка, дорожные шахматы, дорожная карта.
Перевод Roadmap по смыслу это "карта пути".
D_Dementy
ох.... а "magzine", это не "магазин", а место куда ходят за покупками? а "шторм мозга" тоже норм?