Краткий курс счастливой IT-жизни: кто такой системный архитектор

14 мая 2018
Краткий курс счастливой IT-жизни: кто такой системный архитектор
Если выбирать символом эпохи профессию, то символ нашей цифровой эпохи — айтишник. Но «айтишник» — понятие широкое, оно включает в себя десятки специальностей. Портал ЧТД совместно с  IT-центром МАИ знакомят читателей с разными IT-профессиями. Первым нашим героем будет системный архитектор.

Зачем нужны системные архитекторы

Все начинается с идеи. Например, с идеи сделать такой сервис покупки авиабилетов, чтобы можно было еще и забронировать отели в точке назначения и заказать каршеринг на месте. Системный архитектор предлагает IT-решения и продумывает в общем виде, как будет устроен подобный сервис.

«Если проводить аналогию со строительством здания, — объясняет Павел Кейно, программист, веб-технолог и руководитель магистерской программы IT-центра МАИ, — то системный архитектор — постановщик задач для инженеров и строительной бригады. Инженеры детализируют проект вплоть до чертежей коммуникаций и электросетей. В IT-проекте похожим делом занимаются инженеры-проектировщики (разработчики). А дальше наступает этап стройки, и в дело вступают прораб с командой разных мастеров — в мире IT это тимлид и его программисты».
Готовый коттедж никогда не станет небоскрёбом, маленькое кафе не превратится в огромный торговый центр, а вот в мире IT подобные метаморфозы в порядке вещей.

Готовая IT-система, если она получилась хорошо, будет развиваться: на неё постепенно увеличится нагрузка, и она, скорее всего, обрастёт дополнительным функционалом. Поэтому архитектор, работая над созданием системы с нуля, должен сразу подумать о её возможных метаморфозах и учесть их в архитектуре.

«Хорошая метафора правильной системной архитектуры — это грибница, — считает руководитель департамента Data Platform (один из системных архитекторов) компании Avito Николай Голов. — Я сформировал „грибницу“, вначале там появился один маленький грибочек, стал расти, потом появился еще один, второй, третий — и вот грибница уже занимает километры пространства, но ее рост не замедляется, а только ускоряется».
Стратегию развития системы иногда надо построить на годы вперёд, но технологии в IT-индустрии меняются с такой скоростью, какая строительству зданий и не снилась.

«Новые технологии, которые сегодня только появились, могут уже через год полностью поменять принцип построения систем, — продолжает Николай Голов. — Такую вероятность тоже нужно учитывать при построении архитектуры».

Что они проектируют

Для разработки простой программы или обычного сайта системный архитектор, конечно, не нужен. С такой задачей справится небольшая команда программистов или даже один специалист. Вот если речь идет о создании, например, нового сервиса для обмена электронными сообщениями, сайта крупного интернет-магазина, платежной системы или системы внутреннего документооборота для большого бизнеса, то в них без системного архитектора не обойтись.

Главная задача архитектора — грамотно разложить большую систему на множество маленьких простых подсистем: на языке проектировщиков этот процесс называется «иерархическая декомпозиция».

Затем предстоит понять, как они будут взаимодействовать, заранее увидеть уязвимые места и в них «подстелить соломки». А когда система создана — неустанно её совершенствовать.

Системные архитекторы работают как в IT-компаниях, которые разрабатывают продукты для заказчиков, так и в компаниях, чей бизнес связан с применением IT-систем. Например, в крупных банках и страховых компаниях, в IT-отделах операторов связи, крупных интернет-магазинах и онлайн-сервисах и, разумеется, в таких гигантах IT-индустрии, как Яндекс, Google, Mail.ru Group.

Как они работают

Пожалуй, самые интересные задачи — у архитекторов высоконагруженных систем. Такой системой можно назвать любой сайт с высоким трафиком, если он к тому же состоит из нескольких микросервисов.

Например, когда мы регистрируемся в интернет-магазине или входим там в личный кабинет, система портала обрабатывает наши учетные данные. Когда мы выбираем товар, мы можем выбрать оплату в рублях или другой валюте, и система мгновенно пересчитает цену по текущему курсу. Когда мы помещаем товары в корзину, система запоминает наши покупки, чтобы в будущем создать для нас спецпредложение по специальному алгоритму. Всё это разные микросервисы одной системы.

Архитектор должен понимать, когда и на какие микросервисы придется наибольшая нагрузка, и как её сбалансировать. А для этого нужно уметь прогнозировать поведение пользователей системы.

Скажем, на сервисе онлайн-оплаты коммунальных платежей количество посетителей распределено во времени неравномерно. Известно, что большинство людей платит в последний день срока (то есть 9-го числа каждого месяца), в основном из дома после работы. Учитывая, что в основном плательщики работают по стандартному графику до 18.00, нетрудно предположить, что наибольшая нагрузка на сервис придется на время после 19.00 каждого 9-го числа. Чтобы сайт в это время не «лёг» от перегрузок, архитектор должен заранее что-то придумать: например, найти облачное решение или позаботиться об использовании дополнительных серверов.

Над построением высоконагруженной IT-системы, конечно, трудятся несколько архитекторов, каждый со своей зоной ответственности. Возглавляет команду самый главный архитектор — профессионал экстракласса.

На что идут работодатели ради них

По данным портала HeadHunter, на каждую вакансию системного архитектора приходится примерно шесть резюме. Но говорит эта цифра, скорее всего, не о том, что системных архитекторов в шесть раз больше, чем нужно, а о том, что многие считают себя системными архитекторами, не имея на то достаточных оснований.

Это предположение подтверждают данные о средней зарплате системных архитекторов по России — она составляет 292 тыс. рублей.

Зарплата профессионала

Минимальная месячная зарплата системных архитекторов по данным HH.ru за март-апрель 2018 года — 105 тыс. рублей, максимальная — 493 тыс. рублей. Если работодатели не скупятся на зарплату по какой-то позиции — это верный признак кадрового голода.

«На самом деле найти готовых хороших специалистов трудно, — признаёт Андрей Кравченко, руководитель образовательных проектов Avito. — Кому-то не хватает теоретических знаний, кому-то — практического опыта. Сейчас существует огромный разрыв между уровнем подготовки специалистов даже в лучших технических вузах и уровнем, который требуется в бизнесе. Поэтому мы давно уже идем двумя путями: ищем достойные кадры на стороне и растим профессионалов внутри компании. И все равно сотрудников не хватает». 
Компания Avito нашла для себя выход в кооперации с IT-центром МАИ: осенью там заработает магистерская программа «Проектирование высоконагруженных интернет-сервисов», в которой Avito выступит партнером. Учить студентов будут не только преподаватели МАИ, но и практики из Avito — на реальных задачах и на своем опыте.

«МАИ даст фундаментальную подготовку, а наши специалисты — практические навыки разработки и проектирования, — говорит Кравченко. — Мы хотим, чтобы на рынок выходили подготовленные для реальной работы специалисты. Речь не только про Avito, но и про отрасли в целом. Мы считаем, что на рынке образования будущих кадров все IT-компании в одной лодке, конкуренции между нами быть не должно».

Как становятся системными архитекторами

Хотя системный архитектор на больших проектах обычно не программирует сам, он должен понимать, как это делается, разбираться в работе серверных операционных систем, системах управления базами данных, средах разработки. Иначе он не сможет разложить большой проект на конкретные задачи для разных команд разработчиков. Поэтому чаще всего архитекторы «вырастают» из продвинутых проектировщиков и системных администраторов.

Главное, что отличает архитектора от проектировщика, — умение представить будущую систему в целом, знание всего производственного цикла и способность найти оптимальные решения при ограниченных ресурсах.

Для этого требуются системное мышление и обширные базовые знания. А ещё важно знать типичные ошибки при построении систем, чтобы не наступать на грабли, по которым уже не раз прошлись другие разработчики.

«Такие знания можно получить только на практике, — говорит Андрей Кравченко. — Все мои коллеги и эксперты в этой области, которых я встречал, доросли до позиции архитектора, поучаствовав в создании не одного проекта и набив кучу шишек. Чтобы вырастить системного архитектора из хорошего рядового программиста, нужно как минимум 3-4 года. Мы рассчитываем, что наша совместная программа с IT-центром МАИ сократит этот путь, потому что магистранты будут осваивать теорию и практику одновременно».

Сотрудничество IT-индустрии с вузами давно и успешно работает на Западе, теперь эта практика пришла и в Россию. «Мы изучили опыт Массачусетского технологического института, Университета Карнеги — Меллона, Стэнфордского университета и многих других ведущих вузов, — объясняет Павел Кейно, — Такая практика позволяет студентам увидеть внутреннюю кухню лучших компаний отрасли и сразу комбинировать фундаментальные знания с прикладными».

В этот день было

Первый полет УТС Як-130
Запущены восемь ИСЗ с помощью одной ракеты-носителя
День основания ОАО "МНПК "Авионика"