The operation of the site consists of the following environments:
- live environment - where the actual live application runs
- staging environment - pre-production environment for final functionality testing before deployment
- feature preview - environment for testing new features and bug fixes
local dev environment - local development of features and bug fixes
This environment includes the operation of the site itself, which customers access from an external environment (internet). We propose to operate it on multiple physical servers with regard to performance and high availability.
The servers will run the Linux operating system (Debian distribution). The servers themselves are rented from hosting (Hetzner Hetzner and managed by the company ui42.
This environment is used for the final check of changes that are ready to be deployed to live operation. Unit tests, integration selenium tests, and if necessary, manual testing take place in the process of deploying changes on it. It also serves to test adjustments to system settings and updates of system components for the live environment.
This environment should replicate the live environment as closely as possible in terms of setup. However, it does not have such high demands in terms of performance and availability, and therefore we propose to operate it on a single physical server, on which the individual live environment servers are simulated as virtual servers running on the OpenStack platform
This environment is not publicly accessible. Access is allowed based on IP for the client and ui42, or for third parties for testing purposes.
For the purposes of developing and testing new functionalities, as well as bug fixes, the feature previews environment is used. This environment allows for a separate installation for each developing functionality. Each such installation has its own URL and is created automatically when a developer publishes a branch with changes in the project repository. The installation is also automatically deleted when the developer completes the new functionality and merges their changes into the main development branch.
Such installations allow for easy sharing of new changes with the client for testing or feedback during development.
This environment is operated on a single physical server, on which a Kubernetes cluster runs to allow the installation of multiple installations via docker. Data for these installations are automatically copied from the live environment, with the data being anonymized and trimmed to the necessary minimum during copying.
For the needs of the project, the feature previews environment is sized to a maximum of 10 concurrently developed functionalities or bug fixes.