GitHub - microservices-patterns/ftgo-application: Example code for the book Microservice patterns (original) (raw)

Microservices Patterns Cover

Please note

Got questions?

Please create a github issue and I’ll do my best to help you.

Application architecture

Service design

Key points:

Chapter by chapter

This section maps the chapters to the code.

Chapter 3 Inter-process communication in a microservice architecture

Chapter 7 Implementing queries in a microservice architecture

Building and running the application

Pre-requisites

Building

Temporary: Build the Spring Cloud Contracts using this command:

Build the services using this command:

Running the application

Run the application using this command:

Note: the ':'

This can take a while.

Stopping the application

Stop the application using this command:

Deploying the application on Kubernetes

You can find Kubernetes YAML files in the following directories: deployment/kubernetes and */src/deployment/kubernetes. There are also some helpful shell scripts.

Deploying services

You can run this command

./deployment/kubernetes/scripts/kubernetes-deploy-all.sh

Undeploying the services

You can run the script to undeploy the services:

./deployment/kubernetes/scripts/kubernetes-delete-all.sh

If you want to delete the persistent volumes for Apache Kafka, Zookeeper and MySQL please run the command:

./deployment/kubernetes/scripts/kubernetes-delete-volumes.sh

Setting environment variables to do development

You should not need to set any environment variables. To run the application, you certainly do not. Similarly, to do development (e.g. run tests), you typically do not need to set any environment variables. That’s because Docker containers are generally accessible (e.g. Docker for Windows/Mac) on the host via localhost. However, if Docker is running elsewhere (e.g. you are using Docker Toolbox) you will need to set DOCKER_HOST_IP.

Quick way

A quick way to set the environment variables is to run the script ./set-env.sh.

Long way

The value of DOCKER_HOST_IP must be meaningful to both Java services/tests running on your desktop/laptop and to Docker containers. Please do NOT set it to the unresolvable hostname of your machine, localhost or 127.0.0.1 since the Docker containers will probably not work correctly.

Verifying that DOCKER_HOST_IP is set correctly

You can verify that DOCKER_HOST_IP is set correctly by running this command:

docker run -p 8889:8888 -e DOCKER_DIAGNOSTICS_PORT=8889 -e DOCKER_HOST_IP
--rm eventuateio/eventuateio-docker-networking-diagnostics:0.2.0.RELEASE

Setting the environment variable in your IDE

If you want to run Java services/tests within your IDE on your desktop/laptop AND the Docker containers are not accessible via localhost THEN you will need to set DOCKER_HOST_IP within your IDE. How to do this depends on your operating system and IDE. For example, I find it convenient to launch my IDE from the command line and after setting this environment variable.