Introduction to the Deployment Circuit
Figure 2 shows a high-level representation of the Deployment Circuit.
We can individuate three main roles involved in this simple model:
Software Producer. An organization that builds the software and owns its commercial rights.
Software Distributor. The entity that takes charge of distributing and installing the software to the proper clients. It can be the organization itself or a team of specialized developers within the Software Producer organization. Sometimes, it can take charge of some specialized services on the deployed software.
End-User. A person who will use the final software artifact.
Figure 2 The Deployment Circuit.
In Figure 2, the journey of a set of resources bundled together as a software executable is defined in the following five stages:
Development. The software developer develops the software, planning its deployment from the beginning.
Publication. The software developer releases the software.
Distribution. The distributor organization releases the software to end-users.
Installation. All the needed pieces are properly placed on the client platform, left ready to be launched by end-users.
Running. Finally, the installed software is launched on the client platform.
The word Circuit is not chosen casually. The concept of a Deployment Circuit is similar to the steps of delivering a milk bottle to a house. After the production and the packaging, bottles are transported to consumer homes, happily emptied by customers, and left outside the door to find their way back to the factory. A whole organization with its costs and benefits is behind this service.
Another implicit concept is the "cycle-ness" inherent to the fact that updates will follow installations, just as empty milk bottles are followed by filled ones. Therefore, a Deployment Circuit must be set up by means of Web servers and then maintained. The period of these cycles has been shortened with the advent of new distribution channels (in other words, the Net in all its forms); and by the overall evolution of the software industry, which is heading toward integrated, up-to-date services rather than standalone, once-and-for-all installed applications. In addition, competition presses to shorten these cycles. If software vendors can rely on more effective Deployment Circuits, they can afford more releases with shorter time-to-market, and so on. We will discuss the potential benefits of Deployment Circuits shortly.
The interactivity between clients and distribution servers is also required (in its roughest form) in milk deliveries. For example, when the number of family members change, there's the need to adjust the number of delivered bottles. With software, appliances are much more critical because we must know exactly what is already installed on client machines, together with other data such as the identity of each end-user, the hardware platform they are using, and so on.
As an example, large software applications usually ship in CD-ROMs, and only after the first installation, next updates, and other services (such as license registration) can take place via the Internet.
As a result, we saw cycle-ness, interactivity, and the establishment and maintenance of the whole circuit related to the software deployment as a sophisticated service offered by a Distributor entity to both a Software Producer and an End-User.