Close

Микросервисы: что они из себя представляют и каковы их преимущества

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

С появлением продуктов «ПО как услуга» (предоставляемых в облаке приложений) компании смогли привлекать поставщиков, таких как Amazon Web Services, для быстрого создания новых серверов и добавления избыточности. Благодаря этому работа служб не прерывалась во время обновлений, а в мире наступила новая эра скорости и гибкости. Пользователи стали ожидать быстрых обновлений и улучшений, что побудило компании изменить процессы разработки.

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

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

Читайте дальше, чтобы узнать больше об устройстве приложений на основе микросервисов. Мы также расскажем, как Atlassian Compass позволяет разработчикам упростить управление этой архитектурной моделью и воспользоваться ее преимуществами.

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

Логотип Compass.

Попробуйте Compass бесплатно

Повышайте удовлетворенность разработчиков, каталогизируйте все сервисы и улучшайте работоспособность программного обеспечения.

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


Микросервис — это функция, отвечающая за один элемент логики (за исключением предметно-ориентированных микросервисов, о которых речь пойдет ниже). Несколько микросервисов лежат в основе распределенных приложений, таких как Jira Software.

Рисунок: микросервисная архитектура

Существует три типа микросервисов.

  1. Предметно-ориентированные микросервисы характеризуются слабой связанностью и схожими функциональными возможностями.
  2. Интеграционные микросервисы обеспечивают взаимодействие между несвязанными приложениями.
  3. Микросервисы элементарных операций выполняют отдельные функции.

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

Архитектура на основе микросервисов дает множество преимуществ, но при этом увеличивает сложность системы. Именно поэтому компания Atlassian разработала решение Compass, которое упрощает управление архитектурой при масштабировании. Эта платформа для разработчиков объединяет все сведения о совместной работе команд и результатах разработки в одном центре с возможностью поиска.

Ключевые принципы микросервисов


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

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

Эти качества делают распределенные приложения на основе микросервисов гибкими и простыми в обслуживании.

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

Преимущества микросервисной архитектуры


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

К числу других преимуществ микросервисов относится следующее.

Рисунок: весы

Отказоустойчивость и локализация отказов

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

Рисунок: Agile

Agility

Разбиение приложений на более мелкие части ускоряет разработку. Команды способны быстрее создавать, тестировать и развертывать программное обеспечение.

Рисунок: ящик для инструментов

Технологическое разнообразие

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

Рисунок: детали конструктора

Улучшенное техническое обслуживание

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

Проблемы микросервисной архитектуры


Архитектура на основе микросервисов имеет множество преимуществ, но не лишена и проблем.

Одна из них из заключается в том, что независимые службы генерируют свои журналы. Это недостаток по сравнению с централизованными журналами монолитов, которые являются единым достоверным источником информации для разработчиков и команд по эксплуатации. Мониторинг и управление инфраструктурой также усложняются, поскольку система многосоставна. Тестирование и отладка труднее, поскольку, в отличие от монолитов, здесь нет интегрированной среды разработки (IDE).

Решение Compass от Atlassian поможет справиться со всеми этими проблемами. Compass облегчает совместную работу и позволяет компаниям управлять сложностями распределенных архитектур по мере их масштабирования. Это достигается за счет объединения разрозненной информации в одном центре с возможностью поиска.

Разрастание процесса разработки

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

Неопределенность в вопросах владения

Микросервисная архитектура вносит путаницу в вопросы владения. Команда DevOps может использовать комбинацию API-интерфейсов, библиотек компонентов, инструментов мониторинга и образов Docker, чтобы пользователи могли развернуть приложение. Важно быть в курсе текущей ситуации по компонентам, включая их владельцев, ресурсы и меняющиеся отношения между другими компонентами. Нужно обеспечить четкое взаимодействие и координацию между многочисленными командами, чтобы каждый участник мог легко найти необходимые знания и разобраться в работе продукта.

Экспоненциальный рост расходов на инфраструктуру

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

Дополнительные организационные расходы

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

Отладка

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

Реагирование на инциденты

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

Для чего нужна архитектура микросервисов?


В работе крупных потребительских веб-сайтов часто задействованы сотни или тысячи микросервисов. Микросервисы особенно полезны в следующих примерах использования и отраслях.

  • На сайтах электронной коммерции, например eBay, отдельные микросервисы обеспечивают работу корзин для покупок, мобильных приложений и решений для обмена сообщениями.
  • Финансовые учреждения, такие как Банк Америки, используют микросервисы для связи с внешними службами, а также для выполнения таких функций, как авторизация пользователей и отображение транзакций.
  • На платформах социальных сетей, таких как Instagram и Facebook, микросервисы отвечают за отображение новостных лент, сообщений, уведомлений и сетей друзей.

Рекомендации по управлению микросервисами


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

  • Принцип единственной ответственности (SRP) предусматривает, что у каждого модуля или микросервиса должна быть только одна функция. Непрерывная интеграция (CI) SRP — это методология управления исходным кодом, которая автоматизирует проверку качества кода перед его слиянием с базой проекта. При этом исчезает необходимость в отдельном процессе контроля качества, поэтому эта рекомендация DevOps помогает ускорить разработку. CI предшествует непрерывной поставке (CD), в рамках которой автоматические инструменты сборки подготавливают программное обеспечение к развертыванию.
  • API-шлюзы упрощают взаимодействие между микросервисами, помогают управлять аутентификацией и авторизацией, а также повышают безопасность.
  • Асинхронное взаимодействие между микросервисами позволяет им сохранить автономность и уменьшает количество зависимостей, которые могут замедлить работу приложения.
  • Управление версиями микросервисов крайне важно, когда разработчики вносят критические изменения, например удаляют целую операцию. Эта практика облегчает переход и сводит к минимуму вероятность перебоев в обслуживании.

Open DevOps от Atlassian на базе Jira Software позволяет командам без труда настроить автоматическую интеграцию инструментов Atlassian и партнеров, чтобы сосредоточиться на создании и эксплуатации программного обеспечения.

Улучшите управление архитектурой микросервисов с помощью Compass


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

Рисунок: микросервисная архитектура

Compass позволяет без труда управлять компонентами, отслеживать владение и выполнять мониторинг взаимосвязей. В этом инструменте также можно отслеживать изменения в режиме реального времени.

Интегрировать Compass в среду разработки очень просто благодаря настраиваемому пользовательскому интерфейсу и совместимости с внутренними и сторонними инструментами. Узнайте, как с помощью Compass можно управлять архитектурой микросервисов и объединить разрозненную информацию.

Микросервисы: часто задаваемые вопросы


Какие инструменты обычно используют в архитектуре микросервисов?

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

Чем микросервисная архитектура отличается от монолитной?

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

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

Те, кто понимает принципы DevOps, знают, что непрерывная интеграция и непрерывная поставка (конвейер CI/CD в DevOps) являются основой методологии DevOps. Модульный характер микросервисов идеально соответствует этому подходу. Микросервисы позволяют разработчикам быстро и часто создавать, тестировать и развертывать небольшие релизы.

Присоединяйтесь к сообществу Atlassian, где вас ждет больше статей и обсуждений на тему микросервисов.

Навигация по микросервисам с помощью Compass

При работе с микросервисной архитектурой можно использовать Atlassian Compass для управления сложностью масштабируемой распределенной архитектуры. Это расширяемая платформа для разработчиков, которая объединяет разрозненные сведения о совместной работе команд и результатах разработки в одном центре с возможностью поиска. Решение Compass поддержит вас в борьбе с разрастанием микросервисов благодаря каталогу компонентов. Кроме того, с его помощью можно внедрить рекомендации, оценить работоспособность программного обеспечения по картам оценки, а также распространить данные и аналитику по всему пакету инструментов DevOps с помощью расширений на платформе Atlassian Forge.

Рисунок: микросервисы в Compass