Deployment Environments & Software Development Workflow

Published Nov 19, 2019 under Software Development

Deployment Environments

In computing systems, a deployment environment is a computer system in which an application runs. There are several styles of environment which are used typically:

  • dev - i.e. development, where the software developer creates software.
  • stag - i.e. staging, where functional and integration testing takes place.
  • prod - i.e. production, where the live, money-producing application runs.

Development Workflow

Using these environments, we can follow a software development procedure like below:

  1. Normalize dev state

    Get your development in a clean state. This means the repository should be an exact copy of repo code - no uncommitted/untracked changes, you should have a recent copy of the application database loaded in your dev environment, and be sure clear any caches or generated files.

  2. Make a single "alteration" to dev

    Work on a single logical unit of work. For example, add an extension, edit code, disable a module, edit some CSS files, edit some text, etc.

  3. Test the change

    Ensure functionality is as-expected, look for errors in logs, measure for performance regressions.

  4. Commit the alteration to the repository

    The change have passed the development and testing stage. Deploy to staging / integration for final check.

  5. Deploy to production

    If deploy and final check are successful, you can roll out you application to the world. Sit back and enjoy your work!