In this chapter, we will address the deployment design issue. There are so many different situa-
tions in real-world scenarios that we are forced to keep our discussion at a rather generic level.
The remaining chapters will dig into the practical details of Java deployment.
In this section, we will introduce some concepts that will help to address the vast issue of
designing a deployment circuit for a Java application. After a short discussion of the role of a
deployment engineer and other considerations, we will examine a simple methodology for an
effective setting out of the deployment design task.
Another practical source of information on this aspect (providing advice on choosing
the best deployment option for a given situation) is Appendix A, “A Little Handbook
For Java Deployment,” in which all the material proposed throughout this topic is
organized in an alternative, succinct and practical way.
Deployment Engineer Role
In Chapter 2, “An Abstract Model for Deployment” we mentioned the role of the developer(s)
specialized in deployment. Such a developer (for simplicity, we refer to just one person) is
responsible for the correct and effective deployment of the whole application. When the
required deployment services are simple, there are no problems. For a one-shot installation, for
example, the deployment engineer would package the application with a software installer util-
ity and publish it on a Web server or on other distribution channels. For these simple kinds of
deployment, it makes little sense to talk about a specialized developer; one of the programmers
who built the software would be able to effectively package it for deployment, too. This is
common practice in smaller software firms.
The problems will appear when more sophisticated deployment services are required, when
deployment tools are not so simple to use, and when the deployment options for a given situa-
tion are, say, half a dozen at least. What to do then? Which deployment technology should you
use? Clearly, in these cases, deployment is not a secondary issue; a wrong choice could spoil
the application effectiveness, at least from an end-user perspective. This chapter will provide
some advice about the deployment engineer role.