Давайте разбираться, что же такое микросервисы. Микросервисы еще один термин на шумных улицах разработки ПО. Есть ли в начале двухтысячных приложение были только монолитными, то сейчас все чаще разработчики переходят на микросервисы и даже распиливают свой готовый и устоявшийся Монолит на кусочки. Но что ж собой представляют эти микросервисы, чем отличаются от такого привычного Монолита узнаешь прямо сейчас.
Микросервисы и монолит это стили архитектуры. Нет не той конечно, о которой на искусствоведении рассказывали, архитектуры приложений. Хотя кое-что схожее конечно есть. Microservices это подход при котором приложение строится как набор небольших сервисов, каждый из которых работает автономно и коммуницирует с остальным. Но это примерно как барокко, много лепнины над которой работают разные скульпторы но в результате все это лепится на одно здание. Это к примеру как раньше Фейсбук и Инстаграм Монолит же. Приложение сделано последовательно и одним сплошным массивом, как каменный Форт. Например есть ли один камень был заложен криво, то потом всё строение разбирать придется. Сейчас это в основном маленькие приложения, но одним из самый известных примеров Монолита это ядро Linux.
Монолит это если бы у вас в квартире было всего одна дверь и что бы зайти в спальню вам нужно пройти все двери — это такой монолит. Микросервисы это то к чему мы привыкли. Это ты приходишь в квартиру у тебя много дверей, каждая дверь отвечает за что-то своё: кухня, спальня ,кабинет.
Монолитное приложение могут быть успешными, но всё больше девелоперы разочаровываются в них, ведь всё больше приложений развертываются в Облаке. Любые изменения даже самые небольшие, требуют пересборки и развертывания всего Монолита. Те кто отдал предпочтение микросервисам в один голос заверяют, что использование этого типа архитектуры существенно облегчает разработку и дальнейшее обслуживание программы. Выход из строя одного из элементов проходит для пользователя менее болезненно.
Один из таких крутых плюсов микросервисов ,что все приложение не падает одновременно. Если вы замечали то сейчас facebook написан, использую эту архитектуру, если в Фейсбуке, что-то отваливается, вы видите только чат не работает, но лента, фотки всё работает, лайкать можно. Вот это создает такую иллюзию, что как бы всё приложение работает.
Микросервис легче потому, что у тебя меньше функционала, то есть тебе нужно разработать только вот этот микро функционал. Тебе не нужно разрабатывать что-то сверхестественное.
Более того микросервисы могут быть написаны разными командами разработчикам и на разных языках. Считается что Монолит как впрочем и Форт остаются в прошлом и будущем за микро сервисами. Но так ли это? Зависит больше от задач. Некоторые приложения вполне себе живут и Монолитом. Микросервисы же хороши там где огромное количество разработчиков, очень большой проект с огромным количеством просто сервисов. И чтобы как-то это всё это менеджерить и разделить между ними работу очень удобно использовать этот подход, тогда каждый может писать маленький кусочек не мешать другим. И в целом можно это можно как-то зарелизить. Потому что, если у тебя 40 разработчиков и Монолит, то у тебя релизный цикл может быть год.
У микросервисов множество преимуществ, но это не панацея и не серебряная пуля и они не могут решить всех проблем. Да и применимы они оказывается далеко не везде. У тебя приложение 40к сервисов, тебе чтобы локально попробовать это всё вместе нужно поднять 40 сервисов или или хотя бы 20 то есть ты тратишь время на менеджмент всех этих сервисов, а не на разработку, т.е. вот это обратная сторона.
About The Author
Виктор Карабедянц
ИТ директор (CIO), руководитель нескольких DevOps команд. Профессиональный руководитель проектов по внедрению, поддержке ИТ систем и обслуживанию пользователей.