continuous deployment @ coolblue

75
CONTINUOUS. Deployment.

Upload: paul-de-raaij

Post on 22-Nov-2014

301 views

Category:

Engineering


7 download

DESCRIPTION

Slides of continuous deployment talk held at the Devops Amsterdam meetup 21-10-2014 @ Coolblue.

TRANSCRIPT

Page 1: Continuous deployment @ Coolblue

CONTINUOUS.Deployment.

Page 2: Continuous deployment @ Coolblue

PAUL.DevOp.

Page 3: Continuous deployment @ Coolblue

THE ROAD AHEAD.From new feature to deployment.

Page 4: Continuous deployment @ Coolblue

LANGUAGE AGNOSTIC.Same principles apply.

Page 5: Continuous deployment @ Coolblue

UNIT TESTS.All code is guilty, until proven otherwise.

Page 6: Continuous deployment @ Coolblue

UNIT TESTING.

• PHP– PHPUnit

• NodeJS– NodeUnit

• .NET– MSTest

Page 7: Continuous deployment @ Coolblue

CODING STANDARDS.Rules may apply.

Page 8: Continuous deployment @ Coolblue
Page 9: Continuous deployment @ Coolblue

FORKS.Personal cutlery.

Page 10: Continuous deployment @ Coolblue

PULL REQUESTS.Share, review and discuss.

Page 11: Continuous deployment @ Coolblue

PULL REQUESTS.Small commits, small context.

Page 12: Continuous deployment @ Coolblue

TEAM CHECK.None of us is as smart as all of us.

Page 13: Continuous deployment @ Coolblue

QUALITY CONTROL.Check standards have been met.

Page 14: Continuous deployment @ Coolblue

BUILD SERVER.Construction complete.

Page 15: Continuous deployment @ Coolblue
Page 16: Continuous deployment @ Coolblue

BUILD CHAINS.

Page 17: Continuous deployment @ Coolblue

BUILD CHAINS.

Page 18: Continuous deployment @ Coolblue

REPORTING.REPORTING.

Page 19: Continuous deployment @ Coolblue

REPORTING.REPORTING.

Page 20: Continuous deployment @ Coolblue

BUILD SCRIPTS.Automate workflow execution.

Page 21: Continuous deployment @ Coolblue
Page 22: Continuous deployment @ Coolblue

BUILD STEP 1.Continuous inspection.

Page 23: Continuous deployment @ Coolblue

QUALITY ASSURANCE.

• Automated tests– Unit testing– Functional testing

• Static code analysers– Lint checkers– Code duplication checkers– Code sniffers

Page 24: Continuous deployment @ Coolblue

TOOLSET.

PHP * NodeJS .NET

PHPUnit NodeUnit MSTest

* PHP Template: http://jenkins-php.org

UNIT TESTING.

PHP * NodeJS .NET

PHPLint (php –l) JSHint Resharper

PHPCS Jscs

LINTING & CODING STANDARDS.

PHP * NodeJS .NET

PHPMD NDepend

PHPCPD

PHP_Depend

MESS DETECTION.

Page 25: Continuous deployment @ Coolblue

NODEUNIT.Easy asynchronous unit testing.

Page 26: Continuous deployment @ Coolblue

NODEUNIT.Easy asynchronous unit testing.

Page 27: Continuous deployment @ Coolblue

JSHINT.Detect errors and enforce coding conventions.

Page 28: Continuous deployment @ Coolblue

JSHINT.Detect errors and enforce coding conventions.

Page 29: Continuous deployment @ Coolblue

PHPCS.Detect violations of defined coding standard.

Page 30: Continuous deployment @ Coolblue

PHPCS.Detect violations of defined coding standard.

Page 31: Continuous deployment @ Coolblue

STATIC ANALYZERS.

• SonarQube– Extensive code quality management– Broad range of languages– Open Source

• SensioLabsInsight– PHP, XML, Yaml only– Security checks– Paid plans only

Page 32: Continuous deployment @ Coolblue

SENIORITY CHECK.Verify technical implementation.

Page 33: Continuous deployment @ Coolblue

MERGE PULL REQUEST.Integrate into the main repository.

Page 34: Continuous deployment @ Coolblue

ACHIEVEMENT.Continuous integration.

Page 35: Continuous deployment @ Coolblue

BUILD STEP 2: PACKAGING.Not a box of chocolates.

Page 36: Continuous deployment @ Coolblue

LINUX.

• Close to the OS• RPMs on package repository• Installed/Updated via OS package

manager– Updates triggered via puppet

Page 37: Continuous deployment @ Coolblue

RPMS ARE POWERFUL.

• Control over file permissions & rights• Clean uninstallation• Package managers are simple and well-

known• Easily distributed• No added complexity of third-party tools

Page 38: Continuous deployment @ Coolblue

BUILDING A RPM.Hard puzzle to crack?

Page 39: Continuous deployment @ Coolblue
Page 40: Continuous deployment @ Coolblue

BUILDING A RPM.Archive source files in a zip.

Page 41: Continuous deployment @ Coolblue

BUILDING A RPM.Create a spec file.

Page 42: Continuous deployment @ Coolblue

BUILDING A RPM.Create folder structure.

Page 43: Continuous deployment @ Coolblue

BUILDING A RPM.Run rpmbuild.

Page 44: Continuous deployment @ Coolblue

DEMONSTRATION.One demo a day, keeps the devil away.

Page 45: Continuous deployment @ Coolblue

CUSTOM RPM REPOSITORY.• Requirements:

– createrepo package– Sqllite database– HTTP or FTP server

• Run createrepo on folder with RPMS• Re-run createrepo after each change

• Tips:– Use gpg signing for production repositories– Organize your repository according architectures

Page 46: Continuous deployment @ Coolblue

WINDOWS.

• Octopus Deploy– Web Services– Desktop applications

• Workflow:– Builds NuGet packages– Deploys NuGet packages using tentacles– Installs them

Page 47: Continuous deployment @ Coolblue

OCTOPUS OVERVIEW.

Page 48: Continuous deployment @ Coolblue

OCTOPUS OVERVIEW.

Page 49: Continuous deployment @ Coolblue

OCTOPUS OVERVIEW.

Page 50: Continuous deployment @ Coolblue

BUILD STEP 3.Publish to test environment.

Page 51: Continuous deployment @ Coolblue

ACHIEVEMENT.Continuous delivery.

Page 52: Continuous deployment @ Coolblue

BUILD STEP 4.Publish to accept environment.

Page 53: Continuous deployment @ Coolblue

BUILD STEP 5.Publish to production environment.

Page 54: Continuous deployment @ Coolblue

ACHIEVEMENT.Continuous deployment.

Page 55: Continuous deployment @ Coolblue

ACHIEVEMENT.Continuous deployment.

Page 56: Continuous deployment @ Coolblue

CONTINUOUS.Delivery vs Deployment.

Page 57: Continuous deployment @ Coolblue

CONTINUOUS DELIVERY.

• Automated inspection• Automated delivery

– Except production

Page 58: Continuous deployment @ Coolblue

CONTINUOUS DEPLOYMENT.

• Continuous delivery• Automated deployment to production• Automated post-deploy tests

Page 59: Continuous deployment @ Coolblue

AUTOMATED DEPLOYMENT.

Page 60: Continuous deployment @ Coolblue

DEVELOP, TEST, DEPLOY, REPEAT.

Review & test

Write code

Commit & push

Open pull request

Build

Package

Staging

Production

Post-deploy tests

Page 61: Continuous deployment @ Coolblue

CHECK FOR SUCCESS.

• Website still up?• Working functionality?

Page 62: Continuous deployment @ Coolblue

AUTOMATE.Post-deploy smoke test.

Page 63: Continuous deployment @ Coolblue

MONITORING.Monitor application state.

Page 64: Continuous deployment @ Coolblue

STATISTICS.Measure everything.

Page 65: Continuous deployment @ Coolblue

FUNCTIONAL TESTS.Automated regression testing.

Page 66: Continuous deployment @ Coolblue

APPROACHES.

Page 67: Continuous deployment @ Coolblue

DEPLOY & REVERT.Revert in case of problems.

Page 68: Continuous deployment @ Coolblue

PRE-DEPLOYMENT TESTS.Run post-deploy test on acceptance environment.

Page 69: Continuous deployment @ Coolblue

CANARY DEPLOYMENT.Deploy to a cluster and do a live test.

Page 70: Continuous deployment @ Coolblue

DEVELOP, TEST, DEPLOY, REPEAT.

Review & test

Write code

Commit & push

Open pull request

Build

Package

Staging

Production

Post-deploy tests

Post-deploytests

Page 71: Continuous deployment @ Coolblue

ACHIEVEMENT.Continuous deployment.

Page 72: Continuous deployment @ Coolblue

PROBLEM/CHALLENGE.Reverting data/data sctructures.

Page 73: Continuous deployment @ Coolblue
Page 74: Continuous deployment @ Coolblue

GOOGLE IT.

• Canary deployment• Post-deploy tests• Continuous deployment• StatsD / Graphite• TeamCity / Jenkins / Octopus• Rpmbuild / createrepo

Page 75: Continuous deployment @ Coolblue

THANK YOU.Any questions?