Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Недавно позвонил мне старый знакомый, Павел Петрович – ИТ-директор одной окологосударственной организации, «перетереть за облака». Зная, что у них весьма консервативный подход к инфраструктуре, я был мягко говоря заинтригован. В уютной кафешке за рюмочкой кофе Петрович объяснил мне свой интерес очень просто.
«Понаберут в управляющую компанию всяких CDO, CDTO и прочих дятлов, вот они и начинают стучать в черепушку: давай проекты по цифровизации! Ёлки-палки, зайди ко мне в серверную, посмотри, на каком металлоломе там все крутится, а потом про цифровую трансформацию рассказывай! В общем, поставил нам товарищ задачу – перейти на облачную архитектуру, чтобы софт, который мы сами пишем и активно используем, был прям Cloud-Native приложениями. Ты человек в теме, объясни на пальцах, чем мне это грозит?»
Ну, тут главное подобрать правильный пример… Вот что сейчас твои программы? Это такие огромные массивные черные ящики, которые каким-то магическим образом превращают входные данные в нужный результат. Почему магические? Да потому что ни один программер у тебя не знает, как это чудо работает. Там куча легаси-кода, старых библиотек и такой извращенной логики, что, потерев строчку в одном месте, никогда не догадаешься, в каком другом месте что отвалится. Верно говорю?
Павел утвердительно вздохнул.
И вот, ты этот черный ящик выкладываешь в свое недооблако. Потому как просто набор виртуализированных серверов облаком назвать язык не повернется. У тебя там виртуальная машина, операционка на ней, и твое приложение.
А теперь перечислю твой флеш-рояль проблем, хотя он вообще типичный для старых приложений.
Обновления выпускаются редко, так как что-то добавить в код и потом скомпилить работающую сборку можно только через боль и страдания. В итоге имеется большой хвост из пожеланий заказчиков, которые пока так и не реализованы.
Ядро у тебя написано на старом языке программирования, что-то изменить в нем могут только несколько прогеров-патриархов, потерять которых ты просто не можешь. В итоге они выбивают себе суперусловия и зарплаты, а их производительности не хватает на все нужные изменения.
Вас скорее всего тоже напрягли с импортозамещением, и ты вообще не представляешь, как тебе уходить с базового «вражеского ПО», чем заменить VMWare и Microsoft.
Наконец, при пиковой нагрузке на твое приложение просто не хватает вычислительной мощности и ширины канала. Да, виртуалка может выбрать практически все ресурсы с одной железки, но на этом все и кончится. Дальше только тормоза и отваливающиеся сессии клиентов.
Павел Петрович нахохлился: «Ты что, подсматриваешь за нами что ли?»
Я продолжил: а теперь представь, что твой черный ящик можно разбить на рой маленьких серых ящичков. Серых потому, что они такие маленькие, что в принципе можно догадаться, как они внутри устроены. Каждый ящичек выполняет свою конкретную задачу, как музыкант в оркестре, а специальное управляющее ПО всем этим дирижирует. Что важно: в нашем оркестре может быть сразу несколько музыкантов, которые умеют делать одно и то же, и дирижер сам решает, заиграть кому-то одному или всем вместе.
Эти ящички называются микросервисами, каждый микросервис развернут не в полноценной виртуальной машине, а в небольшом контейнере, который можно быстро свернуть и развернуть.
Что это дает? Обновления можно выпускать просто непрерывно, даже не останавливая работу системы. Нужно что-то изменить – создал новый ящичек, сообщил об этом дирижеру, и в ус не дуешь.
Если выросла нагрузка, можно запустить копии нужных микросервисов, которые распараллелят ее на себя. И да, это не вручную, это дирижер сделает сам.
Микросервис – это хоть и маленький, но полноценный и независимый ящичек. То, на каком языке программирования он написан, не важно, главное, чтобы он умел принимать/отправлять стандартные логи и обрабатывать стандартные события. А значит, ты можешь дать возможность программистам писать на том, на чем им удобнее, и на чем конкретная функция будет работать быстрее. Полная демократия.
С импортозамещением тоже все нормально, все необходимое можно найти среди свободного ПО на Sourceforge.
И как вишенка на торте: ты больше не будешь зависеть от программеров-патриархов. Есть микросервис, который кто-то когда-то собрал, а потом заартачился или свалил в закат? Без проблем, написал новый, подключил вместо старого. Никто на былых заслугах паразитировать не сможет. По забугорному это называется коммодитизация: все просто и взаимозаменяемо.
Павел Петрович, горячо одобрявший мой рассказ кивками и междометиями, вдруг остекленел. «Вот оно как. Понятно. Спасибо, что предупредил». И как-то быстро стал сворачиваться. Но пребывал в недоумении я недолго. Через знакомых вдруг выяснилось, что сын Павла работает у него главным архитектором, является автором некоторых основных алгоритмов и вообще чувствует себя в конторе весьма уверенно. Незаменимый человек. И никакие микросервисы ему не нужны. Добро пожаловать в Россию, Cloud-Native!