Микросервисы

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Микросервисы — современное представление сервис-ориентированной архитектуры (SOA), используемое для создания распределенных программных систем. Как и в SOA, модули в архитектуре микросервисов взаимодействуют по сети друг с другом для выполнения цели.[1] Ещё одно сходство в том, что микросервисы используют протоколо-независимую технологию. Данная архитектура является первой реализацией SOA, появившейся после внедрения DevOps, и она постепенно становится стандартом для непрерывно развивающихся систем[2][3].

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

Свойства[править | править вики-текст]

Свойства, характерные для архитектуры микросервисов:

  • Модули можно легко заменить в любое время
  • Модули организованы вокруг функций, например, пользовательский интерфейс, логистика, выставление счета и т. д.
  • Модули могут быть реализованы с использованием различных языков программирования, баз данных, аппаратных средств и программного обеспечения, в зависимости от того, что подходит лучше всего
  • Архитектура симметричная, а не иерархическая (производитель — потребитель)[1]

История[править | править вики-текст]

Термин «микросервисы» существует уже более десяти лет. На конференции Cloud Computing Expo в 2005 Питер Роджерс использует его в своей презентации. Тогда он использовал термин «микро-веб-сервис» для именования компонентов программного обеспечения. Юваль Лёви имел схожее мнение касательно микросервисов, он так-же считал, что именно микросервисы являются следующей ступенью развития архитектуры Microsoft. Он описал, как хорошо разработанная сервисная платформа применяет основные архитектурные принципы веб и веб-служб вместе с Unix-подобными, чтобы обеспечить радикальную гибкость и простоту, предоставляя платформу для применения сервис-ориентированной архитектуры во всей среде приложений. В мастерской архитекторов программного обеспечения, проводимой недалеко от Венеции в 2011 году, использовался термин «микросервис» для описание общего архитектурного стиля, который развивали участники последние годы. И, наконец, в 2012 году, все та же команда, что и в 2011, решила принять этот термин, как окончательный.

Философия[править | править вики-текст]

Философия микросервисов фактически копирует философию UNIX, а именно «Делай что-то одно и делай это хорошо». Суть заключается в следующем:

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

Критика[править | править вики-текст]

Данная архитектура постоянно подвергается критике с самого момента её формирования. Архитектура, помимо решения проблем старых и упрощения работы, имеет ряд проблем:

  • Сетевые задержки[5]
  • Форматы сообщений[5]
  • Баланс нагрузки и отказоустойчивости[5]

В добавок к этому, усложняется тестирование и разработка.[6]

Появившийся термин и, соответственно, архитектура, «наносервисы», так же была подвержена критике. Наносервисы — это архитектура, разбитая на очень маленькие модули. Такая архитектура была признана малоэффективной в связи с огромными промежуточными расходами для объединения многих наносервисов в полноценный сервис.[7]

Примечания[править | править вики-текст]

Литература[править | править вики-текст]

  • Ньюмен С. Создание микросервисов = Building Microservices. — СПб.: Питер, 2016. — 304 с. — ISBN 978-5-496-02011-4.