Difference between revisions of "Choosing a Deployment Strategy for Development Systems"
imported>Aeric |
imported>Aeric |
||
(29 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
Things get a little more interesting if you're deploying packages in a development scenario, where you have one or more development systems, a test system, and a production system. In that model, the application built in the development environment needs to be fully and completely replicated in the test environment. When it is ready for distribution, it must then be fully replicated in the production environment(s). | Things get a little more interesting if you're deploying packages in a development scenario, where you have one or more development systems, a test system, and a production system. In that model, the application built in the development environment needs to be fully and completely replicated in the test environment. When it is ready for distribution, it must then be fully replicated in the production environment(s). | ||
In that situation, there are several things you'll need to do. | In that situation, there are several things you'll need to do. Those steps are described in this article. (The steps are based on the information provided in the [[Package Items]] page.) | ||
===Partition the Application=== | ===Partition the Application=== | ||
Line 17: | Line 17: | ||
===Choose Your Deployment Model=== | ===Choose Your Deployment Model=== | ||
The next step is choose your deployment model(sandbox deployment or publish/install): | The next step is choose your deployment model (sandbox deployment or publish/install): | ||
:* If you have created development sandboxes, it's natural to use [[Sandbox Deployment]]. | :* If you have created development sandboxes, it's natural to use [[Sandbox Deployment]]. | ||
::* The advantage of that process is that sandbox pathways are clearly defined. | ::* The advantage of that process is that sandbox pathways are clearly defined. | ||
Line 29: | Line 29: | ||
::* The installer needs to be sure to choose the "override roles" option during the installation, to be sure that any changes that were made to existing roles are reflected on the target system. | ::* The installer needs to be sure to choose the "override roles" option during the installation, to be sure that any changes that were made to existing roles are reflected on the target system. | ||
=== Perform Necessary Manual Replications === | === Create and Deploy the Package === | ||
# When creating the package, include the [[Users Object]] if any new fields or business rules have been added that the application depends on. | |||
# Consider making the package a ''locked'' package, so it can't be customized in the test (or production) system. | |||
#: ''Learn more:'' [[Packages#About Locked and Unlocked Packages]] | |||
# After it is created, use your preferred deployment strategy to update target installations. | |||
=== Perform Any Necessary Manual Replications === | |||
Finally, you need to make sure that each system targeted by the deployment process is an accurate reflection of the packaged application. | Finally, you need to make sure that each system targeted by the deployment process is an accurate reflection of the packaged application. | ||
To do that: | To do that: | ||
# Publish the package in "overwrite" mode, so that deletes (for most package items) are replicated in the target environment. | # Publish the package in "overwrite" mode, so that deletes (for most package items) are replicated in the target environment. | ||
#: ''Learn more:'' [[Overwrite Previous Package|Packaging option]] | |||
#: | #: | ||
# The package installer should choose the ''override'' option for roles, in case any role-definitions have changed. (Most developer-environments will also choose overwrite, unless they have been working on roles, in which case they will choose to ''merge'' role definitions.)''Learn more:'' [[Packages#Overriding or Merging Roles|Subscriber choice]] | # The package installer should choose the ''override'' option for roles, in case any role-definitions have changed. (Most developer-environments will also choose overwrite, unless they have been working on roles, in which case they will choose to ''merge'' role definitions.) | ||
#: ''Learn more:'' [[Packages#Overriding or Merging Roles|Subscriber choice]] | |||
#: | #: | ||
# On all target systems, manually delete any | # On all target systems, manually delete any of these elements that are no longer needed: | ||
#: | #:* Applications | ||
# | #:*: This step is required only if an application-definition was added as a result of a [[Package Dependency]], and that application is no longer needed. | ||
#:*: When you delete the application, components shared by other applications remain. Only components that are unique to the application are deleted. | |||
#:* Classes | #:* Classes | ||
#:* Global Picklists | #:* Global Picklists | ||
#:* | #:* Roles | ||
#:* | #: | ||
# On all target systems, manually replicate any changes made to these application items, and manually delete any that were removed: | |||
#:* Business Hours Calenders | |||
#:* Customer Satisfaction Surveys (if publishing ServiceDesk) | |||
#:* Global Template Variables | |||
#:* KnowledgeBase articles and categories (if publishing ServiceDesk) | |||
#:* Site definitions | #:* Site definitions | ||
#:* Team definitions | #:* Team definitions | ||
#: | #: | ||
# On all target systems, manually | # On all target systems, manually reproduce environment-specific customizations: | ||
#:* Web Services<br>Web Service end-point URLs and authentication details need to be restored, if they are different in the development, test, and production environments. | |||
<!--If the target system will continue connecting with the service it was using before, nothing needs to be done. (The URLs are expected to be different in development, test, or production environments, so they are not modified, even when the Web Service is updated.) But if service URL for [[Web Service]] end point needs to change on the target system, then manually make that modification.--> | |||
#: | |||
# On all target systems, manually reproduce any changes made to these system components, if they need to be replicated in the target environment: | |||
#:* Access Profiles | #:* Access Profiles | ||
#:* Authorization mechanisms | |||
#:*:* LDAP Configuration | |||
#:*:* Single Sign-On settings | |||
#:* Business Calendars | #:* Business Calendars | ||
#:* | #:* Communication channel settings | ||
#: | #:*:* Email Channel settings | ||
# | <!--#:*:* Facebook Channel settings | ||
#* | #:*:* Twitter Settings (Hiding due to LJP-8904)--> | ||
#:* Service Portal settings | |||
#:* Scheduled Jobs |
Latest revision as of 07:16, 16 July 2019
AgileApps Cloud platform package deployment is based on the publisher/subscriber model, where subscribers are expected to have customized key aspects of the package. In the publishing process, those aspects of the installed application are left alone. Package deployment is already optimized for the publisher/subscriber model, so if that's what you're doing you're in pretty good shape. You may want to double-check the behavior of things you'll be publishing, but there shouldn't be much you need to do.
Things get a little more interesting if you're deploying packages in a development scenario, where you have one or more development systems, a test system, and a production system. In that model, the application built in the development environment needs to be fully and completely replicated in the test environment. When it is ready for distribution, it must then be fully replicated in the production environment(s).
In that situation, there are several things you'll need to do. Those steps are described in this article. (The steps are based on the information provided in the Package Items page.)
Partition the Application
If you have multiple developers, the first step is to partition the application appropriately:
- Make sure that only one person makes edits to any given aspect of an object.
If multiple people add validations, for example, that can work. But only one person should make edits to existing validations, otherwise someone's work will get overwritten. - Each person who owns objects should package them and share the package with other developers.
That step ensures that each of the development systems has the same object definitions. - Ideally, that person will be responsible for all additions to an object, as well.
If several developers add validations, for example, an integration step is required to get all of the validations on the test system. (Each developer can publish to the test system--but then individual developers don't have the same set. Or they can all publish to each other--but that requires coordination. It's easier to make one person responsible for all of the validations, and all of the forms, field definitions, and other aspects of any given object.) - Similarly, make one person responsible for each of the other application artifacts like Roles and Tab Preferences.
Choose Your Deployment Model
The next step is choose your deployment model (sandbox deployment or publish/install):
- If you have created development sandboxes, it's natural to use Sandbox Deployment.
- The advantage of that process is that sandbox pathways are clearly defined.
- The disadvantage is that the owner of the target sandbox has no say in the matter--the deployment comes at them when the packager says, whether or not the target system is ready.
- Is also important to note that the deployment process still follows the publisher/subscriber model, and that the same rules apply. So choosing sandbox deployment doesn't automatically replace everything on the target system.
- As a result, it is common even in the development scenario to use the normal publication process, where the packager "publishes" a package to make it available, after which the target systems install the package. The advantages of that process are:
- The installer can choose when to install the package.
- The installer can see what's in the package
- But:
- The installer needs to be sure to choose the "override roles" option during the installation, to be sure that any changes that were made to existing roles are reflected on the target system.
Create and Deploy the Package
- When creating the package, include the Users Object if any new fields or business rules have been added that the application depends on.
- Consider making the package a locked package, so it can't be customized in the test (or production) system.
- Learn more: Packages#About Locked and Unlocked Packages
- After it is created, use your preferred deployment strategy to update target installations.
Perform Any Necessary Manual Replications
Finally, you need to make sure that each system targeted by the deployment process is an accurate reflection of the packaged application.
To do that:
- Publish the package in "overwrite" mode, so that deletes (for most package items) are replicated in the target environment.
- Learn more: Packaging option
- The package installer should choose the override option for roles, in case any role-definitions have changed. (Most developer-environments will also choose overwrite, unless they have been working on roles, in which case they will choose to merge role definitions.)
- Learn more: Subscriber choice
- On all target systems, manually delete any of these elements that are no longer needed:
- Applications
- This step is required only if an application-definition was added as a result of a Package Dependency, and that application is no longer needed.
- When you delete the application, components shared by other applications remain. Only components that are unique to the application are deleted.
- Classes
- Global Picklists
- Roles
- Applications
- On all target systems, manually replicate any changes made to these application items, and manually delete any that were removed:
- Business Hours Calenders
- Customer Satisfaction Surveys (if publishing ServiceDesk)
- Global Template Variables
- KnowledgeBase articles and categories (if publishing ServiceDesk)
- Site definitions
- Team definitions
- On all target systems, manually reproduce environment-specific customizations:
- Web Services
Web Service end-point URLs and authentication details need to be restored, if they are different in the development, test, and production environments.
- Web Services
- On all target systems, manually reproduce any changes made to these system components, if they need to be replicated in the target environment:
- Access Profiles
- Authorization mechanisms
- LDAP Configuration
- Single Sign-On settings
- Business Calendars
- Communication channel settings
- Email Channel settings
- Service Portal settings
- Scheduled Jobs