Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
CONTINUOUS. 
Deployment.
PAUL. 
DevOp.
THE ROAD AHEAD. 
From new feature to deployment.
LANGUAGE AGNOSTIC. 
Same principles apply.
UNIT TESTS. 
All code is guilty, until proven otherwise.
UNIT TESTING. 
• PHP 
– PHPUnit 
• NodeJS 
– NodeUnit 
• .NET 
– MSTest
CODING STANDARDS. 
Rules may apply.
FORKS. 
Personal cutlery.
PULL REQUESTS. 
Share, review and discuss.
PULL REQUESTS. 
Small commits, small context.
TEAM CHECK. 
None of us is as smart as all of us.
QUALITY CONTROL. 
Check standards have been met.
BUILD SERVER. 
Construction complete.
BUILD CHAINS.
BUILD CHAINS.
REPORTING. 
REPORTING.
REPORTING. 
REPORTING.
BUILD SCRIPTS. 
Automate workflow execution.
BUILD STEP 1. 
Continuous inspection.
QUALITY ASSURANCE. 
• Automated tests 
– Unit testing 
– Functional testing 
• Static code analysers 
– Lint checkers 
– C...
TOOLSET. 
UNIT TESTING. 
PHP * NodeJS .NET 
PHPUnit NodeUnit MSTest 
LINTING & CODING STANDARDS. 
PHP * NodeJS .NET 
PHPLi...
NODEUNIT. 
Easy asynchronous unit testing.
NODEUNIT. 
Easy asynchronous unit testing.
JSHINT. 
Detect errors and enforce coding conventions.
JSHINT. 
Detect errors and enforce coding conventions.
PHPCS. 
Detect violations of defined coding standard.
PHPCS. 
Detect violations of defined coding standard.
STATIC ANALYZERS. 
• SonarQube 
– Extensive code quality management 
– Broad range of languages 
– Open Source 
• SensioLa...
SENIORITY CHECK. 
Verify technical implementation.
MERGE PULL REQUEST. 
Integrate into the main repository.
ACHIEVEMENT. 
Continuous integration.
BUILD STEP 2: PACKAGING. 
Not a box of chocolates.
LINUX. 
• Close to the OS 
• RPMs on package repository 
• Installed/Updated via OS package 
manager 
– Updates triggered ...
RPMS ARE POWERFUL. 
• Control over file permissions & rights 
• Clean uninstallation 
• Package managers are simple and we...
BUILDING A RPM. 
Hard puzzle to crack?
BUILDING A RPM. 
Archive source files in a zip.
BUILDING A RPM. 
Create a spec file.
BUILDING A RPM. 
Create folder structure.
BUILDING A RPM. 
Run rpmbuild.
DEMONSTRATION. 
One demo a day, keeps the devil away.
CUSTOM RPM REPOSITORY. 
• Requirements: 
– createrepo package 
– Sqllite database 
– HTTP or FTP server 
• Run createrepo ...
WINDOWS. 
• Octopus Deploy 
– Web Services 
– Desktop applications 
• Workflow: 
– Builds NuGet packages 
– Deploys NuGet ...
OCTOPUS OVERVIEW.
OCTOPUS OVERVIEW.
OCTOPUS OVERVIEW.
BUILD STEP 3. 
Publish to test environment.
ACHIEVEMENT. 
Continuous delivery.
BUILD STEP 4. 
Publish to accept environment.
BUILD STEP 5. 
Publish to production environment.
ACHIEVEMENT. 
Continuous deployment.
ACHIEVEMENT. 
Continuous deployment.
CONTINUOUS. 
Delivery vs Deployment.
CONTINUOUS DELIVERY. 
• Automated inspection 
• Automated delivery 
– Except production
CONTINUOUS DEPLOYMENT. 
• Continuous delivery 
• Automated deployment to production 
• Automated post-deploy tests
AUTOMATED DEPLOYMENT.
DEVELOP, TEST, DEPLOY, REPEAT. 
Review & 
test 
Write code 
Commit & 
push 
Open pull 
request 
Build 
Package 
Staging 
P...
CHECK FOR SUCCESS. 
• Website still up? 
• Working functionality?
AUTOMATE. 
Post-deploy smoke test.
MONITORING. 
Monitor application state.
STATISTICS. 
Measure everything.
FUNCTIONAL TESTS. 
Automated regression testing.
APPROACHES.
DEPLOY & REVERT. 
Revert in case of problems.
PRE-DEPLOYMENT TESTS. 
Run post-deploy test on acceptance environment.
CANARY DEPLOYMENT. 
Deploy to a cluster and do a live test.
DEVELOP, TEST, DEPLOY, REPEAT. 
Review & 
test 
Write code 
Commit & 
push 
Open pull 
request 
Build 
Package 
Staging 
P...
ACHIEVEMENT. 
Continuous deployment.
PROBLEM/CHALLENGE. 
Reverting data/data sctructures.
GOOGLE IT. 
• Canary deployment 
• Post-deploy tests 
• Continuous deployment 
• StatsD / Graphite 
• TeamCity / Jenkins /...
THANK YOU. 
Any questions?
Continuous deployment @ Coolblue
Continuous deployment @ Coolblue
Continuous deployment @ Coolblue
Continuous deployment @ Coolblue
Continuous deployment @ Coolblue
Upcoming SlideShare
Loading in …5
×

Continuous deployment @ Coolblue

1,731 views

Published on

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

Published in: Engineering
  • @Paul de Raaij ... another question for you : what did you mean by 'reverting data structures' in slide # 72 ?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • @Paul de Raaij ... thanks Mr. Raaij for your quick reply. Dogfooding is the practice when the software team uses their own product/software as a normal user. For example, Facebook asks its developers/staff members to test out the new features. This is called dogfooding. Also, I was wondering if you and your team uses IRC bots to communicate amongst yourselves. Facebook uses these bots so that developers can know what is the deployment scenario automatically.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • @Akond Rahman Thanks for your compliments. We use some form of dark launches, but that is more about A/B testing functionalities. Most of the time UI based, but sometimes also for logic behind it. Feature flags are pretty common in our process. Mainly to accommodate our small deploy mentality. Dogfooding is not something I am known to. I will check it out so thank you for that. We do not use bots or something to kick our builds. Everything is done via the teamcity interface. Not only the action to deploy, but also the feedback on it. We are investigating to see if we can create better information dashboards about deployments.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Wow ... great presentation ! I wonder if CoolBlue uses dark launches and feature flags as part of its deployment practices. How about dogfooding ? Do you use IRC/IM bots ?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Continuous deployment @ Coolblue

  1. 1. CONTINUOUS. Deployment.
  2. 2. PAUL. DevOp.
  3. 3. THE ROAD AHEAD. From new feature to deployment.
  4. 4. LANGUAGE AGNOSTIC. Same principles apply.
  5. 5. UNIT TESTS. All code is guilty, until proven otherwise.
  6. 6. UNIT TESTING. • PHP – PHPUnit • NodeJS – NodeUnit • .NET – MSTest
  7. 7. CODING STANDARDS. Rules may apply.
  8. 8. FORKS. Personal cutlery.
  9. 9. PULL REQUESTS. Share, review and discuss.
  10. 10. PULL REQUESTS. Small commits, small context.
  11. 11. TEAM CHECK. None of us is as smart as all of us.
  12. 12. QUALITY CONTROL. Check standards have been met.
  13. 13. BUILD SERVER. Construction complete.
  14. 14. BUILD CHAINS.
  15. 15. BUILD CHAINS.
  16. 16. REPORTING. REPORTING.
  17. 17. REPORTING. REPORTING.
  18. 18. BUILD SCRIPTS. Automate workflow execution.
  19. 19. BUILD STEP 1. Continuous inspection.
  20. 20. QUALITY ASSURANCE. • Automated tests – Unit testing – Functional testing • Static code analysers – Lint checkers – Code duplication checkers – Code sniffers
  21. 21. TOOLSET. UNIT TESTING. PHP * NodeJS .NET PHPUnit NodeUnit MSTest LINTING & CODING STANDARDS. PHP * NodeJS .NET PHPLint (php –l) JSHint Resharper PHPCS Jscs MESS DETECTION. PHP * NodeJS .NET PHPMD NDepend PHPCPD PHP_Depend * PHP Template: http://jenkins-php.org
  22. 22. NODEUNIT. Easy asynchronous unit testing.
  23. 23. NODEUNIT. Easy asynchronous unit testing.
  24. 24. JSHINT. Detect errors and enforce coding conventions.
  25. 25. JSHINT. Detect errors and enforce coding conventions.
  26. 26. PHPCS. Detect violations of defined coding standard.
  27. 27. PHPCS. Detect violations of defined coding standard.
  28. 28. STATIC ANALYZERS. • SonarQube – Extensive code quality management – Broad range of languages – Open Source • SensioLabsInsight – PHP, XML, Yaml only – Security checks – Paid plans only
  29. 29. SENIORITY CHECK. Verify technical implementation.
  30. 30. MERGE PULL REQUEST. Integrate into the main repository.
  31. 31. ACHIEVEMENT. Continuous integration.
  32. 32. BUILD STEP 2: PACKAGING. Not a box of chocolates.
  33. 33. LINUX. • Close to the OS • RPMs on package repository • Installed/Updated via OS package manager – Updates triggered via puppet
  34. 34. 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
  35. 35. BUILDING A RPM. Hard puzzle to crack?
  36. 36. BUILDING A RPM. Archive source files in a zip.
  37. 37. BUILDING A RPM. Create a spec file.
  38. 38. BUILDING A RPM. Create folder structure.
  39. 39. BUILDING A RPM. Run rpmbuild.
  40. 40. DEMONSTRATION. One demo a day, keeps the devil away.
  41. 41. 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
  42. 42. WINDOWS. • Octopus Deploy – Web Services – Desktop applications • Workflow: – Builds NuGet packages – Deploys NuGet packages using tentacles – Installs them
  43. 43. OCTOPUS OVERVIEW.
  44. 44. OCTOPUS OVERVIEW.
  45. 45. OCTOPUS OVERVIEW.
  46. 46. BUILD STEP 3. Publish to test environment.
  47. 47. ACHIEVEMENT. Continuous delivery.
  48. 48. BUILD STEP 4. Publish to accept environment.
  49. 49. BUILD STEP 5. Publish to production environment.
  50. 50. ACHIEVEMENT. Continuous deployment.
  51. 51. ACHIEVEMENT. Continuous deployment.
  52. 52. CONTINUOUS. Delivery vs Deployment.
  53. 53. CONTINUOUS DELIVERY. • Automated inspection • Automated delivery – Except production
  54. 54. CONTINUOUS DEPLOYMENT. • Continuous delivery • Automated deployment to production • Automated post-deploy tests
  55. 55. AUTOMATED DEPLOYMENT.
  56. 56. DEVELOP, TEST, DEPLOY, REPEAT. Review & test Write code Commit & push Open pull request Build Package Staging Production Post-deploy tests
  57. 57. CHECK FOR SUCCESS. • Website still up? • Working functionality?
  58. 58. AUTOMATE. Post-deploy smoke test.
  59. 59. MONITORING. Monitor application state.
  60. 60. STATISTICS. Measure everything.
  61. 61. FUNCTIONAL TESTS. Automated regression testing.
  62. 62. APPROACHES.
  63. 63. DEPLOY & REVERT. Revert in case of problems.
  64. 64. PRE-DEPLOYMENT TESTS. Run post-deploy test on acceptance environment.
  65. 65. CANARY DEPLOYMENT. Deploy to a cluster and do a live test.
  66. 66. DEVELOP, TEST, DEPLOY, REPEAT. Review & test Write code Commit & push Open pull request Build Package Staging Production Post-deploy tests
  67. 67. ACHIEVEMENT. Continuous deployment.
  68. 68. PROBLEM/CHALLENGE. Reverting data/data sctructures.
  69. 69. GOOGLE IT. • Canary deployment • Post-deploy tests • Continuous deployment • StatsD / Graphite • TeamCity / Jenkins / Octopus • Rpmbuild / createrepo
  70. 70. THANK YOU. Any questions?

×