Pacchetti Python dal punto di vista delle operazioni

0

Come sviluppatore sono abituato a mantenere aggiornati i miei strumenti Python. Soprattutto i pacchetti necessari per l'installazione e il raggruppamento. Utilizzando le versioni più recenti di pip, virtualenv e setuptools è nella mia esperienza personale la scelta più affidabile.

Mi è stato detto recentemente che, dal punto di vista operativo, non dovrei toccare le versioni preinstallate di pip sulla macchina di produzione. Per intenderci: il tipico pip install -U pip nel virtualenv rappresentava un rischio per la sicurezza.

Penso che ci siano valide preoccupazioni, ma mi chiedo se questa sia davvero la migliore pratica per i servizi di esecuzione sviluppati con Python. Pip come è in Debian 7 ad esempio è piuttosto vecchio.

Quindi le mie domande

  • Quali sono le migliori pratiche qui per eseguire i servizi Python in sicurezza?
  • Ci sono modi per spostare più vicini i mondi divisi (albero dei pacchetti del sistema operativo e albero dei pacchetti Python)?
posta wirrbel 13.05.2015 - 08:12
fonte

2 risposte

2

I pacchetti Linux forniti con una determinata distribuzione sono solitamente sottoposti a test approfonditi per garantire che funzionino correttamente con la distribuzione specifica. La tua azienda potrebbe eseguire un ulteriore passaggio per testare tali pacchetti per gli scenari che si verificano specificamente nella società.

Se stai installando nuove versioni, sei da solo. Può funzionare bene, e di solito sì, perché è stato testato dagli sviluppatori del pacchetto stesso. Ma potrebbe anche causare problemi in una determinata distribuzione.

Se dovresti installare le versioni più recenti dipende da:

  • Quanto dovrebbero essere stabili i server. Se vuoi evitare qualsiasi problema nella produzione, non aggiornare alla cieca alle versioni più recenti aspettando che tutto funzioni come previsto.

  • Quanto è importante avere la nuova versione. Alcune versioni contengono nuove funzionalità assolutamente necessarie per la tua applicazione e diventa accettabile rischiare di aggiornare il pacchetto. Alcune versioni risolvono bug che sono di nuovo abbastanza importanti da essere conservati sulla tua piattaforma.

In generale, il processo di aggiornamento dei server di produzione, sia su Linux o Windows, non è semplice come apt-get install ... o facendo clic su un pulsante in Windows Update. Invece:

  • Gli aggiornamenti dovrebbero essere testati nella stadiazione per garantire che non vi siano regressioni apparenti.

  • I server di produzione non devono essere aggiornati tutti contemporaneamente, ma uno alla volta, per poter eseguire il failover e fare un passo indietro se succede qualcosa di brutto.

  • Assicurati di poter tornare allo stato precedente se in seguito viene rilevata una regressione.

risposta data 13.05.2015 - 08:50
fonte
0

Utilizzando ambienti virtuali , puoi specificare quale versione di ciascun pacchetto desideri installare ( perché questa è una buona cosa ). Ciò ti consente di aggiungere una versione specifica a qualsiasi esigenza di base del codice.

I principali svantaggi sono che l'aggiornamento può essere più lento e la distribuzione su una nuova macchina richiede più tempo. Il primo potrebbe non essere poi così male visto che vuoi testare che tutte le versioni più recenti delle dipendenze funzionano ancora con il tuo codice, giusto? La versione successiva è stata risolta da una pletora di strumenti, ad esempio Puppet-Python .

    
risposta data 13.05.2015 - 09:51
fonte

Leggi altre domande sui tag