Всем привет, меня зовут Руслан — я технический директор и ИТ-архитектор в Byndyusoft
Мне задали 4 вопроса о видении микросервисов в Byndyusoft, подходах и методиках, которые мы используем для реализации проектов на микросервисной архитектуре. Грамотно заданный вопрос — это очень ценно, приведу в данной статье и вопросы и мои ответы.
Какие 3 ключевых бизнес-преимущества дают бизнесу webscale бизнес-приложения, построенные в микросервисной архитектуре/парадигме?
- Возможность оперативного реагирования на изменения в бизнесе за счет гибкости. Грамотно спроектированная архитектура микросервисов позволяет работать со сложностью — абстрагировать частности и детали от общей верхнеуровневой связанности всей системы в целом. Такой подход и придаёт системе гибкость — и разработчикам, и отделу эксплуатации (админам и devops'ам) не требуется работать сразу со всей сложностью системы. Гибкость обеспечивает с одной стороны — высокую скорость поставки изменений/новшеств конечному пользователю; с другой — независимость от конкретного "железа" и возможность в режиме реального времени управлять выделенными мощностями серверов (т.е. бюджетом на сервера).
- Стабильность и безопасность критически важных контуров. Микросервисная архитектура позволяет разделить систему на несколько периметров и контуров, рисками которых можно управлять независимо друг от друга различными стратегиями соответствующими уровню критичности очерченного контекста сервисов.
- Микросервисная архитектура является обязательным условием для платформизации ИТ-составляющей бизнеса. Платформа — следующий уровень развития ИТ-инфраструктур, предоставляющая данные и бизнес-логику "как сервис", причем одно из основных преимуществ в связности данных разных подразделений и продуктов бизнеса, ранее работающих практически изолировано. Поверх платформы уже строятся продукты, получающие с самого старта и готовую логику, и большие данные для анализа и построения гипотез.
Моё интервью для VK-Cloud на тему (9 минут)
Статья Александра Бындю на тему: От микросервисного монолита к оркестратору
Каковы 4 необходимые и достаточные характеристики микросервиса (в определении), которые позволяют назвать его настоящим микросервисом, без всяких натяжек?
- У микросервиса сформулирована одна и только одна ответственность, у API микросервиса сформулированы намерения (intention). Микросервис отнесён к соответствующему ограниченному контексту на архитектуре/парадигме.
- Микросервис удовлетворяет принципам проектирования компонентов (глава Principles for Package and Component Design в книге).
- Микросервис контейнизирован и наблюдаем, т.е. закрыты все инфраструктурные потребности микросервиса и архитектуры.
- Работа с данными микросервиса соответствует выбранной стратегии деления на мастер-системы (Управление мастер-данными в микросервисной архитектуре).
Какое максимальное кол-во уникальных микросервисов в production было на проектах, в которых вы принимали деятельное участие в значимой роли?
Максимальное количество микросервисов, разработанных командой Byndyusoft в рамках одного проекта — 70 (с учетом инфраструктурных точек деплоя и библиотек — 150 git-репозиториев). Каждый из 70 микросервисов в зависимости от уровней стабильности и нагруженности своего контекста был запущен в нескольких экзеплярах (от 3 до 12), общее количество контейнеров, работающих в продакшн окружении одного проекта — около 600.
Каковы 2 ключевых (фундаментальных) вызова для команды заказчика/разработчика и соотвествующие компетенции, которые нужно построить и развивать при выборе стратегии решения бизнес-задачи с помощью приложений в микросервисной архитектуре?
- Перенос уровня принятия решений из программного кода на уровень архитектуры и взаимодействия между сервисами. Здесь происходит резкий рост требований к компетенциям в архитектурных дисциплинах — system-, solution-, enterprise- architecture.
- Резкий рост требований со стороны команды разработки и самой системе к инфраструктуре и автоматизации процессов поставки, тестирования, мониторинга и поддержки.
Материалы
Более развёрнуто темы, затрагиваемые вопросами я расскрываю в своих докладах:
- Как рефакторить архитектуру микросервисов при живом продакшне?
- Гранулярность микросервисов. Как мелко нарезать?
- Как снизить накладные расходы на добавление +1 микросервиса