DevOps
We’ve recently been reviewing our development lifecycle, and are currently going through a re-work phase to achieve (or improve) the following:
- Continuous integration
- Simple code distribution
- Simple server setup
- Metric driven decision making and development
This has been a pretty audacious and daunting task… and so far we’ve implemented:
- Statsd and Graphite in development and staging environments
- Ruby gem development to register statistics
- Centralised packaging Gem to create code packets from successful build instances
- Capistrano recipes to distribute code packets to multiple environments
The big question is “why.”
Why touch something that works?
What’s in it for the business?
Haven’t you got features to deliver?
The aim of all this work is to reduce redundancy.
We want to spend as much time working on features and improving the ones we have as we can, and be confident that our code is great. When something bad happens we want to discover, react and deploy as quickly as possible. When good things happen, we want to see it in real time, and make sure the rest of the business knows.
Once we have given our implementation more testing (real world and other) we will post more on specifics (code, gems, patterns, technology, etc) and will welcome all feedback.