Що таке мікросервіси і чому великі компанії відмовляються від монолітів

Що таке мікросервіси і чому великі компанії відмовляються від монолітів

Кожен успішний стартап проходить через схожий шлях. Спочатку простий монолітний додаток, який вирішує задачу. Потім зростання команди і продукту. Потім момент, коли монолітна архітектура починає гальмувати розвиток. Деплой стає страшним, невелика зміна ламає несподівані частини системи, команди заважають одна одній. Саме в цей момент з'являється розмова про мікросервіси.

Що таке монолітна архітектура

Моноліт це додаток, де всі компоненти об'єднані в один розгортуваний артефакт. Інтерфейс, бізнес логіка, доступ до даних все в одній кодовій базі, яка деплоїться як єдине ціле.

Моноліт не є поганим за визначенням. Для більшості проєктів на початковому етапі це правильна архітектура. Простіша розробка, менша операційна складність, простіше тестування і налагодження. Проблеми починаються, коли продукт і команда ростуть.

При великому моноліті деплой будь якої зміни вимагає розгортання всього додатку. Помилка в одному модулі може покласти весь сервіс. Різні частини системи не можна масштабувати незалежно. Якщо навантаження зростає тільки на один компонент, доводиться масштабувати весь додаток.

Що таке мікросервіси

Мікросервісна архітектура розбиває монолітний додаток на набір невеликих незалежних сервісів. Кожен сервіс відповідає за конкретну бізнес функцію, має власну базу даних, розгортається і масштабується незалежно і спілкується з іншими сервісами через API або черги повідомлень.

Наприклад, інтернет магазин може бути розбитий на сервіс каталогу товарів, сервіс замовлень, сервіс оплати, сервіс доставки, сервіс нотифікацій. Кожен з них окремий додаток зі своєю командою, своїм деплоєм і своєю базою даних.

Переваги мікросервісів

Незалежний деплой. Кожен сервіс можна оновлювати без зупинки інших. Команда, яка відповідає за сервіс оплати, може випускати оновлення кілька разів на день, не чекаючи інших команд.

Незалежне масштабування. Якщо пошук товарів створює найбільше навантаження, масштабується тільки сервіс пошуку. Не потрібно витрачати ресурси на масштабування всього додатку.

Ізоляція відмов. Якщо сервіс нотифікацій падає, замовлення продовжують оброблятися. При монолітній архітектурі помилка в одному місці може покласти весь додаток.

Технологічна гнучкість. Різні сервіси можуть використовувати різні технології. Сервіс рекомендацій написаний на Python з ML бібліотеками, сервіс каталогу на Go для максимальної продуктивності, адмін панель на Node.js.

Незалежні команди. Кожна команда володіє своїм сервісом і може рухатися з власною швидкістю без постійної координації з іншими командами.

Реальна ціна мікросервісів

Мікросервіси вирішують організаційні проблеми масштабу, але додають значну технічну складність.

Розподілена система. Замість виклику функції всередині одного додатку тепер мережевий запит між сервісами. Мережа ненадійна, потрібно обробляти таймаути, повторні спроби, circuit breakers.

Складність спостережності. Один запит користувача може проходити через десять сервісів. Розібратися, де виникла помилка або чому запит повільний без distributed tracing майже неможливо.

Операційне навантаження. Замість одного додатку потрібно підтримувати десятки. Кожен вимагає моніторингу, логування, деплою, управління конфігурацією.

Складність тестування. Інтеграційне тестування між сервісами значно складніше, ніж тестування монолітного додатку.

Коли залишатися на моноліті

Для більшості проєктів і більшості команд моноліт залишається правильною архітектурою. Якщо команда менше двадцяти розробників, продукт не має очевидних доменних меж або операційна зрілість ще не дозволяє управляти десятками сервісів, мікросервіси додадуть складність без пропорційної користі.

Хорошою стратегією є модульний моноліт. Це монолітний додаток з чіткою внутрішньою структурою і добре визначеними межами між модулями. Коли з'явиться реальна потреба виділити окремий сервіс, це можна зробити поступово, не переписуючи все з нуля.

Мікросервіси це архітектурна відповідь на організаційні виклики великих команд і складних продуктів. Починати з них без реальної потреби означає вирішувати проблеми, яких у вас ще немає.

Поділитися
У пошуках підрядника з розробки сайту?
Заходьте до нашого online каталогу Веб-студій та вибирайте партнера за рядом критеріїв: бал, портфоліо, відгуки, кейси та статті. Або організуйте тендер в даному каталозі, вибравши компанії, що вам сподобалися.
Більше не потрібно шукати та обдзвонювати діджитал-агентства!
Створіть тендер та отримайте пропозиції від найкращих веб-студій України.
У каталозі 1700+ діджитал-агентств, які готові допомогти в реалізації ваших завдань. Вибирайте та економте до 30% свого часу та бюджету! Це безкоштовно та займе менше 3-х хвилин.
Створити тендер
Bug