Home - DVyunkov/FMCG_MacroService GitHub Wiki
Макро-сервисная архитектура
Архитектура КИС (Корпоративной Информационной Системы) основанная на макро-сервисном подходе.
Почему необходимо перейти на Макросервисную архитектуру
Современные темпы развития Информационных систем и расширение бизнеса ставят перед ИТ проблему обеспечения быстрого развития, при работе 24х7. Технологические окна постоянно уменьшаются. А количество функционала, который требует автоматизации растет. Стало невозможно все задачи бизнес решить использованием только одной информационной системой (Моноархитектура).
Так же использование одной системы с большим количеством модулей приводит к необходимости останавливать весь бизнес, для проведения технических работ и обновлений. В некий момент эту мегасистему становиться невозможно обновить - заменить на более современную или даже просто перейти на следующую версию. Физически невозможно остановить весь бизнес и одним прыжком перейти на другую систему.
Поэтому зоопарк систем растет - появляется множество систем разных производителей, разных версий. Пока таких систем не много еще можно управлять этим зоопарком без единого подходе - но постепенно интеграция становиться все более сложно и не управляемой. С аналогичной проблемой столкнулись несколько лет назад банковский сектор. Применение микросервисной архитектуры позволил сделать резкий скачок в увеличении количества электронных сервисов предоставляемых банками, при этом обеспечивается круглосуточная работа этих сервисов.
Создание взаимодействий между различными информавциоными системами без следования шаблону проектирования — это все равно что сесть в автомобиль и надеяться найти дорогу в новый город без карты (или телефона с GPS). Вы можете оказаться в пункте назначения, но маршрут, вероятно, не был самым эффективным.
Здесь на помощь приходит архитектура микрослужбы. Микрослужбы обеспечивают подход к разработке и развертыванию программного обеспечения, который идеально соответствует требованиям к гибкости, масштабируемости и надежности современных облачных приложений.
Если проанализировать потребности FMCG, то мы видим, что многие идеи Микросервисного подхода можно использовать и тем самым решить острые задачи стоящие перед ИТ департаментом. Но в отличии от банковского сектора - в FMCG работа каждого сервиса на порядок сложнее. Поэтому был создан Макросервисный подход использующий преимущество Микросервисной архитектуры и специфику работы FMCG.
Основная идея
Как следует из названия, архитектура Макрослужб — это подход, при котором КИС (Корпоративная Информационная Система) разбивается на набор отдельных информационных систем (Макросервисов), где каждый сервис обеспечивает работу только своих бизнес-процессов и взаимодействует с остальными сервисами по четким правилам. Каждая ИС реализует специфические возможности в предметной области и свою бизнес-логику в рамках определенного ограниченного контекста, должна разрабатываться автономно и развертываться независимо. Наконец, каждая Макрослужба должна иметь собственную модель данных предметной области и логику предметной области. Макрослужбы могут иметь разный функционал, версию и быть разработаны разными производителями. Основное требование - что бы они выполняли требования к взаимодействию между системами.
Некоторые ключевые характеристики Макросервисов:
- Макросервис — это независимое и слабо связанное решение.
- Каждый сервис имеет отдельную базу кода, которой может управлять небольшая группа разработчиков.
- Макросервис развертывается независимо. Команда может обновить существующую службу без перестройки и повторного развертывания других систем.
- Сервисы несут ответственность за сохранение своих данных или внешнего состояния в соответствующих базах данных.
- Макросервисы взаимодействуют друг с другом с помощью четко определенных API. Сведения о внутренней реализации каждой службы скрыты от других служб.
- Поддерживается программирование Polyglot. Например, Макросервис не обязательно должны использовать один и тот же язык, технологический стек, библиотеки или платформы.
Порядок внедрения
- Считаем каждую информационную систему отдельным не зависимым сервисом (Макросервисом), в некоторых случаях, Макросервисом можно рассматривать даже отдельный модуль системы.
- Формируем принципы обмена между этими Макросервисами на основе сообщений стандартизированного формата.
- Создаем единую систему мониторинга работы интеграционной системы.
- Описываем правила взаимодействия между разработчиками и поддержкой
Преимущества данной архитектуры
Такой подход позволяет:
- Повысить устойчивость работы - выход из строя одной информационной системы повлияет на работу других систем, только в части процессов затрагивающих обе системы.
- Каждую систему обновлять, перегружать, изменять и даже заменять незаметно для остальных информационных систем.
- Упростить взаимодействие между сотрудниками отвечающими за разные информационные системы.
- Упрощается масштабирование. Например: открыли новый склад для запуска достаточно скопировать и перенастроить существующий сервис.
- Гибкое перераспределение ресурсов - можно добавить или убрать ресурсы у любого сервиса не затрагивая работу других сервисов.