Microservices architecture is a new architectural style for creating loosely coupled but autonomous services. Emerging trends in technology—such as DevOps, Platform-as-a-Service (PaaS), containers, and continuous integration and delivery (CI/CD) methods—let organizations create and manage these modular systems on an unprecedented scale that exceeds earlier approaches like service-oriented architecture (SOA). But organizations that refactor monolithic applications into microservices experience widely varying degrees of success. The key to using microservices effectively is a solid understanding of how and why organizations should use microservices to build applications.
IMPROVING SERVICE-ORIENTED ARCHITECTURE
Service-oriented architecture (SOA) is commonly defined as application components that communicate to provide services to other components over a network. The goal of SOA was to create resilient distributed applications without complex centralized components.
However, SOA was strongly coupled to organizational structures and applied to support new internal structures. Therefore, its success was highly dependent on the resulting, restructured organizational capabilities and the structure of the teams designing the architecture. Instead of creating loosely coupled but autonomous systems, SOA created highly fragile systems that required complex infrastructure. In addition, early SOA implementations created vendor lock-in, because proprietary middleware often focused on centralized logic, persistence, governance, and administration.
Microservices architectures are starting to deliver on the promises of SOA at every step of building applications, from development to deployment to operations. Microservices architecture focuses on simplifying technology to build complex systems with streamlined components. Centralized logic and integration infrastructure—based on heavyweight, non- standardized platforms—is replaced by communication via simple, standardized pipes, based on asynchronous HTTP or messaging protocols. SOAP, XML, and other heavyweight protocols and data formats are replaced by lightweight JSON over HTTP-based REST. Each microservice has its own data store, and centralized governance and persistence are not required.
Microservices use continuous integration (CI) and continuous delivery (CD) methodologies and practices, as well as several critical components that were not as common in SOA, such as: