- Continuous Integration
Continuous integration is naturally facilitated by our DevOps approach. Every time code is checked into the source code repository, it is automatically retrieved, compiled, and built by a build server (tools like TravisCI or Jenkins); and then the results are sent to the team. Build/Integration services proceed to run a full suite of automated tests, reporting results to the team. CodeClimate (an open source static analysis tool) automatically performs static code analysis, identifying potential issues and ensuring test coverage.
- Continuous Delivery
We build systems to support the automatic deployment of software, which can be performed in a continuous manner by a tool like TravisCI, on demand through Ansible, or via command-line by the DevOps engineer. This is enabled by cloud services to quickly stand up and tear down infrastructure, Vagrant for quickly creating and destroying environments, virtual environments based on Docker, and automated configuration with Chef.
- Continuous O&M
Our team operates all production systems to be highly resilient, supporting continuous replication and failover. We leverage modern monitoring tools like Sensu and Flapjack to track all aspects of the system, roll up failures into useful messages, and provide immediate notifications, as well as New Relic APM to provide real-time metrics of production systems.