We have choosen architecture with having in mind that we are making a demo. We are aware that choosen architecture is overhead for such small site with some dynamic content.

Site is deployed in two Kubernetes services. One for frontend hosted in node.js server and second for scores microservices hosted in Spring boot application server. Database is MongoDB deployed separately in three node replication set with automatic failover. Kubernetes is deployed as three node control plane high availability cluster with keepalived + HAProxy cluster virtual IP manager and load balancer. All Kubernetes nodes are enabled for scheduling to utilize available resources.

API access to services is managed by Ingress with Ingress controller nginx. Ingress maps API URL path to right services thus providing single point of entrance to Kubernetes cluster.

Raspberry pi cluster