Transcript
Page 1: Mastering Complex Application Deployments

1

Mastering the Complex Application Deployment

Eric Minick, Lead Consultant

Page 2: Mastering Complex Application Deployments

2

Your Deployments might be hard if….

• You have long deployment• The business complains about long outage

windows• Numerous planning meetings• You spend all weekend at the office• Deployments are seen as risky• We celebrate when we are successful

Page 3: Mastering Complex Application Deployments

3

The Goal

Production releases should be a non-event

Page 4: Mastering Complex Application Deployments

4

From “Hard” to a “Non-Event”

• Why deployments are so complex• Where basic automation helps• Coordinating deployments• Increasing consistency

Page 5: Mastering Complex Application Deployments

5

From “Hard” to a “Non-Event”

• Why deployments are so complex• Where basic automation helps• Coordinating deployments• Increasing consistency

Page 6: Mastering Complex Application Deployments

6

Modern systems have many pieces

• Complex Architecture: Tiers, SOA, busses…• Inter-related systems mean changes have wide

impact.

Image from ischool.tv

Page 7: Mastering Complex Application Deployments

7

Componentized applications are staying

• Agile encourages smaller teams

• Conway’s Law tells us that smaller teams, cooperating on a big system will produce more components. – And to deploy, we need all their expertise

• 84% of Global 2000 using SOA by end of 2010 (Forrester)

Page 8: Mastering Complex Application Deployments

8

Lots of steps and people

• Manual releases require lots of…– Steps to do the work– People to execute the steps– People on call to fix it when things break

• Deployment document example from a Fortune 100 customer– ~15 components– 148 People– 600 lines in Excel

• We’ve seen the 10,000 step deployment plan

Page 9: Mastering Complex Application Deployments

9

Our releases are inconsistent

• Many components in the system, but they don’t change all at once– Most changes involve more than one, but less

than all pieces

• We write a new plan for each release

Page 10: Mastering Complex Application Deployments

10

From “Hard” to a “Non-Event”

• Why deployments are so complex• Where basic automation helps• Coordinating deployments• Increasing consistency

Page 11: Mastering Complex Application Deployments

11

Automation is great…

• A basic script can turn 10 steps into 1 or 2 steps.

• Distributed workflow engines can easily model a component deployment

• With environment modeling, you can consistently deploy through environments.

Page 12: Mastering Complex Application Deployments

12

Automation works with people

• People are good at creative work and problem solving

• People are bad at “consistency”.

• Good plan: – People design automation and troubleshoot– Computer consistently runs a process.

• See our webcast “Death to Manual Deployments”

Page 13: Mastering Complex Application Deployments

13

…but we still have a coordination problem

• Distributed automation or runbook can deploy components or even systems

• But what exactly do I deploy? What goes together?

Page 14: Mastering Complex Application Deployments

14

From “Hard” to a “Non-Event”

• Why deployments are so complex• Where basic automation helps• Coordinating deployments• Increasing consistency

Page 15: Mastering Complex Application Deployments

15

How do we know what goes together?

• We want:– Components with changes ready to release– No components with changes not ready– All components needed by the components we

need (deployment dependencies)

Page 16: Mastering Complex Application Deployments

16

How do we know what goes together?

• “All components needed by the components we need” is a tough requirement

• Traditionally satisfied by asking Dev and trusting their omniscience• Works most of the time

– Or we trust the ALM (Source + Bug Tracking) tools• Could work if people were perfectly disciplined• People are not

Page 17: Mastering Complex Application Deployments

17

How do we know what goes together?

• Test it!–ALM tools and developer oral histories

suggest what to test together–Once verified, the stuff in Test is the stuff

we want in Production

Page 18: Mastering Complex Application Deployments

18

Model based Deployment Strategy

• Model the system in a test environment

• Promote the model across environments

• Model includes:– applications, app configuration, databases,

infrastructure, settings– Aware of environment specifics as well

Page 19: Mastering Complex Application Deployments

19

Requirements for Model Promotion

• Inventory – what is where• Recording inventory as a Model• Testing that we can trust

Page 20: Mastering Complex Application Deployments

20

Model Promotion: Inventory

• To promote what is in Test to Production, we must know what is in test

• To know the extent of the change, we must know what is in production

• Inventory of all environments• What versions of each component make up the system• Where appropriate, treat configuration as a component

• Bonus: Inventory helps with visibility and audit

Page 21: Mastering Complex Application Deployments

21

Model Promotion: Model Snapshots

• Need to be able to snapshot the inventory to define a desired state

• Approaches:– Spreadsheets listing component versions– Change management tickets with components as

attachments– Build it into your deployment product (we did)

Page 22: Mastering Complex Application Deployments

22

Model Promotion: Testing we can trust

• Testing validates compatibility

• Must leave adequate time to test

• With more automated tests, we can:– Test quicker– Test more creatively

• Automated tests should run in ALL environments

Page 23: Mastering Complex Application Deployments

23

From “Hard” to a “Non-Event”

• Why deployments are so complex• Where basic automation helps• Coordinating deployments• Increasing consistency

Page 24: Mastering Complex Application Deployments

24

Each deployment is different

• Only a subset of components change in a release

• Sometimes we change configuration

Page 25: Mastering Complex Application Deployments

25

Have a single deployment process

• Define the process for releasing the entire system

• Note which steps are associated with what components

• Execute only the steps for the components that are changing (which your inventory tells you)

Page 26: Mastering Complex Application Deployments

26

Relentlessly remove variation

• Developers and architects contribute to repeatable releases

• “Special” events (like adding a new data stream) must fit into any automation or defined process

Page 27: Mastering Complex Application Deployments

27

Use the same process in Test and Live

• The earlier the process is used, the better– It will be tested more– Earlier environments have less tolerance for

slowness

• The process or automation must take into account environmental differences

Page 28: Mastering Complex Application Deployments

28

Key Takeaways

1. Releases are complex, and the business needs them done rapidly

Page 29: Mastering Complex Application Deployments

29

Key Takeaways

1. Releases are complex, and the business needs them done rapidly

2. Traditional methods for determining what is released together should be used in Test

Page 30: Mastering Complex Application Deployments

30

Key Takeaways

1. Releases are complex, and the business needs them done rapidly

2. Traditional methods for determining what is released together should be used in Test

3. Only components tested together should be released together

Page 31: Mastering Complex Application Deployments

31

Key Takeaways

1. Releases are complex, and the business needs them done rapidly

2. Traditional methods for determining what is released together should be used in Test

3. Only components tested together should be released together

4. Simple deployment automation is very helpful, but coordination is key

Page 32: Mastering Complex Application Deployments

32

Key Takeaways

1. Releases are complex, and the business needs them done rapidly

2. Traditional methods for determining what is released together should be used in Test

3. Only components tested together should be released together

4. Simple deployment automation is very helpful, but coordination is key

5. Getting this right is easier if you have help from developers, testers, operations and release management

Page 33: Mastering Complex Application Deployments

33

References

http://urbancode.com/resources• Death to Manual Deployments!• Build & Deployment Automation for the Lean

Economy• ITIL Release Management and Automation

Urbancode.com/blogs/Twitter.com/UrbanCodeSoftFacebook.com/UrbanCodeSoft

Page 34: Mastering Complex Application Deployments

34

Yes, UrbanCode sells products for this

• AnthillPro is now the DevOps Platform

• DevOps Platform– Automated build, test and deployment. Includes

UrbanDeploy.

• UrbanDeploy– Application Release Automation

Page 35: Mastering Complex Application Deployments

35

Questions?


Recommended