Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The Unavoidable Big Bang
Search
Gareth Rushgrove
July 11, 2013
Technology
4
850
The Unavoidable Big Bang
Talk about launching GOV.UK and working in a large organisation. Presented at RAMP in Budapest.
Gareth Rushgrove
July 11, 2013
Tweet
Share
More Decks by Gareth Rushgrove
See All by Gareth Rushgrove
GTM vs Open Source
garethr
0
750
Software Build of Materials For Cloud Native applications
garethr
1
350
Evolving vulnerabilities in CycloneDX
garethr
0
320
Configuration security is a developer problem
garethr
2
2k
Patterns for secure container base image management
garethr
1
1.9k
Testing configuration with Open Policy Agent
garethr
0
510
Building a Docker Image Packaging Pipeline Using GitHub Actions
garethr
5
2.3k
The perils of configuration security
garethr
1
190
Shifting Terraform security left
garethr
3
1.7k
Other Decks in Technology
See All in Technology
なんで、私がAWS Heroに!? 〜社外の広い世界に一歩踏み出そう〜
minorun365
PRO
6
1.1k
Apple/Google/Amazonの決済システムの違いを踏まえた定期購読課金システムの構築 / abema-billing-system
cyberagentdevelopers
PRO
1
220
10分でわかるfreeeのQA
freee
1
3.4k
バクラクにおける可観測性向上の取り組み
yuu26
3
420
APIテスト自動化の勘所
yokawasa
7
4.1k
小規模に始めるデータメッシュとデータガバナンスの実践
kimujun
3
590
Shift-from-React-to-Vue
calm1205
3
1.3k
LeSSに潜む「隠れWF病」とその処方箋
lycorptech_jp
PRO
2
120
AWSコンテナ本出版から3年経った今、もし改めて執筆し直すなら / If I revise our container book
iselegant
15
4k
【若手エンジニア応援LT会】AWS Security Hubの活用に苦労した話
kazushi_ohata
0
160
AWS re:Inventを徹底的に楽しむためのTips / Tips for thoroughly enjoying AWS re:Invent
yuj1osm
1
560
新R25、乃木坂46 Mobileなどのファンビジネスを支えるマルチテナンシーなプラットフォームの全体像 / cam-multi-cloud
cyberagentdevelopers
PRO
1
130
Featured
See All Featured
Building an army of robots
kneath
302
42k
Code Reviewing Like a Champion
maltzj
519
39k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
We Have a Design System, Now What?
morganepeng
50
7.2k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
37
1.8k
A Modern Web Designer's Workflow
chriscoyier
692
190k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
Statistics for Hackers
jakevdp
796
220k
Designing Experiences People Love
moore
138
23k
Docker and Python
trallard
40
3.1k
Thoughts on Productivity
jonyablonski
67
4.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
7
150
Transcript
GDS Gareth Rushgrove The Unavoidable Big Bang and life in
Government
Who (Who is this person?) GDS Gareth Rushgrove
GDS Gareth Rushgrove Gareth Rushgrove Technical Architect Government Digital Service
@garethr
GDS Gareth Rushgrove Agencies Startups Big companies Myself Worked for
GDS Gareth Rushgrove
GDS Gareth Rushgrove Last code I wrote
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove
What (What will I get from this talk?) GDS Gareth
Rushgrove
GDS Gareth Rushgrove Reasons to avoid a big bang release
1
GDS Gareth Rushgrove How to make a big bang release
work if you have to 2
GDS Gareth Rushgrove How to work in a large organisation
3
GDS Gareth Rushgrove And a desire to work in the
public sector (maybe) 4
Background (Government and GOV.UK) GDS Gareth Rushgrove
GDS Gareth Rushgrove October 2010
GDS Gareth Rushgrove June 2011
GDS Gareth Rushgrove January 2012
GDS (Government Digital Service) GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove October 2012
GDS Gareth Rushgrove Tools as well as content
GDS Gareth Rushgrove Award winning
GDS Gareth Rushgrove http://www.flickr.com/photos/psd/9099796942
By the numbers (The size of the problem) GDS Gareth
Rushgrove
38 GDS Gareth Rushgrove Weeks since launch
2 GDS Gareth Rushgrove Sites closed on day one
GDS Gareth Rushgrove 59 Sites closed since
222 GDS Gareth Rushgrove Subdomains closed
GDS Gareth Rushgrove 139 Million visits since launch
300 GDS Gareth Rushgrove Thousand redirects
GDS Gareth Rushgrove 10-100 Members of the team
GDS Gareth Rushgrove http://www.flickr.com/photos/psd/8756580339
Don’t do this at home (Unless you have to) GDS
Gareth Rushgrove
GDS Gareth Rushgrove Find alternatives
GDS Gareth Rushgrove Start small?
GDS Gareth Rushgrove Replace one site at a time?
GDS Gareth Rushgrove Percentage of visitors?
GDS Gareth Rushgrove
GDS Gareth Rushgrove http://www.flickr.com/photos/psd/9116635297
GDS Gareth Rushgrove Existing contracts with associated dates
GDS Gareth Rushgrove Public commitments
GDS Gareth Rushgrove http://www.flickr.com/photos/psd/9120523574
GDS Gareth Rushgrove http://www.flickr.com/photos/psd/9104280608
Do it in public (Running an alpha and beta) GDS
Gareth Rushgrove
GDS Gareth Rushgrove http://www.flickr.com/photos/psd/9122642253
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove Not just the service
GDS Gareth Rushgrove Blogging
GDS Gareth Rushgrove Code
GDS Gareth Rushgrove Publishing tools
GDS Gareth Rushgrove Frontend applications
GDS Gareth Rushgrove Developer environment
GDS Gareth Rushgrove Handy utilities
GDS Gareth Rushgrove Project backlogs
GDS Gareth Rushgrove Performance data
GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove But didn’t being open cause problems?
GDS Gareth Rushgrove No This slide stolen from @tomskitomski
Make change easy (Technology AND process) GDS Gareth Rushgrove
GDS Gareth Rushgrove One click deploy
GDS Gareth Rushgrove Single place to deploy
GDS Gareth Rushgrove Not just applications
GDS Gareth Rushgrove Configuration management
GDS Gareth Rushgrove
GDS Gareth Rushgrove package { 'apache2': ensure => latest, }
service { 'apache2': ensure => running, provider => upstart, require => Package['apache2'] }
class govuk::apps::calendars( $port = 3011 ) { govuk::app { 'calendars':
app_type => 'rack', port => $port, health_check_path => ‘/bank-holidays’, } } GDS Gareth Rushgrove Higher level constructs
GDS Gareth Rushgrove Infrastructure not just configuration
GDS Gareth Rushgrove Provisioning APIs
GDS Gareth Rushgrove Fog Libcloud VCloud AWS Used at different
times
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 Network in code
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 Firewalls in code
GDS Gareth Rushgrove Requires rolling your own code at times
GDS Gareth Rushgrove Developers want Visibility of deploys
GDS Gareth Rushgrove Organisation want Auditability of deploys
GDS Gareth Rushgrove App showing deploys
GDS Gareth Rushgrove Embrace process discussions
GDS Gareth Rushgrove Change control
GDS Gareth Rushgrove Risk management
GDS Gareth Rushgrove Share language
GDS Gareth Rushgrove Optimise only as far as needed
Make change small (Lots of small changes) GDS Gareth Rushgrove
GDS Gareth Rushgrove Change one thing at once
GDS Gareth Rushgrove http://www.flickr.com/photos/fatty/9158066939 We use a physical token
GDS Gareth Rushgrove
GDS Gareth Rushgrove Regular releases reduce risk
GDS Gareth Rushgrove Back to GOV.UK
GDS Gareth Rushgrove
GDS Gareth Rushgrove We changed less software on the day
of launch than probably any day before or since
GDS Gareth Rushgrove DNS?
GDS Gareth Rushgrove Content Delivery Network
GDS Gareth Rushgrove http://www.flickr.com/photos/psd/8040082207
GDS Gareth Rushgrove Load testing
GDS Gareth Rushgrove http://www.flickr.com/photos/psd/8040667413 Replay traffic
GDS Gareth Rushgrove Defend yourself from load tests
http { proxy_intercept_errors on; limit_req_zone $binary_remote_addr zone=rat limit_conn_zone $binary_remote_addr zone=co
} Rate/connection limiting in nginx GDS Gareth Rushgrove
GDS Gareth Rushgrove Web application firewall
Embrace failures (but stop them affecting people) GDS Gareth Rushgrove
GDS Gareth Rushgrove Serve stale content
sub vcl_recv { if (req.backend.healthy) { set req.grace = 30s;
} else { set req.grace = 24h; } } sub vcl_fetch { set beresp.grace = 24h; } Grace mode in Varnish GDS Gareth Rushgrove
Except when you can’t GDS Gareth Rushgrove
GDS Gareth Rushgrove Partial page failures
GDS Gareth Rushgrove
GDS Gareth Rushgrove Making change easy makes fixing problems fast
GDS Gareth Rushgrove Critical issues fixed in hours or minutes
GDS Gareth Rushgrove Measure everything
GDS Gareth Rushgrove
GDS Gareth Rushgrove Long tail of failures
GDS Gareth Rushgrove Allow for investigation
GDS Gareth Rushgrove Make monitoring easy
@normal Scenario: check quick answers load When I visit "/vat-rates"
Then I should see "VAT rates" GDS Gareth Rushgrove Run as 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
Inside Government (or any large organisation) GDS Gareth Rushgrove
GDS Gareth Rushgrove Involve technology colleagues
GDS Gareth Rushgrove Involve security and auditing colleagues
GDS Gareth Rushgrove Involve procurement colleagues
GDS Gareth Rushgrove (Procurement means rules for buying things)
GDS Gareth Rushgrove Demonstrate capability quickly
Conclusions (What about my project?) GDS Gareth Rushgrove
GDS Gareth Rushgrove Own your own problems 1
GDS Gareth Rushgrove Avoid hard problems when possible 2
GDS Gareth Rushgrove Make things open 3
GDS Gareth Rushgrove Work on business processes AND technology 4
Find out more (A public service announcement) GDS Gareth Rushgrove
GDS Gareth Rushgrove
GDS Gareth Rushgrove Government Service Design Manual
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