How to handle cloud/hosted software releases with multiple versions?

Imi cer scuze ca am scris titlul in engleza, dar asa mi se mare mai sugestiv.

Am gasit aici si aici ceva informatii utile in directia asta, dar as dori oricum sa dezvoltam acest subiect.

De fapt, cloud (SaaS) vs hosted software l-as vedea echivalent cu multi-tenancy vs single-tenancy software, din punct de vedere al management-ului release-urilor (software updates). La single-tenancy avem codebase si database separat pentru fiecare client. Singura diferenta ar fi ca e hosted la furnizor, nu la client.

La cloud/multi-tenancy software pare ceva mai simplu. Folosim virtual directories (symlinks) pentru fiecare versiune in parte, unde versiunile le gestionam cu git tags.

Daca vorbim de hosted/single-tenancy software, unde avem mai multe instante(codebase-uri) ale aplicatiei, avand versiuni diferite, cum ne asiguram ca ele primesc update-uri independent una de alta, si ca nu ajunge functionalitate de cod dezactivata pe versiunea x, doar pentru ca ea a fost necesara pe versiunea y, in condiitile in care noi, ca si furnizor de software, mentinem un singur codebase, nu mai multe ?

Singura optiune este cu patch files sau exista si alta abordare?

Iar daca e sa dezvoltam, un pic, discutia despre patch-uri, cum se fac si cum se instaleaza, mai exact? Contin doar anumite linii de cod din anumite fisiere sau contin fisierele intregi care sunt inlocuite?

Multumesc.

Trebuie? Nu e deajuns o singura versiune cloud hosted? Cea curenta?

Eu ziceam de cazul când aplicația e self-hosted, la client, iar tu vrei să-i furnizezi features updates in funcție de planul tarifar, respectiv trebuie sa aplici patch-uri diferite.