Interested Article - Микросервисная архитектура
- 2020-06-11
- 2
Микросервисная архитектура — вариант сервис-ориентированной архитектуры программного обеспечения, направленный на взаимодействие насколько это возможно небольших, слабо связанных и легко изменяемых модулей — микросервисов , получивший распространение в середине 2010-х годов в связи с развитием практик гибкой разработки и DevOps .
Если в традиционных вариантах сервис-ориентированной архитектуры модули могут быть сами по себе достаточно сложными программными системами, а взаимодействие между ними зачастую полагается на стандартизованные тяжеловесные протоколы (такие, как SOAP , XML-RPC ), в микросервисной архитектуре системы выстраиваются из компонентов, выполняющих относительно элементарные функции, и взаимодействующие с использованием экономичных сетевых коммуникационных протоколов (в стиле REST с использованием, например, JSON , Protocol Buffers , Thrift ). За счёт повышения гранулярности модулей архитектура нацелена на уменьшение степени зацепления и увеличение связности , что позволяет проще добавлять и изменять функции в системе в любое время .
Свойства
Свойства, характерные для микросервисной архитектуры :
- модули можно легко заменить в любое время: акцент на простоту, независимость развёртывания и обновления каждого из микросервисов;
- модули организованы вокруг функций: микросервис по возможности выполняет только одну достаточно элементарную функцию;
- модули могут быть реализованы с использованием различных языков программирования , фреймворков , связующего программного обеспечения , выполняться в различных средах контейнеризации , виртуализации , под управлением различных операционных систем на различных архитектурах : приоритет отдаётся в пользу наибольшей эффективности для каждой конкретной функции, нежели стандартизации средств разработки и исполнения;
- архитектура симметричная, а не иерархическая: зависимости между микросервисами одноранговые.
Философия микросервисов фактически копирует философию Unix , согласно которой каждая программа должна «делать что-то одно, и делать это хорошо» и взаимодействовать с другими программами простыми средствами: микросервисы минимальны и предназначаются для единственной функции. Основные изменения в связи с этим налагаются на организационную культуру, которая должна включать автоматизацию разработки и тестирования, а также культуру проектирования, от которой требуется предусматривать обход прежних ошибок, исключение по возможности унаследованного кода (микросервисы часто заменяют целиком, поскольку их функции элементарны).
Наиболее популярная среда для выполнения микросервисов — системы управления контейнеризованными приложениями (такие как Kubernetes и её надстройки OpenShift и , , ), в этом случае каждый из микросервисов как правило изолируется в отдельный контейнер или небольшую группу контейнеров, доступную по сети другим микросервисам и внешним потребителям, и управляется средой оркестрации, обеспечивающей отказоустойчивость и балансировку нагрузки. Типовой практикой является включение в контур среды выполнения системы непрерывной интеграции , обеспечивающее автоматизацию обновления и развёртывания микросервисов.
История
Несмотря на то, что термин «микросервисы» упоминался с середины 2000-х годов, появление концепции относят к ежегодному семинару архитекторов программного обеспечения в Венеции 2011 году. В 2012 году о микросервисах докладывали на конференции 33d Degree в Кракове, а также появился ряд публикаций о «гранулярном SOA», излагающих микросервисный подход. В 2012—2014 годы о внедрении микросервисов в рамках собственных программных разработок заявляли специалисты таких компаний, как Amazon , Netflix , Twitter , с 2015 года в ведущих издательствах регулярно выпускаются книги о микросервисной архитектуре, проводится несколько регулярных конференций, целиком посвящённых микросервисам.
Критика
Архитектура постоянно подвергается критике с самого момента её формирования, среди новых проблем, которые возникают при её внедрении отмечаются:
- сетевые задержки : если в модулях, выполняющих несколько функций, взаимодействие локально, то микросервисная архитектура накладывает требование атомизации модулей и взаимодействия их по сети;
- форматы сообщений : отсутствие стандартизации и необходимость согласования форматов обмена фактически для каждой пары взаимодействующих микросервисов приводит как к потенциальным ошибкам, так и сложностям отладки.
Примечания
- ↑ Martin Fowler. . martinfowler.com (10 марта 2014). Дата обращения: 29 июня 2016. 14 февраля 2018 года.
- Balalaie, A.; Heydarnoori, A.; Jamshidi, P. (англ.) // vol. 33 , no. 3 ). — P. 42—52 . — ISSN . — doi : . : journal. — 2016. — 1 May (
- . Дата обращения: 7 октября 2016. 9 октября 2016 года.
- Oliver Wolf. . Дата обращения: 29 июня 2016. 11 июня 2016 года.
- ↑ Jan Stenberg. (11 августа 2014). Дата обращения: 29 июня 2016. 3 марта 2016 года.
Литература
- Ньюмен С. Создание микросервисов = Building Microservices. — СПб. : Питер, 2016. — 304 с. — ISBN 978-5-496-02011-4 .
- 2020-06-11
- 2