Quando dovrei usare fasi aggiuntive nella pipeline di implementazione di un progetto web?

3

Tutti i miei progetti fino a questo momento sono stati da soli (sviluppo applicazioni web a pagina singola). Ho sempre utilizzato un IDE che carica automaticamente le modifiche su un server Amazon EC2 di prova su SFTP e semplicemente aggiorno la mia pagina del browser per vedere le modifiche. Poi quando ho ottenuto un risultato stabile, carico le modifiche al mio server EC2 di produzione e il prodotto viene aggiornato.

Recentemente ho iniziato a lavorare su un progetto di gruppo, quindi dovevo assicurarmi di non sovrascrivere le modifiche di altri, quindi ho cambiato il mio flusso di lavoro:

  1. I collaboratori scrivono il codice nell'IDE
  2. IDE sincronizza automaticamente quei file nella loro memoria Github locale per il nostro progetto
  3. Trasferiscono tali file nel progetto Github online
  4. AWS CodePipeline estrae i commit su un ambiente AWS Elastic Beanstalk di prova
  5. Possiamo testare queste modifiche
  6. Se soddisfatti, sincronizziamo il progetto con l'ambiente AWS EB di produzione.

Sembra complesso come vorrei ottenere il mio flusso di lavoro.

Tuttavia, durante la ricerca di soluzioni di distribuzione, ho trovato questo grafico che mostra molti altri passaggi nel processo di distribuzione :

Il materiale di marketing di AWS per Code Pipeline dimostra ampie possibilità nelle fasi di implementazione, e mi sento come se avessi solo scalfito la superficie, ma non riesco a pensare al motivo per cui vorrei avere più passaggi di me. Qualcuno può spiegare quando o perché vorrei utilizzare questi vari altri passaggi nella distribuzione di un'applicazione web a pagina singola?

Ovviamente non sto lavorando su un progetto su larga scala, ma sono interessato a sapere quali tipi di progetti e situazioni richiederebbero a me / mio team di utilizzare questi vari aspetti di una pipeline di distribuzione.

    
posta curiosity5678 03.11.2016 - 03:43
fonte

2 risposte

4

Utilizzi fasi aggiuntive quando è necessario.

Questa non è una semplice risposta. Ogni fase aggiuntiva può risolvere alcuni problemi, ma aggiunge anche dei costi, in termini di tempo o denaro, che le persone devono gestire. Di quali fasi hai bisogno dipende da quali problemi stai vedendo nel tuo sviluppo.

Il diagramma che hai mostrato non elenca le fasi, davvero. Elenca le preoccupazioni.

Ad esempio, collaborazione. Se hai tre persone che lavorano su qualcosa, non è troppo difficile rimanere sincronizzati. Se hai trenta persone che lavorano su qualcosa, inizi a volere uno strumento di collaborazione più dedicato. Potresti volere che Slack tenga le squadre a parlare quando sono in tutto il paese. Potresti desiderare che ogni team abbia i propri pacchetti che vengono combinati in un tutto. Quindi hai bisogno di un repository di pacchetti interni. Potresti avere un milione di utenti e un bug minuscolo potrebbe colpire ancora decine di migliaia di persone, quindi ti consigliamo di test automatici per provare a ridurre questa possibilità. Potresti dover far girare centinaia di migliaia di server per gestire il carico della tua nuova, eccitante sostituzione di instagram, quindi ora hai bisogno di qualcosa per gestire il provisioning e la configurazione dell'ambiente.

Man mano che una squadra diventa più grande e il codice colpisce più utenti, queste cose iniziano a diventare importanti. Ad esempio, Netflix ha utenti gajillion e ha un server gajillion in esecuzione (principalmente su Amazon AWS l'ultima volta che ho controllato). Quindi ora hanno bisogno di molte più cose di quelle che avevano quando erano tre programmatori e 10 utenti.

Quindi come fai a sapere quando hai bisogno di qualcosa? Aspetta di avere un problema che puoi articolare. "Ora ho trenta persone che lavorano sulla mia SPA ed è davvero difficile assicurarsi che tutto sia stabile da rilasciare". Oppure "Ho questa cosa che cambia tutto il tempo, e questa cosa che non cambia quasi mai, ma ogni volta che rilascio devo distribuire un gigantesco file javascript Webpacked che deve essere memorizzato nella cache in ogni browser. Non sarebbe bello dividi tutto? "

    
risposta data 03.11.2016 - 05:21
fonte
0

Grazie per l'ottima domanda e per aver utilizzato il DevOps Generator come guida per i tuoi sforzi di implementazione. Mi chiamo Sunil Mavadia, Director of Customer Success di XebiaLabs e volevo rispondere alla tua domanda: qualcuno può spiegare quando o perché vorrei utilizzare questi vari altri passaggi nella distribuzione di un'applicazione web a pagina singola?

Una singola applicazione Web è probabilmente la più semplice da implementare su un server di destinazione (o VM). Questo diagramma mostra le varie fasi dell'implementazione quando le applicazioni sono molto più complesse con middleware come sistemi di messaggistica, motori di regole aziendali, database e modifiche dell'infrastruttura. Oltre a questi cambiamenti, la necessità di misure stop-gap durante il ciclo di rilascio è sempre prevalente. Ad esempio, si verificano alcuni controlli critici (manuali o automatizzati) prima che il codice venga distribuito in produzione.

Con questo in mente, TU non vorresti usare i vari altri passaggi in questo momento, ma poiché la tua applicazione diventa più complessa attraverso l'incorporazione di altre tecnologie, è quando realizzerai il potenziale bisogno di queste varie altre fasi / passi.

Spero che questo aiuti!

    
risposta data 03.11.2016 - 21:07
fonte

Leggi altre domande sui tag