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
ABEMA のコンテンツ制作を最適化!生成 AI x クラウド映像編集システム / abema-ai-editor
cyberagentdevelopers
PRO
1
180
新卒1年目が向き合う生成AI事業の開発を加速させる技術選定 / ai-web-launcher
cyberagentdevelopers
PRO
7
1.5k
Apple/Google/Amazonの決済システムの違いを踏まえた定期購読課金システムの構築 / abema-billing-system
cyberagentdevelopers
PRO
1
210
pandasはPolarsに性能面で追いつき追い越せるのか
vaaaaanquish
4
4.4k
Figma Dev Modeで進化するデザインとエンジニアリングの協働 / figma-with-engineering
cyberagentdevelopers
PRO
1
430
Shift-from-React-to-Vue
calm1205
3
1.3k
Nix入門パラダイム編
asa1984
2
200
グローバル展開を見据えたサービスにおける機械翻訳プラクティス / dp-ai-translating
cyberagentdevelopers
PRO
1
150
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
27
12k
Fargateを使った研修の話
takesection
0
110
Emacs x Nostr
hakkadaikon
1
150
フルカイテン株式会社 採用資料
fullkaiten
0
36k
Featured
See All Featured
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
27
790
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
328
21k
How to Think Like a Performance Engineer
csswizardry
19
1.1k
Statistics for Hackers
jakevdp
796
220k
What's new in Ruby 2.0
geeforr
342
31k
Automating Front-end Workflow
addyosmani
1365
200k
The Language of Interfaces
destraynor
154
24k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
231
17k
Raft: Consensus for Rubyists
vanstee
136
6.6k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Designing for humans not robots
tammielis
249
25k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
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