Recommended: Sing it, brah! 5 fabulous songs for developers
JW's Top 5
Optimize with a SATA RAID Storage Solution
Range of capacities as low as $1250 per TB. Ideal if you currently rely on servers/disks/JBODs
This month, I begin a series of columns on Java application deployment. As the scenario above indicates, deployment is an important part of the complete software life cycle. As such, it deserves careful study. In this first article of the series, I'll provide an overview of application deployment and present the requirements that good solutions must satisfy.
Let's begin with a bit of history.
Deployment wasn't as large an issue when all applications ran on the mainframe down the hall and all the end users had dumb terminals on their desks. Only after desktop personal computers and client/server computing arrived on the scene did deployment become a concern. The combination of a powerful computing device (the personal computer) with a powerful computing model (client/server) sparked a revolution in software development. It also introduced some new problems.
Client/server applications come in two parts: client-side and server-side. During development and testing, both parts live in a highly centralized, homogeneous environment. When development and testing are finished, however, the client part of the application must circulate to the users.
The problem, then, lies in shifting the client from the controlled, homogeneous environment in which it was developed to the realm of the application users, and then configuring the client so that the end users can actually use it. Suddenly, deployment becomes synonymous with pain. Let me explain why.
The traditional deployment models introduced during this early era were the foot-and-hand model (in which you run around on foot and install the software by hand) and the self-service model (in which end users install the software themselves).
Self-service deployment is a viable option for simple applications. Almost everyone (the key phrase being "almost everyone" -- remember the target audience) knows how to install an application on his or her machine, right? Unfortunately, as the complexity of the installation and configuration process increases, so does the support time, and this alternative begins to resemble the foot-and-hand installation.
Foot-and-hand deployment works well because someone else completes all the work for you. However, as this method is labor intensive, foot-and-hand installation costs companies too much time and money.
Self-service doesn't work for complex installations, and foot-and-hand doesn't scale well. To perform more installations, you either need more people or more time, virtually in direct proportion.