Domanda

La maggior parte dei framework python avrà un server web di sviluppo di qualche tipo che avrà un avviso che non è destinato all'uso come server di produzione. Quanto differiscono rispetto ai loro equivalenti di produzione?

Non ho ancora deciso quale framework scegliere, tanto meno quale server di produzione usare, quindi è difficile per me fissare questo a un "confronto server di sviluppo x con server di produzione y." Quindi, detto questo, lasciami rendere la domanda un po 'più precisa: nella tua esperienza passata con un framework Python, quanto tempo hai impiegato a mettere in funzione la tua applicazione con un sistema di produzione una volta sviluppata su uno sviluppo server? Oppure hai saltato il server di sviluppo e sviluppato la tua app su un server più simile a quello che utilizzerai in produzione?

È stato utile?

Soluzione

Gli ambienti inferiori dovrebbero cercare di abbinare l'ambiente di produzione il più vicino possibile alla luce delle risorse disponibili. Questo vale per tutti gli sforzi di sviluppo indipendentemente dal fatto che siano basati su Python o addirittura basati sul Web. In termini pratici, la maggior parte delle organizzazioni non è disposta a spendere quel tipo di denaro. In questo caso, cerca di rendere almeno l'ambiente che è direttamente sotto la produzione il più vicino possibile alla produzione.

Alcune delle variabili da tenere a mente sono:

  • molte volte ci sono più macchine (app server, database server, web server, bilanciamento del carico, pareti tagliafuoco, ecc.) in una produzione. Tienili a mente.

  • Sistemi operativi

  • numero di CPU. Passare da un ambiente con una CPU inferiore a un ambiente di produzione multi core può esporre problemi multi-threading che non sono stati testati

  • bilanciamento del carico. Molte volte gli ambienti inferiori non sono bilanciati dal carico. Se stai replicando sessioni (ad esempio) su più server di app di produzione, dovresti provare a fare lo stesso in un ambiente inferiore

  • Versioni software / librerie

Altri suggerimenti

Sviluppo con Django. Il server di produzione che abbiamo è remoto, quindi è difficile usarlo per lo sviluppo. Quindi, all'inizio, ho creato un VM e ho cercato di abbinare il più possibile l'ambiente del server prod. Ad un certo punto quel vm è stato eliminato (a causa di un incidente non correlato). Ho fatto il punto della situazione in quel momento e mi sono reso conto che non c'erano davvero buoni motivi per utilizzare un vm personalizzato per lo sviluppo. Dato che le risorse disponibili per l'app non erano le stesse del server prod, non era comunque utile per le query di cronometraggio (in senso assoluto).

Detto questo, ora uso il server di sviluppo incorporato di Django con sqlite per lo sviluppo e apache / wsgi e postgresql per la produzione. Finché le dipendenze di Python sono soddisfatte da entrambi i lati, è compatibile al 100%. L'unico potenziale problema sarebbe scrivere sql grezzo invece di usare orm.

In generale, sono uguali in termini di impostazioni necessarie per eseguire le applicazioni che includono l'impostazione dell'ambiente.
Tuttavia, i client hanno genericamente sistemi di sviluppo meno potenti in termini di potenza di elaborazione e altre risorse h / w. Ho visto usarli server virtuali in sviluppo poiché generalmente hanno più progetti in parallelo e questo li aiuta a ridurre i costi.

Idealmente, la configurazione logica del server di sviluppo, test e produzione dovrebbe essere la stessa. Dovrebbero avere la stessa versione del sistema operativo, del server Web e di tutte le altre risorse software utilizzate per eseguire l'applicazione. Tuttavia, a seconda della potenza del tuo ambiente, le immagini / gli script copiati a mano, ecc., Sulla macchina di sviluppo non riescono a superare i test e / o la produzione.

per minimizzare questo, probabilmente hai bisogno di una sorta di script push che possa spostarti da uno stadio all'altro, ovvero PushVersionDev, PushVesionTest, PushVersionProd. idealmente questo dovrebbe essere lo stesso script con parametri per i server target che rappresentano tutto ciò di cui hai bisogno per spostare l'app attraverso le varie fasi.

Consiglierei una lettura del libro di Theo Schlossnagle Internet scalabile Architetture per ulteriori idee in merito.

Per rispondere direttamente alla tua domanda .... una volta che la tua applicazione è stata testata e implementata, il tempo per passare a productoin non è eccezionale: distribuisci SO, server web, framework di supporto se hanno bisogno di installazione, applicazione e sei bravo a partire. Dal bare metal ho visto i server Linux andare online in 1 ora, Windows per circa 90 minuti. se il tuo sistema operativo e il tuo server web vanno ancora meno ... minuti.

L'ambiente di gestione temporanea dovrebbe imitare l'ambiente di produzione. Lo sviluppo è più simile a un parco giochi e il controllo sull'ambiente di sviluppo non dovrebbe essere così rigoroso. Tuttavia, l'ambiente di sviluppo dovrebbe essere periodicamente aggiornato dall'ambiente di produzione (ad es. Dati di prod copiati nel db di sviluppo, chiusura delle porte su di sviluppo chiuse in prod, ecc.)

Idealmente, dev, stage e prod sono tutti su macchine separate. Le macchine separate possono essere scatole fisiche separate o macchine virtuali sulla stessa scatola fisica, a seconda del budget / delle esigenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top