CDwithWindows.net
Continuous Delivery
making it work with Windows and .NET
Chris O’Dell and Matthew Skelton
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
with Windows and .NET
Chris O’Dell and Matthew Skelton
O’Reilly, February 2016
FREE via CDwithWindows.net
Slide 4
Slide 4 text
CDwithWindows.net
Chris O’Dell
.NET wunderkind
@ChrisAnnODell
who
Matthew Skelton
grouchy build monkey
@matthewpskelton
Slide 5
Slide 5 text
CDwithWindows.net
Why a special focus for .NET?
Slide 6
Slide 6 text
CDwithWindows.net
Windows/.NET around 2010
● No native Package Management
● Very limited automation
● Point and click configuration
● Monolithic configuration (SCCM etc.)
Slide 7
Slide 7 text
CDwithWindows.net
Slide 8
Slide 8 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 9
Slide 9 text
CDwithWindows.net
Slide 10
Slide 10 text
CDwithWindows.net
Some case studies
Slide 11
Slide 11 text
CDwithWindows.net
Slide 12
Slide 12 text
CDwithWindows.net
Slide 13
Slide 13 text
CDwithWindows.net
Slide 14
Slide 14 text
CDwithWindows.net
Slide 15
Slide 15 text
CDwithWindows.net
Slide 16
Slide 16 text
CDwithWindows.net
Soundbites from
● Focus on flow
● Avoid complex branching strategies
● Aim to push work out to consumers asap
● Favour fast recovery
Slide 17
Slide 17 text
CDwithWindows.net
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
Slide 23
Slide 23 text
CDwithWindows.net
Slide 24
Slide 24 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 25
Slide 25 text
CDwithWindows.net
Slide 26
Slide 26 text
CDwithWindows.net
Thanks: Owain Perry
Slide 27
Slide 27 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 28
Slide 28 text
CDwithWindows.net
Slide 29
Slide 29 text
CDwithWindows.net
Slide 30
Slide 30 text
CDwithWindows.net
Slide 31
Slide 31 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 32
Slide 32 text
CDwithWindows.net
Recommendations
Slide 33
Slide 33 text
CDwithWindows.net
Recommendations
● Focus on continual flow of changes
● Collect effective metrics from live
systems
● Branch code with caution!
Slide 34
Slide 34 text
CDwithWindows.net
Slide 35
Slide 35 text
CDwithWindows.net
Recommendations
● Use Git (not Svn / TFVC)
● Immutable infra with Windows 40GB
VMs is difficult (impossible?)
Slide 36
Slide 36 text
CDwithWindows.net
Slide 37
Slide 37 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 38
Slide 38 text
CDwithWindows.net
Slide 39
Slide 39 text
CDwithWindows.net
Recommendations
● Automate DB changes: Redgate /
Fluent / Flyway …
● DB ownership gets tricky: Dev vs DBA
● Patch mgt: test in upstream envs
Slide 40
Slide 40 text
CDwithWindows.net
Slide 41
Slide 41 text
CDwithWindows.net
Recommendations
● Devolved AD administration with
automated domain join/leave
● Detect config drift: UpGuard / ...
● Make friends with Linux for best tooling!
Slide 42
Slide 42 text
CDwithWindows.net
Slide 43
Slide 43 text
CDwithWindows.net
Continuous
Delivery with
Windows and .NET
is completely
possible in 2016
Slide 44
Slide 44 text
CDwithWindows.net
Continuous Delivery
with Windows and .NET
Chris O’Dell and Matthew Skelton
O’Reilly, February 2016
FREE via CDwithWindows.net
Slide 45
Slide 45 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