Сервис-ориентированная архитектура


Се́рвис-ориенти́рованная архитекту́ра (СОА, англ. service-oriented architecture- SOA) — модульный подход к разработке программного обеспечения, базирующийся на обеспечении удаленного использования по стандартизированным протоколам распределённых, слабо связанных[en], легко заменяемых компонентов (сервисов) со стандартизированными интерфейсами.

Программные комплексы, разработанные в соответствии с СОА, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но есть и другие реализации (например, на базе jini, CORBA, на основе REST).

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

Получила распространение в конце 1990-х — начале 2000-х годов. С середины 2010-х годов обрела популярность микросервисная архитектура — вариант СОА, базирующийся на применении, насколько это возможно, минимальных по размеру сервисов.

Сервис-ориентированная архитектура не привязана к определённой технологии. Она может быть реализована с использованием широкого спектра технологий, включая такие технологии как REST, RPC, DCOM, CORBA или веб-сервисы. SOA может быть реализована с использованием одного из этих протоколов и, например, дополнительно может использовать механизм файловой системы для обмена данными.

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