What is SOA (Service-Oriented Architecture)?


Software-Oriented Architecture (SOA) is an architectural design for software that enables services to communicate over a network, despite being deployed across different systems. These services are designed to be independent, reusable and interoperable and are abstracted behind a services interface to enable simple management.

CloudDB Architecture

The aim of SOA is to help businesses use services more efficiently. With SOA, users can combine, integrate and reconfigure services quickly, without the silos that often inhibit application and software development. This enables businesses to scale and go to market faster, whilst also reducing costs and being more able to meet changing demands.

How does service-oriented architecture work?

SOA (service-oriented architecture) consists of loosely coupled software applications, which are split into components called services. These services perform distinct business functions or tasks, and communicate over a network, usually via HTTP, SOAP, or REST API.

Here are the different elements of SOA:

Services

Services are at the core of SOA. Software applications are broken down into services that perform specific business functions. Each service is designed to operate independently and can be reused in other applications. This concept increases agility and interoperability, supporting more streamlined business processes and enabling new solutions to be created and integrated easily.

Service Interfaces

As SOA services operate independently, each service requires its own interface. This specifies how other services interact with it, input and output parameters for each operation, and the communication protocols required. The use of interfaces in SOA provides visibility, plus simpler management and configuration.

Service Communication

In SOA, services communicate with each other using protocols such as HTTP, SOAP, or REST API. The type of protocol used will depend on the requirements of the application, and protocols can be configured in the services interface. This standardised approach promotes interoperability between different technologies, allowing services to interact and be accessed and integrated across a range of platforms.

Service Registry

Service-oriented architecture uses a service registry to catalogue all the different services available in the environment. This registry contains metadata about each service, such as its interface, location and dependencies. It enables clients to invoke services at runtime, as well as helping users to manage services from a central location.

Loose Coupling

One of the key concepts of SOA is loose coupling. This means that services operate independently and don’t affect one another, enabling easier maintenance, troubleshooting and updates, without disruption to the entire system. Loose coupling in SOA is achieved using principles such as abstraction and interface-based communication.

Icons/concept/Cloud/Cloud Infinity Created with Sketch.

Service Reusability

Another core principle of SOA is reusability. Services are designed to be modular, enabling services to be reused to build new applications. This helps businesses to cut costs, improve efficiency, streamline processes, and reduce development time.

Service Governance

Service-oriented architecture enables businesses to ensure security when developing and operating services. Policies and procedures can be implemented that ensure compliance across the entire system, instead of solely within isolated areas.

Icons/concept/Cloud/Cloud Hand Created with Sketch.

Service Orchestration

In SOA, multiple services often need to work together to perform a business process. To enable this orchestration of services, businesses can use orchestration or automation tools - such as Business Process Management (BPM) solutions - to execute services.

What are the benefits of SOA?

Service-oriented architecture offers multiple benefits for businesses looking to develop complex software systems efficiently. Here are some of the key benefits:

Agility

With SOA, services can be modified, integrated and replaced without having to change the entire system. This enables businesses to be more flexible and adapt to changing business requirements or markets much faster.

Cost-efficiency

As SOA promotes the reuse of services, this enables businesses to cut costs and maximise the value of their existing IT infrastructure. It also avoids wasted effort, helping businesses to cut the amount of time spent maintaining applications.

Simple intégration

Services built to SOA principles are designed to be interoperable and can therefore be integrated more easily across different systems. This enables businesses to integrate their legacy solutions with modern technologies, such as cloud computing, and embrace a more cohesive, streamlined approach.

Scalability

Service-oriented architecture enables businesses to handle user demand and high workloads, whilst maintaining high-performance throughout the system. This is because SOA distributes functionality across independently-managed services.

Easier maintenance

As SOA services are designed to be independent, they can be maintained without needing to disrupt other services or infrastructure. This increases efficiency and saves time and resources.

Quality

Service-oriented architecture promotes the use of best practices and standardised design principles, interfaces and protocols. This enables businesses to ensure that services are well-designed, consistent and reliable.

Security

With SOA, businesses can centralise security management, enabling policies, access control and monitoring to be enforced much more effectively. This helps businesses to mitigate security risks and ensure compliance and data protection.

What is an example of SOA?

partner-new-managed-service-provider-logo

A good example of a solution often built to SOA principles is a Customer Relationship Management (CRM) system. CRMs consolidate applications, data and processes from several business areas, such as sales, customer services and marketing. This type of complex system works well when built on a service-oriented architecture, as SOA principles enable applications and services to reuse the same code and communicate with each other. This enables, for example, a sales application to share data efficiently with marketing applications that are integrated within the CRM, providing visibility and helping to streamline processes.

How is SOA different to traditional architectures?

Before service-oriented architecture was developed, the default approach was monolithic architecture. This traditional model of building software involves creating a single, unified unit of interdependent applications. Monolithic systems are typically complex, with large code bases and a reliance on solutions from one vendor. For these reasons, making even a small modification can mean changing and testing the entire system.

As a monolithic architecture uses just one code base, it can make development easier. However, it doesn’t offer the agility, flexibility and scalability desired by today’s software developers. There’s also the risk of vendor lock-in, and it can also be a barrier to technology adoption and integration. In comparison, software systems built using SOA consist of multiple loosely coupled applications, which are split into services designed to operate independently and communicate over a network, despite being based in different locations. This enables developers to use solutions from multiple vendors, integrate new technologies easily, reuse code to create new services, and make modifications quickly without disrupting the entire system. This makes SOA much more agile and aligned with the needs of modern software development.

Collaboration as a Service

What is the difference between SOA and microservices?

Although microservices and SOA both seem like similar approaches to software development, microservices can be considered a more specialised, lightweight evolution of SOA. Both approaches advocate for scalable, independent and loosely coupled services, however, microservices are based on smaller, more autonomous services that perform very specific tasks or functions. Microservices also use decentralised control and lightweight technologies.

Here are the key differences between SOA and microservices:

Size and complexity

SOA: services in SOA are independent but also large and complex, having more functionality and a broader scope. They often require a lot of middleware and abstraction.

Microservices: like SOA services, microservices are designed to be independent, however, they are smaller and usually easier to develop, deploy and maintain.

Granularity

SOA: services are designed to be reusable, but are usually large, coarse-grained and deliver a wide range of functions.

Microservices: are smaller and more fine-grained, being focused on specific, singular functions, or a small set of functions.

Technology stack

SOA: to build an SOA system, developers typically use heavy Enterprise Service Bus (ESB) solutions and middleware to support communication and orchestration.

Microservices: usually rely on lightweight solutions such as Kubernetes for orchestration, Docker for containers, and APIs for communication and service management.

Data management

SOA: often has a centralised approach to data management, using shared databases and centralised database solutions.

Microservices: usually has a decentralised approach to data management, with each service allocated a database that has been optimised for its specific needs.

Impact on the business

SOA: implementing an SOA system can require organisational change to ensure that services operate consistently across the business. Measures also need to be taken to ensure effective management of the service lifecycle and reuse of services.

Microservices: usually don’t require much change on an organisational level, as they often adhere to DevOps principles, which enable the entire service lifecycle to be owned by the development team.

Communication and decomposition

SOA: applications are broken down into loosely coupled services, which communicate using standardised interfaces and protocols, such as HTTP and SOAP.

Microservices: take the decomposition of applications further by breaking them down into services that can be deployed independently, and communicate using lightweight protocols or messaging systems, such as HTTP/REST and Kafka.

SOA use cases

Service-oriented architecture can be used to design many different types of software, but it is especially effective when used in the following scenarios:

private-cloud-vs-public-cloud

Modernisation of legacy systems

Legacy systems often consist of interdependent applications that are complex to maintain and update. SOA can be used to modernise such systems, breaking down the applications into services with their own interfaces. This enables businesses to either replace or enhance legacy systems, without causing disruption to the entire system. For example, a business might transform its monolithic system into loosely coupled services to modernise the system and introduce agility and scalability.

Enterprise Application Integration (EAI)

Another common use for SOA is integrating disparate applications within an organisation. As SOA assigns functions or tasks to services and enables them to communicate using protocols and interfaces, it supports effective communication between a range of different systems. A good example of this is within retail or e-commerce, where a business might use SOA to integrate its inventory management platform with its online storefront.

Cloud computing and hybrid integration

As more businesses adopt the cloud and hybrid environments, SOA can be used to support integration and interoperability between on-premises solutions, cloud services, and third-party APIs. Using SOA principles to transform cloud-based capabilities into services and adopting standardised protocols, such as REST APIs, businesses can achieve effective connectivity and exchange data safely across distributed hybrid environments.

Supporting industry standards and interoperability

One of the core concepts of SOA is interoperability. Using this principle, organisations can use standardised communication protocols and service definitions to enable interoperability between different vendors’ solutions. An example of this is within the healthcare sector, where industry standards such as FHIR (Fast Healthcare Interoperability Resources) are based on SOA. Such standards help organisations to transfer healthcare records and clinical data between systems.

public-cloud-paas

OVHcloud and SOA

OVHcloud supports Service-Oriented Architecture (SOA) through its scalable and flexible cloud services, enabling efficient deployment and management of service-based applications. By offering Infrastructure as a Service (IaaS) and Platform as a Service (PaaS), OVHcloud provides the necessary resources for building and running SOA systems. Its support for containerization and microservices aligns with modern SOA practices, while API management tools facilitate seamless service interactions. Additionally, OVHcloud ensures robust security and compliance, essential for protecting service data and communications. Overall, OVHcloud's comprehensive cloud solutions enhance the implementation of SOA, fostering agility, scalability, and cost efficiency.