Awesome Open Source
Awesome Open Source


This project is created to get experience on Microservices With Netflix OSS. This is a simple project by coded imperative programming with simple business requirements.

ELK Stack has been integrated for monitoring since version 1.1.0.

There are four microservices:

  • Accounts : This microservice is responsible for managing accounts. An account could be buyer, seller or an backoffice account but there is only buyer account.
  • Products : This microservice is responsible for managing products.
  • Orders : This microservice is responsible for managing orders. It doesn't know anything about account and product except id.
  • Backoffice: This microservice is provides endpoints for backoffice ui.

Backoffice microservice has an endpoint with path "/api/v1/backoffice/orders". This endpoint return a list of orders with name of product and account. It connects accounts, products and orders microservices via Feign.


Service EndPoint Port Method Description
Accounts /api/v1/accounts/{id} 7500 GET Return detail of specified account
Accounts /api/v1/accounts 7500 GET Return details of all acounts
Products /api/v1/products/{id} 7501 GET Return detail of specified product
Products /api/v1/products 7501 GET Return details of all products
Orders /api/v1/orders/{id} 7502 GET Return detail of order
Orders /api/v1/orders 7502 GET Return details of orders
Backoffice /api/v1/backoffice/orders 7503 GET Return orders with product name and account name


Service EndPoint
Accounts /account/api/v1/accounts/{id}
Accounts /account/api/v1/accounts
Products /product/api/v1/products/{id}
Products /product/api/v1/products
Orders /order/api/v1/orders/{id}
Orders /order/api/v1/orders
Backoffice /backoffice/api/v1/backoffice/orders

URI for gateway : http://localhost:8762

Used Netflix OSS:

  • Netflix Eureka is used for discovery service.
  • Netflix Ribbon is used for client side load-balancing.
  • Netflix Zuul is used for gateway.

Distributed Tracing:

  • Sleuth and Zipkin

You can open Zipkin : http://localhost:9411 Zipkin Filter Zipkin Full Trace


  • ElasticSearch is on 6972 port
  • Logstash TCP is on 5000 port
  • Kibana is on 5601 port

Open kibana with http://localhost:5601/. You must define an index pattern (taner-*) on Management/Stack Management.


Build & Run

  • >mvn clean package : to build
  • >docker-compose up --build : build docker images and containers and run containers
  • >docker-compose stop : stop the dockerized services
  • Each maven module has a Dockerfile.

In docker-compose.yml file:

  • Accounts Service : 2222 port is mapped to 7500 port of host
  • Products Service : 2222 port is mapped to 7501 port of host
  • Orders Service : 2222 port is mapped to 7502 port of host
  • Backoffice Service : 2222 port is mapped to 7503 port of host
  • Eureka Discovery Service : 8761 port is mapped to 8761 port of host
  • Spring Boot (/ Zuul) Gateway Service : 8762 port is mapped to 8762 port of host


  • kubectl create -f containerized-accounts/k8n/deployment.yml

  • kubectl create -f containerized-accounts/k8n/service.yml

  • kubectl port-forward svc/containerized-accounts 7500:7500

  • curl localhost:7500/account/api/v1/accounts

  • kubectl create -f containerized-products/k8n/deployment.yml

  • kubectl create -f containerized-products/k8n/service.yml

  • kubectl port-forward svc/containerized-products 7501:7501

  • curl http://localhost:7501/product/api/v1/products

  • kubectl create -f containerized-orders/k8n/deployment.yml

  • kubectl create -f containerized-orders/k8n/service.yml

  • kubectl port-forward svc/containerized-orders 7502:7502

  • curl localhost:7502/order/api/v1/orders

  • kubectl create -f containerized-main/k8n/deployment.yml

  • kubectl create -f containerized-main/k8n/service.yml

  • kubectl port-forward svc/containerized-main 7503:7503

  • curl localhost:7503/backoffice/api/v1/backoffice/orders

  • kubectl create -f containerized-discovery/k8n/deployment.yml

  • kubectl create -f containerized-discovery/k8n/service.yml

  • kubectl port-forward svc/discovery 8761:8761

  • kubectl create -f containerized-gateway/k8n/deployment.yml

  • kubectl create -f containerized-gateway/k8n/service.yml

  • kubectl port-forward svc/gateway 8762:8762

  • curl localhost:8762/backoffice/api/v1/backoffice/orders



  • Add kubernetes yaml files (still using Eureka discovery)


  • Update Spring Boot version to 2.5.1
  • Switch to Spring Boot Gateway


  • Sleuth and Zipkin Integration
  • Making some refactorings
  • Lombok Integration


  • ElasticSearch, Kibana, Logstash integration


  • Spring-Boot 2.3.1.RELEASE
  • Java 11
  • Docker Image updated
  • Spring-Cloud artifacts have been changed
  • Open Feign integrated


  • Spring-Boot 2.0.2.RELEASE
  • Java 8
Alternatives To Spring Boot Microservice Eureka Zuul Docker Gateway Kubernetes
Select To Compare

Alternative Project Comparisons
Related Awesome Lists
Top Programming Languages

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
Java (402,966
Docker (98,870
Spring Boot (16,502
Microservices (12,251
Elasticsearch (11,408
Docker Compose (8,953
Kibana (3,049
Logstash (2,850
Elk Stack (1,795
Zuul (1,074
Logback (916
Feign (771
Distributed Tracing (333
Sleuth (42