Development Sandboxes: An Agile Core Practice
- Development. This is the working environment of individual developers, programming pairs, or individual feature teams. The purpose of this environment is for the developer/pair/team to work in seclusion from the rest of their team, enabling them to make and validate changes without having to worry about adversely affecting the rest of their team. These environments are likely to have their own databases to enable regression testing and more importantly agile testing strategies.
- Team integration. Each team should have its own integration environment, often referred to as a build environment or simply a build box. Developers will promote their changed code to this environment, test it, and commit it to their teams configuration management system. The goal of this environment is to combine and validate the work of your entire team so it can be tested before being promoted into your Test/QA sandbox.
- Demo sandbox. This sandbox is where you deploy working software which you can use to demo software to your stakeholders and they can use for acceptance testing purposes.
- Pre-production test/QA. This sandbox is shared by several teams and is often controlled by a separate team, typically your testing/QA group. This environment is often referred to as a pre-production sandbox, a system testing area, or simply a staging area. Its purpose is to provide an environment that simulates your actual production environment as closely as possible so you can test your application in conjunction with other applications. This sandbox is crucial for complex environments where several applications access your database, although even if your database is only accessed by a stand-alone application you will still be required to test within this sandbox before deploying your application into production.
- Production. This is the actual environment in which your system will run once it is deployed.
Figure 1. Sandboxes within your technical environment (click to expand).
