My friends' company is using the incremental method to update/deploy a new version of their app to the customer site. But what kind of surprises me is their update/deployment is on granularity of files, not the services.
For example, suppose the finally built app in version 1 consists of two files A
and B
:
web_app (version 1):
- file A
- file B1
They will deploy all the files to the customer site. When the version 2 is built and the file B is modified:
web_app (version 2):
- file A
- file B2
They will only send and deploy file B2
to the customer site. If version 3 has file B2
deleted and file C
added:
web_app (version 3):
- file A
- file C
They will also delete file B2
on the customer site and deploy C
there. Because file A
has never changed during the three versions, it is not touched in the second and the third deployments.
I haven't learned exactly why they are doing this way. I asked, but they haven't responded yet. But their way of deployment is so different from what I have seen around in the industry. Maybe they have some special reasons so they must do it this way.
So I did some search and wanted to find articles/information to discuss the pros and cons of this deployment. However, when I tried to use keywords such as "incremental deployment" to search, most of the articles are about incremental deployment on granularity of services (see [1][2][3][4]), not on files. I did find the article Incremental deployment vs full deployment, but I'm also wondering if there is any other literature that discusses this topic further in depth in the history of software engineering.
A second question is: Are there valid scenarios that such incremental deployment is indeed a good choice?
References:
rsync
available, there is no need to have a justification like "this has been the procedure for a long time". Of course, when you have to implement and maintain your own incremental updater, maybe on top of some ftp protocol, things will look differently.