Недавно позвонил мне старый знакомый, Павел Петрович – ИТ-директор одной окологосударственной организации, «перетереть за облака». Зная, что у них весьма консервативный подход к инфраструктуре, я был мягко говоря заинтригован. В уютной кафешке за рюмочкой кофе Петрович объяснил мне свой интерес очень просто.

«Понаберут в управляющую компанию всяких CDO, CDTO и прочих дятлов, вот они и начинают стучать в черепушку: давай проекты по цифровизации! Ёлки-палки, зайди ко мне в серверную, посмотри, на каком металлоломе там все крутится, а потом про цифровую трансформацию рассказывай! В общем, поставил нам товарищ задачу – перейти на облачную архитектуру, чтобы софт, который мы сами пишем и активно используем, был прям Cloud-Native приложениями. Ты человек в теме, объясни на пальцах, чем мне это грозит?»

Ну, тут главное подобрать правильный пример… Вот что сейчас твои программы? Это такие огромные массивные черные ящики, которые каким-то магическим образом превращают входные данные в нужный результат. Почему магические? Да потому что ни один программер у тебя не знает, как это чудо работает. Там куча легаси-кода, старых библиотек и такой извращенной логики, что, потерев строчку в одном месте, никогда не догадаешься, в каком другом месте что отвалится. Верно говорю?

Павел утвердительно вздохнул.

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

А теперь перечислю твой флеш-рояль проблем, хотя он вообще типичный для старых приложений.

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

  2. Ядро у тебя написано на старом языке программирования, что-то изменить в нем могут только несколько прогеров-патриархов, потерять которых ты просто не можешь. В итоге они выбивают себе суперусловия и зарплаты, а их производительности не хватает на все нужные изменения.

  3. Вас скорее всего тоже напрягли с импортозамещением, и ты вообще не представляешь, как тебе уходить с базового «вражеского ПО», чем заменить VMWare и Microsoft.

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

Павел Петрович нахохлился: «Ты что, подсматриваешь за нами что ли?»

Я продолжил: а теперь представь, что твой черный ящик можно разбить на рой маленьких серых ящичков. Серых потому, что они такие маленькие, что в принципе можно догадаться, как они внутри устроены. Каждый ящичек выполняет свою конкретную задачу, как музыкант в оркестре, а специальное управляющее ПО всем этим дирижирует. Что важно: в нашем оркестре может быть сразу несколько музыкантов, которые умеют делать одно и то же, и дирижер сам решает, заиграть кому-то одному или всем вместе.

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

Что это дает? Обновления можно выпускать просто непрерывно, даже не останавливая работу системы. Нужно что-то изменить – создал новый ящичек, сообщил об этом дирижеру, и в ус не дуешь.

Если выросла нагрузка, можно запустить копии нужных микросервисов, которые распараллелят ее на себя. И да, это не вручную, это дирижер сделает сам.

Микросервис – это хоть и маленький, но полноценный и независимый ящичек. То, на каком языке программирования он написан, не важно, главное, чтобы он умел принимать/отправлять стандартные логи и обрабатывать стандартные события. А значит, ты можешь дать возможность программистам писать на том, на чем им удобнее, и на чем конкретная функция будет работать быстрее. Полная демократия.

С импортозамещением тоже все нормально, все необходимое можно найти среди свободного ПО на Github (это такое хранилище дистрибутивов типа Sourceforge).

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

Павел Петрович, горячо одобрявший мой рассказ кивками и междометиями, вдруг остекленел. «Вот оно как. Понятно. Спасибо, что предупредил». И как-то быстро стал сворачиваться. Но пребывал в недоумении я недолго. Через знакомых вдруг выяснилось, что сын Павла работает у него главным архитектором, является автором некоторых основных алгоритмов и вообще чувствует себя в конторе весьма уверенно. Незаменимый человек. И никакие микросервисы ему не нужны. Добро пожаловать в Россию, Cloud-Native!

Комментарии (4)


  1. jreznot
    24.03.2022 10:15
    +4

    Sourceforge

    Закопайте стюардессу!


  1. BASic_37
    24.03.2022 13:20

    И все то у вас хорошо и красиво, и минусов то никаких нет... Это просто Павел со своим сынком не хотят терять свои пригретые местечки....

    Если что, я никакого отношения к вашему Павлу не имею, просто не понятно почему вы так все описали однобоко? Почему микросервисы? Какую задачу они решают в конкретной организации? Какова цена (я не про деньги)?


    1. ProCATT Автор
      24.03.2022 16:20

      Александр, микросервисы оправданы тогда, когда идет серьезная доработка программного продукта, сам продукт активно используется большим количеством веб-пользователей. У этой компании как раз такая ситуация.


  1. Bunny_with_a_tie
    24.03.2022 14:39

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