Synchrone Kommunikation
Es gibt verschiedene Möglichkeiten für synchrone Kommunikation zwischen Microservices:
- Die Consul-Demo ist in Java mit Spring Cloud/Boot geschrieben. Die Demo verwendet Consul für Service Discovery, Apache httpd für das Routing, Hystrix für die Resilience und Ribbon für Lastverteilung. Außerdem bietet sie eine Prometheus-Installation für das Monitoring, einen ELK-Stack für die Log-Analyse und Zipkin, um Aufrufe zwischen Microservices zu tracen.
- Die Consul DNS-Demo ist ebenfalls in Java mit Spring Cloud/Boot geschrieben. Die Demo verwendet Consul für die Service Discovery, jedoch mit seiner DNS-Schnittstelle und automatischer Registrierung unter Verwendung von Registrator. Apache httpd wird für das Routing verwendet.
- Die Netflix-Demo verwendet den Netflix-Stack. Die Demo ist in Java mit Spring Cloud/Boot geschrieben. Sie verwendet Netflix Eureka für die Service Discovery, Netflix Zuul für das Routing, Hystrix für die Resilience und Ribbon für die Load Balancing.
- Kubernetes ist ein System zum Ausführen von Docker-Containern in einem Cluster. Die Kubernetes-Demo ist in Java mit Spring Cloud/Boot geschrieben. Sie verwendet Kubernetes für die Service Discovery, Routing und Load Balancing. Die Demo verwendet auch Hystrix für die Resilience. Der Code ist nicht von Kubernetes abhängig.
- Cloud Foundry ist eine PaaS (Platform as a Service). Es bietet einer Anwendung eine Umgebung zum Ausführen. Die Cloud Foundry-Demo ist in Java mit Spring Cloud/Boot geschrieben. Sie verwendet Cloud Foundry für Deployment, Service Discovery, Routing und Load Balancing. Die Demo verwendet auch Hystrix für die Resilience. Der Code ist nicht von Cloud Foundry abhängig.
Asynchrone Kommunikation
Asynchrone Kommunikation erleichtert den Umgang mit unzuverlässigen Netzwerken und Microservices:
- Das Kafka-Beispiel verwendet Apache Kafka für die Kommunikation. Kafka ist eine nachrichtenorientierte Middleware und ermöglicht es Systemen, Nachrichten miteinander auszutauschen.
- Atom erwendet REST / HTTP für die asynchrone Kommunikation im Atom-Format.
- Istio erweitert das oben genannte Atom-Beispiel und verwendet den Istio-Service-Mesh. Das Beispiel zeigt auch Monitoring mit Prometheus und Grafana, Tracing mit Jaeger, Logging mit Elasticsearch und Kibana, sowie auch Resilience mit Retry, Timeout und Circuit Breaker.
- Die Dapr-Demo erweitert das oben genannte Atom-Beispiel und nutzt Dapr . Das Beispiel unterstützt Monitoring mit Prometheus und Grafana, Tracing mit Zipkin, sowie auch Resilienz mit Retry und Circuit Breaker.
UI Integration
Die Integration über die Benutzeroberfläche (UI) ermöglicht eine sehr lose Kopplung:
- Die ESI-Demo zeigt, wie Edge Side Includes (ESI) verwendet werden können, um die Benutzeroberfläche von Microservices zu integrieren. Ein Microservice ist in Java mit Spring Boot geschrieben, der andere in Go. Der Go-Microservice wird mit mehrstufigen Docker-Containern erstellt.
- Das jQuery-Beispiel zeigt, wie jQuery verwendet werden kann, um die Benutzeroberfläche von Microservices zu integrieren.
- Crimson Assurance ist eine komplexere Demonstration für eine Frontend-Integration. Die Website für jede Demo erklärt, wie die Demo erstellt und gestartet werden kann.
Continuous Delivery
- “User Registration”
zeigt alle Teile einer Continuous Delivery-Pipeline mit einer einfachen Demo-Anwendung.
- Jenkins als CI-Server
- nstallation von Software mit Chef.
- Graphite für das Monitoring.
- Log Analyse mit dem Elastic Stack.
- Akzeptanztests mit JBehave.
- Akzeptanztests mit Selenium.
- Kapazitätstest mit Gatling