Techincal Micro Architecture
Factors that influence the technical Micro Architecture
- Communication
- Resilience
- New Microservices
- Operation
- logs
- metrics
- configuration
- deployment
Reactive Programming
The Reactive Manifesto defines the term “reactive” based on the following characteristics:
Responsive
- Responsive means that the system responds as fast as possible.
Resilient
- Because of resilience the system remains available even if parts fail.
Elastic
- The system can deal with different levels of load, for instance by using additional resources. After the load peak subsides the resources are freed again.
Asynchronous communication
- The system uses asynchronous communication (message-driven).
reactive programming means something completely different. This programming concept resembles the data flow
Reactive programming and the reactive manifesto
Spring Boot
Communication APIs
-
REST - By default
-
JAX RS API
-
Java Messaging Service(JMS)
-
Spring Cloud Streams supports messaging systems such as Kafka, RabbitMQ (see above) and Redis.
Operations
- Deployment - JAR file
- Configuration: application.properties
- logs or JSON data to server.
- Metrics: Actuator
Go - Speed and concurrency
Moving to Microservices: Top 5 Languages to Choose From
Go vs. C: A Language Comparison of Concurrent Programming Features
Communication: REST, AMQP , Redis
Operation
- Deployment: docker multi-staging
- Configuration: Viper for both JSON and YAML
- logs
- Metrics: Go Kit, Prometheus, Graphite, InfluxDB
Resilience
resilience patterns such as Circuit Breaker , Hystrix library