Requirements of secured and fault tolerant services running with high availability
Let us quickly go over the internals of the go-demo application. It consists of two services. Data is stored in a MongoDB. The database is consumed by a backend service called go-demo
. No other service should access the database directly. If another service needs the data, it should send a request to the go-demo
service. That way we have clear boundaries. Data is owned and managed by the go-demo
service. It exposes an API that is the only access point to the data.
The system should be able to host multiple applications. Each will have a unique base URL. For example, the go-demo
path starts with /demo
. The other applications will have different paths (example: Â /users
, /products
, and so on). The system will be accessible only through ports 80
 for HTTP and 443
HTTPS. Please note that there can be no two processes that can listen to the same port. In other words, only a single service can be configured to listen...