* [Topics](/en/topics "Topics")
* [Containers](/en/topics/containers "Containers")
* What is service-oriented architecture (SOA)?
What is service-oriented architecture (SOA)?
============================================
Published  July 27, 2020•*4*-minute read
Copy URL
Jump to section
---------------
OverviewHow does it work?BenefitsSOA rolesSOA vs. microservicesRed Hat and microservices
Overview
--------
Service-oriented architecture (SOA) is a type of software design that makes software components reusable using service interfaces that use a common communication language over a network.
A service is a self-contained unit of software functionality, or set of functionalities, designed to complete a specific task such as retrieving specified information or executing an operation. It contains the code and data integrations necessary to carry out a complete, discrete business function and can be accessed remotely and interacted with or updated independently.  
In other words, SOA integrates software components that have been separately deployed and maintained and allows them to communicate and work together to form software applications across different systems.
How does service-oriented architecture work?
--------------------------------------------
Before SOA came into use in the late 1990s, connecting an [application](/en/topics/cloud-native-apps/what-is-an-application-architecture) to services housed in another system was a complex process involving deep point-to-point [integration](/en/topics/integration)—connectivity, routing, translation of data models, etc.—which then had to be recreated by developers with each new project. This model was known as “monolithic” because the code for the whole app was built into one deployment. If one aspect of the app didn’t work correctly, the whole thing had to be taken offline temporarily to be fixed and then deployed again as a new version.
By exposing services using standard network protocols (like [SOAP](/en/topics/integration/whats-the-difference-between-soap-rest), JSON, ActiveMQ or Apache Thrift) to send requests or access data, SOA prevents developers from having to perform integration from scratch. Instead, they can use patterns called enterprise service buses (ESBs), which perform the integration between a centralized component and backend systems and then make them available as service interfaces. This also allows developers to reuse existing functions instead of recreating them.
In a service-oriented architectural style, services communicate using a system of “loose coupling.” This is a way of interconnecting components (also called “elements”) in a system or network so that they can pass information or coordinate a business process while reducing the dependencies between them. This, in effect, creates a new app.
[Create an agile infrastructure—and enable an adaptive organization](/en/resources/mi-agile-integration-ebook "Agile integration: A blueprint for enterprise architecture")
Red Hat resources
-----------------
[Keep reading](/en/resources "Keep reading")
Benefits over monolithic approach
---------------------------------
* **Faster time to market and greater flexibility:** The  reusability of services makes it much easier and faster to assemble applications, instead of developers starting from scratch each time as would be the case with monolithic applications.
* **Use legacy infrastructure in new markets:** SOA makes it easier for developers to take the functionality of one platform or environment and scale and extend it to new ones.
* **Reduced costs from greater agility and more efficient development**
* **Easy maintenance:** Because all services are self-contained and independent, they can be modified and updated as needed without affecting other services.
* **Scalability:** Since SOA permits services to run across multiple services, platforms, and programming languages, scalability is greatly increased. And SOA uses a standardized communication protocol, allowing enterprises to decrease interaction between clients and services. Lowering this level of interaction allows apps to be scaled with less pressure and inconvenience.
* **Greater reliability:** Since it’s easier to debug smaller services than large code, SOA generates apps that are more reliable.
* **Convenience of availability:** SOA facilities are available to anyone.
SOA roles
---------
The building blocks of a service-oriented architecture are made up of 3 roles.
1. ### Service provider
   A service provider creates web services and provides them to a service registry. The service provider is responsible for the terms of use of the service.
2. ### Service broker or service registry
   A service broker or service registry is responsible for providing information about the service to a requester. A broker may be public or private.
3. ### Service requester or service consumer
   A service requester finds a service in a service broker or service registry and then will connect with the service provider to receive the service.
Service-oriented architecture vs. microservices
-----------------------------------------------
The concept of services introduced by service-oriented architecture has become what is now a central component of modern [cloud computing](/en/topics/cloud-computing) and [virtualization](/en/topics/virtualization) in things like [middleware](/en/topics/middleware/what-is-middleware) and [microservices](/en/topics/microservices/what-are-microservices).
Because of their similarities, SOA and microservices architecture are often confused. The main characteristic that can help differentiate between them is their scope: SOA is an enterprise-wide approach to architecture, while microservices is an implementation strategy within application development teams.
They also communicate to their respective components differently, with SOA using an ESB while microservices can communicate with each other statelessly, through language-agnostic [APIs](/en/topics/api). The language-agnostic aspect of APIs in microservices also allows dev teams to choose what tools they want to work with. In these ways, microservices can be more tolerant and flexible.
SOA is also sometimes confused with [Software-as-a-service](/en/topics/cloud-computing/what-is-saas). SaaS is a form of cloud computing that delivers a cloud application—and all its underlying IT infrastructure and platforms—to users. Web services in SOA may be delivered by service providers as SaaS applications. Typically, a cloud service provider (like AWS, Azure, or IBM Cloud) manages the cloud environment on which the SaaS application is hosted.
Users interact with the software through a web browser on their computer or mobile devices. They may use APIs like REST or SOAP to connect the software to other functions.
[There’s more to learn about microservices](/en/topics/microservices "topic | Understanding microservices")
Red Hat and microservices
-------------------------
Because of advancements in container technology, microservices have become the foundation for cloud-native applications—loosely-coupled microservices that are deployed in Linux containers and connected through APIs or a mesh network for message routing.
Each element implements a business capability and is developed independently by small DevOps teams using workflows like [continuous integration and continuous deployment (CI/CD)](/en/topics/devops/what-is-ci-cd). This means faster software development, automatic deployment, and regular updates without the limitations of monolithic development cycles.
Through Red Hat’s open source portfolio, which includes [Red Hat](/en/enterprise-linux-8)[®](/en/technologies/linux-platforms/enterprise-linux)[Enterprise Linux](/en/enterprise-linux-8)[®](/en/technologies/linux-platforms/enterprise-linux) and [Red OpenShift](/en/technologies/cloud-computing/openshift), Red Hat is able to partner with enterprises who want to move their infrastructure and application development into the fast-paced and adaptable environment of cloud computing, gradually, while still getting the most from their pre-existing infrastructure.
[Continue reading](/en/topics/microservices/why-choose-red-hat-microservices "article | Why choose Red Hat for microservices?")
Hub
The official Red Hat blog
-------------------------
Get the latest information about our ecosystem of customers, partners, and communities.
[Keep reading](/en/blog "The official Red Hat blog")
All Red Hat product trials
--------------------------
Our no-cost product trials help you gain hands-on experience, prepare for a certification, or assess if a product is right for your organization.
[Keep reading](/en/products/trials "All Red Hat product trials")
Keep reading
------------
### What is a Linux container?
Find out more about Linux containers, which are a set of 1 or more processes that are isolated from the rest of the system.
[Read the article](/en/topics/containers/whats-a-linux-container "article | what is a linux container?")
### What is container orchestration?
Container orchestration automates the deployment, management, scaling, and networking of containers.
[Read the article](/en/topics/containers/what-is-container-orchestration "article | what is container orchestration?")
### What is Kubernetes?
Kubernetes is a container orchestration platform that eliminates many manual processes involved in deploying and scaling containerized applications.
[Read the article](/en/topics/containers/what-is-kubernetes "article | what is kubernetes?")
Containers resources
--------------------
### Related content
* Blog post
  [Red Hat Named a Leader in 2025 Gartner® Magic Quadrant™ for Container Management for the Third Consecutive Year](/en/blog/red-hat-named-leader-2025-container-management)
* Blog post
  [Zero trust starts here: Validated patterns for confidential container deployment](/en/blog/validated-patterns-confidential-container-deployment)
* Blog post
  [Deploy sensitive workloads with OpenShift confidential containers](/en/blog/deploy-sensitive-workloads-with-openshift-confidential-containers)
* Blog post
  [Confidential containers on Microsoft Azure with Red Hat OpenShift Sandboxed Containers 1.10 and Red Hat Build of Trustee](/en/blog/confidential-containers-microsoft-azure-red-hat-openshift-sandboxed-containers-110-and-red-hat-build-trustee)
### Related articles
* [What is a Linux container?](/en/topics/containers/whats-a-linux-container)
* [What is container orchestration?](/en/topics/containers/what-is-container-orchestration)
* [What is a service mesh?](/en/topics/microservices/what-is-a-service-mesh)
* [Stateful vs stateless applications](/en/topics/cloud-native-apps/stateful-vs-stateless)
* [What is Kubernetes?](/en/topics/containers/what-is-kubernetes)
* [Red Hat OpenShift on VMware](/en/technologies/cloud-computing/openshift/vmware)
* [What is KubeVirt?](/en/topics/virtualization/what-is-kubevirt)
* [Why use Red Hat Ansible Automation Platform with Red Hat OpenShift?](/en/technologies/cloud-computing/openshift/ansible-on-openshift)
* [What is Podman Desktop?](/en/topics/containers/what-is-podman-desktop)
* [What is Podman?](/en/topics/containers/what-is-podman)
* [What is application integration?](/en/topics/cloud-native-apps/application-integration)
* [What are hosted control planes?](/en/topics/containers/what-are-hosted-control-planes)
* [What is the Kubernetes Java client?](/en/topics/cloud-computing/what-is-kubernetes-java-client)
* [What is kubernetes security?](/en/topics/containers/kubernetes-security)
* [Red Hat OpenShift for developers](/en/technologies/cloud-computing/openshift/developers)
* [Containers vs VMs](/en/topics/containers/containers-vs-vms)
* [Edge computing with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/edge-computing)
* [How Kubernetes can help AI/ML](/en/topics/cloud-computing/how-kubernetes-can-help-ai)
* [What is Kubeflow?](/en/topics/cloud-computing/what-is-kubeflow)
* [What are microservices?](/en/topics/microservices/what-are-microservices)
* [OpenShift vs. OpenStack: What are the differences?](/en/technologies/cloud-computing/openshift/openshift-vs-openstack)
* [What is container security?](/en/topics/security/container-security)
* [What are sandboxed containers](/en/topics/containers/sandboxed-containers)
* [What is Buildah?](/en/topics/containers/what-is-buildah)
* [Kubernetes vs OpenStack](/en/topics/openstack/kubernetes-vs-openstack)
* [What are validated patterns?](/en/topics/cloud-computing/what-are-validated-patterns)
* [Kubernetes on AWS: Self-Managed vs. Managed Applications Platforms](/en/topics/containers/kubernetes-on-aws)
* [What is an image builder?](/en/topics/linux/what-is-an-image-builder)
* [What is middleware?](/en/topics/middleware/what-is-middleware)
* [Red Hat OpenShift vs. OKD](/en/topics/containers/red-hat-openshift-okd)
* [Red Hat OpenShift vs. Kubernetes: What's the difference?](/en/technologies/cloud-computing/openshift/red-hat-openshift-kubernetes)
* [Spring on Kubernetes with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/spring)
* [What is Apache Kafka?](/en/topics/integration/what-is-apache-kafka)
* [What is high availability and disaster recovery for containers?](/en/topics/containers/high-availability-containers)
* [Why run Apache Kafka on Kubernetes?](/en/topics/integration/why-run-apache-kafka-on-kubernetes)
* [What is a golden image?](/en/topics/linux/what-is-a-golden-image)
* [What are Red Hat OpenShift cloud services?](/en/technologies/cloud-computing/openshift/what-are-red-hat-openshift-cloud-services)
* [Why choose Red Hat for middleware?](/en/topics/middleware/why-choose-red-hat-middleware)
* [VNF and CNF, what’s the difference?](/en/topics/cloud-native-apps/vnf-and-cnf-whats-the-difference)
* [What is a container registry?](/en/topics/cloud-native-apps/what-is-a-container-registry)
* [What is Skopeo?](/en/topics/containers/what-is-skopeo)
* [What are Red Hat OpenShift Operators?](/en/technologies/cloud-computing/openshift/what-are-openshift-operators)
* [Using Helm with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/helm)
* [Kubernetes security best practices](/en/topics/containers/kubernetes-security-best-practices)
* [What is an API?](/en/topics/api/what-are-application-programming-interfaces)
* [Orchestrating Windows containers on Red Hat OpenShift](/en/technologies/cloud-computing/openshift/windows-containers-on-red-hat-openshift)
* [What is a Kubernetes operator?](/en/topics/containers/what-is-a-kubernetes-operator)
* [Red Hat OpenShift application services](/en/technologies/cloud-computing/openshift/application-services)
* [What is an independent software vendor (ISV)?](/en/topics/digital-transformation/isv-partners)
* [High performance computing with Red Hat OpenShift](/en/technologies/cloud-computing/openshift/high-performance-computing)
* [Advantages of Kubernetes-native security](/en/topics/containers/advantages-of-kubernetes-native-security)
* [What is a Kafka service?](/en/topics/integration/what-is-a-kafka-service)
* [What is KubeLinter?](/en/topics/containers/what-is-kubelinter)
* [What is streaming data?](/en/topics/integration/what-is-streaming-data)
* [Intro to Kubernetes security](/en/topics/containers/intro-kubernetes-security)
* [Container and Kubernetes compliance considerations](/en/topics/containers/compliance)
* [Do banking APIs benefit from cloud technology?](/en/topics/api/banking-api)
* [How microservices support IT integration in healthcare](/en/topics/microservices/microservices-in-healthcare)
* [What is a service registry?](/en/topics/integration/what-is-a-service-registry)
* [What is an event mesh?](/en/topics/integration/what-is-an-event-mesh)
* [Kubernetes cluster management](/en/technologies/cloud-computing/openshift/kubernetes-cluster-management)
* [Red Hat OpenShift on IBM IT infrastructure](/en/technologies/cloud-computing/openshift/what-is-red-hat-openshift-on-IBM-IT-infrastructure)
* [Red Hat OpenShift for business leaders](/en/technologies/cloud-computing/openshift/business-leaders)
* [How to deploy Red Hat OpenShift](/en/technologies/cloud-computing/openshift/deploy-red-hat-openshift)
* [Cost management for Kubernetes on Red Hat OpenShift](/en/technologies/cloud-computing/openshift/cost-management)
* [Kubernetes-native Java development with Quarkus](/en/technologies/cloud-computing/openshift/quarkus)
* [What is enterprise Kubernetes?](/en/topics/containers/what-is-enterprise-kubernetes)
* [What makes Red Hat OpenShift the right choice for IT operations?](/en/technologies/cloud-computing/openshift/it-operations)
* [What makes Red Hat OpenShift the right choice for SAP?](/en/technologies/cloud-computing/openshift/sap)
* [Why choose Red Hat for Kubernetes?](/en/topics/containers/why-choose-red-hat-kubernetes)
* [What is Kubernetes role-based access control (RBAC)](/en/topics/containers/what-kubernetes-role-based-access-control-rbac)
* [What is containerization?](/en/topics/cloud-native-apps/what-is-containerization)
* [What is change data capture?](/en/topics/integration/what-is-change-data-capture)
* [What was CoreOS and CoreOS container Linux](/en/technologies/cloud-computing/openshift/what-was-coreos)
* [Why Red Hat for APIs?](/en/topics/api/why-choose-red-hat-apis)
* [Learning Kubernetes basics](/en/topics/containers/learning-kubernetes-tutorial)
* [What is the Kubernetes API?](/en/topics/containers/what-is-the-kubernetes-api)
* [What is Kubernetes cluster management?](/en/topics/containers/what-is-kubernetes-cluster-management)
* [What is a REST API?](/en/topics/api/what-is-a-rest-api)
* [What is a Kubernetes deployment?](/en/topics/containers/what-is-kubernetes-deployment)
* [Why choose the Red Hat build of Quarkus?](/en/topics/cloud-native-apps/why-choose-red-hat-quarkus)
* [Introduction to Kubernetes architecture](/en/topics/containers/kubernetes-architecture)
* [What is CaaS?](/en/topics/cloud-computing/what-is-caas)
* [Introduction to Kubernetes patterns](/en/topics/cloud-native-apps/introduction-to-kubernetes-patterns)
* [What is a Kubernetes cluster?](/en/topics/containers/what-is-a-kubernetes-cluster)
* [What is Quarkus?](/en/topics/cloud-native-apps/what-is-quarkus)
* [What is Jaeger?](/en/topics/microservices/what-is-jaeger)
* [What is event-driven architecture?](/en/topics/integration/what-is-event-driven-architecture)
* [What is API monetization?](/en/topics/api/what-is-api-monetization)
* [REST vs. SOAP](/en/topics/integration/whats-the-difference-between-soap-rest)
* [Why choose Red Hat for integration?](/en/topics/integration/why-choose-red-hat-integration)
* [What is API management?](/en/topics/api/what-is-api-management)
* [What does an API gateway do?](/en/topics/api/what-does-an-api-gateway-do)
* [What is etcd?](/en/topics/containers/what-is-etcd)
* [What is API security?](/en/topics/security/api-security)
* [What is container-native virtualization?](/en/topics/containers/what-is-container-native-virtualization)
* [What is Knative?](/en/topics/microservices/what-is-knative)
* [What is API design?](/en/topics/api/what-is-api-design)
* [What is Clair?](/en/topics/containers/what-is-clair)
* [What is GraphQL?](/en/topics/api/what-is-graphql)
* [Why choose Red Hat for microservices?](/en/topics/microservices/why-choose-red-hat-microservices)
* [Why choose Red Hat for containers?](/en/topics/containers/why-choose-red-hat-containers)
* [What is Docker?](/en/topics/containers/what-is-docker)
* [What is a Kubernetes pod?](/en/topics/containers/what-is-kubernetes-pod)
* [What is integration?](/en/topics/integration/what-is-integration)
[More about this topic](/en/topics/containers "More about this topic")