ATLAS Releasestrategy 1 Environments
Originally
ADR-0041 ATLAS-ReleaseStrategy-1-Environments (v3) · Source on Confluence ↗Release Strategy - Environments
Context
Atlas team is delivering a data products. Ensure that our deliverables are high quality any change in a software must pass through 3 environments.
Environment 1 - Dev
The Development environment, as its name suggest, serves primarily for developmental objectives. At its core, it functions as an experimental arena for developers, empowering them to seamlessly test and iterate upon their concepts. One of its standout features is the ability to engage in rapid prototyping, facilitated by direct and uninhibited interaction with cloud resources and the underlying infrastructure.
The benefits mentioned above also makes this environment fragile. Those tests and experiments could potentially influence the environment’s state, for instance, due to alterations in tool versions.
An alternative approach to the Development environment could involve local development; however, when dealing with data-intensive projects, two significant challenges come to the forefront:
Firstly, the sheer magnitude of the data transformations involved makes local handling unfeasible, necessitating the adoption of cloud resources for executing specific computational processes. Mocking of this data is challenging since it’s produced by third party apps with unknown quality.
Secondly, the data generation process relies on cloud-native tools that cannot be reliably simulated within a local environment. This reliance on cloud-native tools introduces complexities that hinder accurate emulation and compromise the authenticity of testing and results.
Additionally, it’s essential to consider that each data pipeline must be optimized within the cloud environment under full load conditions. This optimization ensures that the system functions seamlessly and efficiently when on higher environments.
Environment 2 - Staging
This environment is a mirror of prod environment. Developers are advised against both accessing and making modifications to this environment. Its primary function is to serve as a safeguard for the production environment.
While the staging environment shares many similarities with production, it is not exposed to end-users and does not serve real traffic. This controlled nature allows developers, testers, and quality assurance teams to conduct thorough assessments, ensuring that the changes introduced do not adversely affect the integrity or performance of the production system.
In essence, the staging environment functions as a reliable litmus test. If an application or feature behaves seamlessly within this controlled setting, it’s a strong indication that it will exhibit similar behavior when deployed to the actual production environment. Thus, the staging environment is a critical component in maintaining the stability, reliability, and overall quality of the Atlas service.
Environment 3 - Production
The Production Environment is exposed to Atlas consumers. It operates in a fully operational mode, handling actual user traffic and delivering the intended functionality to users, clients, or customers. As the ultimate destination for software deployment, it requires robust measures for monitoring, security, and scalability to ensure uninterrupted service availability and the safeguarding of sensitive data.
The production environment must remain isolated, any software change that reaches it must pass through dev and staging filters first.