Environments

Before going live or "into production", changes to applications must go through a series of different types of testing.

  1. Integration Testing – the changes are integrated into the larger application and appropriately tested
  2. Functional Testing - formal test scripts (ie documents containing test cases, or step-by-step guides to verify functional requirements) are executed by testers
  3. Acceptance Testing – formal or informal testing to ensure that functional requirements are valid
  4. Quality Testing – formal or informal testing to ensure that non-functional requirements (regulatory, performance, etc) are met
  5. Staging Testing – verification that the software can be deployed to an environment that matches the production environment

To ensure a distinct and efficient testing process, these tests often occur in different application environments. Each of these environments represents the production environment to some extent, though often with less of a hardware footprint.

Although an organization may have any number of environments, they will all be one of the seven types:

BuildMaster's Implementation

In BuildMaster, there is no strict enforcement of how environments are set-up and defined. Environments do, however, serve two key purposes.

  1. Workflow definition – Each application defines the workflow (ie sequence of environments that changes must be tested in prior to production) using environments.
  2. Security – privileges may be defined by environment. As such, access to things that are tied to a specific environment (production configuration file, deployment plans, etc), may be revoked.

Environments also serve as a way to group servers into logical groups.

When setting up environments in Build Master, we do not recommend creating separate, similarly-purposed environments for two different applications. For example, even if two applications utilize entirely different sets of servers, there should be a process-consistent name created (Development, Integration, Test, Production) instead of application-specific names (Dev-App1, Dev-App2, Int-App2, ...).

Even though the servers groups may be completely different, they represent the same stages of development and, in order to keep a consistent nomenclature throughout the application portfolio, should use the same names. Otherwise, as the software development organization grows and changes, there will be a veritable soup of applications names and environment names that will be difficult to keep track of.

From a security standpoint, access to all applications' production environments may be restricted, or only some applications' environments. This is accomplished by adding an environmentally-scoped privilege (see "Security & Privileges") for that specific environment.

This content has the following tags:

buildmasterenvironments