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.
SOA vs. Microservices
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:
- Microservices are very finely grained services, separated at a certain level of granularity for a functional reason. This means that in a microservices architecture a service – including the database and application servers, as well as product support – is managed end‑to‑end by the same team. SOA, on the other hand, separates services in a logical manner. The distinction here is that logically grouped services are shared between functions. It sounds good…until the service fails, and all of the functions that rely on it are impacted. Microservices architectures are designed to eliminate this impact by completely containing business services within their unique functions, along with everything necessary to fulfilling those functions and delivering business value – even if it means duplicating something along the way.
- Microservices, because they are contained entirely by function, also are not bound by the same communication frameworks, protocols, and specifications that ultimately limit SOA. Instead, microservices focus on keeping intelligence within each set of endpoints and having a simple fabric to connect them. This is often best achieved by implementing a single API gateway that houses the internal system architecture and routes requests using lightweight Web protocols, such as REST, to each independent microservice. Furthermore, each microservice often consumes APIs from other services – but the gateway prevents mobile apps from ever touching the back end. This level of flexibility is something that SOA, burdened by web service specifications and relying on ESB to connect applications, can never accomplish.
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.
How Can NGINX Plus Help?
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 400 million websites worldwide rely on NGINX Plus and NGINX 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.
- NGINX Plus provides a complete application delivery and load balancing solution that increases performance and reliability for each microservice
- NGINX Plus is flexible and scalable enough to fit into your stack as an API gateway and as an end point to each service
- NGINX Plus acts as a high‑performance HTTP server to complete microservice actions with maximum speed and efficiency