Learn about GenX services that can add value to your business



Microservice architecture has become the de facto choice for modern application development. Though it solves certain problems, it is not a silver bullet. It has several drawbacks and when using this architecture, there are numerous issues that must be addressed. This brings about the need to learn common patterns in these problems and solve them with reusable solutions.

Principles of Microservices Pattern:

  • Scalability
  • Availability
  • Resiliency
  • Independent, autonomous
  • Decentralized governance
  • Failure isolation
  • Auto-Provisioning
  • Continuous delivery through DevOps

Software Design Patterns supported by MicroServices

  • Decomposition Patterns
  • Decompose by Business Capability
  • Decompose by Subdomain
  • Strangler Pattern

  • Integration Patterns
  • API Gateway Pattern
  • Aggregator Pattern
  • Client-Side UI Composition Pattern

  • Database Patterns
  • Database per Service
  • Shared Database per Service
  • Command Query Responsibility Segregation (CQRS)
  • Saga Pattern

  • Observability Patterns
  • Log Aggregation
  • Performance Metrics
  • Distributed Tracing
  • Health Check

  • Cross-Cutting Concern Patterns
  • External Configuration
  • Service Discovery Pattern
  • Circuit Breaker Pattern
  • Blue-Green Deployment Pattern

  • Other Patterns
  • Sidecar
  • Chained MicroService
  • Branch Microservice
  • Event Sourcing Pattern
  • Continuous Delivery Patterns

Developing Microservices

There are several microservices frameworks that you can use for developing for Java.
Some of these are:

  • Spring Boot: This is probably the best Java microservices framework that works on top of languages for Inversion of Control, Aspect Oriented Programming, and others.
  • Jersey: This open source framework supports JAX-RS APIs in Java is very easy to use.
  • Swagger: Helps you in documenting API as well as gives you a development portal, which allows users to test your APIs.
  • Eclipse Vert.x: is a toolkit to build reactive microservices. It gives you a great freedom to shape your system as you want, ensuring its responsiveness, resilience and elasticity. The communication between your components is asynchronous leveraging the non-blocking and asynchronous nature of Vert.x.