Adapting a Standard Deployment Solution
In this case, the sequence of activities could be carried out as follows (we will see in detail any
of the subsequent items following).
1. Identify all the application resources.
2. Organize the application resources in modules.
3. Implement the modules using the chosen deployment technology, producing all the
needed material (JAR and XML files, Web pages, and so on) for the proper deployment.
4. Once deployment resources are ready, they need to be transferred on the deployment
server, eventually providing some server tuning, and so on.
It is interesting to see how often developers take for granted the many application resources
they employ in their applications, especially if they use an integrated development tool (IDE).
There could be many types of such resources; a brief list will make the discussion more con-
•A given JRE, needed in order to run the application, is an application resource
• The complete set of classes, icons, properties files and all other application-specific
•Proprietary and third-party libraries that the application code relies upon
•Other resources (required optional packages, native libraries, and so on)
The number of such resources could be great; and new releases, modifications and other com-
mon accidents in a software lifetime may transform deployment (especially for non-trivial
deployment services) into a nightmare. To tackle this source of complexity, deployment engi-
neers can resort to organize application resources in groups, called modules . Such groups
should comply with a simple rule: Together they have to cover all the application resources,
and they should avoid to overlap their contents. This way, modules would form a strict decom-
position of the application resources set. Thus, all the needed pieces are transferred to clients
without useless repetitions. Modules can be tagged with several data such as platform depen-
dencies, language specialization, version, compatibility list with other modules, and so on.
This way, modules will stay more organized, and it will be easy to maintain even the most
chaotic set of application resources. Often, deployment engineers make use of concepts bor-
rowed from Software Configuration Management (SCM), a discipline we will discuss in a sec-
tion at the end of this chapter, in order to organize more effectively the many configurations of
items they have to manage.
This issue is not restricted only to the deployment development phase, but also to the entire
application lifecycle. Let's consider, for example, an application that makes use of add-on