Sono interessato a conoscere come le persone eseguono le distribuzioni e gli aggiornamenti di app Webapp Lisp (soprattutto gli aggiornamenti) nella produzione.Feedback desiderato: strategie di distribuzione senza interruzioni per la produzione di applicazioni web Lisp
In Ruby molti, me compreso, usano Capistrano per le implementazioni. Fornisce una buona indiretta e la possibilità di eseguire comandi in remoto e, soprattutto (a mio avviso) la possibilità di eseguire il rollback su una base di codice funzionante.
So che l'idea di un lungo processo Lisp connesso tramite Swank attraverso un tunnel SSH e modificato sul posto è un'idea popolare che è stata respinta, ma non ho bevuto Koolaid, soprattutto a causa del problema di aggiornare un processo di stato (che sembra chiedere problemi se qualcosa va storto, come imprevisti mancati accoppiamenti tra lo stato corrente in memoria e le definizioni di nuovi oggetti che saranno presto in memoria).
Dato che è possibile creare applicazioni web quasi senza stato (o completamente) utilizzando hunchentoot (o inserire qui il proprio server di app Lisp preferito), sembra che usare qualcosa come Capistrano possa essere usato per aggiornamenti non distruttivi al codice Lisp anche se il I processi Lisp si nascondono dietro nginx nel suo canale upstream e se è possibile coreografare correttamente rimuovendo i processi hunchentoot e ruotarli di nuovo dopo un aggiornamento al codice, ad esempio, riportarli indietro lasciando almeno un processo hunchentoot in esecuzione nel cluster in un dato momento (CGI o mod_lisp potrebbero essere usati, ma non sono particolarmente interessato a questo approccio - anche se questo approccio ti piace, per favore almeno dì qualcosa, voglio imparare). Ad esempio, utilizzando Passenger (che confronta arance con mele dato che avvia i processi su richiesta), tmp/restart.txt viene toccato e il server delle app viene riavviato con codice appena aggiornato, senza interruzioni dal punto di vista dell'utente.
Bene, questo è un po 'un diverbio, e in realtà sto per provare tutto questo, ma mi piacerebbe avere un feedback su queste idee dagli altri. Forse hai un'idea migliore.
Grazie
Questa domanda potrebbe funzionare meglio con i programmatori? – blueberryfields
@blue: Probabilmente no. È una questione abbastanza localizzata, e non propriamente soggettiva. –