Synchronous Communication
There are several options for synchronous communication between microservices:
- The Consul demo is written in Java with Spring Cloud / Boot. The demo uses Consul for service discovery, Apache httpd for routing, Hystrix for resilience and Ribbon for load balancing. It also provides a Prometheus installation for monitoring, an ELK stack for log analysis, and Zipkin to trace calls between microservices.
- The Consul DNS demo is written in Java with Spring Cloud / Boot. The demo uses Consul for service discovery but with its DNS interface and automated registration using Registrator. Apache httpd is used for routing.
- The Netflix demo uses the Netflix stack. The demo is written in Java with Spring Cloud / Boot. It uses Netflix Eureka for service discovery, Netflix Zuul for routing, Hystrix for resilience and Ribbon for load balancing.
- Kubernetes is a system to run Docker containers in a cluster. The Kubernetes demo is written in Java with Spring Cloud / Boot. It uses Kubernetes for service discovery, routing and load balancing. The demo also uses Hystrix for resilience. The code does not depend on Kubernetes.
- Cloud Foundry is a PaaS. It provides an application with an environment to run in. The Cloud Foundry demo is written in Java with Spring Cloud / Boot. Uses Cloud Foundry for deployment, service discovery, routing and load balancing. The demo also uses Hystrix for resilience. The code does not depend on Cloud Foundry.
Asynchronous Communication
Asynchronous communication makes it easier to deal with unreliable networks and services:
- Kafka uses Kafka for communication. Kafka is a message-oriented middleware and allows systems to send messages to one another.
- Atom uses REST / HTTP for asynchronous communication with the Atom format.
- Istio extends the Atom example above to use the Istio service mesh. This supports monitoring with Prometheus and Grafana, tracing with Jaeger, Logging with Elasticsearch and Kibana, and also resilience with retries, timeouts and circuit breaker.
- Dapr extends the Atom example above to use Dapr. This supports monitoring with Prometheus and Grafana, tracing with Zipkin, and also resilience with retries and circuit breaker.
UI Integration
UI integration provides very loose coupling:
- ESI shows how Edge Side Includes (ESI) can be used to integrate the UI of microservices. On microservice is written in Java with Spring Boot, the other one with Go. The Go microservices is built using multi stage Docker containers.
- jQuery shows how jQuery can be used to integrate the UI of microservices.
- Crimson Assurance is a more complex demo for a frontend integration.
The website for each demo explains how the demo can be built and started.
Continuous Delivery
- User Registration
shows all the parts of a continuous delivery pipeline with a simple demo application.
- Jenkins as a CI server
- Installing software with Chef.
- Graphite for monitoring.
- Log Analysis with the Elastic stack
- Acceptance tests in English with JBehave.
- Acceptance tests with Selenium.
- Capacity test with Gatling