WSO2 sponsored this post.
Microservice architecture is probably the most popular architecture pattern in the crowded fields of modern software architecture. So, almost all the enterprises are either practicing or trying to adopt a microservices architecture. While it is easier for a small greenfield startup to realize microservice architecture, introducing and practicing microservice in a real-world enterprise is a daunting task. There are few good books to learn microservices fundamentals but they hardly discuss the real challenges in realizing microservices for modern enterprises.
This is the exact reason why we decided to write a new book on microservices, appropriately entitled, “Microservices for the Enterprise.”
Among the topics covered, we discuss the key challenges and solutions around building microservices in the modern enterprise software applications in a vendor-neutral way. The microservice fundamentals are explained via use cases from the enterprise software architecture which can also try out by the readers by running hundreds of code samples.
Some of the key concepts that are related to building microservices for your enterprise include:
- Integrating microservice and elimination of the central Enterprise Service Bus (ESB);
- Selecting the best interservice communication technique for your service;
- Deployment with Docker, Kubernetes and CI/CD tools;
- The role of service mesh;
- Embracing the cloud native ecosystems (CNCF projects);
- Decentralized data management;
- Security patterns for microservices;
- API management and governance of microservices;
- Co-existence and connectivity with existing monolithic systems.
Most of the existing books and other online resources just skim through these concepts without ever delving deep into them from an enterprise software application point of view. We put a lot of weight into these concepts in our book by, among other things, by dedicating entire chapters to cover real-world use cases.
For instance, there’s a lot of buzz around “eliminating ESB and building smart-endpoints and dumb pipes,” but hardly any proper guidelines on doing so exist. In our book, we dive into the enterprise use cases of integrating different applications, data and service and convert such use cases to microservices based use cases. As shown in Figure 1, the ESB was used as the centralized monolithic software application that connects everything which contains a significant amount of business logic. Also, it supported a wide variety of integration styles and communication protocols.
When you move into microservices architecture you have to eliminate this monolithic ESB layer but implement the same functionalities at each service level (Figure 2). Since microservice based application comprises of multiple autonomous but interconnected services, building the interaction between these services are quite critical. There is a lot of network-bound communication that the service developer has to take care of and also different communication styles, protocols, and patterns. So identifying different service types and selecting best of breed technologies for building them is quite important. We can further extend such use cases to support API Management, decentralized data management, enable security use cases and so on.
Also, some of the complexities that we have to deal in such decentralized architectures were one of the key driving forces behind the inception of modern microservice architecture patterns such as service mesh. All such concepts are discussed in detail with dedicated chapters and use cases in the book.
Here are some of the key differentiator that we’ve thrived:
- Concise, enterprise use case driven approach to explaining fundamentals;
- Vendor-neutral and best-of-breed technologies for implementing microservices. (The book covers some of the widely used and bleeding edge technologies and patterns such as technologies for container-native deployment: Docker, Kubernetes, Helm, messaging standards and protocols: gRPC, HTTP2, Kafka, AMQP, OpenAPI, GraphQL etc., microservices integration and composition techniques, Service Mesh: Istio, Linkerd, microservice resilience patterns: circuit breaker, timeouts, bulkheads etc., security standards :OAuth 2, JWT, OpenID Connect, OPA, using APIs, Events and Streams with microservices and building observable microservices using logging, metrics and tracing.
- State-of-the-art patterns and technologies such as service mesh, Istio;
- Guidelines on the elimination of ESB and building smart endpoints which are connected with dumb pipes (A look at microservices from an Application Integration perspective);
- Industry proved and battle-tested microservice patterns;
- Dedicated chapters on Kubernetes and Service Mesh: Make Kubernetes the de-facto deployment choice and extend it further via Service Mesh;
- Wide coverage of CNCF projects (Kubernetes, etcd, Prometheus, Fluentd, Envoy/Istio, gRPC, OpenTracing, Jaeger, Linkerd, Helm, Open Policy Agent) with hands-on use cases;
- Insights from San Francisco Bay Area Microservice communities: Use cases explained in the book are inspired from the existing microservices implementations such as Netflix, Google and authors’ exposure to various meetups and conferences in the San Francisco Bay area.
We would like to invite all the microservices and cloud native enthusiasts to read the book and share the feedback. We would love to hear your feedback.