‣ In the past, building websites with features like consistent templates
and lists of aggregated content meant setting up complex content
management systems. These CMSs consisted of templating logic,
application code, and content databases so they could assemble
webpages each time they were requested by site visitors. They
were complicated systems that depend on many separate
applications working together, like a web server to route page
requests to a PHP application that uses pre-defined page layout
templates to format content that’s stored in a MySQL database.
Serving a page request required at least three separate applications
all working together — any one failing would bring down the
system…
Slide 14
Slide 14 text
‣ From open source frameworks like Drupal, Wordpress, and
Expression Engine to multi-million dollar proprietary applications
that the government and big corporations procure from companies
that also build tanks and battle ships, these systems produce the
same exact output: HTML, CSS, and JavaScript files that web
browsers know how to format into the webpages we see. Additional
features like RSS or JSON API feeds are just new templates for the
same content, and backend workflow modules like those for
embedded media and handling email notifications are really separate
systems that introduce complexity when integrated with the
publishing system.
Slide 15
Slide 15 text
By October I was fed up
• 130 outages over 6 months (24+ hours of downtime)
• AWS, Nginx, microcache, APC, opcode, page, and object cache,
Varnish, buzzwords++
• WTF is a weekend?!
Slide 16
Slide 16 text
!
Slide 17
Slide 17 text
!
Slide 18
Slide 18 text
Feb 2013 - I want moar!
Slide 19
Slide 19 text
March 2013 - The inside man
Slide 20
Slide 20 text
Pulling back the curtain
Slide 21
Slide 21 text
Every developer has an itch
Slide 22
Slide 22 text
April - down the rabbit hole
Slide 23
Slide 23 text
May - Jekyll 1.0
Slide 24
Slide 24 text
August - GitHub Pages Gem
Slide 25
Slide 25 text
October - A lightbulb
Slide 26
Slide 26 text
November - Gem-based plugins, Ruby
Slide 27
Slide 27 text
December - CDN
Slide 28
Slide 28 text
December - Tutorial
Slide 29
Slide 29 text
December - Build feedback
Slide 30
Slide 30 text
Feb 2014 - Metadata, mentions,
emoji, and redirects
Slide 31
Slide 31 text
June - Docker
Slide 32
Slide 32 text
May - Docs
Slide 33
Slide 33 text
July 2014 - Jekyll 2.0
Slide 34
Slide 34 text
September - Pages Health Check
Slide 35
Slide 35 text
January - GitHub Help
Slide 36
Slide 36 text
GitHub Pages Architecture
GitHub.com -> Pages Worker -> File Server
File Server -> Front End Server -> CDN
Slide 37
Slide 37 text
No content
Slide 38
Slide 38 text
No content
Slide 39
Slide 39 text
No content
Slide 40
Slide 40 text
!
Eight lessons learned hacking on GitHub
Pages for six months
http://git.io/vJ8uj
Slide 41
Slide 41 text
!
An @benbalter-centric history
of GitHub Pages and Autoblog
Ben Balter
@benbalter
[email protected]
government.github.com