YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

DeploymentWithin a Traditional IT environment

Rob Allen  

akrabat.com ~ @akrabat ~ October 2016

Page 2: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

What?Software deployment is all of the activities that make a softwaresystem available for use.

Wikipedia

Rob Allen ~ @akrabat

Page 3: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Traditional IT environment• Servers "owned" by client

• Perceived control and compliance• IT departments control policy

• Variety of stack• Windows/IIS• IBMi• Solaris• Linux

Rob Allen ~ @akrabat

Page 4: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

What we're not going to cover• Cloud deployments• Provisioning of servers• Continuous Integration• Continuous Delivery• Chat Ops

Rob Allen ~ @akrabat

Page 5: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Fundamentals

Rob Allen ~ @akrabat

Page 6: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Development processesFundamental development processes are still required

• Local development environments• Source code control• Database schema management• Management of configuration data

Rob Allen ~ @akrabat

Page 7: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Source code control• Git• Subversion• Team Foundation Server

Rob Allen ~ @akrabat

Page 8: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Code organisation• Isolate work• Branch!

• One branch per logical work unit• Merge once approved• Always have a way to create a hot fix from what's on live

Rob Allen ~ @akrabat

Page 9: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Branching methodology• Branch per team• Branch per sprint• Branch per feature

• Git flow• Github flow

Rob Allen ~ @akrabat

Page 10: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Git flow

Rob Allen ~ @akrabat

Page 11: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Github Flow 

Rob Allen ~ @akrabat

Page 12: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Continuous integration• Automatically test every PR• Types of tests:

• Coding style• Unit tests• Functional tests• Acceptance tests

Rob Allen ~ @akrabat

Page 13: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Database schema managementaka: Migrations

• Schema changes stored in individual files• delta files with UP and DOWN functionality• Version controlled• Destructive changes possible… (be careful!)

Rob Allen ~ @akrabat

Page 14: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Migration toolsIt really doesn't matter which tool you use

• Simple SQL files• Your framework's system• Liquibase• DBDeploy• Flyway• DBMaestro• Redgate SQL Compare

Rob Allen ~ @akrabat

Page 15: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Management of configuration dataEach environment needs different configuration:

• Database credentials• Debug / logging levels• Links to other servers

Rob Allen ~ @akrabat

Page 16: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Context awareness• Automatic

• Automatic detection based on URL• Environment variables (12factor.net/config)

• Local configuration file

Rob Allen ~ @akrabat

Page 17: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Deployment

Rob Allen ~ @akrabat

Page 18: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Manual deploymentSimply copy the files to the right placeProblems:

• Slow• Inconsistent between each deploy• Failures in production• No records. Who deployed what, when (or where)?

Rob Allen ~ @akrabat

Page 19: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Simple deployment systems• FTP / SFTP• rsync• Remote Desktop

Rob Allen ~ @akrabat

Page 20: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

It's more than just copying code

Rob Allen ~ @akrabat

Page 21: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Other things to think about• File permissions• Preserve user uploaded files• Steps after upload

• Stale cache?• Cache priming?

• Keeping records

Rob Allen ~ @akrabat

Page 22: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

People aren't machines!

Rob Allen ~ @akrabat

Page 23: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Automation• People: good at creative judgement• Machines: Good at doing the same thing over and over

Rob Allen ~ @akrabat

Page 24: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Advantages of automation• Deferred deployments• Self-service deployments• Automatically triggered deployments• Smoke tests (automated tests after deploying)• Automatic rollbacks (restore last successful deployment if this one

fails)

Rob Allen ~ @akrabat

Page 25: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Scripts• Provide consistency• Provide a platform for additional abilities

• continuous deployment• smoke tests

• No need to wait for other people• Faster and less hassle.

Rob Allen ~ @akrabat

Page 26: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

What needs to be done?Write a deployment checklist. Then script it.

• Copy files & folders• database schema & content updates• configuration updates• r/w permissions on files & folders• SSL certs?• Clear caches

Rob Allen ~ @akrabat

Page 27: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Tooling• Simple script• Make-like tool• Specialist tool

Rob Allen ~ @akrabat

Page 28: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Simple script• Bash• Powershell• Usually runs on the server

Rob Allen ~ @akrabat

Page 29: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Make-like tool• Abstracted script• Easier to make cross platform• Make/Phing/Ant/Rake• More likely to push to server

Rob Allen ~ @akrabat

Page 30: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Specialist tools• Fabric/Capistrano• Ansible/Chef/Puppet/Salt• Deploybot• More likely to be automated

Rob Allen ~ @akrabat

Page 31: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Challenges• Technical• Political

Rob Allen ~ @akrabat

Page 32: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

TechnicalInfrastructure challenges

• VPN• Firewall• Operating systems

Rob Allen ~ @akrabat

Page 33: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Political• What is acceptable?• What are you allowed to do?• Does IT change things for you?• Does IT change things unexpectedly?• Change request documentation?

Rob Allen ~ @akrabat

Page 34: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Case studies

Rob Allen ~ @akrabat

Page 35: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Case study 1: Internal• Self-hosted by client• Within company network• Windows/IIS/SQL Server

Rob Allen ~ @akrabat

Page 36: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Case study 1: Internal• Multi-script solution

• 1. Tag code & build tarball• 2. Ship tarball to UAT server via VPN• 3. IT copy tarball from UAT to Live• 4. Script to untar & run deploy steps

Rob Allen ~ @akrabat

Page 37: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Case study 2: Minicomputer• Self-hosted by client• Some access to Internet• IBM i-series/DB2

Rob Allen ~ @akrabat

Page 38: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Case study 2: Minicomputer• CI tooling• Checklist

• Manual tag creation for release• Automatic script to deploy

Rob Allen ~ @akrabat

Page 39: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

To sum up

Rob Allen ~ @akrabat

Page 40: Deployment -   · PDF fileDeployment Within a Traditional IT environment ... • Git flow • Github flow Rob Allen ~ @akrabat. Git flow Rob Allen ~ @akrabat. Github Flow

Thank you! 

Feedback: https://joind.in/talk/38e78    

Rob Allen ~ akrabat.com ~ @akrabat


Related Documents