оригинал:D zone.com/articles/5-…
Можно комбинировать со статьями Big Brother Bird's Nest.Шаблоны архитектуры программного обеспечениячитать.
существуетГлобальный саммит по архитектуре программного обеспеченияНаконец, мы обсудили множество шаблонов архитектуры программного обеспечения, и я решил написать об этом статью, сосредоточившись на выводах ведущих архитекторов программного обеспечения.
Во-первых, что такое архитектурные шаблоны программного обеспечения?
Архитектурные шаблоны доказали свою эффективность, поэтому мы можем продолжать их повторное использование. Архитекторы программного обеспечения приобретают и повторно используют архитектурные шаблоны, доказавшие свою эффективность.
В частности, архитектурные шаблоны — это проектные решения, неоднократно обнаруживаемые на практике, обладающие хорошими свойствами повторного использования и описывающие класс архитектур.
Разработку архитектуры можно рассматривать как процесс выбора, адаптации и комбинирования шаблонов. Архитектор программного обеспечения должен решить, как создать экземпляр шаблона и привести его в соответствие с ограничениями конкретного контекста и проблемы. Мы обсудим это более подробно позже.
Mark Richardsнаписал книгу под названиемSoftware Architecture Patternsкнига. По его словам, существует 5 основных моделей архитектуры программного обеспечения: микроядро, микросервис, многоуровневая архитектура, основанная на событиях и основанная на пространстве.
1. Режим микроядра
Шаблон архитектуры микроядра также известен как шаблон архитектуры плагинов. Часто используется при создании систем со сменными компонентами.
Он способен адаптироваться к программным системам с изменяющимися системными требованиями. Отделите минимальную базовую функциональность от расширенной функциональности и частей, специфичных для клиента. Эти расширения также могут быть подключены к розеткам и скоординированы.
Архитектурный шаблон микроядра — это естественный шаблон для реализации приложений, основанных на продуктах. Приложения на основе продуктов — это приложения, упакованные как сторонние продукты и доступные для загрузки в различных версиях. Однако многие компании также разрабатывают и выпускают свои внутренние бизнес-приложения, такие как программные продукты, полные версии, заметки о выпуске и подключаемые функции.
Архитектурный шаблон микроядра позволяет добавлять дополнительные приложения в качестве подключаемых модулей к основному приложению, обеспечивая расширяемость, а также разделение и изоляцию функций.
Архитектурный шаблон микроядра состоит из двух типов архитектурных компонентов: базовой системы и подключаемых модулей. Логика приложения разделена между независимыми подключаемыми модулями и базовой системой, что обеспечивает расширяемость, гибкость и изоляцию функциональности приложения и настраиваемой логики обработки. А базовая система архитектурной модели микроядра традиционно содержит только самый минимум функциональных возможностей, необходимых для работы системы.
Возможно, лучшим примером микроядерной архитектуры является Eclipse IDE. Загрузка базового продукта Eclipse предоставляет только редактор. Тем не менее, вы можете добавить различные плагины, и он станет настраиваемым и полезным продуктом.
Преимущество
- Отличная гибкость и масштабируемость
- Некоторые реализации позволяют добавлять плагины во время выполнения.
- хорошая переносимость
- легко развернуть
- Быстро реагировать на изменяющуюся среду
- Модули подключаемых модулей можно тестировать по отдельности, и они могут быть легко смоделированы базовой системой для демонстрации или создания прототипа конкретной функциональности с небольшими изменениями в основной системе или без таковых.
- Высокая производительность, поскольку приложения можно настраивать и упрощать, чтобы они включали только те функции, которые необходимы.
Подходит для
- Приложение, которое получает данные из разных источников, преобразует их и записывает в разные места назначения.
- Приложение рабочего процесса
- Приложение для планирования задач и заданий
2. Шаблон микросервиса
Когда вы пишете приложение в виде набора микросервисов, вы фактически пишете несколько приложений, которые работают вместе. У каждого микросервиса есть свои определенные обязанности, которые команды могут разрабатывать независимо от других микросервисов. Единственная зависимость между ними – общение. Когда микросервисы взаимодействуют друг с другом, вы должны убедиться, что сообщения, отправляемые между ними, остаются обратно совместимыми.
Преимущество
- Каждый микросервис можно писать, поддерживать и развертывать независимо.
- Простота масштабирования, нужно масштабировать только те микросервисы, которые необходимо масштабировать.
- Части приложения легче переписывать, потому что они меньше и меньше связаны с другими частями.
- Новые члены команды могут работать быстрее
- Приложения легче понять и модифицировать
- Высокая ремонтопригодность и возможность тестирования — обеспечивает быструю и частую разработку и развертывание.
- Возможность независимого развертывания — команды могут развертывать свои сервисы без координации с другими командами.
Подходит для
- Сайт с виджетами
- Корпоративный центр обработки данных с четко определенными границами
- Быстро разрабатывать новые бизнес-приложения и веб-приложения
- Команда разработчиков распределена по всему миру
3. Шаблон многоуровневой архитектуры
Наиболее распространенным архитектурным паттерном является многоуровневый архитектурный паттерн. Многоуровневый архитектурный шаблон представляет собой n-уровневый архитектурный шаблон, в котором компоненты распределены, а каждый уровень независим. Большинство программ использует этот архитектурный шаблон. Это означает, что все компоненты взаимосвязаны и не зависят друг от друга. Каждый уровень многоуровневого архитектурного шаблона имеет определенные роли и обязанности в приложении. Например, уровень представления будет отвечать за обработку всей логики взаимодействия с пользовательским интерфейсом и браузером, а бизнес-уровень будет отвечать за соблюдение определенных бизнес-правил, связанных с запросами.
Мощной особенностью многоуровневого архитектурного шаблона является разделение задач между компонентами. Компоненты определенного уровня обрабатывают только логику, относящуюся к этому уровню.
Преимущество
- Высокая тестируемость, поскольку компоненты принадлежат к определенному уровню в архитектуре, а другие уровни могут быть смоделированы, что делает этот шаблон относительно простым для тестирования.
- Высокий уровень простоты разработки делает этот шаблон очень известным, и его не слишком сложно реализовать, и большинство компаний разрабатывают приложения, разделяя свои наборы навыков по уровням, поэтому этот шаблон становится естественным выбором для разработки большинства бизнес-приложений.
- ремонтопригодность
- Легко назначать отдельные роли
- Архитектуру каждого уровня можно обновлять и улучшать независимо друг от друга.
Подходит для
- Стандартные бизнес-приложения не ограничиваются операциями CRUD.
- Новые приложения, которые нужно создавать быстро
- Команда неопытных разработчиков, которым не хватает знаний о других архитектурах
- Приложения, требующие строгих стандартов ремонтопригодности и тестируемости
4. Событийный режим
Это наиболее распространенная распределенная асинхронная архитектура для разработки масштабируемых систем. Архитектура состоит из одноцелевых компонентов обработки событий, которые прослушивают события и обрабатывают их асинхронно. Архитектура, управляемая событиями, создает центральный блок, который принимает все данные, а затем делегирует их отдельным модулям, обрабатывающим определенные типы.
Преимущество
- Легко адаптируется к сложной, часто хаотичной среде
- Высокая масштабируемость
- Легко расширяется по мере появления новых типов событий
Подходит для
- Асинхронная система с асинхронным потоком данных
- пользовательский интерфейс
5. Пространственные модели
Пространственные архитектурные шаблоны специально разработаны для решения проблем масштабируемости и параллелизма. Это также полезный архитектурный шаблон для приложений с переменными и непредсказуемыми одновременными пользователями. Высокая масштабируемость достигается за счет устранения ограничений центральной базы данных и использования воспроизводимой сетки в памяти.
Космическая архитектура предназначена для предотвращения функциональных сбоев при высокой нагрузке за счет разделения логической обработки и хранения на нескольких серверах.
Преимущество
- Высокая адаптивность к изменяющимся условиям
- Хотя космические архитектуры, как правило, не разделены и не распределены, они динамичны, а инструменты в облаке позволяют легко размещать приложения на серверах, упрощая развертывание.
- Высокая производительность этого паттерна достигается за счет доступа к данным в памяти и механизма кэширования.
- Уменьшение зависимости от централизованной базы данных или полное ее отсутствие, устранение этого узкого места и обеспечение высокой масштабируемости.
Подходит для
- Массовые данные, такие как потоки кликов или пользовательские журналы.
- Малоценные данные, которые могут время от времени теряться без серьезных последствий.
- Социальная сеть