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
330
Configuration security is a developer problem
garethr
2
2k
Patterns for secure container base image management
garethr
1
2k
Testing configuration with Open Policy Agent
garethr
0
510
Building a Docker Image Packaging Pipeline Using GitHub Actions
garethr
5
2.4k
The perils of configuration security
garethr
1
190
Shifting Terraform security left
garethr
3
1.7k
Other Decks in Technology
See All in Technology
【若手エンジニア応援LT会】ソフトウェアを学んできた私がインフラエンジニアを目指した理由
kazushi_ohata
0
150
安心してください、日本語使えますよ―Ubuntu日本語Remix提供休止に寄せて― 2024-11-17
nobutomurata
1
990
【Pycon mini 東海 2024】Google Colaboratoryで試すVLM
kazuhitotakahashi
2
500
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
オープンソースAIとは何か? --「オープンソースAIの定義 v1.0」詳細解説
shujisado
7
810
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
Platform Engineering for Software Developers and Architects
syntasso
1
520
エンジニア人生の拡張性を高める 「探索型キャリア設計」の提案
tenshoku_draft
1
120
ハイパーパラメータチューニングって何をしているの
toridori_dev
0
140
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
750
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Optimizing for Happiness
mojombo
376
70k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Visualization
eitanlees
145
15k
Building an army of robots
kneath
302
43k
KATA
mclloyd
29
14k
BBQ
matthewcrist
85
9.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Making Projects Easy
brettharned
115
5.9k
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