TOWARDS A RESPONSIVE BUSINESSThe Developer Way
@nigelfds
github.com/nigelfds
@venetiabird
github.com/venetiabird
Understanding the problems
“We make a change in one place and somewhere, something else breaks”
“It feels like it takes a long time to complete what should be a simple thing”
“Feels like all we have done are patches, hacks and short term tactical fixes to meet deadlines”
Really?
Part of any problem is: people & process
We’re going to focus on the technical parts
www.laputan.org
1. Legacy Systems2. Kitchen Sink Applications3. Monolithic Applications4. Complexity
We’ll talk about dealing with 4 things:
…and what we learnt along the way.
1. Legacy Systems
Strangler Pattern
Legacy systems grow arms and legs…
…because the world needs to continue
2. Kitchen Sink Applications
Kitchen Sink
Different speeds of evolution
Factoring systems by Value Stream
You aren’t going to get it right at first go
Using WebAPI and Areas to build services within a service
3. Monolithic Applications
Eliminating batch processes is hard
4. Complexity
“I do believe that complexity is the enemy. Until we better understand complexity, our chances of building better IT systems is limited. The first thing we must understand about complexity is that not all complexity is equal. And the complexity on which most people focus is probably the least complex complexity of all.”
http://simplearchitectures.blogspot.com/2009/03/cancer-of-complexity.html
Roger Sessions
Complexity
Accidental complexity vs Planned complexity
Dealing with artifacts…
Managing Pipelines
Make it Visible!
Drilling down...
to package our apps
What’s inside the nuget package?
Puppet manifests
Environment Configurations as JSON
Install Script in Powershell
Zip’ed up applicationVersion
0.12.4
Version 0.12.4Proget to manage the packages for the environments
Dev Feed
Test Feed
Staging Feed
Production Feed
Push button deployment
1. Hey Bamboo, deploy v0.1.7 to staging
3. Hey Choclatey, install version 10
4. Proget Staging Feed, give me, v0.1.7
6. Unpacks the box and runs the install script
2. Powershell over winRM
5. Here you go!
Staging Server
Checks for the correct environment
Uses the environment configuration with puppet to configure the environment
IIS configuration,Folder permissions etc
What’s interesting!!?
Packages shipped with ability configure their environment
Testing deployment scripts…
…with Canary packages
Guarantees at every every stage in pipeline
Unit Testing
Integration Testing
Systems Testing
The test pyramid.
Status Checks
5 Months +scope
9 weeks +scope
4 weeks +scope
Thank you.