I'm involved in the development of a backend for an IIoT project. This implies a lot of streaming-like inter-service communication, less state-handling with e.g. Sagas (like e.g. in finance projects). The backend shall support wrapping of Maschine Learning models into services. The backend shall use the microservice architecture. Communication technologies to be used are REST (API Gateway), GraphQL (API gateway), MQTT (API gateway), gRPC (inter-service) and potentially streams (inter-service). A statically typed programming language shall be used. The major microservice frameworks which satisfy these requirements seem to be:
- ASP .NET Core (C#) (20.3k gh stars)
- Play Framework (Java/Scala) (11.7 gh stars)
- Spring Boot (Java) (52.1k gh stars)
Other frameworks considered have been:
- Go kit (Golang) - There is no ONNX runtime in Golang.
- Lagom (Scala) - Does not satisfy all communication requirements.
- FastAPI (Python) - Python is not statically typed.
- warp (Rust) - Does not satisfy all communication requirements.
My rapid-prototyping language is Python. Does someone have experience with both of these frameworks and can give me some hints w.r.t. learning curve, development speed (CI/CD, etc.), effort for implementing microservice patterns.