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.

.Net Continuous Delivery - Sydney CD meetup - September 2014

10,117 views

Published on

Continuous Delivery for .Net on AWS with Octopus Deploy @ Domain.com.au
Initially presented at Sydney's Continuous Delivery Meetup on the 17th of September 2014

Published in: Technology
  • Be the first to comment

.Net Continuous Delivery - Sydney CD meetup - September 2014

  1. 1. .Net Continuous Delivery Presented by Jason Brown & Fabien Ruffin
  2. 2. Background • Transition to Agile • Growing team • Migration from monolithic application to microservices
  3. 3. What we will cover •Build process •Infrastructure automation •Deployment automation
  4. 4. Process Overview
  5. 5. Build
  6. 6. Build - Overview • Local build • Self-contained • Runs tests • Quick and easy updates • Fast builds • Deploy on commit
  7. 7. Build - Solution • 1 script to run the full process • PowerShell + psake • NUnit runner • OpenCover • NuGet.exe • Build script and tools packaged as NuGet packages • Bamboo triggers deployments
  8. 8. Infrastructure
  9. 9. The Infrastructure Challenges • Scalable • Available • Reliable • Secure • Robust • Performant • Deployable • Manageable • Plentiful • Cheap
  10. 10. ...so we built a robot army
  11. 11. ...actually, a HEADLESS robot army
  12. 12. The Cluster Standup Process • CloudFormation templates • Standard AWS AMIs • EC2 Server with 3-stage DSC • base.ps1 - army config • cluster.ps1 - platoon config • cluster-deploy.ps1 - app code • One-touch process. • ~10 minutes to provision • < 10 minutes to autoscale
  13. 13. Deployments
  14. 14. Deployment • Custom NuGet Gallery (for multiple private feeds) • Octopus Deploy • MS Entity Framework database migrations
  15. 15. Typical Deployment Flow UAT Staging Production
  16. 16. Domain’s Deployment Flow Git Branch Bamboo Branch NuGet Package Id Octopus environment develop develop develop-{app name} UAT release release release-{app name} Staging master master master-{app name} Production
  17. 17. Why Octopus? • Different focus • Remote deployments • Automatic parallelization • Configuration management • Deployment can be messy
  18. 18. Deployment Notifications
  19. 19. Octopus - Deployment
  20. 20. No-Downtime Deployment Web Server (IIS 7+ only) Live Site/API New Site/API Swap bindings
  21. 21. Octopus - Notifications
  22. 22. Octopus - Configuration Management
  23. 23. Monitoring & Alerting
  24. 24. Limitations & Next Steps • 1 web application per cluster only • Integration and UI/functional test still manually triggered • Windows-only deployments • Database auto-deployment only for Entity Framework • CloudFormation doesn’t support all options for all services
  25. 25. Outcome •No-Ops releases managed by testers •150 production releases in the last month •A bug found in the morning is usually patched a few hours later •Quick builds and deployment allowed a dozen deployments in half a day to address performance issues

×