CDwithWindows.net
Continuous Delivery
making it work with Windows and .NET
Matthew Skelton and Chris O’Dell
LeedsSharp meetup group | 26 October 2017
#LeedsSharp
Slide 2
Slide 2 text
CDwithWindows.net
why a special focus for .NET?
some case studies
recommendations
(download the book!)
Slide 3
Slide 3 text
CDwithWindows.net
Continuous Delivery
Jez Humble & Dave Farley
Addison-Wesley, 2010
Reliable Software Releases
through Build, Test, and
Deployment Automation
Slide 4
Slide 4 text
CDwithWindows.net
Continuous Delivery
Jez Humble & Dave Farley
Addison-Wesley, 2010
Reliable Software Releases
through Build, Test, and
Deployment Automation
Slide 5
Slide 5 text
CDwithWindows.net
Continuous Integration:
Build & test code on every commit to version control
Continuous Deployment:
Push changes to live systems many times per day
Continuous Delivery:
Reliable Software Releases through Build, Test, and
Deployment Automation
Slide 6
Slide 6 text
CDwithWindows.net
Slide 7
Slide 7 text
CDwithWindows.net
Slide 8
Slide 8 text
CDwithWindows.net
Continuous Delivery
with Windows and .NET
Matthew Skelton and Chris O’Dell
O’Reilly, February 2016
FREE via CDwithWindows.net
Slide 9
Slide 9 text
CDwithWindows.net
Required reading for
MSc in Software Systems Engineering
at University College London (UCL)
"[the] text is excellent and succinctly explains many of
the key terms, such as continuous integration and
continuous delivery, underpinning DevOps."
https://continuousdeliverywithwindows.wordpress.com/2017/10/20/continuo
us-delivery-with-windows-and-net-is-required-reading-for-msc-students/
Slide 10
Slide 10 text
CDwithWindows.net
Chris O’Dell
Consultant at Contino
@ChrisAnnODell
who
Matthew Skelton
Founder at Conflux
@matthewpskelton
Slide 11
Slide 11 text
CDwithWindows.net
Why a special focus for .NET?
Slide 12
Slide 12 text
CDwithWindows.net
Windows/.NET around 2010
No native Package Management
Very limited automation
Point and click configuration
Monolithic configuration (SCCM etc.)
Slide 13
Slide 13 text
CDwithWindows.net
Slide 14
Slide 14 text
CDwithWindows.net
Windows/.NET in 2016
PowerShell APIs for all MS products
NuGet, Chocolatey, OneGet, …
1st-class Git experience on Windows
Native Windows/.NET support in Chef,
Puppet, Ansible + DSC
Slide 15
Slide 15 text
CDwithWindows.net
Slide 16
Slide 16 text
CDwithWindows.net
Some case studies
Slide 17
Slide 17 text
CDwithWindows.net
Slide 18
Slide 18 text
CDwithWindows.net
Slide 19
Slide 19 text
CDwithWindows.net
Slide 20
Slide 20 text
CDwithWindows.net
Slide 21
Slide 21 text
CDwithWindows.net
Slide 22
Slide 22 text
CDwithWindows.net
Soundbites from
Focus on flow
Avoid complex branching strategies
Aim to push work out to consumers asap
Favour fast recovery
Slide 23
Slide 23 text
CDwithWindows.net
CDwithWindows.net
Slide 24
Slide 24 text
CDwithWindows.net
Slide 25
Slide 25 text
CDwithWindows.net
Slide 26
Slide 26 text
CDwithWindows.net
Slide 27
Slide 27 text
CDwithWindows.net
Slide 28
Slide 28 text
CDwithWindows.net
Slide 29
Slide 29 text
CDwithWindows.net
Slide 30
Slide 30 text
CDwithWindows.net
Takeaways from
Collect metrics from your live systems
Make them effective for issue resolution
Too much unstructured data can be blinding
Help your future selves pinpoint issues quickly and
easily
Continually review and revise effectiveness of
existing dashboards
Slide 31
Slide 31 text
CDwithWindows.net
Slide 32
Slide 32 text
CDwithWindows.net
Thanks: Owain Perry
Slide 33
Slide 33 text
CDwithWindows.net
Parting gifts from
Git on Windows works very well
Chef on Windows works very well
GoCD on Windows works very well
Github + TeamCity + GoCD == awesomeness
At web scale, SaaS logging tools cost $$$, so
invest in internal ELK at the right time
Slide 34
Slide 34 text
CDwithWindows.net
Slide 35
Slide 35 text
CDwithWindows.net
Slide 36
Slide 36 text
CDwithWindows.net
Slide 37
Slide 37 text
CDwithWindows.net
Discoveries from
Installation experience is a feature
Chocolatey is still a bit ropey for client-facing
systems (use MSIs)
Split the codebase along domain boundaries
Detect configuration drift
Add metrics and logging somehow
Slide 38
Slide 38 text
CDwithWindows.net
Recommendations
Slide 39
Slide 39 text
CDwithWindows.net
Recommendations
Focus on continual flow of changes
Collect effective metrics from live systems
Branch code with caution!
Slide 40
Slide 40 text
CDwithWindows.net
Slide 41
Slide 41 text
CDwithWindows.net
Recommendations
Use Git (not Svn / TFS)
Immutable infra with Windows 40GB VMs
is difficult (impossible?)
Slide 42
Slide 42 text
CDwithWindows.net
Slide 43
Slide 43 text
CDwithWindows.net
Recommendations
Use NuGet for internal dependencies
Use a proper artifact repository:
Artifactory, Nexus, …
Solution (.sln) / Project (.csproj) structure
affects buildability - restructure
Slide 44
Slide 44 text
CDwithWindows.net
Slide 45
Slide 45 text
CDwithWindows.net
Recommendations
Automate DB changes: Redgate / Fluent /
Flyway …
DB ownership gets tricky: Dev vs DBA
Patch mgt: test in upstream envs
Slide 46
Slide 46 text
CDwithWindows.net
Slide 47
Slide 47 text
CDwithWindows.net
Recommendations
Devolved AD administration with
automated domain join/leave
Detect config drift: UpGuard / ...
Make friends with Linux for best tooling!
Slide 48
Slide 48 text
CDwithWindows.net
Slide 49
Slide 49 text
CDwithWindows.net
Continuous Delivery
with
Windows and .NET
is completely possible
NO EXCUSES!
Slide 50
Slide 50 text
CDwithWindows.net
Continuous Delivery
with Windows and .NET
Matthew Skelton and Chris O’Dell
O’Reilly, February 2016
FREE via CDwithWindows.net
Slide 51
Slide 51 text
CDwithWindows.net
thanks
Dave Farley for the Foreword
O’Reilly Editors:
Brian Anderson and Kristen Brown
Case Studies:
Andy Lole at Carnect
Paul Shannon at 7digital
Steve Elliott at LateRooms.com
Peter Mounce at JUST EAT
Owain Perry at JustGiving
John Esser and Russ Barnet at
Ancestry.com