Phone icon Связаться с нами

DevOps и облака

Что такое микросервисы?

Микросервисы (microservices) — это подход к архитектуре, при котором приложение состоит из нескольких небольших независимых сервисов. Каждый отвечает за свою часть — оплату, каталог, уведомления, — разворачивается отдельно и обменивается данными с другими через API.

Главное преимущество — независимость. Команды выпускают свои сервисы, не дожидаясь друг друга, каждый сервис масштабируют отдельно под его нагрузку, а сбой одного не обязательно останавливает всю систему.

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

Где применяется

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

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

Пример

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

Частые вопросы

Чем микросервисы отличаются от монолита?

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

С чего лучше начинать новый проект?

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

Какие сложности появляются с микросервисами?

Сетевые запросы могут падать и тормозить, одна операция охватывает несколько сервисов, логи разбросаны по разным системам, а воспроизвести проблему на своём компьютере гораздо сложнее. Добавляется и поддержка: мониторинг всех сервисов, версионирование API, согласованное развёртывание.

Как микросервисы обмениваются данными?

Чаще всего синхронно через REST или gRPC, когда ответ нужен сразу, и асинхронно через очереди сообщений вроде Kafka или RabbitMQ, когда важна устойчивость к временной недоступности сервиса. Зрелые системы обычно используют оба способа.

Обучение DevOps в OWU

Освойте профессию DevOps-инженера на практических курсах с менторами и реальными проектами.

Выбрать курс