Microservices vs. Service-Oriented Architecture
Author: Mark Richards
One of the fascinating aspects of software engineering is how great concepts endure, but their execution and application are regularly reinvented using the tools and practices of the day. The rise of microservices patterns and practices is a great example of this process.
Skeptics may dismiss microservices as little more than the serviceoriented architecture (SOA) practices of the 2000s, reheated. The reality is that microservices are an example of convergent evolution, emerging from modern development, testing, and deployment techniques and shaped by the democratizing influence of open source.
The resulting incarnation of SOA is transforming our industry. What’s the nature of this transformation? Early adopters report that when used with an agile and autonomous approach to engineering structures and a DevOps approach to delivery, the microservices approach enables a much quicker cadence of application development.
In turn, software developers welcome this, having learned their trade in the fast-moving, app-driven world of services and applications. The net result is faster innovation, and a potential competitive advantage for Internet-facing organizations that embrace these practices.
The power of microservices comes from their non-prescriptive nature. There is no formal, slow-moving, industry-driven specification; rather, the microservices approach has emerged as a pattern of development that has been practiced and refined by pioneers. Born in the modern Web, microservices are interconnected using a thin layer of simple APIs and the lingua franca of HTTP.
At NGINX, we are incredibly proud of our role in accelerating, securing, scaling, and delivering microservices-based applications. As the HTTP “connective tissue” of modern applications, NGINX serves as both the stable entry point to a microservices-based application, and the traffic manager for communication between the microservices themselves.
The lack of a prescriptive industry specification is sure to raise many, many questions – especially if you have experience with previous SOA practices. Microservices have at times been billed as “SOA done right,” but is that really the case? And what exactly did earlier practices do wrong that microservices are getting right? In this report, Mark Richards provides a thoughtful breakdown of the two approaches and discusses where one approach might be preferred over the other. By the end of this report, you’ll have not only a greater understanding of these two architectural patterns, but also of application development as a whole. We hope you enjoy this report.
— Owen Garrett,
Head of Products, NGINX, Inc.
Table of Contents
1. The World of Service-Based Architectures
Service Contracts, Service Availability, Security, Transactions, Too Much Complexity?
2. Comparing Service Characteristics
Service Taxonomy, Service Ownership and Coordination, Service Granularity, Granularity and Pattern, Selection
3. Comparing Architecture Characteristics
Component Sharing, Service Orchestration and Choreography, Middleware vs. API Layer, Accessing Remote Services
4. Comparing Architecture Capabilities
Application Scope, Heterogeneous Interoperability, Contract Decoupling
Download free ebook: nginx.com/microservices-soa