Colophon for GOV.UK at launch

A large but not exhaustive list of the key components, tools and services that have gone into the construction of GOV.UK. The tools we use will change and evolve over time so this list represents the state of things on October 17th 2012 when GOV.UK takes over from Directgov and Businesslink. We prepared similar lists for the alpha of GOV.UK and for the beta and hope to produce similar documents at key stages of the site’s evolution.

Frontend:

The core of the servers:

Redirection:

  • nginx deserves an extra mention as it’s letting us do all our redirection
  • we’re using perl to manage and test our redirections
  • there’s some php to add useful links to the “gone” pages where DirectGov and Businesslink content has been retired
  • node.js was used to build a side-by-side browser for reviewing the redirections

Applications:

Databases and other storage:

Monitoring, managing and alerting:

  • We gather metrics from our apps with statsd
  • We collect logs with logstash
  • We monitor systems with ganglia
  • Graphite helps us make many, many graphs to understand what’s going on
  • Nagios tells us if we need to act on any of that data

Supporting Tools:

  • All our code is tested by Jenkins, which we also use to deploy it to servers
  • We track usage of the site with Google Analytics, using their API heavily to build dashboards
  • We occasionally use New Relic RPM for performance reviews
  • DNS is hosted by ja.net / Dyn
  • Email (internal alerts) sending via Amazon SES
  • Font handling and preparation with FontForge and FontTools
  • We keep on track and in touch using Google Apps, Pivotal Tracker and Campfire
  • Github helps us manage and discuss our code
  • Zendesk keeps the feedback flowing
  • We use jekyll & heroku for some of our prototyping
  • We’ve built all sorts of internal dashboards. They’re very much our playground and you can find them written in a mixture of Ruby, Clojure, Node.JS, and PHP

14 comments

  1. What do you use for testing besides Jenkins? As I understand it Jenkins is just a CI framework and needs to call tests in other technologies. How do you test browser compatibility for example?

    1. Each of our apps is free to test using whatever makes sense for it and we rely on having a shell script called jenkins.sh to tell jenkins how to test it.

      The ruby apps are using a mixture of Test::Unit, Minitest, rspec and cucumber. There’s some jasmine for some of our javascript, and a few other bits and pieces beside. We’re also using brakeman for static analysis of ruby code and have some other hooks to pull out coverage reports and the like.

    1. We don’t use any formal QMS packages. All our code goes through a peer review process, and is automatically tested with a variety of tools according to the framework/language in use. A Continuous Integration server ensures these tests are always run on new code and means the whole team can see failures.

      Product Managers are then responsible for overall quality and accepting changes, and an extra round of review is done before any code is deployed to the staging and production servers.

  2. Can you provide model of how gov.uk integrates with enterprise technologies that are already deployed within the government estate? For example use of services that are developed in commercial prodducts, SAP or Oracle rules determination. Many such products propvide SOAP interface and therefore can readily be used by web apps.
    What, if any, technical standards are you developing for gov.uk web apps that may need to integrate with existing stacks including commerical software.

    1. We’ve got somewhere around 30 develops and another 8 or so whose main responsibility is ops/sysadmin/infrastructure. Not all of those people are solely focussed on http://www.gov.uk but we share a lot of these capabilities across projects.

      Developers do their own deployments and all developers are responsible for operating their code, working with people who have more traditional sysadmin skills where necessary.

      There’s more on how we think about “devops” at https://www.gov.uk/service-manual/operations/devops

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s