+ Strong modularity
+ Development scalability
+ Freedom in technology choices (Scala, Go, Node, Rust, Elixir, ...)
- Increased operations effort
- Hard to develop
// In monolith
val productService = new ProductService(...);
val products = productService.find("nike");
// In a microservice
val http = new HttpClient("https://product.api.io");
val products =
http.get("/products?vendor=nike");
A reactive system is: