IF GOVERNMENT CAN DO IT...
Gareth Rushgrove (@garethr)
Government Digital Service
IF GOVERNMENT CAN DO IT... Gareth Rushgrove (@garethr) Government - - PowerPoint PPT Presentation
IF GOVERNMENT CAN DO IT... Gareth Rushgrove (@garethr) Government Digital Service If Government can do it... Technical change in large organisations Gareth Rushgrove GDS Who (Who is this person?) Gareth Rushgrove GDS Gareth Rushgrove
IF GOVERNMENT CAN DO IT...
Gareth Rushgrove (@garethr)
Government Digital Service
GDS Gareth Rushgrove
Technical change in large
Who
(Who is this person?)
GDS Gareth Rushgrove
GDS Gareth Rushgrove
Gareth Rushgrove Technical Architect Government Digital Service @garethr
@garethr
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
Last code I wrote
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
Background
(A startup in Government)
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
October 2010
GDS Gareth Rushgrove
June 2011
GDS Gareth Rushgrove
I joined. Team of about 10 people
August 2011
GDS Gareth Rushgrove
January 2012
(Government Digital Service)
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
October 2012
GDS Gareth Rushgrove
Tools for citizens
GDS Gareth Rushgrove
Tools for internal users
GDS Gareth Rushgrove
Award winning
GDS Gareth Rushgrove
Organisation of about 250 people
October 2013
GDS Gareth Rushgrove
What
(What is this talk about again?)
GDS Gareth Rushgrove
GDS Gareth Rushgrove
1
Adopting agile in a large organisation
GDS Gareth Rushgrove
The importance of rapid releases
2
GDS Gareth Rushgrove
Why auditors love infrastructure as code
3
GDS Gareth Rushgrove
4
How being open makes everything better
Work in an agile manner
(Scaling agile)
GDS Gareth Rushgrove
If government can
GDS Gareth Rushgrove
GDS Gareth Rushgrove
http://www.flickr.com/photos/psd/9120523574GDS Gareth Rushgrove
http://www.flickr.com/photos/psd/9104280608GDS Gareth Rushgrove
http://www.flickr.com/photos/psd/9109319242GDS Gareth Rushgrove
An example project
GDS Gareth Rushgrove
From one team of about 14
GDS Gareth Rushgrove
Product owner Delivery manager Developer Developer Developer Developer Developer Content designer Content designer Content designer Designer Developer Developer DeveloperGDS Gareth Rushgrove
To 140 people in 14 teams
GDS Gareth Rushgrove
Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Developer Content designer Developer Content designer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Content designer Content designer Content designer Content designer Business analyst Content designerGDS Gareth Rushgrove
All in about a year
GDS Gareth Rushgrove
Web operations team just another product team
GDS Gareth Rushgrove
Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Developer Content designer Developer Content designer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Content designer Content designer Content designer Content designer Business analyst Content designer Product owner Delivery manager Web operations Web operations Web operations Web operations Web operations Web operations Web operationsGDS Gareth Rushgrove
With web operations people in other teams when required
GDS Gareth Rushgrove
Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Developer Content designer Developer Content designer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Content designer Content designer Content designer Content designer Business analyst Content designer Web operations Web operationsGDS Gareth Rushgrove
And with developers also working on
GDS Gareth Rushgrove
Someone in charge
GDS Gareth Rushgrove
Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Developer Content designer Developer Content designer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Content designer Content designer Content designer Content designer Business analyst Content designer Programme owner Programme ownerGDS Gareth Rushgrove
Information assurance, legal, procurement, programme support
GDS Gareth Rushgrove
Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Developer Content designer Developer Content designer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Content designer Content designer Content designer Content designer Business analyst Content designer Programme support Programme support Programme support Programme support Programme support Programme support Programme support Programme suppo Programme support Programme supportGDS Gareth Rushgrove
Governance
GDS Gareth Rushgrove
Board member Board member Board member Board member Board member Board member Board member Board memberGDS Gareth Rushgrove
To an organisation of 250 people, multiple programmes and a portfolio management team
GDS Gareth Rushgrove
Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Developer Content designer Developer Content designer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Content designer Content designer Content designer Content designer Business analyst Content designer Programme owner Board member Board member Board member Board member Board member Board member Board member Board member Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Developer Content designer Developer Content designer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Business analyst Product owner Delivery manager Developer Developer Developer Developer Developer Product owner Delivery manager Designer Developer Content designer Content designer Content designer Content designer Business analyst Content designer Programme owner Programme support Programme support Programme support Programme support Programme support Board member Board member Board member Board member Board member Board member Board member Board member Content designer Content designer Developer Content designer Content designer Content designer Portfolio manager Portfolio manager Portfolio manager Portfolio board Portfolio board Portfolio board Portfolio board Portfolio board Portfolio board Portfolio boardGDS Gareth Rushgrove
Now working out how to scale that across multiple organisations
GDS Gareth Rushgrove
Scaling agile
GDS Gareth Rushgrove
Things that worked
GDS Gareth Rushgrove
Avoiding dependencies
GDS Gareth Rushgrove
Understand interfaces
GDS Gareth Rushgrove
People AND software
GDS Gareth Rushgrove
Multi-disciplinary teams
GDS Gareth Rushgrove
Many small services
GDS Gareth Rushgrove
Ability to throw things away
GDS Gareth Rushgrove
Trust
Release quickly
(Change control is fun)
GDS Gareth Rushgrove
If government can
GDS Gareth Rushgrove
http://www.flickr.com/photos/psd/9099796942GDS Gareth Rushgrove
GDS Gareth Rushgrove
Average about 6 releases a day over first 6 months
GDS Gareth Rushgrove
We changed less software on the day
probably any day before or since
GDS Gareth Rushgrove
One click deploy
GDS Gareth Rushgrove
One place to deploy
GDS Gareth Rushgrove
Zero click deploy for early parts of pipeline
GDS Gareth Rushgrove
One click deploy with suitable processes and access controls
GDS Gareth Rushgrove
Talk about operations
GDS Gareth Rushgrove
GDS Gareth Rushgrove
Share language
GDS Gareth Rushgrove
Talk about risk
GDS Gareth Rushgrove
GDS Gareth Rushgrove
Regular releases reduce risk
GDS Gareth Rushgrove
Because everyone understands practice
Treat everything as code
(The importance of process)
GDS Gareth Rushgrove
If government can
GDS Gareth Rushgrove
Configuration management
GDS Gareth Rushgrove
GDS Gareth Rushgrove
package { 'apache2': ensure => latest, } service { 'apache2': ensure => running, provider => upstart, require => Package['apache2'] }
Infrastructure as code
class govuk::apps::calendars( $port = 3011 ) { govuk::app { 'calendars': app_type => 'rack', port => $port, health_check_path => ‘/bank-holidays’, } }
GDS Gareth Rushgrove
Higher level abstractions
GDS Gareth Rushgrove
Infrastructure not just configuration
{ "role": "client", "platform": "production", "class": "backend", "zone": "backend", "vm_name": "backend-1", "ip": "xx.x.x.x" }
GDS Gareth Rushgrove
Virtual machines
require 'rubygems' require 'nat' nat do snat :interface => "Client Data", :original => { :ip => "10.0.0.0/xx" }, :translated => { :ip => "xx.xx.xx.xx" }, :desc => "Outbound internet traffic" dnat :interface => "Client Data", :original => { :ip => "xx.xx.xx.xx", :port => 22 }, :translated => { :ip => "10.0.0.xx", :port => 22 }, :desc => "jumpbox-1 SSH" dnat :interface => "Client Data", :original => { :ip => "xx.xx.xx.xx", :port => 80 },, :translated => { :ip => "10.0.0.xx", :port => 80 }, :desc => "jenkins, logging, monitoring HTTP"
GDS Gareth Rushgrove
Virtual networks
require 'rubygems' require 'firewall' firewall do # internal rules rule "ssh access to jumpbox1" do source :ip => "Any" destination :ip => "xx.xx.xx.xx", :port => 22 end rule "http to backend applications" do source :ip => "Any" destination :ip => "xx.xx.xx.xx", :port => 80 end rule "https to backend applications" do
GDS Gareth Rushgrove
Virtual firewalls
@normal Scenario: check quick answers load When I visit "/vat-rates" Then I should see "VAT rates" GDS Gareth Rushgrove
Smoke tests and monitoring
@high Scenario: check quick answers load When I visit "/vat-rates" Then I should see "VAT rates" GDS Gareth Rushgrove
Change who responds to issue
GDS Gareth Rushgrove
Reuse audited processes
GDS Gareth Rushgrove
Code review, pairing, source control, release pipeline, access controls
GDS Gareth Rushgrove
Avoiding spreadsheets as a source of truth
GDS Gareth Rushgrove
Developers want visibility of deploys
GDS Gareth Rushgrove
Organisations want auditability of deploys
GDS Gareth Rushgrove
App showing deploys
GDS Gareth Rushgrove
CMDB
Work in the open
(The benefits of openness)
GDS Gareth Rushgrove
If government can
GDS Gareth Rushgrove
http://www.flickr.com/photos/psd/9122642253GDS Gareth Rushgrove
Blogging
GDS Gareth Rushgrove
GDS Gareth Rushgrove
Coding in the open
GDS Gareth Rushgrove
Publishing tools
GDS Gareth Rushgrove
Frontend applications
GDS Gareth Rushgrove
Developer environment
GDS Gareth Rushgrove
Handy utilities
GDS Gareth Rushgrove
Published content
GDS Gareth Rushgrove
Testing in the open
GDS Gareth Rushgrove
Project backlogs
GDS Gareth Rushgrove
Performance data
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
Openness inside your organisation
GDS Gareth Rushgrove
http://www.flickr.com/photos/psd/8756580339Lots of information on dashboards
GDS Gareth Rushgrove
What did we get from being open?
GDS Gareth Rushgrove
Good will
GDS Gareth Rushgrove
Validation
GDS Gareth Rushgrove
Contributions
GDS Gareth Rushgrove
Hiring
In Summary
(Just remember this)
GDS Gareth Rushgrove
GDS Gareth Rushgrove
Devops is about the
GDS Gareth Rushgrove
The processes in an
based on what is possible
GDS Gareth Rushgrove
What is possible is changing all the time
Find out more
(Lots of reading for everyone)
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
Even contains a definition of devops
Questions?
(and thanks for listening)
GDS Gareth Rushgrove
GDS Gareth Rushgrove
Gareth Rushgrove Technical Architect Government Digital Service @garethr