If Government Can Do It...

If Government Can Do It...

Presented at GoTo Aarhus 2013

The Government Digital Service is a new unit of the UK Cabinet Office tasked with all things digital. It's made up of designers, developers, systems administrators, product managers and Government policy specialists - all building, running and helping to design large online government services. Our tools include agile, multidisciplinary teams with the ability to make fast decisions; close collaboration between developers, operations and information security specialists; and modern infrastructure and software as a service products. We look a lot like a startup.

This will be a technical talk with lots of culture thrown in. We'll discuss how we shipped GOV.UK, including:

* how we built our teams and technology to allow us to make changes to the live service daily
* how we worked closely with security and auditing colleagues from day one, not just as an afterthought
* how we moved infrastructure supplier quickly using modern configuration management tools and APIs
* how we're now trying to spread some of these practices and approaches around a super large organisation
* details of lots of the mistakes we made along the way

98234c645fe8c935edc0fec0186d28b8?s=128

Gareth Rushgrove

October 02, 2013
Tweet

Transcript

  1. 37.

    GDS Gareth Rushgrove Product owner Delivery manager Developer Developer Developer

    Developer Developer Content designer Content designer Content designer Designer Developer Developer Developer
  2. 39.

    GDS Gareth Rushgrove Product owner elivery 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
  3. 42.

    GDS Gareth Rushgrove Product owner elivery 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 operations
  4. 44.

    GDS Gareth Rushgrove Product owner elivery 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 operations
  5. 47.

    GDS Gareth Rushgrove Product owner livery 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 owner
  6. 49.

    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 manage Designer Developer Content designe Content designe Content designe Content designe Business analys Content designe Programme support Programme support Programme suppo Programme support ogramme support Programme support Programme support Programme sup Programme support gramme support
  7. 51.

    Product owner elivery 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 Programme owner Board member Board member Board member Board member Board member Board member Board member Board member GDS Gareth Rushgrove Board member Board member Board member Board member Board member Board member Board member Board member
  8. 52.

    GDS Gareth Rushgrove To an organisation of 250 people, multiple

    programmes and a portfolio management team
  9. 53.

    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 board
  10. 54.
  11. 68.

    GDS Gareth Rushgrove We changed less software on the day

    of launch than probably any day before or since
  12. 74.

    GDS Gareth Rushgrove 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
  13. 83.

    GDS Gareth Rushgrove package { 'apache2': ensure => latest, }

    service { 'apache2': ensure => running, provider => upstart, require => Package['apache2'] } Infrastructure as code
  14. 84.

    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
  15. 86.

    { "role": "client", "platform": "production", "class": "backend", "zone": "backend", "vm_name":

    "backend-1", "ip": "xx.x.x.x" } GDS Gareth Rushgrove Virtual machines
  16. 87.

    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
  17. 88.

    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
  18. 89.

    @normal Scenario: check quick answers load When I visit "/vat-rates"

    Then I should see "VAT rates" GDS Gareth Rushgrove Smoke tests and monitoring
  19. 90.

    @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