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
Code, Test, Deploy
Search
Ben Balter
August 20, 2014
Technology
0
500
Code, Test, Deploy
How to Ship Software Like a Startup
Ben Balter
August 20, 2014
Tweet
Share
More Decks by Ben Balter
See All by Ben Balter
A community of communities: Empowering maintainers to grow communities around their code
benbalter
1
1.2k
Fostering a culture of collaboration
benbalter
0
190
Growing open source communities on GitHub around your WordPress plugin or theme
benbalter
1
220
It takes a digital village
benbalter
1
400
Open source workflows in highly regulated environments
benbalter
0
80
Optimize for Developer Happiness
benbalter
0
270
The technology is the easy part
benbalter
2
260
How to foster an open source culture inside Government
benbalter
3
2.3k
Open source inspired workflows for open (and closed) geospatial data
benbalter
0
130
Other Decks in Technology
See All in Technology
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
530
Cracking the Coding Interview 6th Edition
gdplabs
14
28k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership, regardless of position
madoxten
0
290
Охота на косуль у древних
ashapiro
0
120
生成AI×財務経理:PoCで挑むSlack AI Bot開発と現場巻き込みのリアル
pohdccoe
1
810
困難を「一般解」で解く
fujiwara3
7
2k
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
380
いまからでも遅くない!コンテナでWebアプリを動かしてみよう!コンテナハンズオン編
nomu
0
180
30→150人のエンジニア組織拡大に伴うアジャイル文化を醸成する役割と取り組みの変化
nagata03
0
340
2/18 Making Security Scale: メルカリが考えるセキュリティ戦略 - Coincheck x LayerX x Mercari
jsonf
0
250
What's new in Go 1.24?
ciarana
1
120
サイト信頼性エンジニアリングとAmazon Web Services / SRE and AWS
ymotongpoo
7
1.8k
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
6
260
KATA
mclloyd
29
14k
Gamification - CAS2011
davidbonilla
80
5.2k
Code Review Best Practice
trishagee
67
18k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
10
530
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Building Your Own Lightsaber
phodgson
104
6.2k
Speed Design
sergeychernyshev
27
810
How to train your dragon (web standard)
notwaldorf
91
5.9k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
Transcript
! Code, Test, Deploy How to Ship Software Like a
Startup Ben Balter government.github.com government@github.com
! What’s GitHub?
! The world’s largest code-sharing platform " Founded 2008 !
VC Funded $100M # Hubbers 232 $ Users 7M % Projects 15M
! In your datacenter, or in the cloud & GitHub.com
(SaaS) Public engagement github.com/ngageoint ' GitHub Enterprise (VM) Internal collaboration enterprise.github.com
! The constraints of open source
! " Electronic High fidelity mediums expose process
! ( Transparent Communicate decisions in realtime, and forever
! ) Asynchronous Focus workflow on code, not meetings
! * Informal Adopt cultures, not polices
! + Code
! , Git * 2d96cfe - (HEAD, tag: v3.1.1, origin/master,
origin/HEAD, master) :gem: bump (43 minutes ago) <Ben Balter> * f4b446b - remove stray backtick (44 minutes ago) <Ben Balter> * 83599e3 - Merge branch 'master' of https://github.com/benbalter/g-man (46 minutes ago) <Ben Balter> |\ | * 42514ea - Merge pull request #61 from devscott/laxco (50 minutes ago) <Ben Balter> | |\ | | * 072d9b5 - Adding in additional entry for La Crosse County, WI (54 minutes ago) <Scott Sloan> | |/ * | 1e95d95 - remove unresolvable domains (46 minutes ago) <Ben Balter> * | 1a8645a - remove uwyo.edu/CES (86 minutes ago) <Ben Balter> |/ * 70410ba - Merge pull request #60 from jpmckinney/canada (2 hours ago) <Ben Balter> |\ | * a77ad43 - Use consistent comments for Canada hosts (2 hours ago) <James McKinney> | * 1776e45 - Add more Canadian hosts (2 hours ago) <James McKinney> * | 05211a0 - Merge pull request #58 from mitio/bulgarian-government-domains (3 hours ago) <Ben Balter> |\ \ | * | fe8f862 - Add Bulgaria's government main domain (3 hours ago) <Dimitar Dimitrov> | |/ * | 85d0c7b - Merge pull request #59 from mitio/fix-readme-typos (3 hours ago) <Ben Balter> |\ \ | |/ |/| | * f558a90 - Add missing word in the readme (3 hours ago) <Dimitar Dimitrov>
None
% Find your project
- Prioritize tasks
. Propose the change
/ Review
0 Discuss
1 Merge
2 Mentions
! 3 Friction Delay between “I want to contribute” and
“I have contributed”
None
! 4 Scripts to rule them all $ script/test Bootstrapping
$ boxen giants $ cd ~/github/giants $ script/bootstrap Running $ script/server Testing
! 5 Test
6 Meet Hubot
7 ChatOps
# Shared Command Line •View cameras in our datacenter •
Search error logs • Manage and trigger alerts • Perform server maintenance • View load balancer status • Spin up cloud instances • Provision servers • Adjust firewall ports • Activate DDoS Mitigation • Restart processes • Configure DNS • Deploy to production
Two other ways Hubot helps Push Notifications Situational Awareness
8 Continuous Integration (CI)
9 Build Status
: On each push… •~1,500 test suits •~15,00 tests •~75,00
assertions • x 2 environments (.com, Enterprise) •Tests > 20 seconds are considered a failure •~ 90 seconds to complete
! /Deploy
! Nothing gets deployed unless tests are green
A typical deployment flow Development Staging Production
GitHub's ; flow Development Staging Production Development Development Staging Staging
, Branch Labs
< Queuing
⚡ Doing it live
Meanwhile, back at the pull request…
! Tools make the difference
> A typical day at GitHub • 230 employees
(2/3rd remote) • 185 chatrooms • ~30,000 lines of text (13,000 from Hubot) • ~500 images • 500+ deploys • 1000+ pushes • 320 issues opened •185 pull requests opened (of which 145 merged that day)
~130 production deploys per day
~41 deploys to GitHub.com per day
! Code, Test, Deploy How to Ship Software Like a
Startup Ben Balter government.github.com government@github.com