Выбор Архитектурного Стиля. Часть 4

В конце октября мы запускаем новую группу курса «Архитектура и шаблоны проектирования» и приглашаем всех специалистов на бесплатный демо-урок.

«Шаблон адаптера» , который проведет Матвей Калинин, главный разработчик одного из крупнейших банков страны.



Выбор архитектурного стиля.
</p><p>
 Часть 4



Введение

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

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

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

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

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

Эти услуги основаны на бизнес-возможностях и могут быть развернуты независимо с помощью полностью автоматизированного механизма развертывания.

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



Проблема выбора

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



Независимое развертывание

С одной стороны, в микросервисной архитектуре нет необходимости координировать доставку и развертывание разного функционала.

Это обеспечивает быстрый запуск, а сбой при развертывании не приводит к сбою системы.

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

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

Кроме того, усложняются процессы тестирования и обслуживания.

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



Повышение отказоустойчивости

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

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

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



Гибкость и ясность

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

Разработчики хорошо понимают свою часть системы.

Но независимость разработчиков приводит к хорошему эффекту, когда никто не видит всей картины.



Изменение стека технологий

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

Ошибочное архитектурное решение не фатально, так как его можно исправить в кратчайшие сроки.

Но наличие множества подходов и технологий затрудняет отчуждение услуг.

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



Техническая сложность

На основании вышеизложенного можно сделать вывод, что разработка микросервисов — это достаточно сложная техническая задача, требующая особых навыков разработчиков, технических специалистов (DevOps) и тестировщиков.

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



Распространенные заблуждения

Существует ряд заблуждений, связанных с микросервисной архитектурой.

Вот некоторые из них:

  1. Код станет чище.

    Код не станет чище, если не будут предприняты усилия по его очистке.

  2. Проще писать модули, решающие одну задачу.

    Это не проще, так как у таких модулей будет много интеграций.

  3. Работает быстрее монолита.

    Monolith работает быстрее из-за меньшего количества сетевых вызовов.

  4. Инженерам будет проще, если им не придется работать с единым кодом.

    база.

  5. Это самый простой способ обеспечить автоматическое масштабирование.

  6. И где-то замешан Докер.



Заключение

Предлагаю закончить на этой радостной ноте.

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



Выбор архитектурного стиля.
</p><p>
 Часть 4

Теги: #отказоустойчивость #архитектура #Высокая производительность #Микросервисы #Системный анализ и проектирование #Распределенные системы #масштабируемость #Промышленное программирование #высокая нагрузка #сервис #монолит #soa #архитектура #надежность #стиль #сервисный #сервисный #распределенный # распределенный #распределенный #связность #связность #инерция #ориентированный #ориентированный
Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.