More Related Content Similar to Deploying Solution Enhancements to Production Similar to Deploying Solution Enhancements to Production (20) Deploying Solution Enhancements to Production2. aras.comCopyright © 2013 Aras. All Rights Reserved.
A C E 2 0 1 3
Deploying Solution
Enhancements to Production
Learn about Best Practices for deploying
changes, extensions, or new solutions
from development to production
3. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 3
Agenda
Deployment Challenges
Getting Started
Environment
Planning
Terminology
Our Approach
Tools that you need
Walk through some example deployment scenarios
Common Pitfalls
4. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 4
Deployment Challenges
How do you insure accurate deployments?
How do you avoid regressions?
How to manage parallel development?
How do you keep environments in sync?
How do you plan deployments?
5. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 5
Scenarios for Today
Moving enhancements to a
production environment
Parallel or multi-resource
development of a solution
Dev
Test
Production
Dev
7. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 7
Getting Started
Establish your environment
Establish your starting point or baseline
Establish a source control plan
Plan your deployment strategy
Establish a validation plan
8. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 8
The Development Environment
3 Environments minimum
Development
This is where you work
Test/QA/Staging
Imports are tested here
User validation is conducted here
Should always reflect your
baseline to start
Production
This is your baseline
Dev
Test
Production
9. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 9
Terminology
Deployment Package
Complete set of all development changes
Must be fully applied for proper deployment
Typically contains full AML definitions
Depends on a pre-defined Baseline
Patch
Subset of development changes
Provides for quick and pointed updates
Can eliminate the need for a merge
May contain AML snippets vs. full definition
Must be applied in a particular order
Baseline
A simple snapshot of system functionality
Defines a starting point for development
Doesn’t typically change during a development cycle
10. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 10
Importance of Baselines
Provides a solid foundation for
the development / deployment
process
New environments can be built
using the baseline as a starting
point
Eliminates the issue of a ‘Moving
Target’
Critical for accurate deployments
11. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 11
Development
Development
Example Baseline
Standard
Aras
Innovator
Development
New Baseline
(Phase 2 Production System)
Target
(Phase 1 Production System)
New Baseline
(Phase 1 Production System)
Merge
Point
12. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 12
Source Control Plan
Establish a system for how and where deployment
packages will be stored
Source control
File server
Establish a naming convention for these packages
Establish where the baseline will be stored
Think about the sequence in which features will be
deployed
13. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 13
Plan your deployment
Determine how your solution will be deployed
All at once
Separate deployments
Deployment strategy can help define packaging
Establish a validation plan
14. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 14
Validation plan
Defines how you will test for accuracy
Define Test Strategy which includes:
Use Cases/Test Cases
Test Data
Test Environment
How do we know when we are done?
Don’t underestimate this !
16. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 16
Development &
Packaging
Development Process
Plan Develop Build Deploy Test Rollout
Project Plans
Deployment Plans
Test & Validation strategy
Baseline Established
Export Packages
Build Cleanup scripts
Package Code Tree Changes
Build Custom DLLs
Run cleanup scripts
Merge activities
Import packages
Deploy CodeTree Changes
Deploy Custom DLLs
Execute validation plan
Run test scripts
Repeat deployment
steps in production
17. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 17
Deployment Process
Single Developer Solution
Export
Package(s)
Compare
to Baseline
Create
Deployment
Package(s)
Import into
Test
Merge
Conflicts
Plan Develop Build Test RolloutDeploy
Plan
Develop
Build
Test
Rollout
18. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 18
Deployment Process
Multiple Developer Solution
Export
Package(s)
Compare
to Baseline
Create
Deployment
Package(s)
Import into
Test
Merge
Conflicts
Plan Develop Build Test RolloutDeploy
Plan
Develop
Build
Test
Rollout
Merge Development and
Baseline
This is a 3 way Compare and Merge
19. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 19
Exporting Packages
Done using the Aras Export tool
Use the same version of the Import/Export tools to
establish the baseline and export your development
Use Tools like the Aras Customization report to
assist with packaging
Usually best to export entire packages to help with
the merge process
Export the same packages from development and
baseline
Export
Package(s)
Compare
to Baseline
Create
Deployment
Package(s)
Import
into Test
Merge
Conflicts
20. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 20
Comparing Baselines
Requires a good XML compare utility
You need to understand AML and the significance of
changes
Don’t ignore differences..
Make sure that you understand the reason for the diff.
Use a 3 way compare tool when multiple
developers are involved
Compare to
Baseline
Export
Packages
Create
Deployment
Package(s)
Import
into Test
Merge
Conflicts
21. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 21
Merging Conflicts
The focus is CONFLICT Resolution
A difference is not necessarily a conflict
A conflict could be:
An AML element that differs from the baseline
AML elements that wont produce the same result
The Aras Import tool will merge changes that are not
conflicted
Merge
Conflicts
Export
Packages
Create
Deployment
Package(s)
Import
into Test
Compare
to Baseline
22. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 22
Creating a Deployment Package
May require some scripts for pre-processing
Deleting items
Versionable items
Should be a full and complete package in most cases
There are some cases for delta files and patches
Name package in accordance with your plan
Store the package in the defined location
Notify the team
Create
Deployment
Package
Export
Packages
Merge
Conflicts
Import
into Test
Compare
to Baseline
23. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 23
Importing into Test
Target system MUST be equivalent to the baseline
Execute any pre-processing scripts
Import the deployment package using the Aras Import
Tool
Move on and execute your validation plan
When Issues are Identified:
Fix them in Development and repeat
Patching test is OK but you should repeat the whole process to
simulate the deployment process
Import into
Test
Export
Packages
Merge
Conflicts
Create
Deployment
Package
Compare
to Baseline
24. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 24
Synchronizing Environments
Dev 1
Dev 2
Test
Prod
Check
In / Out
Source
Control RefreshBuilds /
Patches
26. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 26
Tools – Source Control
GIT
CVS
SourceSafe
Subversion
File System
Etc.
27. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 27
Tools -XML Diff / Merge
Beyond Compare
Altova DiffDog
KDiff3
Etc.
28. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 28
Tools – Aras
Import / Export
Move solution items between environments via AML
Console Upgrade
Command line version of Import / Export Tools
Nash
Apply AML directly to the Innovator Server
AML Studio
Similar to Nash, but with intellisense. Community Solution
30. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 30
Example – Simple Change
Single Developer
Add new field to existing Part Form:
31. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 31
Deployment Process
Single Developer Solution
Export
Package(s)
Compare
to Baseline
Create
Deployment
Package(s)
Import into
Test
Merge
Conflicts
Plan Develop Build Test RolloutDeploy
Plan
Develop
Build
Test
Rollout
32. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 32
Compare AML
Baseline vs Development
Baseline Development
BeyondCompare
33. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 33
Deploy
Import Tool Nash / AML Studio
Test / Production
OR
35. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 35
Example 2 - A two developer Scenario
Developer 2 - Change Label, Name of field
Developer 1 – Adds ‘Weight’ field
Two Developers working
in parallel make changes
to the same Form.
Changes are made in
separate environments
36. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 36
Deployment Process
Multiple Developer Solution
Export
Package(s)
Create
Deployment
Package(s)
Import into
Test
Plan Develop Build Test RolloutDeploy
Plan
Develop
Build
Test
Rollout
Merge Development and
Baseline
37. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 37
Development & Baseline Compare
First Difference
Baseline Developer 1 Developer 2
KDiff3
Developer2 has modified
the label and name
Developer 1 has not
changed the baseline here
This is a DIFFERENCE but
not a CONFLICT
No Merge Required!
38. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 38
Development & Baseline Compare
Second Difference
Baseline Developer 1 Developer 2
KDiff3
Developer 1 has added the
Weight field to the form
Developer 2 has not
changed the baseline here
This is a DIFFERENCE but
not a CONFLICT
No Merge Required!
39. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 39
Deploy
Import Tool Nash / AML Studio
Test / Production
OR
41. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 41
Example of a conflict
Baseline Developer 1 Developer 2
KDiff3
Developer2 has modified
the label and name
Developer1 has also modified
the label and name
This is a CONFLICT
Merge Required!
42. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 42
Handling Special Cases
Special cases include:
Handling Deletes
Edit properties or relationships from items in other packages
You can execute custom AML during the import process
Place AML files in a folder with any name
‘Fixes’ for folder name is best practice
Files are processed by name in alphabetical order
Fixes are executed at the end of the import process
Pre-Processing can be done by using multiple packages
Copy snippets of AML during Diff Analysis
as a starting point
Patches can be created by editing the exported AML
43. aras.comCopyright © 2013 Aras. All Rights Reserved. Slide 43
Common Pitfalls
Manual changes directly in Test or Production
Lack of source control
Deferring deployment planning too late in the project
Insufficient Team Communication
Waiting too long to synchronize environments
Too many manual deployment steps
Failure to adjust baseline if changed during project
Editor's Notes OLD AGENDA:Overview of the “Problem” (scenarios)Why do we care about thisDiscuss common deployment challengesSimple -Moving from dev to prodMore complex - Parallel developmentOur ApproachRecommended environment picture of Dev/Test/ProdKeeping them in syncFlow chart of the processFull import vs deltaWhy it is importantOther considerations (see Russ’ slide)TerminologyBaseline, reversible, equivalency, patches/deltaTools that you needShare best practices for managing large, complex deploymentsWalk through some example deployment scenarios Talking Points:1. [Accurate Deployments] Just because a package imports successfully doesn’t mean that the desired result is achieved Deployment package Should be assigned a sequence number or build numberBaselineDoesn’t typically change during a development cycle, but there are special cases where it might (i.e. ‘Service Pack’ deployment during production. Or production fix was deployed which impacts current development project.Most likely a standard solutions DB Define Test Strategy which includes:Cases / ScriptsTest DataTest EnvironmentsTest Passes / PhasesIssue PriorityHow do we know when we are done testing?Important for regression testing in future phases * Identify package with a number for tracking* Store in a source control or similar repository I agree. This is no longer needed. Not RequiredBenefits:Branched DevelopmentMinimized riskControlHistoryTools Need to clarify the ‘Merge Conflicts’ step in the process. The Import tool will merge the changes automatically, so no need to merge changes found. However, we do need to merge changes found in the baseline or inadvertent changes identified from the developers environment (accidentally moved another field’s location on the form and a change was identified by doing a comparison) Fixes are processed at the end of the import processAny folder name can be used, but ‘Fixes’ is a best practiceFiles are processed by name in alphabetical orderYou cannot add package elements from other packages, but can add or edit properties / relationships from ItemTypes in other packagesFixes is best used for: Handling deletesItems that are not in the current package