## Island Life
### How we built and deployed the Honshū way
Wes Mason
[@1stvamp](http://twitter.com/1stvamp)
[www.serverdensity.com](http://www.serverdensity.com/)
## Who?
- @1stvamp (twitter/github)
- Engineer at Server Density
- I release lots of open source code
- Curate [phpweekly.info](http://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:
- [RockStack](http://www.rockstack.org/)
- [travis-solo](https://github.com/jstasiak/travis-solo)
## Builds fail
- Don't fear the fail, fear not failing.
- Fail faster, and louder.
## Everyone is responsible
- 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)
- Code: [git.io/sd](https://git.io/sd) / [git.io/1v](git.io/1v)
- Slides: [github.com/1stvamp/dibi-2013-talk](https://github.com/1stvamp/dibi-2013-talk)
## ^D
- Jonathan "Joff" Oliver: [about.me/joffie](http://about.me/joffie)
- Grab me and say hi `:-)`