Architecture considerations

We have already discussed choosing a microservice or monolithic architecture in Chapter 1, Introduction to Modern Web Application Development. Here are some more points when it comes to architecture:

Asynchronous messaging is the best way of building stateless systems. It is important in a microservice architecture as you might often want communications to be stateless and non-blocking. Some of the popular solutions for this are Apache Kafka (http://kafka.apache.org/), RabbitMQ (https://www.rabbitmq.com/), and gRPC (https://grpc.io).  ReactiveX (http://reactivex.io/) and Spring Reactor (http://projectreactor.io/) are popular abstractions for working with asynchronous systems. Asynchronous messaging also makes the systems loosely coupled.