Принцип автономности сервиса - Service autonomy principle

Автономность обслуживания это принцип дизайна, который применяется в сервис-ориентированность парадигма дизайна, предоставлять Сервисы с улучшенной независимостью от среды исполнения.[1] Это приводит к большей надежности, поскольку службы могут работать с меньшей зависимостью от ресурсов, над которыми практически нет контроля.

Цель

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

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

Заявление

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

Автономность во время разработки

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

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

Автономность во время работы

Автономность во время выполнения относится к степени контроля службы над логикой ее решения.[3] обрабатывается средой выполнения. Чем больше у службы контроля над своей средой выполнения, тем более предсказуемо ее поведение. Автономность во время выполнения достигается за счет предоставления службе выделенных ресурсов обработки. Например, если логика службы выполняет задачи, требующие интенсивного использования памяти, службу можно развернуть на сервере с зарезервированными или сохраненными ресурсами. Точно так же, предоставляя локально кэшированные копии данных, где это применимо, можно уменьшить зависимость службы от удаленной общей базы данных. В результате общая автономность сервиса увеличивается ...

Существует прямая связь между автономностью во время выполнения и автономностью во время разработки. Увеличение автономности во время разработки автоматически увеличивает возможность развития среды реализации службы.

Типы услуг

Хотя увеличение автономии сервисов до максимальной степени всегда желательно, не всегда возможно спроектировать каждый сервис с максимальной автономией во время разработки и выполнения. В результате необходимо установить приоритеты услуг, чтобы их автономия могла быть решена в соответствии с их ценностью для бизнеса. Это можно сделать, взглянув на функциональный контекст службы. Сервисы, функциональный контекст которых не зависит от какого-либо конкретного бизнес-процесса, например юридическое лицо [4] и полезность[5] сервисы, являются хорошими кандидатами для увеличения своей автономии. Это потому, что они предлагают функции, которые интересны различным типам потребителей. С другой стороны, сервисы, специфичные для бизнес-процессов, например задача[6] и оркестрированные службы задач, менее пригодны для повторного использования и зависят от индивидуальной автономности составляемых ими служб.

Соображения

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

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

Рекомендации