“The most powerful tool we have as developers is automation.”
~Scott Hanselman
Development/Operations, or “DevOps”, is the fusion of software development, system administration, and automation into a focus on deliverables, not building blocks. This mindset is described in far greater detail and eloquence by the engineers at Rackspace, IBM, and DevOps.com, which allows me to jump directly into specific examples.
I use Linux for a lot of stuff. All of this “stuff” requires maintenance, and maintenance requires time. If I tried to do it all manually, without some sort of force multiplier, eventually I’d run out of time.
Thus, automation.
- Without careful planning, a new system cannot be completely automated from the start.
- Without careful, incremental changes and extensive testing, an attempt to automate legacy systems can cause huge problems.
- With automation, I can turn an all day project into a fire-and-forget line item in my Jenkins CI web interface.
- With automation, I can ensure that servers, services, and software is always patched.
DevOps, for me, happens on multiple levels. From manually setting up cron jobs on the system level, to establishing a configuration management system like Chef, Puppet, or Ansible, each change may be minor in the day-to-day workplace tasks, in the long run, it reduces overhead and technical debt, encourages authoritative knowledge of systems, and ultimately leads to a more stable, more standardized environment.
Examples:
- As an Analyst/Developer for OCP Publications, I took ownership of the Jenkins CI system, and over the course of 18 months, reduced our bi-weekly deployment times from 6-8 hours of work to less than a half hour.
- Between my first attempts in 2011 and 2016, I developed at least six different systems for managing Minecraft server and client updates, as well as countless minor uptime and quality of service improvements.
- As the webmaster for Red Thread Studios, I created a system to securely deploy updates to a hardened WordPress site with a single click.
- While working at OCP, I created a migration script to keep the SharePoint based ticket system in sync with OpenProject while it was evaluated for use as our new Agile project management solution.