- •Введение
- •1. Цели и задачи архитектора информационных систем
- •1.1. Цели создания информационных систем
- •1.2. Базовые структуры информационных систем
- •1.3. Уровни реализации архитектуры ИС
- •1.4. Атрибуты качества информационных систем
- •1.5. Сопровождение бизнес-ориентированных ИС
- •2.2. Структурное программирование
- •2. Парадигмы программирования
- •2.1. Модульное программирование
- •2.4. Функциональное программирование
- •2.5. Общие тенденции развития парадигм программирования
- •3. Чистая архитектура
- •3.1. Кричащая архитектура
- •3.2. Принципы SOLID
- •3.2.1. Принцип единственной ответственности
- •3.2.2. Принцип открытости/закрытости
- •3.2.3. Принцип подстановки Б. Лисков
- •3.2.4. Принцип разделения интерфейсов
- •3.2.5. Принцип инверсии зависимостей
- •3.3. Программные компоненты и принципы их организации
- •3.3.1. Диаграмма компонентов
- •3.3.2. Принципы взаимосвязи компонентов
- •3.3.3. Принцип эквивалентности повторного использования и выпусков
- •3.3.4. Принцип согласованного изменения
- •3.3.5. Принцип совместного повторного использования
- •3.3.6. Сравнение принципов взаимосвязи компонентов
- •3.4. Компонентный подход как способ динамического изменения архитектуры ИС
- •3.4.1. Принцип ацикличности зависимостей
- •3.4.2. Принцип устойчивых зависимостей
- •3.4.3. Принцип устойчивости абстракций
- •3.4.4. Графическая интерпретация принципов SDP и SAP
- •3.5. Вычислительные архитектуры ИС
- •3.5.1. Клиент-серверная архитектура
- •3.5.2. Трёхзвенная архитектура
- •3.5.3. Микросервисная архитектура
- •3.6. Шаблоны и антишаблоны проектирования ИС
- •3.6.1. Шаблоны проектирования
- •3.6.2. Антишаблоны проектирования
вать независимо от других в соответствии с функциональными
требованиями, предъявляемыми к ИС;
–более высокую надёжность в сравнении с клиент-серверным приложением: при грамотной реализации системы промежу-
точного хранения данных сбой одного из уровней не повлияет на доступность и производительность других уровней;
–высокий уровень безопасности: поскольку уровень представле-
ния и уровень данных не могут напрямую взаимодействовать
друг с другом.
Трёхзвенная архитектура тесно взаимосвязана с компонентно-
ориентированным подходом: слой представления в таких системах рас-
полагается на уровне тонкого клиента (представление данных) и уровне СУБД (хранение данных); слой программных сущностей и бизнес-
логики располагается на сервере приложений; взаимодействие сервера приложений с двумя другими звеньями организуется посредством адаптеров.
3.5.3. Микросервисная архитектура
При всех преимуществах трёхзвенная архитектура имеет и свои недостатки, главным из которых все также является ограниченная мас-
штабируемость ИС. Сложные многокомпонентные вычислительные системы в своей работе потребляют значительное количество ресурсов.
Зачастую проблемой является простой запуск одного слабо нагружен-
ного компонента системы, когда запущенный компонент потребляет ресурсы, но при этом выполняет лишь небольшое количество задач. В
такой ситуации целесообразно запускать такие компоненты по требо-
ванию: когда есть непосредственная необходимость выполнить вычис-
ления. Подобный подход (т.е. запуск компонента по требованию) мо-
55
жет применяться и для высоконагруженных компонентов, когда для выполнения сложных вычислительных задач запускается несколько эк-
земпляров одного и того же компонента. Такой процесс называется
балансировкой нагрузки [45].
Для упрощения реализации систем, поддерживающих балансиров-
ку нагрузки, применяется так называемая сервис-ориентированная вы-
числительная архитектура или её более строгий вариант: микросервис-
ная архитектура [46].
Микросервисная архитектура является расширением трёхзвенной архитектуры, при которой осуществляется вертикальное разделение слоя СУБД (см. рис. 14).
Рисунок 14 – Схема микросервисной вычислительной архитектуры
В такой архитектуре отдельная бизнес-задача реализуется посред-
ством обособленного компонента, называемого микросервисом. Мик-
росервис для хранения результатов вычисления использует собствен-
ную изолированную базу данных. Объединение микросервисов в еди-
ную ИС выполняется на уровне «программного шлюза», выполняюще-
го роль обычного маршрутизатора, не выполняющего вычислений.
56
Задачи клиентского компонента остаются такими же, как и в трёхзвен-
ной архитектуре.
Интеграция моделей предметной области в таких системах может выполняться на основе агрегатов [23].
Микросервисная архитектура имеет следующие преимущества:
–степень масштабирования ограничена лишь имеющимися в на-
личии серверными вычислительными машинами;
–возможность запуска компонента по требованию;
–соответствие системы принципу CRP;
–возможность плавной миграции функционала от одного ком-
понента к другому (снижение ограничений, накладываемых принципами REP и CCP);
–возможность реализации системы с помощью различных язы-
ков программирования при условии использования стандарти-
зированного протокола обмена данными между сервисами и программным шлюзом;
–возможность совместной работы большого числа обособлен-
ных групп разработчиков;
–упрощение тестирования отдельных компонентов системы.
Главным недостатком использования микросервисной вычисли-
тельной архитектуры является сложность её реализации и сопровожде-
ния. Другими словами, применение микросервисной архитектуры целе-
сообразно при наличии высококвалифицированных архитекторов в ко-
манде разработки, а также большого штата разработчиков и админист-
раторов системы.
Не рекомендуется использовать микросервисную архитектуру при реализации сравнительно простых ИС. В силу того, что все из вышепе-
речисленных вычислительных архитектур можно реализовать посред57
