По прогнозам аналитиков, к 2022 году 75% данных компаний и организаций будут генерироваться за пределами корпоративных ЦОД или частных облаков, при том что сегодня таких данных только 10%. Мало того, речь идет не о простой телеметрии с постоянным потоком данных в заранее известных форматах, а о динамичных массивах разнообразных данных, поступающих в самых разных форматах, часто уже очищенных на периферии и вполне готовых к использованию для принятия решений. Монолитные, негибкие приложения будет трудно адаптировать к частым изменениям форматов, объемов и интенсивности потоков данных, характерных для цифрового мира.
Компании во всем мире развивают свои ИТ-инфраструктуры, чтобы не отстать от динамично меняющихся ожиданий партнеров и требований клиентов цифровой экономики. Однако цифровая трансформация предполагает появление новых бизнес-моделей и поддерживающих их приложений. Цифровая трансформация — это изменение образа жизни бизнеса, из закрытой структуры преобразующегося в платформу. Любой продукт или услуга могут быть мгновенно скопированы, и «проприетарный» подход к собственным продуктам обесценивается — набирают силу обмен знаниями и всеобщий доступ к ценным ресурсам и внешним новациям, которыми не может обладать ни одна корпорация по отдельности. Тренд цифровой эпохи — кооперация всех со всеми для генерации идей и быстрого вывода на рынок новых продуктов и сервисов, дизайн и наполнение которых создаются уже не штатными разработчиками бизнес-приложений (professional developers), а citizen developers, которые отлично знакомы с запросами потребителей и готовы предложить новаторские решения, пользуясь при этом демократичными средствами разработки при минимальном программировании. У громоздких, сложных в освоении платформ, поддерживающих «в одном флаконе» множество функций, перспектив мало. Кстати, рынок решений Low code к 2020 году составит 12 млрд долл.
Интернет вещей требует, в частности, программирования обширных, топологически сложных сетей, охватывающих самые разные предметы: лампочки, дверные ручки, кондиционеры, зубные щетки. Однако применяемые сегодня методы, языки и инструменты разработки не были готовы к тому, что в окружающем мире появятся миллионы программируемых вещей.
В масштабах мироздания один из подходов к решению проблемы сложности состоит в сведении многообразных сущностей к вариациям из чуть более сотни конечных химических элементов, собранных в таблицу Менделеева. Возможно, разбиение монолитных приложений на компактные, как правило однофункциональные, программные фрагменты — микросервисы — вкупе с соответствующими интерфейсами для создания сервисов по требованию позволит справиться и с обработкой океана внешних для корпорации данных, и с выпуском приложений для поддержки новых бизнес-моделей цифровой эпохи, и с программированием субъектов Интернета вещей?
Термин «микросервис» впервые появился относительно недавно — в 2011 году, хотя под разными углами зрения данная концепция обсуждается уже более двадцати лет то как продолжение парадигмы сервисной архитектуры, то как проблема повторного использования программ (см. например, «Безболезненное развитие программы», Открытые системы.СУБД. — 1996. — № 4).
Суть концепции, как и периодической таблицы химических элементов, относительно проста: вместо монолитных систем, модули которых не могут выполняться независимо, использовать для создания приложений гранулярные микросервисы, взаимодействующие через API на основе RPC, веб-сервисы REST и пр. Такие приложения можно относительно быстро создавать, развертывать, масштабировать и тестировать; основываясь на микросервисах, аgile-группы, по определению работающие независимо друг от друга, могут строить свои производственные планы. Процессы экосистемы микросервисных контейнеров вполне вписываются в принципы DevOps. Для программной инженерии цифровой эпохи парадигма микросервисов, особенно наряду с DevOps, сулит много преимуществ. Однако определенные трудности могут быть связаны с декомпозицией «монолита» на микросервисы, с развертыванием, управлением состояниями элементов и непрерывным мониторингом распределенной архитектуры. Кроме того, не стоит забывать о безопасности (микросервисы обмениваются данными — значит, нужно защитить каждую передачу), производительности (набор микросервисов работает медленнее, чем монолитная система), надежности (микросервисы по своей распределенной природе менее надежны, чем монолиты, как, собственно, и композиты химических элементов — например, вода и поваренная соль часто более устойчивы, чем составляющие их компоненты).
Первыми от перемен, сопровождающих цифровую трансформацию, страдают гиганты во всех индустриях с их вертикальной системой управления и жесткими унаследованными программными системами. Возможно, поэтому такие компании, как Deutsche Telecom и Verizon, не говоря уже о Netflix, Uber и Amazon, берут на вооружение микросервисы. Массовая кастомизация требует, как это демонстрируют LinkedIn, Twitter и Ebay, опоры на собственные гибкие технологические платформы, способные обрабатывать любые данные для извлечения из них нужной информации и ее доставки в нужное место и в нужном виде. А «химия» микросервисной архитектуры в этом помогает, способствуя конвергенции классических ИТ-систем, встроенных и периферийных приложений реального времени.