/microservices-reference-application

Polyglot microservices reference application using opensource technology stack like Docker, Kubernetes and Istio

Primary LanguageTypeScriptApache License 2.0Apache-2.0

Microservices Reference Application(BookStore)

Polyglot microservices reference application using opensource technology stack like Docker, Kubernetes and Istio

The mian purpose of this repository is to demonstrate a polyglot micoservices reference architecture and best practices for containerized environments like Kubernetes. You can find an reference implementation showing all mordern day requirements you would expect from your platform using fully opensource technology stack. The core motivation behind putting together this repo is to have a open architecture, keep it up to date and relevant with the help of community.

Motivation Behind Creating this Repo?

I was designing an architecture for one of our next generation internal application. The more I thought about the architecture, I realize how important is to have an open architecture which can evolve based on current industry trends, best practices and open ideas from the awesome community. We are using this repository as our architecture playground for all of our products and I hope it can definely help many organization who are trying to adopt microservices. Having a adoptable and future proof technology architecture is very critical for growing business now-a-days.

System Architecture

Demonstration Video

[TBD]

Micro Services with Language and Framework

  1. Boostore Frontend App - Typescript(Angular)
  2. BookService - Java(Spring boot)
  3. OrderService - Java(Spring boot)
  4. NotificationService - Kotlin(Spring boot webflux + Kafka)
  5. ReviewService - NodeJS(Express)
  6. CategoryService - NodeJS(Express)
  7. RatingServie - Go(Gin)
  8. RecomandationService - Python(Flask)

Technology Stack

  • Docker
  • Kubernetes/Openshift
  • Istio/Kiali
  • SpringBoot
  • ExpressJS
  • Flask
  • Gin
  • Angular
  • Keyclok
  • Prometheus
  • Grafana
  • Ambassador
  • Helm
  • Kafka
  • Elasticsearch
  • Redis
  • Mongo DB
  • Postgres SQL

Expected Features

  • Cloud Native
  • Build once and run everywhere
  • Continious Integration and Continious Delevery(CI/CD)
  • Auto Scaling
  • Centralised Configuration Management
  • Service Discovery
  • Dynamic Routing
  • Distibuted Tracing
  • Infracture Observability
  • Application Insights and Metrics
  • Circuit Breaker/Fault tolerance
  • Centralised Logging
  • Asynchonous Messaging
  • Rate Limiting
  • Load Balancing
  • Retries and Timeouts
  • TLS inter service communication
  • API management
  • API Documentation
  • API Analytics
  • API Versioning
  • Self Healing
  • Distibuted Caching
  • Backups and Disaster Recovery
  • Security(Authentiation/Authorization)
  • Efficient Search
  • Adaptable to Change
  • Reproducible

Want to Contribute?

Your valuable contribution is always precious for us to keep this repository up to date and relevant. If you have some cool idea or new features requirement, please feel free to open a Github issue. We will discuss and take it up from there. For small changes or optimizations, direct pull request are always welcome. Appriciate your help in advance.

Caution! 🔥

For simplicity we have created mono repo with all services source code. Never do that in your actual project, use separate repository for individual services instead.