Why should we have separate development, testing, and production environments?
Development – It is an environment where developers commit code, experiments, fix bugs, make mistakes etc…
Staging – It is an environment where manual or automated tests are executed, and due to complexity, these can consume a lot of server resources.
Production – It is an environment where we create value for customers and/or the business. This is a highly sensitive environment and puts a deep effect on your reputation and brand name.
Here comes the question “Why should we have separate development, testing, and production environments?”
Why don’t we need all of these happening in the same environment?
- The main reason is that you never want to mix testing and production environment because development involves a lot of debugging and testing. One incorrect program can spoil the server’s memory, CPU cores, Disk I/O and “hang” it.
- While administering quality assurance, unit tests, and stress testing, you need to make sure they are executed in a totally segregated environment. If something explodes in a development environment or in QA, it will adversely affect the production environment and thus live users and their mission-critical data!
- Having server for dev, test and production mean shared resources between dev, test, and production – shared database, shared disk space, shared disk I/O, shared CPUs, shared network bandwidth and unwanted stress.
- We don’t want the business to grind to a halt because a new build has pushed to your servers it has started swapping on hard-drives and are consuming every core on the processor.
- We don’t want to bring down the server uptime SLA percentage due to unplanned system configuration and architectural errors.
Reasons for having separate environments
- Software development is a continuous process. To avoid the issues caused by software development and reducing the risks of blocking business.
- To reduce risks of unwanted downtime due to developers ad-hoc rigging.
- To improve the SLA of application and provide better user experience to your users.
- To reduce the risks of production data getting into the wrong hands. It is very important when organizations deal with very sensitive and private data, like client information, ID, numbers, financial transactions and health information. Moreover, we want this for avoiding production data getting intermingled with test data.
- Write access to a production server is limited to specific system engineers.
- A production server hosts only live applications and finalize content. The unfinished and preliminary versions of applications and data should never be placed on this server, except possibly under highly controlled test conditions.
If you are hosting your dev, stage and prod environments on a single server you genuinely need to give a second thought to it, after reading this article of ours. Please share your views if you have any questions and further queries, You can also contact us if you need any help in hosting these environments on different servers. Thanks for sharing your valuable time reading this article on our website!
Stay tuned for future updates!