Service-Oriented Architecture vs Microservices Architecture: Comparing Soa to Msa

In computing, a service refers to a single or collective units of software that perform repetitive, redundant tasks. In the era of cloud computing, applications are composed of a collection of services that collectively perform various functions to support the application’s overall functionality.

In this article, we explore Microservices Architecture (MSA) and Service-Oriented Architecture (SOA) as two common service-based architectures—how they both rely on services as the main component and how they differ in terms of service characteristics.

Let’s take a look.

What is a service-oriented architecture (SOA)?

A service-oriented architecture follows a design of multiple self-contained, discrete, and repeatable services that are collectively used to form a service mesh of an application’s functionalities holistically.

This enables a framework of application components to interact and offer services with other components by leveraging a service interface (communication protocol).

SOA design principles

The principles of a Service Oriented Architecture may differ depending on your use case. Here are some common principles that segregate services to form an SOA:

  • Abstraction
  • Reusability
  • Granularity
  • Standardized contract
  • Autonomy
  • Statelessness
  • Discovery

Features of SOA

One fundamental use case of an SOA is to allow you to build an application by using multiple distinct services collectively, where each service consists of a unique business or application logic.

Other than that, some common features of SOA include:

  • “Share as much as possible” architecture
  • Importance on business functionality reuse
  • Common governance and standards
  • Enterprise service bus (ESB) for communication
  • Multiple message protocols
  • Common platform for all services deployed to it
  • Multi-threaded with more overheads to handle I/O
  • Maximum application service reusability
  • More likely to use traditional relational databases
  • Not preferred in a DevOps model

What is a microservice architecture (MSA)?

A microservice architecture, often known as microservices, follows an SOA pattern by breaking a single application into multiple loosely coupled, independent services yet working with each other.

Often considered the perfect use case of containerization, microservices are fairly routine for organizations to deploy each of such micro-services on separate containers. This enables an efficient framework of multiple services that are flexible, portable, and platform-agnostic—allowing each service to have different operating systems and databases while running in its own process.

Features of MSA

  • “Share as little as possible” architecture
  • Importance on the concept of bounded context
  • Relaxed governance, with more focus on people
  • Efficient collaboration and freedom in choosing platform and technologies
  • Simple, less elaborate messaging system
  • Lightweight protocols such as HTTP/REST and AMQP
  • Single-threaded usually with the use of Event Loop features for non-locking I/O handling
  • Containers work very well in MSA and are considered perfect for a DevOps model
  • More focused on decoupling
  • Uses modern, non-relational databases
James H. Sterling

James H. Sterling

Environmental Science & Climate Journalist

James Sterling reports on renewable energy developments, climate policy, ecological conservation, and green tech innovations around the globe.

Share this article