Когда открываешь бизнес, сталкиваешься с этим навязчивым чувством, что надо сразу все самое крутое, современное, Яндекс так делают, значит, и я могу. Плавали, знаем. Но меня лично очень отрезвило на старте количество затрат на все новомодные технологии.
Архитектура проекта — каркас, который играет ключевую роль в обеспечении того, чтобы система была масштабируемой, удобной для поддержки, а ее компоненты могли быть повторно использованы в будущем. Она также способствует снижению рисков, ища потенциальные проблемы и ограничения на ранних стадиях разработки.
Мы в Qtim, на этапе переговоров с заказчиками столкнулись с тем, что нам радикально говорили «нужны микросервисы, монолиты не рассматриваем». Что такое эти монолиты и микросервисы, сейчас расскажем:
Чтобы было легче понять, приведу аналогию с кухней. Например, есть ресторан, в котором повара всего три или четыре, но все они, плюс-минус, умеют готовить все позиции, поэтому, если один заболеет, остальные смогут взять его работу на себя. Они работают, как единое целое, и очень качественно, но разрастись до огромных масштабов не могут, потому что команда небольшая, а хочется, чтобы в большом бизнесе работало много узких специалистов. Примерно так устроена монолитная архитектура, не идеальная, но надежная.
А есть микросервисная, считается самой передовой, но и у нее есть недостатки. Кухня бы выглядела так: очень много места, отдельный пекарский цех, кондитерский, рыбный, мясной и на каждом минимум по трем сотрудникам. Все три пекаря заболели, и все, булочки на стопе, никто их другой на кухне делать не умеет. Меню огромное, возможностей много, каждый цех автономный, живет своей жизнью. Но зарплаты и количество сотрудников огромные.
Вот и думайте, какое заведение легче потянуть в начале пути? Нам очевидно, что первое. Монолит — это, может, и не так модно, но на старте дает возможность сделать качественно, с меньшими затратами. Потому что для работы микросервиса мало настроить все внутри, нужно еще грамотно настроить между ними коммуникацию. Для этого мало иметь большую команду, каждый должен быть супер в своей узкой сфере. Где при запуске бизнеса найти такую команду? Qtim уже празднует седьмой год, а поиск крутых специалистов для расширения все еще продолжается.
Микросервисы успешно внедрили корпорации Uber, Netflix, Amazon и другие. Для них микросервисы — лучший вариант, компании улучшили масштабируемость и гибкость своих систем.
Разницу между монолитами и микросервисами уже объяснил, ввиду третью переменную. «Есть ли вариант, приближенный к микросервисам, но более доступный? Есть!». Это мини-сервисы – упрощённая версия микросервисов, где приложение делится на несколько крупных частей. Вариант подходит для малого бизнеса и стартапов: проще в управлении и меньшие затраты на инфраструктуру.
Ничего не мешает с развитием компании изменить архитектуру. Объем данных может расти, нужно масштабироваться, это значит, что из монолита вы выросли. Spotify, LinkedIn и еще одна небезызвестная запрещенная соцсеть вырастали из монолита до микросервисов. Из русских компаний такой путь прошел банк ВТБ. Все на деле довольно сложно: никто из заказчиков не хочет прерывать работу сервисов, поэтому дробить все нужно плавно, если не сделать это вовремя, проблем будет много, разработчики только и будут переключаться между блоками, много багов и т.д.
А значит, чтобы грамотно масштабировать, необходим постоянный анализ роста проекта, микросервисы при первом запуске не избавят от проблем, а только прибавят их. До клиентов нашу точку зрения мы уже научились доносить, на старте — никакой микросервистной архитектуры. Используем ресурсы разумно, следим в первую очередь за качеством, а не модой, масштабируемся своевременно — наши три столпа, на основе которых развиваемся в Qtim.
В следующей статье ответим на обратный вопрос, в каких случаях микросервисная архитектура вам может пригодится.