DZone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
Refcards Trend Reports Events Over 2 million developers have joined DZone. Join Today! Thanks for visiting DZone today,
Edit Profile Manage Email Subscriptions Moderation Admin Console How to Post to DZone Article Submission Guidelines
View Profile
Sign Out
Refcards
Trend Reports
Events
Zones
Culture and Methodologies Agile Career Development Methodologies Team Management
Data Engineering AI/ML Big Data Data Databases IoT
Software Design and Architecture Cloud Architecture Containers Integration Microservices Performance Security
Coding Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
Culture and Methodologies
Agile Career Development Methodologies Team Management
Data Engineering
AI/ML Big Data Data Databases IoT
Software Design and Architecture
Cloud Architecture Containers Integration Microservices Performance Security
Coding
Frameworks Java JavaScript Languages Tools
Testing, Deployment, and Maintenance
Deployment DevOps and CI/CD Maintenance Monitoring and Observability Testing, Tools, and Frameworks
  1. DZone
  2. Software Design and Architecture
  3. Microservices
  4. Microservices vs. Service-Oriented Architecture (SOA)

Microservices vs. Service-Oriented Architecture (SOA)

We take a look at two of the more popular architectural patterns in software, discussing the pros and cons of each and how they differ.

Archna Oberoi user avatar by
Archna Oberoi
·
Jan. 08, 19 · Analysis
Like (7)
Save
Tweet
Share
17.61K Views

Join the DZone community and get the full member experience.

Join For Free

With increasing complexity and demand for highly scalable and robust applications, the conventional monolithic architecture is no longer the best choice. After a certain threshold, monolithic architecture tends to hinder application performance and scalability. Moreover, with an enormous codebase, making changes to the tightly coupled, dependent processes in the monolithic architecture drastically increases the impact of single process failure.

To deal with these limitations of a monolithic architecture, developers have adopted the Single Responsibility Principle coined by Robert C. Martin (co-author, Agile Manifesto), which says: Gather together those things that change for the same reasons and separate those things that change for different reasons. 

Eventually, Service-Oriented Architecture (SOA) and microservices architecture gained acceptance and enabled developers to build applications as a suite of small, de-coupled services, running in their own environments that are independently deployable.

While microservices and SOA have application modularity in common, they differ in how the services are deployed and the size of modules. Before we discuss the fundamental differences between the two, let’s understand these architectures in detail.

Microservices: An Overview

Microservices is a software modularization approach that aims at dividing larger software systems into smaller components. With a microservices architecture, an application is built with an independent group of components that run each application process as a service. Such an architecture makes it easier for applications to scale, accelerate the software application development process, offers space for experimentation, and reduces time-to-market for new features.

Microservices Architecture: Benefits

  • Continuous Development and Deployment: Each component in a microservices architecture is developed, deployed, operated, and scaled independently, i.e. a change in one service does not affect the functioning of other services. Moreover, these services do not share code or implementation with other services. This ensures continuous development and deployment of large, complex applications.
  • Eliminates Technology Commitment: Microservices can be created using different technologies (frameworks, languages, or OS). Therefore, it eliminates any long-term commitment and dependability on a particular technology stack. While building a new service or updating an existing one, a new, better technology stack can be chosen.
  • Improved Fault Isolation: Since all services in an application are independent of each other, any halt in a process does not affect another. For example, a memory leak in a particular service will not have any impact on another service, ensuring that rest of the services keep receiving and handling incoming requests. If this is compared to a monolithic architecture, a single misbehaving component affects the entire system.

Large Scale Websites Are Using Microservices Architecture

Realizing these benefits, organizations (such as Netflix) are moving from monolithic architecture to microservices. Netflix handles over a billion calls per day on their video streaming API, from over 800 kinds of devices. Each API call is then spread out to an average of six calls to backend services.

Service-Oriented Architecture (SOA): Overview

Similar to microservices, SOA is a software modularization approach. SOA is an architecture based on disparate services. Herein, a service is a well-defined, self-contained functionality. In the SOA architecture, different services communicate with each other to execute a function.

The SOA services are loosely-coupled, i.e. a service interacting with another might not know the technical details of another service. An SOA service consists of two fundamental components: a service consumer that requests a service and a service provider that returns the result of the request.

Since microservices and SOA enable developers to build an application by building independent services, they more or less share a similar set of benefits. However, there are some basic differences between the two, which we'll discuss shortly.

Large Scale Websites Are Using SOA

Realizing the benefits, large-scale e-commerce websites such as Amazon have migrated from a monolithic to Service-Oriented Architecture (SOA). Amazon calls 100-150 services to get the data that is used to build a web page.

Microservices vs. SOA

In both architectures, each service has a certain responsibility, unlike a monolithic architecture. Thus, developers have the flexibility to develop the services in different technologies, which enables the team to choose the most relevant use-case for their needs. However, both  architectures differ in the following terms:

  • Service Deployment and Scalability: The service deployment can be assigned and managed within multiple teams. However, each member of the team needs to know the common communication mechanism in SOA, which is not a dependency while building an application with a microservices architecture. In the case of microservices, the services can be operated and deployed independently, unlike SOA. Therefore, is it easier to deploy a new version of services frequently and thus scale the application accordingly.
  • Fault Tolerance: In SOA, an Enterprise Service Bus (ESB) can be a single point of failure, which impacts the functioning of the entire application. An Enterprise Service Bus (ESB) implements communication between mutually interacting applications in SOA. It can perform a variety of functions, ranging from message transformation, routing, logging, protocol transformation, acting as a security gateway, etc. If one of the ESB services slows down, it will clog up the requests for that service. In comparison to SOA, microservices are fault tolerant and their deployment is independent of each other.
  • Sharing Data Storage: In a Service-Oriented Architecture, services share data storage, while in microservices, each service can have an independent data storage. Data storage brings its own set of advantages and disadvantages. For example, while the data can be reused between all services, it can bring dependencies between services due to tight-coupling.  
  • Service Size and Scope: One of the major differences between microservices and SOA is the size and scope of services. Microservices are significantly smaller in size than SOA. On the other hand, an SOA can either be monolithic or can have multiple microservices.
SOA microservice Architecture Service-oriented architecture Web Service application

Published at DZone with permission of Archna Oberoi. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • Stream Processing vs. Batch Processing: What to Know
  • An Introduction to Data Mesh
  • Using JSON Web Encryption (JWE)
  • The Role of Data Governance in Data Strategy: Part II

Comments

Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends: