Software architecture follows the microservices architecture pattern. Software is built of small, independently deployable modular services with each service running in its own segregated unique environment. This allows for better modularity, continuous delivery, scalability and evolutionary design of the system.
Reactive Design principles are applied to help ensure the system is:
Web UI is built as a Single-Page Application to provide responsive and fluid user experience.
Long running jobs are scheduled through a Message Queue that provides load balancing and high reliability while auto-scaling service provisions compute capacity as required based on the load.
Infrastructure provisioning and software deployment are done through automated scripts using Terraform, Docker, Cloud-Init and Helm technologies.