Skip to content

Environments

JonasVHG edited this page Sep 27, 2023 · 1 revision

Environments

publiq vzw provides various environments for its projects and products. These environments closely resemble the production environments in terms of supporting components. This is done to safely develop and thoroughly test new functionalities, ensuring the reliability of the code and applications before making them available to end users.

For developers working on third-party services related to the UiT-gamma, test environments are made available with a representative set of test data. This allows for comprehensive end-to-end testing of new integrations.

Environments

Definition

Development - for internal developers

The development environment is located on a developer's computer. This environment strives to mimic, as much as possible, the supporting components of other environments (e.g., through the use of virtual machines). It's a completely isolated sandbox that provides developers with the freedom to develop new functionality without risks.

Typically, this functionality is developed in separate "feature branches" that isolate changes and allow for clear reviews by other developers. After the review, the code is usually merged into the main branch of the version control system, and the deployment process can begin. For features that are difficult to test in isolation (including integration with external systems), feature branches may sometimes be further used in subsequent environments (e.g., acceptance). This always happens in mutual agreement.

Application data can be added via a scripted process or can be entered by the developer themselves.

Acceptance - for internal developers

The first step in deployment is the acceptance environment. Here, all necessary steps are taken to make the application available in this environment. Typically, the code from the main branch is used for this purpose. Deviations from this can be made by mutual agreement (e.g., when integration with external systems is necessary, preventing functional testing in isolation).

The application data in this environment is added via a scripted process and is regularly refreshed. Adding additional data is possible. If this data is needed to test features, it must also be included in the script responsible for the refresh to ensure that the necessary data remains available even after a refresh.

After deployment, a series of automated tests (e.g., verifying the correct functioning of new features, monitoring for regressions) are carried out in this environment. Subsequently, publiq uses this environment to conduct functional testing on the limited dataset.

Testing - for external developers

After the tests in the acceptance environment have been validated, the application is deployed to the testing environment, possibly after merging into the main branch. In this environment, the new functionality becomes available to external integrators and partners.

The application data in this environment is an anonymized copy of the production data. This allows for not only pure functional testing but also relevant performance testing, bulk actions, and more. Additional data can, of course, be added as well. Since part of the data is time-dependent (events), this dataset is periodically refreshed. During this process, the data added through the test application is overwritten by the copy of the production data.

Production - for end users

The production environment is the environment where all end users operate. When new features are released to the products, this is also the final destination for all deployments.

On all other environments, tests are conducted to increase confidence in the application, where this does not occur in the production environment. A production deployment is initiated after the planned tests on the testing environment are successful.