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 Video Library
Refcards
Trend Reports

Events

View Events Video Library

Related

  • Microservice Proliferation: Too Many Microservices
  • Mastering System Design: A Comprehensive Guide to System Scaling for Millions (Part 1)
  • Data Consistency in Distributed Systems: Transactional Outbox
  • Ensuring API Resilience in Spring Microservices Using Retry and Fallback Mechanisms

Trending

  • Bringing Intelligence Closer to the Source: Why Real-Time Processing is the Heart of Edge AI
  • How to Format Articles for DZone
  • Detecting Bugs and Vulnerabilities in Java With SonarQube
  • Lambda-Driven API Design: Building Composable Node.js Endpoints With Functional Primitives
  1. DZone
  2. Software Design and Architecture
  3. Integration
  4. REST vs. Message Brokers: Choosing the Right Communication

REST vs. Message Brokers: Choosing the Right Communication

We’ll delve into the disparities between REST and message brokers in terms of communication, helping you make the right choice for your specific use case.

By 
Shoham Roditi Elimelech user avatar
Shoham Roditi Elimelech
·
Sep. 15, 23 · Analysis
Likes (9)
Comment
Save
Tweet
Share
13.8K Views

Join the DZone community and get the full member experience.

Join For Free

With the clear dominance of microservices architecture, communication between different components of a system is a critical aspect of today’s software paradigm. Two popular methods of achieving this communication are through REST (direct communication), and message brokers (indirect communication). Each approach has its own set of advantages and trade-offs, making it essential for developers to understand the differences between them in order to make informed decisions when designing and building their systems.

Although the two feel like serving completely different use cases and do not intertwine, in many cases and architectures, they are. In this article, we’ll delve into the disparities between REST and message brokers in terms of way of communication, helping you make the right choice for your specific use case.

REST

REST, a widely used architectural style for designing networked applications, relies on stateless communication between client and server. Here are some key features of REST communication:

  1. Request-Response Paradigm: REST operates on a simple request-response model. Clients initiate a request to the server, and the server responds with the requested data or an appropriate status code.
  2. HTTP Verbs: REST communication is based on HTTP verbs such as GET, POST, PUT, and DELETE, which correspond to CRUD (Create, Read, Update, Delete) operations.
  3. Resource-Oriented: REST revolves around the concept of resources identified by URLs. Each resource represents a distinct entity, and interactions are performed using these URLs.
  4. Stateless: REST is designed to be stateless, meaning that each request from the client must contain all the information required for the server to fulfill it. This simplifies server-side management and scalability.
  5. Caching: REST communication benefits from HTTP’s built-in caching mechanisms, which can improve performance and reduce server load by serving cached responses when appropriate.

Message Brokers

Message brokers facilitate asynchronous communication between components by allowing them to exchange messages or pieces of information, meaning the sender does not aware at any given time if a receiver exists or who it is. Here’s what you need to know about this approach:

  1. Decoupled Architecture: Message brokers promote decoupling between sender and receiver, allowing components to communicate without having to be aware of each other’s existence.
  2. Publish-Subscribe Model: In the publish-subscribe model, producers (publishers) send messages to specific topics, and consumers (subscribers) interested in those topics receive the messages. This enables broadcasting information to multiple consumers.
  3. Message Queues: Message brokers also support point-to-point communication through message queues. Producers send messages to queues, and consumers retrieve messages from those queues, ensuring that each message is processed by a single consumer.
  4. Reliability: Message brokers ensure message delivery, even in cases of component failures. This reliability is achieved through features like message persistence and acknowledgment mechanisms.
  5. Scalability: Message brokers can be scaled horizontally to handle increasing message volumes and provide load balancing across consumers.

The Story of Microservices

Representational state transfer (REST) uses a popular architectural pattern called API Gateway, and it can serve as a good example of the synchronous communication type.
Requests reach a service that acts as an internal router that routes requests based on the different values, headers, and query params.

Message brokers/queues are widely used in a microservices architecture as well, which follows the asynchronous pattern. In this type of architecture, a service sends a message without waiting for a response, and one or more services process the message asynchronously. Asynchronous messaging provides many benefits but also brings challenges such as idempotency, message ordering, poison message handling, and complexity of message broker, which must be highly available.

It is important to note the difference between asynchronous I/O and the asynchronous protocol. Asynchronous I/O means that the calling thread is not blocked while the I/O operations are executed. This is an implementation detail in terms of the software design. The asynchronous protocol means the sender does not wait for a response. 

Choosing the Right Approach

The decision between REST communication and message brokers depends on various factors, including the nature of your application, communication patterns, and requirements:

  • REST is suitable when:
    • Direct request-response interactions are preferred.
    • Your app requires simplicity in communication patterns.
    • You have very strict communication rules with almost 1:1 sender/receiver ratio
    • Scale is small and so is the amount of communicating services, workloads, and amount of transferred data.
  • Message brokers are beneficial and a must when:
    • Asynchronous communication is needed and allowed.
    • Many-to-Many communication pattern is needed.
    • Components are loosely coupled, allowing for independent scaling.
    • Reliability and guaranteed message delivery are paramount.
    • Publish-subscribe or message queue patterns align with the application’s communication needs.
    • A great scale is needed to support billions of requests in a short period of time. Scaling the microservices would be overkill.

In conclusion, both REST and message brokers offer distinct advantages for different scenarios. REST provides simplicity and direct interactions, while message brokers enable decoupled, asynchronous, reliable, and much more scaleable communication. The choice between these approaches should be made based on your system’s requirements, the specific communication patterns your application demands, and the maturity of both the environment and the developers themselves.

Architectural pattern Message broker REST microservice

Published at DZone with permission of Shoham Roditi Elimelech. See the original article here.

Opinions expressed by DZone contributors are their own.

Related

  • Microservice Proliferation: Too Many Microservices
  • Mastering System Design: A Comprehensive Guide to System Scaling for Millions (Part 1)
  • Data Consistency in Distributed Systems: Transactional Outbox
  • Ensuring API Resilience in Spring Microservices Using Retry and Fallback Mechanisms

Partner Resources

×

Comments

The likes didn't load as expected. Please refresh the page and try again.

  • RSS
  • X
  • Facebook

ABOUT US

  • About DZone
  • Support and feedback
  • Community research

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

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

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 3343 Perimeter Hill Drive
  • Suite 215
  • Nashville, TN 37211
  • [email protected]

Let's be friends:

  • RSS
  • X
  • Facebook