Um servidor de produção é um servidor usado para hospedar conteúdo e aplicações de websites para implantação em um ambiente ao vivo. É o servidor principal no qual websites e aplicações Web são acessados pelos usuários finais e também é referido como um servidor ao vivo.
Um servidor de produção pode ser uma máquina dedicada, servidor virtual, PC básico ou múltiplas máquinas dispersas geograficamente. Para pequenas empresas e aplicativos simples, todas as atividades envolvidas na implantação podem ser conduzidas em um único computador. Na implantação de software de nível empresarial, vários servidores são normalmente utilizados para os estágios necessários para criar e trabalhar em software e entregar aplicativos aos usuários finais.
Uma arquitetura de implantação comum é desenvolvimento, teste, encenação, produção (freqüentemente expressa como DEV, TEST, STAGING, PROD ou DTSP). O ambiente de desenvolvimento é o computador onde os programas de software são criados e quaisquer alterações na codificação são feitas, geralmente uma estação de trabalho do desenvolvedor. Nesta arquitetura, quando os desenvolvedores terminam com a aplicação, o servidor de desenvolvimento a implanta no servidor de teste /QA server. Após o teste, o software é implantado em um servidor de encenação, onde todos os elementos de um website ou aplicação são montados da mesma forma como aparecerão ao vivo. Uma vez que tudo pareça correto e funcione corretamente no servidor de testes, o software é implantado no servidor de produção, o que o torna acessível aos usuários finais.
Tradicionalmente, os ambientes de desenvolvimento e produção foram separados por várias razões. Por exemplo, um problema com software não testado como um loop infinito ou vazamento de memória pode dificultar o funcionamento do servidor de produção e causar problemas para os usuários finais. Outra preocupação são os erros exibidos aos usuários.
Como resultado, em ambientes de qualquer tamanho, o desenvolvimento no servidor de produção tem sido fortemente desencorajado. Recentemente, no entanto, outras abordagens têm sido tentadas para remover etapas da implementação do software e tornar os processos mais eficientes. Uma abordagem utilizada em alguns ambientes DevOps é a marcação de funcionalidades, que permite aos desenvolvedores selecionar certas funcionalidades que estarão disponíveis para usuários específicos. A marcação de funcionalidades pode tornar possível o desenvolvimento no servidor de produção com funcionalidades desligadas para a maioria dos utilizadores até que se demonstre que estes estão prontos para entrar em funcionamento para todos os utilizadores.