Sto sviluppando un'applicazione HTTP e la distribuisco eseguendo il versioning contro versioning semantico modelli / tecniche / qualunque essi siano. Per non rompere i client esistenti e consentire alle versioni di essere flessibili, esistono diverse regole per le versioni:
- Allo stesso tempo, supporta due versioni principali. Per esempio. 2.3.4 e 3.4.5 possono essere entrambi supportati contemporaneamente, ma per esempio non ci sarà il supporto per 2.3.4, 3.4.5, 4.5.6.
- È possibile applicare una correzione rapida alla versione inferiore supportata dell'applicazione HTTP. Ad esempio, ho due versioni dell'applicazione HTTP in esecuzione: 2.3.4 e 3.4.5. Applicherò una hot-fix sulla versione 2.3.4 e eseguirò il bump della sua versione in 2.3.5.
Questo scenario copre principalmente tutti i miei bisogni, tranne per il caso in cui ho bisogno di applicare una modifica ad entrambe le versioni allo stesso tempo e che il cambiamento introduca un cambiamento sostanziale. Ad esempio, considera il seguente scenario:
Le versioni 2.3.4 e 3.4.5 dell'applicazione sono in esecuzione. Abbiamo scoperto un bug di sicurezza e sistemato quel bug introdurrebbe una modifica sostanziale a due delle versioni implementate. Nello scenario ideale, sarei la versione della nuova versione come 4.0.0 e andrò in pensione la versione 2.3.4. Quindi, 4.0.0 e 3.4.5 saranno le versioni supportate, ma in questo caso, 3.4.5 deve essere ritirato e ha un buco di sicurezza.
Come descriveresti questo caso o come lo gestisci oggi se hai un'applicazione e una struttura di distribuzione simili? Non ci siamo ancora imbattuti in uno scenario come questo, ma non voglio continuare la mia vita con un punto interrogativo come questo:)
Aggiornamento:
Why are you originally supporting two different builds?
Diversi motivi:
-
Questo servizio HTTP supporta più di un client (diciamo migliaia). Quindi, non è possibile aggiornarli contemporaneamente. Ragioni classiche per cui desideri eseguire la tua versione.
-
Supponiamo che solo io sia un utente di questo servizio HTTP. Anche con quello, non è possibile per me aggiornare i miei client e l'applicazione HTTP contemporaneamente. Quindi, ho ancora bisogno del controllo delle versioni. Se questo fosse il caso, lo scenario di cui sopra sarebbe meno problematico visto che sto controllando tutti i client.