When developing a web application for others, multiple environments for testing are a good idea. However, different development teams have different definitions for the meaning of each environment.
Currently, I like to keep it simple, and have a development environment (my local machine), a staging environment (someone before I deploy my app to the world), and then to production. Although there may be value in more environments, I'm going to be sticking with these three for now.
My main question is:
What properties would be appropriate when defining a staging environment?
However, here are some related questions:
- Does the web server have to be on a separate physical machine than the database?
- Does the database have to be exactly identical to the production database?
- Can the staging environment go down for maintenance?
- Can the staging environment be used to test out new features (ie. a beta env)?