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

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
java (31,749
docker (2,972
spring-boot (784
elasticsearch (556
docker-compose (404
microservice (386
kibana (90
distributed-tracing (79
logstash (73
elk (61
eureka (53
zuul (43
feign (28
logback (28