À quel point les serveurs Web de développement sont-ils proches des serveurs Web de production?

StackOverflow https://stackoverflow.com/questions/216489

Question

La plupart des frameworks python auront un serveur Web de développement qui indiquera qu’il ne doit pas être utilisé comme serveur de production. Dans quelle mesure ont-ils tendance à être différents de leurs équivalents de production?

Je n'ai pas encore décidé quel framework utiliser, et encore moins quel serveur de production utiliser, il est donc difficile pour moi de l'associer à un "comparer le serveur de développement x au serveur de production y". Ceci étant dit, permettez-moi de préciser un peu la question: dans votre expérience passée avec un framework python, combien de temps avez-vous passé à mettre votre application en service et à l'exécuter avec un système de production une fois qu'elle a été développée sur un développement? serveur? Ou avez-vous ignoré le serveur de développement et développé votre application sur un serveur qui ressemble davantage à celui que vous utiliserez en production?

Était-ce utile?

La solution

Les environnements inférieurs doivent essayer de s’adapter le plus étroitement possible à l’environnement de production en fonction des ressources disponibles. Cela s'applique à tous les efforts de développement, qu'ils soient basés sur python ou même sur le web. Concrètement, la plupart des organisations ne sont pas disposées à dépenser ce type d’argent. Dans ce cas, essayez de rendre au moins l’environnement situé immédiatement en dessous de la production aussi proche que possible de la production.

Certaines des variables à garder à l’esprit sont:

  • plusieurs fois, il existe plusieurs machines (serveur d'applications, serveur de base de données, serveur Web, équilibreurs de charge, murs coupe-feu, etc.) dans une production. Gardez tout cela à l'esprit.

  • Systèmes d'exploitation

  • nombre de processeurs. Le passage d’un environnement inférieur à un processeur à un environnement de production multicœur peut exposer des problèmes multithreading qui n’ont pas été testés

  • équilibrage de charge. Souvent, les environnements plus bas ne sont pas équilibrés en charge. Si vous répliquez des sessions (par exemple) sur plusieurs serveurs d'applications de production, essayez de faire de même dans un environnement inférieur

  • Versions du logiciel / de la bibliothèque

Autres conseils

Je développe avec Django. Le serveur de production que nous avons est distant, il est donc difficile de l'utiliser pour le développement. Ainsi, au début, j'ai créé une machine virtuelle et essayé de faire correspondre autant que possible l'environnement du serveur de production. À un moment donné, la machine virtuelle s'est fait avoir (en raison d'un incident non lié). J'ai dressé le bilan de la situation à ce moment-là et compris qu'il n'y avait aucune raison d'utiliser un vm personnalisé pour le développement. Étant donné que les ressources disponibles pour l'application n'étaient pas les mêmes que celles du serveur de production, ce n'était pas bon pour le chronométrage des requêtes (de manière absolue).

Cela étant dit, j’utilise maintenant le serveur de développement intégré de django avec sqlite pour le développement, ainsi que apache / wsgi et postgresql pour la production. Tant que les dépendances python sont respectées des deux côtés, c'est 100% compatible. Le seul problème potentiel serait d’écrire sql brut au lieu d’utiliser orm.

En règle générale, ils sont identiques en ce qui concerne les paramètres requis pour exécuter les applications qui incluent le paramètre d'environnement.
Cependant, les clients disposent généralement de systèmes de développement moins puissants en termes de puissance de traitement et autres ressources h / w. Je les ai vu utiliser des serveurs virtuels dans l'environnement, car ils ont généralement plusieurs projets en parallèle, ce qui les aide à réduire les coûts.

Idéalement, la configuration logique du serveur de développement, de test et de production devrait être identique. Ils doivent avoir la même version du système d'exploitation, du serveur Web et de tous les autres actifs logiciels utilisés pour exécuter l'application. Toutefois, en fonction de la force de votre environnement, les éléments à découper - images / scripts copiés à la main, etc. sur la machine de développement, ne sont pas testés ni produits.

Pour minimiser cela, vous avez probablement besoin d’une sorte de script push qui puisse vous déplacer d’une étape à l’autre, par exemple PushVersionDev, PushVesionTest, PushVersionProd. idéalement, il devrait s'agir du même script avec des paramètres pour le (s) serveur (s) cible (s) représentant tout ce dont vous avez besoin pour déplacer l'application à travers les différentes étapes.

Je recommanderais de lire le livre de Theo Schlossnagle Internet évolutif Architectures pour plus d’idées sur le sujet.

Pour répondre directement à votre question .... une fois que votre application est testée et implémentée, le temps nécessaire pour passer à la production est peu intéressant - déployez le système d'exploitation, le serveur Web et les infrastructures de support s'ils nécessitent une installation, une application et vous êtes prêt à aller. Du métal nu, j'ai vu des serveurs Linux se connecter en 1 heure, Windows environ 90 minutes. si le système d'exploitation et le serveur Web fonctionnent encore moins… minutes.

Votre environnement de transfert doit imiter votre environnement de production. Le développement s'apparente davantage à un terrain de jeu et le contrôle de l'environnement de développement ne devrait pas être aussi strict. Toutefois, l’environnement de développement doit être périodiquement actualisé à partir de l’environnement de production (par exemple, données de produit copiées dans la base de données dev, fermeture des ports de dev qui sont fermés lors de la production, etc.).

Idéalement, dev, scène et prod sont tous placés sur des machines distinctes. Les machines distinctes peuvent être des boîtes physiques distinctes ou des machines virtuelles situées sur la même boîte physique, en fonction du budget / des besoins.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top