An architecture framework for building fine-grained services
For us architects, being able to build modular, atomic, autonomous and fine grained services which do just one job and do it well has been the panacea for all that was wrong with application development and Service Oriented Architecture (SOA).
To a large extent it is true. If we could build services that are atomic and fine grained, we should be able to minimize the impact of change, increase code reusability, reduce test cycles and cycle time and be able to get products and services faster to the market by assembling functionality versus rebuilding it each time. Evolution in design, development and architecture practices have progressively tried to achieve this goal. SOA (Service Oriented Architecture) brought us closer to this goal than ever. The microservices architecture, which in some sense is an evolution of SOA (or a fix of all that went wrong with SOA) is now able to deliver the promise of building truly reusable and atomic services. It is the lego approach of building large complex and scalable business systems. Simple yet very efficient!
Fig 1: Evolution of SOA and Microservices architecture
And as always it is about the right timing. Evolution of Microservices coincides with greater adoption of cloud, virtualization and container technologies that provide the basic building blocks. The promise of microservices could not have been possible without the enabling technologies like docker and widespread adoption of cloud, SaaS and PaaS.
The enterprise software infrastructure is getting fragmented from large monolithic Enterprise Resource Planning (ERP) systems to specialized and cost effective Software as a Service (SaaS) products. This defragmentation creates a need to build business processes that span traditional boundaries of data centers, applications and cloud. Microservices solve this problem by enabling you to build integrations across distributed applications.
Fig 2: Defragmentation of Enterprise Software space and adoption of Cloud and SaaS
Most large scale web sites including Netflix, Amazon and eBay have evolved from a monolithic application architecture to a microservices based architecture. For example, amazon.com website application uses 100 to 150 microservices to get the data and assemble the web page. Netflix is doing the same for its applications to be able to scale its services to over 80 million subscribers. The value and the benefits of this architecture is proven by these giants. This very same model can be applied to almost any enterprise application development to increase reusability, develop code that is elastic to change, and to reduce cost.
Microservices allows you to build applications that are composable, atomic and independent.
Fig 3: Microservices: Composability at the application level
We at RoboMQ adopted this architecture early on. For all our integration services development, we have followed microservices architecture. The microservices architecture needs a few simple building blocks :
- 1) An API gateway
- 2) Messaging fabric or message queue infrastructure
- 3) Container technologies like Docker that is used to package microservices as atomic and autonomous unit
Fortunately, we have all of the above and more. RoboMQ’s product provides a multi-protocol gateway “ThingsConnect” and the hosted message queue service. The Multi-protocol gateway allows microservices to use any data integration protocols without any language constraints. It also allows easy integration with existing legacy services facilitating a brownfield approach. Message Queues as a service, including the hybrid messaging cloud, provides the wiring or the plumbing for services to interact, process and delegate tasks to each other thereby assembling complex business processes.
Fig 4: RoboMQ Microservices platform
As shown in the Fig. 4 above, while using RoboMQ Microservice platform you use a truly federated and distributed messaging fabric on cloud, on-premise or as Hybrid Messaging Cloud. You also have the full flexibility to use any protocol, per the preference and the support of the integrating applications, with the protocol conversion being taken care by “ThingsConnect” suite of adapters and connectors. Both of these layers (in blue in above Fig. 4) are core parts of the RoboMQ product. You develop your business specific functions, semantics and logic and package them as docker microservices that can run anywhere on your cloud, your data center, our hosted container management service or literally across any networks or clouds (in orange in Fig 4). These Microservices are thus part of a truly distributed and global business workflow with no location restrictions since these microservices are chained using RoboMQ messaging fabric.
It is a breeze developing business processes or Complex Event Processing (CEP)using Microservices platform on RoboMQ. Sign up for a free trial or a paid subscription and start building your Microservices using RoboMQ. We do offer jumpstart packages to get you going fast and wet your toes at a very low cost. To get started, please visit our website or send a note to firstname.lastname@example.org.
There is also a ton of literature on microservices architecture on the web. I will encourage you to look at information from renowned architects like Chris Richardson and Martin Fowler. And of course feel free to send us a note at email@example.com to learn more.