Термин «Микросервис» впервые прозвучал в Венеции в 2011. Этим словом участники архитектурного воркшопа описывали наблюдаемые ими изменения в проектировании систем. В 2012 та же группа ввела новый термин.
Так что такое микросервисы и какими свойствами они обладают?
Первые вехи в развитии микросервисов согласно википедии:
- Первое наблюдение нового феномена на воркшопе архитекторов Венеции в 2011 году
- В мае 2012-го новому феномену дано имя: «Микросервис»
- Выступление Джеймса Льюиса “Java, the Unix Way» в марте 2012-го
- В сентябре 2012 Фреда Джорджа выступил с докладом “μServiceArchitecture“
- Воркшоп Кокрофта, рассказ о микросервисах в Netflix
Заключительный слайд презентации Фреда Джорджа весьма точно предсказал дальнейшей развитие микросервисов
Были упоминания и раньше, но в 2012-м оформился конкретный термин со своим четким смыслом.
Что такое микросервис?
Общепринятого определения нет, но есть схожие и дополняющие друг друга. Наиболее емким выглядит определение Мартина Фаулера, данное им в одноименной статье, перевод которой есть на Хабре:
Если коротко, то архитектурный стиль микросервисов — это подход, при котором единое приложение строится как набор небольших сервисов, каждый из которых работает в собственном процессе и коммуницирует с остальными используя легковесные механизмы, как правило HTTP. Эти сервисы построены вокруг бизнес-потребностей и развертываются независимо с использованием полностью автоматизированной среды. Существует абсолютный минимум централизованного управления этими сервисами. Сами по себе эти сервисы могут быть написаны на разных языках и использовать разные технологии хранения данных.
Из этого определения можно вынести ряд свойств микросервисов.
Свойства микросервисов
Важнейшим свойством является what is viagra jet follow link how to write a thesis statement for an essay about yourself https://oaksofwellington.com/viagra-upsets-my-stomach/ dr. david brown viagra dapoxetine south africa evaluation essay revision guidlines enter site cheap captopril 50 mg paypal kamagra australia legal essay 26 january republic day peter singer poverty essay burger king customer relations bmat essay tips for act here essay youth how to start an essay about yourself without saying hi my name is https://surgicalimpex.com/product/video-sobre-el-viagra/194/ https://assessmentcentertraining.org/exercises/curleys-wife-essay-plan/58/ how to write a good jaw dropping essay https://easternpropane.com/savings/zithromax-zpak/87/ most impactful masters thesis hannah arendt essay topics viagra 100mg tablets coupons homework help bliographies source what episode does rob take viagra click here go site https://indiana.internexus.edu/courses/legal-env-and-business-exam-2-essay-questions/52/ click term paper on globalization автономность. Автономность распространяется на все, что касается разработки микросервисов:
- Автономность на уровне модели предметной области (микросервисы строятся вокруг бизнес-концепций)
- Автономное развертывание
- Автономное тестирование
- Независимое эволюционное развитие (сокрытие внутренней реализации)
- Изоляция сбоев
На автономность тестирования стоит обратить особое внимание. Ведь если микросервис не может быть отправлен на прод без совместного тестирования с другими микросервисами, то это явный признак распределенного монолита. В этом случае следует провести повторный анализ предметной области для выявления «протекания предметной области». Это ситуация, при которой сервис оперирует данными не из его бизнес-области.
Возможно и обратное — сервисы поделены слишком мелко и транзакционная граница распространилась на несколько микросервисов.
За счет четкого разделения ответственностей каждый микросервис в отдельности проще в понимании, чем большой монолит, но ценой усложнения инфраструктуры.
Именно поэтому в микросервисах так важна автоматизация. Автоматизация сборки, тестирования, развертывание, подготовки инфраструктуры, настройки сред. Всего, что может быть автоматизировано. За счет масштаба, от автоматизации можно получить максимальную выгоду достаточно быстро.
Структура микросервисного решения обычно не стабильна в любой момент времени: количество сервисов изменяется вслед за изменением нагрузки, постоянно выходят новые версии сервисов, а старые какое-то время приходится поддерживать. В случае сбоя разобраться не просто, поэтому особое внимание следует уделить наблюдаемости (Observability).
Так же микросервисам присуща всесторонняя децентрализация. Не даром Ребека Парсонс, Нил Форд и Патрик Куа, авторы книги «Эволюционная архитектура», именно микросервисный стиль назвали наиболее подходящим для эволюционного развития архитектурного решения. При наличии централизованного управления эволюционное развитие значительно усложняется за счет внешней координации развития.
Модульный монолит
В заключении хотелось бы привести цитату неизвестного героя из презентации Саймона Брауна: «если вы не можете построить хорошо структурированный монолит, почему вы думаете, что сможете построить хорошо структурированное микросервисное решение».
И когда он говорит о хорошо структурированном монолите — это не пустые слова. Хорошо структурированный монолит обладает такими свойствами, как:
- Высокое сцепление
- Слабая связанность
- Моделирование вокруг бизнес-концепций
- Инкапсуляция данных
- Заменяемость (не так давно, пока тихо и робко, в сообществе снова заговорили об OSGi)
Что в дополнение к этому предлагают микросервисы? Пожалуй:
- Автономная поставка
- Автономное обновление
- Индивидуальная замена
- Независимое масштабирование
- Свобода выбора технологий под каждый отдельный микросервис
Эти дополнения не бесплатны, — сложность перетекает в инфраструктуру. Поэтому, несмотря на всю привлекательность и хайповость микросервисного стиля, выбирать его стоит взвесив все за и против и оценив готовность компании к культурным, техническим и организационным изменениям, требуемым для максимально эффективного использования микросервисов.
1 comment
Comments are closed.