dibi-2013-talk



dibi-2013-talk

0 0


dibi-2013-talk

Island Life talk

On Github 1stvamp / dibi-2013-talk

Island Life

How we built and deployed the Honshū way

Wes Mason

@1stvamp

www.serverdensity.com

Who?

  • @1stvamp (twitter/github)
  • Engineer at Server Density
  • I release lots of open source code
  • Curate phpweekly.info

Honshuu

  • Service Orientated Architecture
  • Seperate HTTP services for everything
  • Common build environments
  • New features (bang zoom straight to THE CLOUD!)

Ancient history

version one, before Honshuu

  • Large bundled PHP application
  • Deployed like any PHP app

Let's add more!

  • Couldn't be done easily with current infrastructure or code
  • REWRITE ALL THE THINGS

Honshuu is born

With some inspiration from..

Everything is an island

  • An island is a service
  • Self contained
  • Written with whatever makes sense

Trading customs

  • Common HTTP API
  • Shared API wrapper libraries
  • Anyone can query with curl

The commons

  • Shared PHP, Python and JS (Node.js) libraries
  • Dependency management ftw

Common build steps

  • Minimise customisation between stacks
  • Easy to extend in Puppet modules

python

$ python bootstrap.py
$ bin/buildout
$ bin/test
$ bin/integration-tests

php

$ php bootstrap.php
$ bin/composer install
$ bin/test
$ bin/integration-tests

node.js

$ # npm is shipped with node
$ npm install
$ npm test
$ npm run-script integration-tests

Puppet

  • Mostly the same steps
  • Easy to override in manifest.pp
  • ..but can be easier..

wrap everything

$ ./bootstrap.sh
$ bin/build
$ bin/test
$ bin/integration-tests

See also:

Builds fail

  • Don't fear the fail, fear not failing.
  • Fail faster, and louder.

Barbarians!

Everyone is responsible

Lessons learned

  • Talk is cheap..
  • ..but cheap is good.
  • Get your build pipeline right at the beginning..
  • ..or don't invest too heavily if you're not sure.
  • Get production setup, like, now..
  • ..and don't skimp on staging just because you have vagrant and CI.

sys.exit(0)

^D