1. Introduction 1.1. Project/Component Working Name: Deployment 1.2. Name(s) and e-mail address of Document Author(s)/Supplier: Hong Zhang : hong.hz.zhang@oracle.com Tim Quinn : tim.quinn@oracle.com 1.3. Date of This Document: 04/25/2011 2. Project Summary 2.1. Project Description:
- PaaS deployment, support deployment in the cloud environment
- User-managed cluster deployment support, support deployment on user-managed clusters.
2.2. Risks and Assumptions: The end-to-end PaaS deployment feature depends on the service orchestration. Any delay in the delivery of the depended features will affect the delivery of the end-to-end PaaS deployment feature. The user-managed cluster deployment feature depends on the admin infrastructure for user-managed cluster management. Any delay in the delivery of the depended features will affect the delivery of the user-managed cluster deployment feature. 3. Problem Summary 3.1. Problem Area: PaaS deployment User should be able to deploy applications in a cloud environment, specifying additional cloud metadata or using the default. The requested services (virtual cluster, JDBC resource etc) should be provisioned to the application as part of the deployment. User-managed cluster deployment User should be able to deploy the applications to user-managed cluster. 3.2. Justification: PaaS deployment We need to catch up with the industry trend of providing functionalities in the cloud environment. User-managed cluster deployment User-managed cluster allows integration of GlassFish clustering features with other products, and we need to provide deployment functionality in that environment. 4. Technical Description: 4.1. Details: PaaS deployment We will support deployment in the cloud environment. User should be able to deploy applications in a cloud environment, specifying additional cloud metadata or using the default. The requested services (virtual cluster, JDBC resource etc) should be provisioned to the application as part of the deployment. Deployment will know if it is in a cloud environment by detecting the presence of virtualization configuration. In a non-cloud environment, Deployment behaves as in 3.1. If the user omits the --target option then deployment uses the default "server" value. If the user specifies the target then the target must already exist and that target will be used. In a cloud environment, we preserve most of the above behavior with one exception: for initial deployment, user could also specify a non-existent target name and a virtual cluster will be created for the user with that name. This allows us to support the cloud deployment with minimal changes to the existing user interfaces. Users can add glassfish-services.xml to their applications to convey cloud-related metadata. This file /META-INF/glassfish-services.xml can appear in the main application archive (EAR, WAR, etc.). It can also appear at the top level (/glassfish-services.xml) in a deployment plan, consistent with the placement of other descriptors in the deployment plan. As with all files in a deployment plan, if the user provides the same file in the original archive and in the deployment plan, the one in the deployment plan overrides the one from the archive. Specifically the orchestrator's Sniffer and Deployer implementations will see only the deployment plan copy of glassfish-services.xml. We will support the same set of operations to manipulate the application lifecycle in the cloud environment: deploy, redeploy, undeploy, enable, disable. As the deploy command can be a long running command in the cloud environment, an --async option will be added to run the deploy command in the asynchronous mode. Please see this page for more technical details. User-managed cluster deployment User-managed cluster allows the integration of GlassFish clustering features with other products, and we need to provide deployment functionality in this environment. Please see the User-Managed Clusters One Pager for details. 4.2. Bug/RFE Number(s): PaaS deployment: GLASSFISH-16423 GLASSFISH-16424 GLASSFISH-16425 GLASSFISH-16426 GLASSFISH-16427 GLASSFISH-16428 User-managed cluster deployment: GLASSFISH-16445 GLASSFISH-16483 GLASSFISH-16484 GLASSFISH-16485 4.3. In Scope: User-managed cluster deployment Support the operations that are necessary for integration with other products. 4.4. Out of Scope: 4.5. Interfaces: 4.5.1 Public Interfaces
- Interface: glassfish-services.xml
- Comment: users can add /META-INF/glassfish-services.xml to their applications to convey cloud-related metadata. The files can appear in the main application archive (EAR, WAR, etc.). They can also appear at the top level /glassfish-services.xml) in a deployment plan, consistent with the placement of other descriptors in the deployment plan.
- Interface: deploy
- Comment: user could specify an non-existent target in the cloud environment, and a virtual cluster will be created with that target name for the user.
- Interface: deploy
- Comment: add an optional --async option to indicate whether this deployment will be asynchronous.
4.5.2 Private Interfaces Private interface SmartSniffer will be added with an additional handles method which takes a DeploymentContext argument. Orchestrator sniffer implementation will implement this additional interface so it could find out about the value of the target option from the DeploymentContext to decide if it should return true. This new interface needs to be added as we could not change the public Sniffer interface in the dot release. This will be cleaned up (interface removed and API moved to public Sniffer interface) in v4.
@Contract
public interface SmartSniffer {
/**
* Returns true if the passed file or directory is recognized by this
* smart sniffer.
* @param context deployment context
* @return true if the location is recognized by this sniffer
*/
public boolean handles(DeploymentContext context);
}
4.5.3 Deprecated/Removed Interfaces: N/A 4.6. Doc Impact: Update man pages for the new/modified CLI commands Application Deployment Guide/Developer Guide for new features 4.7. Admin/Config Impact: CLI The optional --async option is added to the deploy command to indicate whether this deployment will be asynchronous. GUI PaaS deployment would be exposed in the admin GUI (for equivalent of CLI functionalities). 4.8. HA Impact: No impact. 4.9. I18N/L10N Impact: No impact. 4.10. Packaging, Delivery & Upgrade: 4.10.1. Packaging No impact. 4.10.2. Delivery No impact. 4.10.3. Upgrade and Migration: No impact. 4.11. Security Impact: No impact. 4.12. Compatibility Impact No compatibility impact. No new requirement on upgrade or migration tool. 4.13. Dependencies: 4.13.1 Internal Dependencies Service Orchestration User-Managed Cluster Management Admin Command Progress Status 4.13.2 External Dependencies None 4.14. Testing Impact: PaaS deployment Add new tests to test this feature. The tests might live outside of the deployment dev tests and put together with other PaaS related tests to share the same test environment. User-managed cluster deployment Add new tests to test this feature. The tests might live outside of the deployment dev tests and put together with other user-managed cluster related tests to share the same test environment. 5. Reference Documents: PaaS deployment Wiki Page Service Orchestration One Pager User-Managed Clusters One Pager Admin Command Progress Status One Pager 6. Schedule: 6.1. Projected Availability: PaaS deployment
- Initially integrated (may not be feature complete) - Milestone 5
- Feature complete (ready for handoff to QA) - Milestone 6
- At production quality level - Milestone 7
User-managed cluster deployment
- Initially integrated (may not be feature complete) - Milestone 5
- Feature complete (ready for handoff to QA) - Milestone 6
- At production quality level - Milestone 7
|