- Microservices are developed on top of Vert.x
- Communication between services should exist
- Orchestration should be done via Minikube with Istio/Envoy
User need to get information for entertainment section. User will get 1 random interesting fact and weather.
User flow: #User call Info service for getting info for entertainment section #Info service call Weather service to return the current temperature and short description
As for requirements 2 Services will be implemented on top of Vert.x (Java 1.8) Docker is used as container provider Minikube/Kubernetes + Istio is for deployment on local environment
Rest API is provided by each service. Communication from service to service is also via REST.
Ordinary for Istio deployment architecture is used. Each service has additional container called Envoy. It's used as a proxy to communicate between services and use service mesh. For example, Grafana can be used as monitoring application because we have all needed statistics provided by Istio.
Was done:
- Implemented 2 Rest services on top of Vert.x
- Created images for each of them and pushed to Docker hub
- Installed Minikube + Istio environment
- Created Kubernetes deployment schema
- Created Tech design doc