Найти в Дзене
IT и менеджмент

IT для неайтишников: микросервисы и монолит

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

Представьте, что у нас есть завод по производству автомобилей. Это маленький завод, который выпускает несколько моделей в год. Работники завода на все руки мастера и могут делать всё, что требуется. Так в нашем цехе производят полный цикл сборки автомобиля и самостоятельно делают все детали: от шин и двигателя, до обивки сиденья.

И вот владелец завода хочет увеличить количество выпускаемых автомобилей, чтобы обработать выросший спрос на них. Для начала мы можем модернизировать производство: улучшить станки и процессы, но мы всё же упрёмся в потолок ресурсов. Тогда нам нужно будет масштабировать предприятие и открывать второй такой же завод.

Масштабирование производства
Масштабирование производства

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

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

Разделение ответственности между заводами
Разделение ответственности между заводами

Такой же подход используется и в IT. Мы можем хранить весь код в одном месте и при запросе от пользователя наш "завод" будет самостоятельно выдавать ответ. Такой подход называется монолитная архитектура.

Плюсы подхода монолит ("делаем всё в одном месте"):

  1. Хорошо на первых этапах
  2. Виден весь процесс
  3. Не зависим от других, если что-то сломалось, можем быстро починить
  4. Работники обладают знанием о всей системе (если у нас небольшой продукт)

Минусы

  1. Сложно масштабировать

Если мы разбиваем работу на несколько заводов, в IT мы их называем сервисами, которые выполняют какую-то "одну" функцию, то такой подход в IT называется микросервисная архитектура.

Плюсы микросервисного подхода ("делим ответственность"):

  1. Легко масштабировать
  2. Правильное распределение ресурсов

Минусы:

  1. Дополнительные затраты на транспортировку
  2. Сложнее поддерживать
  3. Надёжность цепочки зависит от надёжности её самого слабого компонента

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

Попробуйте подумать, какие подводные камни ещё может скрывать подход "всё в одном месте" или какие плюсы есть у микросервисной архитектуры? Напишите свои рассуждения или вопросы в комментариях.