Pergunta

A maioria dos quadros python terá um servidor web desenvolvimento de algum tipo que vai ter um aviso de que não é para uso como servidores de produção. Quão diferente é que eles tendem a ser de seus equivalentes de produção?

Eu não tenho bastante decidiu que quadro para ir com, muito menos o que a produção servidor para uso, então é meio difícil para mim para fixar esse baixo para um "comparar x servidor de desenvolvimento para o servidor de produção y". Então, com isso dito, deixe-me fazer a pergunta um pouco mais preciso: Na sua experiência passada com um quadro python, quanto tempo você tem para gastar obtenção de seu aplicativo instalado e funcionando com um sistema de produção uma vez que sua sido desenvolvido em um desenvolvimento servidor? Ou você pular o servidor de desenvolvimento e desenvolver seu aplicativo em um servidor que é mais parecido com o que você vai usar em produção?

Foi útil?

Solução

Os ambientes inferiores devem tentar igualar o ambiente de produção, tanto quanto possível com os recursos disponíveis. Isso se aplica a todos os esforços de desenvolvimento, independentemente de eles são baseados em python ou mesmo web-based. Em termos práticos, a maioria das organizações não estão dispostos a gastar esse tipo de dinheiro. Neste caso, tente fazer pelo menos o meio ambiente que está diretamente abaixo da produção tão perto quanto possível da produção.

Algumas das variáveis ??a ter em mente são:

  • muitas vezes existem várias máquinas (servidor de aplicativos, servidor de banco de dados, servidores web, balanceadores de carga, paredes de fogo, etc) em uma produção. Manter todos estes em mente.

  • Sistemas operacionais

  • número de CPUs. Mover-se de um ambiente de uma CPU mais baixa para um ambiente de produção multi core pode expor problemas multi-threading que não foram testados

  • balanceamento de carga. Muitas vezes menor ambientes não têm equilíbrio de carga. Se você está replicando sessões (por exemplo) em vários servidores de aplicativos de produção, você deve tentar fazer o mesmo em um ambiente de menor

  • Software / versões de bibliotecas

Outras dicas

Eu desenvolvo com Django. O servidor de produção que temos é remoto, por isso é uma dor de usá-lo para o desenvolvimento. Assim, em primeiro lugar, eu criei uma VM e tentou corresponder da melhor forma que pude o ambiente do servidor prod. Em algum ponto que vm foi metralhado (devido a um incidente não relacionado). I fez um balanço da situação naquele momento e percebeu que havia realmente nenhuma boa razão para estar usando uma vm personalizado para o desenvolvimento. Uma vez que os recursos disponíveis para o aplicativo não foram os mesmos que o servidor prod, não era bom para consultas de tempo de qualquer maneira (em um sentido absoluto).

Dito isto, eu agora usar o Django é construído em dev servidor com SQLite para o desenvolvimento, e apache / wsgi e PostgreSQL para a produção. Enquanto as dependências python são cumpridos em ambos os lados, é 100% compatível. O problema só potencial seria escrever sql crua em vez de usar o ORM.

Geralmente, eles são os mesmos em termos de configurações que são necessários para executar os aplicativos que incluem a configuração do ambiente.
No entanto, os clientes genereally tem dev sistemas que são menos poderosos em termos de poder de processamento e outros h / w recursos. Tenho visto usando-os servidores virtuais no evironment dev uma vez que geralmente têm vários projetos em andamento em paralelo um isso os ajuda a reduzir o custo.

O ideal é que a configuração lógica do desenvolvimento, teste e servidor de produção deve ser o mesmo. Eles devem ter a mesma versão do sistema operacional, servidor web, e todos os outros ativos de software utilizados para executar o aplicativo. No entanto, dependendo de quão forte seu ambiente coisas vão surgir -. Copiados mão imagens / scripts etc na máquina dev que não fazê-lo através de teste e ou de produção

para minimizar isso, você provavelmente precisará de algum tipo de script de impulso que pode levá-lo a partir de uma fase para outra, ou seja, PushVersionDev, PushVesionTest, PushVersionProd. Idealmente, isso deve ser o mesmo script com parâmetros para servidor (s) alvo representando tudo o que você precisa para mover o aplicativo através dos vários estágios.

Eu recomendaria uma leitura do livro Internet Scalable de Theo Schlossnagle arquiteturas para mais ideias sobre o assunto.

Para responder à sua pergunta diretamente .... Depois de conseguir sua aplicação testado e implementado, o tempo de rolo para productoin não é grande - OS Deploy, servidor web, apoiando estruturas se eles precisam de instalação, aplicação e você é bom para ir. De bare metal Eu vi servidores linux ir online em 1 hora, janelas cerca de 90 minutos. se você tiver o servidor OS e web vai mesmo less..minutes.

O seu ambiente de teste deve imitar seu ambiente de produção. Desenvolvimento é mais como um parque infantil, e o controle sobre o ambiente de desenvolvimento não deve ser tão rigoroso. No entanto, o ambiente de desenvolvimento deve ser periodicamente actualizada a partir do ambiente de produção (por exemplo ,. dados copiados para a prod db dev, fechar as portas no desenv que estão fechadas na prod, etc.).

Idealmente, dev, palco, e prod estão todos em máquinas separadas. As máquinas separadas podem ser caixas físicos separados, ou máquinas virtuais no mesmo caixa física, dependendo do orçamento / necessidades.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top