Ability to throw things away Gareth Rushgrove GDS
Trust Gareth Rushgrove GDS
If government can Release quickly (Change control is fun) Gareth Rushgrove GDS
http://www.flickr.com/photos/psd/9099796942 Gareth Rushgrove GDS
Gareth Rushgrove GDS
Average about 6 releases a day over first 6 months Gareth Rushgrove GDS
We changed less software on the day of launch than probably any day before or since Gareth Rushgrove GDS
One click deploy Gareth Rushgrove GDS
One place to deploy Gareth Rushgrove GDS
Zero click deploy for early parts of pipeline Gareth Rushgrove GDS
One click deploy with suitable processes and access controls Gareth Rushgrove GDS
Talk about operations Gareth Rushgrove GDS
1. Transition planning and support 2. Change management 3. Asset and configuration management 4. Release and deployment management 5. Service validation and testing 6. Change evaluation 7. Knowledge management Gareth Rushgrove GDS
Share language Gareth Rushgrove GDS
Talk about risk Gareth Rushgrove GDS
Gareth Rushgrove GDS
Regular releases reduce risk Gareth Rushgrove GDS
Because everyone understands practice Gareth Rushgrove GDS
If government can Treat everything as code (The importance of process) Gareth Rushgrove GDS
Configuration management Gareth Rushgrove GDS
Gareth Rushgrove GDS
package { 'apache2': ensure => latest, } service { 'apache2': ensure => running, provider => upstart, Infrastructure require => Package['apache2'] } as code Gareth Rushgrove GDS
class govuk::apps::calendars( $port = 3011 ) { govuk::app { 'calendars': app_type => 'rack', port => $port, health_check_path => ‘/bank-holidays’, } Higher level } abstractions Gareth Rushgrove GDS
Infrastructure not just configuration Gareth Rushgrove GDS
{ "role": "client", "platform": "production", "class": "backend", "zone": "backend", "vm_name": "backend-1", "ip": "xx.x.x.x" } Virtual machines Gareth Rushgrove GDS
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" Virtual dnat :interface => "Client Data", :original => { :ip => "xx.xx.xx.xx", :port => 80 },, :translated => { :ip => "10.0.0.xx", :port => 80 }, networks :desc => "jenkins, logging, monitoring HTTP" Gareth Rushgrove GDS
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" Virtual destination :ip => "xx.xx.xx.xx", :port => 80 end firewalls rule "https to backend applications" do Gareth Rushgrove GDS
@normal Scenario: check quick answers load When I visit "/vat-rates" Then I should see "VAT rates" Smoke tests and monitoring Gareth Rushgrove GDS
@high Scenario: check quick answers load When I visit "/vat-rates" Then I should see "VAT rates" Change who responds to issue Gareth Rushgrove GDS
Reuse audited processes Gareth Rushgrove GDS
Code review, pairing, source control, release pipeline, access controls Gareth Rushgrove GDS
Avoiding spreadsheets as a source of truth Gareth Rushgrove GDS
Developers want visibility of deploys Gareth Rushgrove GDS
Organisations want auditability of deploys Gareth Rushgrove GDS
App showing deploys Gareth Rushgrove GDS
CMDB Gareth Rushgrove GDS
If government can Work in the open (The benefits of openness) Gareth Rushgrove GDS
http://www.flickr.com/photos/psd/9122642253 Gareth Rushgrove GDS
Recommend
More recommend