Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Code, Test, Deploy
Ben Balter
August 20, 2014
Technology
0
360
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
0
880
Fostering a culture of collaboration
benbalter
0
140
Growing open source communities on GitHub around your WordPress plugin or theme
benbalter
1
190
It takes a digital village
benbalter
1
260
Open source workflows in highly regulated environments
benbalter
0
66
Optimize for Developer Happiness
benbalter
0
240
The technology is the easy part
benbalter
2
230
How to foster an open source culture inside Government
benbalter
3
2k
Open source inspired workflows for open (and closed) geospatial data
benbalter
0
110
Other Decks in Technology
See All in Technology
OCIコンテナサービス関連の技術詳細 /oke-ocir-details
oracle4engineer
PRO
0
760
GitHub Codespaces が拡げる開発環境、いつでもどこでも Visual Studio Code で!
dzeyelid
0
160
マイクロサービス宣言から8年 振り返りとこれから / Eight Years After the Microservices Declaration A Look Back and A Look Ahead
eisuke
2
140
私見「UNIXの考え方」/20230124-kameda-unix-phylosophy
opelab
0
160
Hatena Engineer Seminar #23 「チームとプロダクトを育てる Mackerel 開発合宿」
arthur1
0
150
PHPのimmutable arrayとは
hnw
1
150
ECテックカンファレンス2023 EC事業部のモバイル開発2023
tatsumi0000
0
270
創業1年目のスタートアップでAWSコストを抑えるために取り組んでいること / How to Keep AWS Costs Down at a Startup
yuj1osm
3
2k
経営統合をきっかけに会社をエンジニアリングした話 / btconjp-2023
carta_engineering
0
140
組織に対してSREを適用するとどうなるか
kuniim
1
120
API連携に伴う規制と対応 / Regulations and responses to API linkage
moneyforward
0
150
230125 古いタブレットの活用 かーでぃさん
comucal
PRO
0
15k
Featured
See All Featured
Done Done
chrislema
178
14k
Navigating Team Friction
lara
176
12k
It's Worth the Effort
3n
177
26k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
22
1.7k
What's in a price? How to price your products and services
michaelherold
233
9.7k
Intergalactic Javascript Robots from Outer Space
tanoku
261
26k
The Language of Interfaces
destraynor
149
21k
The Invisible Customer
myddelton
113
12k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
152
13k
The Art of Programming - Codeland 2020
erikaheidi
35
11k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
10
1.3k
Bash Introduction
62gerente
601
210k
Transcript
! Code, Test, Deploy How to Ship Software Like a
Startup Ben Balter government.github.com
[email protected]
! 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
[email protected]