Please enable JavaScript.
Coggle requires JavaScript to display documents.
Микросервисная архитектура (Признаки: отвечает за одну функциональную…
Микросервисная архитектура
Что такое
- сервис предоставляющий удаленное API для использования остальной системой, обладающий только одной узконаправленной функциональной возможностью.
Разбиваем задачу на подзадачи и реализуем каждую из них в виде микросервиса.
Признаки
:
отвечает за одну функциональную возможность
можно развертывать по отдельности
состоит из одного или нескольких процессов
имеет собственное хранилище данных
небольшая команда может сопровождать несколько микросервисов
можно легко заменить
Ответственность за одну возможность
:
У каждого класса должна быть только одна причина для изменения
Собирайте воедино вещи, меняющиеся по схожим причинам
Отделяйте друг от друга вещи меняющиеся по различным причинам
Возможности
:
Бизнес-возможность - действие реализующее предназначение системы
Техническая возможность - нечто необходимое для нескольких других микросервисов
Развертываемость по отдельности
:
Строгий порядок обновления усложнил бы процесс обновления и сделал его очень рискованным
Условия
:
все микросервисы должны быть встроены в отдельные артифакты и пакеты
процесс развертывания должен быть настроен так чтобы обеспечить поддержку индивидуального развертывания при продолжении функционирования остальных микросервисов
Плавающее развертывания - на одном сервере за один раз, влияет на способ взаимодействия
изменения в интефейсе должны быть обратно-совместимыми, чтобы другие микросервисы могли продолжать работать с новой версией так же как со старой.
устойчивость к ошибкам, микросевис должен быть готов к сбоям других микросервисов
развертывание не должно приводить к сбою, а лишь к сокращению функциональности или чуть более длительному времени обработки.
Состоит из одного или нескольких процессов
:
микросервис должен выполняться в отдельном процессе, чтобы оставаться независимым и сохранять возможность отдельного развертывания.
Альтернатива - динамическая загрузка кода, которая позволяет заменить код в работающем процессе.
Несколько процессов: фоновый процесс + процесс хранилища данных
Наличие собственное хранилище
:
должно быть собственное хранилище в котором находятся необходимые ему данные. Для обеспечения завершенной функциональной возможности. Для сохранения слабой связанности. Хранилище принадлежит только ему.
Пример
:
Другие микросервисы могут обращаться к информации о товарах только через интерфейс микросервиса
Product catalog
, а не напрямую в хранилище.
СУБД
Redis
Индекс
Elasticsearch
Недостаток
:
-необходимость администрирования и сопровождения нескольких БД
технологически сложные
Возможность сопровождения небольшой командой разработчиков
:
количество строк кода
количество реализуемых технических возможностей
сценарии исполнения
функциональные точки
объем работ по сопровождению
Руководящий принцип
:
небольшая команда разработчиков, скажем пятеро, должна быть способна сопровождать как минимум 5 сервисов.
Термин
сопровождать
означает все аспекты:
разработка новой функциональности
выделение новых объектов из больших старых
обслуживание при эксплуатации в производственной среде
мониторинг
тестирование
исправление ошибок (
bugfix
)
Заменяемость
:
Возможность переписать его с нуля за разумное время
Выгода
:
пластичность
масштабируемость
отказоустойчивость
малое время разработки
непрерывная доставка ПО
легкость сопровождения
устойчивость к ошибкам
Непрерывная доставка
:
применяемая при разработке практика обеспечения возможности быстрого развертывания ПО в производственной среде в любой момент.
быстро разработать и изменить
тестирование с помощью автоматизированных тестов
развертывать независимо
эффективно
Требования
:
ПО всегда должно находится в рабочем состоянии (контроль качества, повышение уровня автоматизации тестов, разбиение разработки на небольшие куски)
процесс должен быть надежным, повторяемым, быстрым
полная автоматизация процесса развертывания и высокая степень мониторинга
требует вовлечения в процесс всех (предприниматели, разработчики, эксперты информационной безопасности, системные администраторы)
культура
DevOps
DevOps
(Development & operations) - методология разработки ПО нацеленная на активное взаимодействие и интеграцию специалистов по разработке и специалистов по информационно-технологическому обслуживанию. Является неотъемлемой частью микросервисов.
Высокий уровень удобства сопровождения (грамотно спроектированные и разработанные микросервисы):
единая функциональная возможность
свое хранилище
автоматизированные тесты
небольшая команда разработчиков
разворачивать по отдельности
использовать облегченные технологии
стараться избегать сложных frameworks
Надежность и масштабируемость
:
Распределенная архитектура позволяет масштабировать каждый сервис отдельно с учетом узких мест
асинхронное взаимодействие с помощью событий (отказоустойчивость), где требуется синхронное взаимодействие.
Недостатки
:
сложное для осмысления и тестирования
обмен сообщениями происходит на порядок медленнее чем вызовы методов внутри процессов
большое количество развертываний, сложная схема установки
собственная база кода, рефакторинг с перемещением кода требует больших усилий.
Производительность
удаленные сообщения
длинная цепочка из удаленных сообщений
С нуля или на базе существующей системы
сильная связанность внутри базы кода
скрытая связанность
развертывание приложения
архитектура рассчитана на все случаи жизни
возможность раздельного развертывания системы
сильная автоматизированная система развертывания
предметная область, чтобы правильно распознать и разделить независимые бизнес возможности
широка сфера действия системы (сложность, затраты)
срок существования
Многократно использование кода (библиотеки)
увеличиваются зависимости
много сценариев использования (совместно используемая библиотека привносит определенную связанность между применяющими ее сервисами)
никогда не следует использовать бизнес код повторно в различных микросервисах, часто лучше писать сервис с нуля, а не добавлять функциональность к существующему
Архитектура (проектирование и реализация)
Микросервисы
- упрощенный вариант сервис-ориентированной архитектуры (SOA), в которой каждый сервис ориентирован на выполнение
только одного действия.
Распределенная система со значительным количеством совместно работающих микросервисов
Виды
:
монолитная
SOA
микросервисы
Сопровождение, удобство, масштабирование
Область действия
POS-система
Взаимодействие микросервисов
Микросервис, браузер - микросервис - БД
Команды, запросы, события
Хранение данных, репликация данных
Framework
Nancy
, .Net Core
Стандарт
OWIN
Библиотека
Polly
Свойства
:
работает в собственном отдельном потоке
может быть развернут отдельно
имеет собственное хранилище данных
взаимодействует с другими микросервисами (на любом языке)
Service description
- как обмениваются сообщениями друг с другом
служебная шина
двоичный протокол Thrift
HTTP (наиболее часто)
Характеристики
:
пластичность
масштабируемость
отказоустойчивость
небольшая длительность производственного цикла (начало создания .. внедрение в производство)
Обслуживание запросов пользователя:
API gateway - запрос AJAX
асинхронно вне контекста исходящего запроса
кеширование
побочные действия
часть обработки происходит синхронно, а часть асинхронно