Sun Java Enterprise System Deployment Planning White Paper |
Chapter 6
Implementing a Deployment DesignThis chapter provides an overview of the steps necessary to implement a deployment design.
After the deployment architecture has been approved and a detailed design specification has been completed, you enter the implementation phase of deployment planning. During the implementation phase, you build out the deployment architecture. Depending on the nature of your deployment project, implementing a deployment design includes some or all of the following steps:
- Creating and deploying pilots or prototypes in a test environment
- Designing and running functional tests to measure compliance with system requirements
- Designing and running stress tests to measure performance under peak loads
- Creating a production deployment, which might be phased into production in stages
This chapter discusses the following sections:
Developing Pilots and PrototypesJava Enterprise System deployments typically fall into two categories, those based primarily on services provided with Java Enterprise System and those that require a significant number of custom services that are integrated with Java Enterprise System services. You can think of the former type of deployment as an 80:20 deployment (80% of the services are provided by Java Enterprise System) and similarly, the former as a 20:80 deployment.
For 80:20 deployments, during the implementation phase, you typically develop a pilot deployment for testing purposes. Because 80:20 deployments use mature Java Enterprise System services that provide “out-of-the-box” functionality, pilot deployments move relatively quickly from development, testing, and modification steps, to production deployments.
20:80 deployments, on the other hand, introduce new, custom services that do not have the history of interoperability that comes with 80:20 deployments. For this reason, you create prototype deployments, which are proof-of-concept deployments that typically require a more rigorous development, testing, modification cycle before going to production.
Testing Pilot and Prototype DeploymentsThe purpose of testing pilot and prototype deployments is to determine, as best as possible under test conditions, whether the deployment satisfies the system requirements and also meets the business goals.
Ideally, functional tests should model scenarios based on all identified use cases—a set of metrics should be developed to measure compliance. Functional testing can also involve a limited deployment to a select group of beta users to determine if business requirements are being satisfied.
Stress tests measure performance under peak loads. These tests typically use a series of simulated environments and load generators to measure throughput of data and performance. System requirements for the deployment are typically the basis for designing and passing stress tests.
Testing can indicate problems with the deployment design specification, and might involve several design, build, test iterations before you can roll out the deployment to a production environment. However, testing should never be the place where you discover problems with the deployment architecture. If you discover design problems at the testing stage for deployment architecture, then your analysis, planning, and design can be considered a failure.
Rolling Out a Production DeploymentOnce the pilot or proof of concept deployment passes the test criteria, you are ready to roll out the deployment to a production environment. Typically, you roll out to a production environment in stages. A staged rollout is especially important for large deployments that affect a significant number of users.
The staged deployment can start with a small set of users and eventually expand the user base until the deployment is available to all users. A staged deployment can also start with a limited set of services, eventually phasing in the remaining services. Staging services in phases can help isolate, identify, and resolve any problems a service might encounter in a production environment.
Because testing never completely simulates a production environment, you should continue to monitor the deployed systems to identify any areas that require tuning, maintenance, or service.