Service‑oriented architecture (SOA) is an architectural approach to designing applications around a collection of independent services. A service can be any business functionality that completes an action and provides a specific result, such as processing a customer order or compiling an inventory report. Services can be stitched together to create composite applications, providing greater functionality to end users.
The benefits of the SOA approach include greater ease of maintaining and updating service components – with each component more condensed and contained, it’s easier to fix code or replace elements without impacting all other elements. However, issues arise when we determine how best to enable communication between services. SOA is typically associated with the Enterprise Service Bus (ESB) as the central means of communication between services. ESBs often do not respond well to change, typically result in more complexity, and make it harder to understand where a service begins and ends.
If you think SOA sounds a lot like the current definition of microservices, you’re not alone. Microservices are also small, self-contained services intended to function independently while also working together. But there are key differences between SOA and microservices. Here are a couple to note:
While many people think of microservices as SOA finally done right, there are actually a number of critical differences that distinguish the two – and that, in many respects, make microservices the more effective architecture choice for complex applications. For more information about SOA and microservices, download the free ebook, Building Microservices: Designing Fine‑Grained Systems.
NGINX Plus and NGINX are the best-in-class load-balancing solutions used by high‑traffic websites such as Dropbox, Netflix, and Zynga. More than 350 million websites worldwide rely on NGINX Plus and NGINX Open Source to deliver their content quickly, reliably, and securely.
As a software‑based application delivery controller (ADC), NGINX Plus is designed to facilitate microservices architectures far more effectively and affordably than hardware solutions with comparable capabilities.