This will be
a dev blog
one day

15 May 2014

Here we go with some test content: As additional permission under GNU GPL version 3 section 7, you may distribute non-source (e.g., minimized or compacted) forms of that code without the copy of the GNU GPL http://github.com required by section 4, provided you include this license notice and a URL through which recipients can access the Corresponding Source.

  • How can I deploy a Go app?
  • Will it be fast enough?
  • Will I have any visibility into it?

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer X-GitHub-Request-Id The name of the author may not be used to endorse or promote products derived from this software without specific prior written permission.

# Default value for linked_dirs is []
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}

namespace :deploy do
  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      # Your restart mechanism here, for example:
      execute :touch, release_path.join('tmp/restart.txt')
    end
  end
end
Table

GitHub itself runs as a set of about 15 Rack middleware (depending on the exact environment that it boots in). They are setup in a nice declarative format:

Board
Images like this will appear often. Blog takes rule to take easy on the pro, glare, visio look. Images like this will appear often. Blog takes rule to take easy on the pro, glare, visio look.

I shipped GitHub's first user-facing Go app a month ago: the Releases API upload endpoint. It's a really simple, low traffic service to dip our toes in the Go waters. Before I could even think about shipping it though, I had to answer these questions:

  • How can I deploy a Go app?
  • Will it be fast enough?
  • Will I have any visibility into it?

Logs are then indexed, giving us the ability to search logs for the first time. The next thing we did was added a unique X-GitHub-Request-Id header to every API request. This same request is sent down to internal systems, exception reporters, and auditors. We can use this to trace user problems across the entire system.

# Default value for linked_dirs is []
set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}

namespace :deploy do
  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      # Your restart mechanism here, for example:
      execute :touch, release_path.join('tmp/restart.txt')
    end
  end
end
Table

GitHub itself runs as a set of about 15 Rack middleware (depending on the exact environment that it boots in). They are setup in a nice declarative format:

Board
Images like this will appear often. Blog takes rule to take easy on the pro, glare, visio look. Images like this will appear often. Blog takes rule to take easy on the pro, glare, visio look.

This blog has just launched. Search, comments, archive and tweaks will arrive later.