Насколько хорошо вы узнали об архитектурных ловушках оказания услуг?

Эта статья опубликована сообществом Huawei Cloud « Архитектурные ловушки в предоставлении услуг: сколько вы знаете и можете ли их избежать?» ", автор: Ма Ле.

1. Введение

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

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

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

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

Многоуровневая архитектура — это наиболее распространенная архитектура программного обеспечения и фактически стандартная архитектура.

Фактически, человеческое познание также разделено на уровни.В реальной вселенной, например, структура Солнечной системы от внутреннего слоя до внешнего слоя:

2 Как спроектировать иерархическую архитектуру

Размышление об архитектуре программного обеспечения обычно начинается с трех аспектов:

  • (1) Коммуникация между заинтересованными сторонами.

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

  • (2) Раннее принятие решений при проектировании системы.

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

  • (3) Транзитивная абстракция на уровне системы.

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

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

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

●Презентационный уровень;

Пользовательский интерфейс, отвечающий за визуальные эффекты и взаимодействие с пользователем;

●Бизнес-уровень:

Реализовать бизнес-логику;

● Уровень персистентности:

Предоставление данных и операторы SQL размещаются на этом уровне;

● Уровень базы данных:

сохранить данные.

В некоторых проектах между уровнем логики и уровнем персистентности добавляется уровень обслуживания (Сервис), чтобы обеспечить некоторые общие интерфейсы, необходимые для различной бизнес-логики. Запрос пользователя будет последовательно обрабатываться на этих четырех уровнях, и ни один уровень не может быть пропущен.

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

3 различных измерения анализа

  • Общая маневренность: низкая

Анализ: Целостная гибкость — это способность быстро реагировать на меняющиеся обстоятельства.

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

  • Простота развертывания: низкая

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

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

  • Отладка. Тестируемость: высокая.

Анализ: этот шаблон относительно легко протестировать, поскольку компоненты принадлежат определенному уровню в архитектуре и, следовательно, другие уровни могут быть имитированы или заглушены. Разработчики могут имитировать демонстрационные компоненты или экраны, чтобы изолировать тестирование от бизнес-компонентов, или они могут имитировать бизнес-уровень, чтобы протестировать определенные функции экрана.

  • Производительность: Низкая

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

  • Масштабируемость: низкая

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

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

  • Легкость разработки: высокая

Анализ: Простота разработки получила относительно высокую оценку, главным образом потому, что шаблон очень хорошо известен и не слишком сложен для реализации. Поскольку большинство компаний разрабатывают приложения, разделяя наборы навыков по слоям (презентация, бизнес, база данных), этот шаблон становится естественным выбором для большинства разработчиков бизнес-приложений. (Закон Конвея)

4 проблемы, на которые следует обратить внимание при использовании многослойности

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

  • (1) Следует помнить о антипаттерне «выгребная яма».

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

Каждый уровень с большей или меньшей вероятностью может столкнуться с таким сценарием. Главное — проанализировать процент таких запросов. Правило 80/20 поможет вам решить, столкнулись ли вы с антипаттерном «выгребная яма». Если количество запросов превышает 20, вам следует рассмотреть возможность оставить некоторые уровни открытыми.

  • (2) Необходимо учитывать, что многоуровневая архитектура может сделать ваше приложение огромным.

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

5 Резюме

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

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

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

Многоуровневая архитектура в наше время по-прежнему является повсеместной архитектурой из-за простоты использования и понимания разработки, а также из-за следующих преимуществ:

  • Хорошая возможность повторного использования, пока интерфейс остается неизменным и его можно использовать где угодно;
  • Хорошая ремонтопригодность;
  • Хорошая масштабируемость, поддержка поэтапного проектирования.
  • После разумного наслоения общая связанность системы снижается и достигается эффект развязки.
  • Поместите контент с одинаковой логикой и уровнем абстракции на один уровень, чтобы его было легче понимать и развивать.

Нажмите, чтобы подписаться и узнать о новых технологиях Huawei Cloud как можно скорее~

 

Ежегодное обновление основной версии IntelliJ IDEA 2023.3 и JetBrains Family Bucket. Новая концепция «защитного программирования»: обеспечьте себе стабильную работу. GitHub.com поддерживает более 1200 хостов MySQL. Как плавно перейти на версию 8.0? Команда Стивена Чоу по Web3 запустит независимое приложение в следующем месяце. Будет ли Firefox ликвидирован? Выпущен Visual Studio Code 1.85, плавающее окно США CISA рекомендует отказаться от C/C++ для устранения уязвимостей безопасности памяти Ю Чэндун : Huawei выпустит революционные продукты в следующем году и перепишет историю отрасли TIOBE Декабрь: Ожидается, что C# станет языком программирования года написано Лэй Цзюнем 30 лет назад: «Принцип и конструкция экспертной системы обнаружения компьютерных вирусов»
{{o.name}}
{{м.имя}}

Supongo que te gusta

Origin my.oschina.net/u/4526289/blog/10319906
Recomendado
Clasificación