A production server is a server used to host website content and applications for deployment to a live environment. It is the main server on which websites and Web applications are accessed by end users and is also referred to as a live server.
A production server may be a dedicated machine, virtual server, basic PC or multiple machines dispersed geographically. For small businesses and simple applications, all the activities involved in deployment may be conducted on a single computer. In enterprise-level software deployment, multiple servers are typically used for the stages required to create and work on software and deliver applications to end users.
A common deployment architecture is development, testing, staging, production (often expressed as DEV, TEST, STAGING, PROD or DTSP). The development environment is the computer where software programs are created and any changes to coding are made, usually a developer’s workstation. In this architecture, when developers have finished with the application, the development server deploys it to the test /QA server. After testing, the software is deployed to a staging server, where all the elements of a website or application are assembled similarly the way they will appear live. Once everything appears correct and functions properly on the staging server, the software is deployed to the production server, which makes it accessible to end users.
Traditionally, development and production environments have been separate for several reasons. For example, a problem with untested software like an infinite loop or memory leak could hamper the functioning of the production server and cause problems for end users. Another concern is errors displayed to users.
As a result, in environments of any size, development on the production server has been strenuously discouraged. Recently, however, other approaches have been attempted to remove stages from software deployment and make the processes more efficient. One approach used in some DevOps environments is feature flagging, which allows developers to select certain features that will be available to specific users. Feature flags can make it possible to develop on the production server with features turned off for most users until they have been demonstrated ready to go live for all users.