Dev Ops (Part 1): The Agents of Stability
What exactly is DevOps for?? In grossly oversimplified terms, allow me to loosely relate DevOps to the self-checkout kiosks at […]
12th Sep 2013
Dev Ops (Part 1): The Agents of Stability
What exactly is DevOps for?? In grossly oversimplified terms, allow me to loosely relate DevOps to the self-checkout kiosks at a grocery store.? With the self checkout kiosks, you can now squeeze in about 6 times as many check-outs in the same space.? The number of traditional cashiers could be reduced, replaced by a new skill – the controller cashier.? This person needs to have the ability to track multiple transactions and clear bottlenecks with the kiosk operations.? Without the controller cashier, the grocery store?s investment in the kiosks would be lost to increased merchandise theft, longer lines and a general lack of control.? In broad terms, this is not unlike a DevOps role.? Since cloud architectures can be self-service, DevOps is meant to coordinate the automation of systems to maximize their health, resiliency and cost.? Further, DevOps is far more complex in responsibility and scope (e.g. one person can manage the lifecycle of hundreds of resources).? Let?s have a look at where a DevOps role fits and how it can improve your projects.
Historically, there has been a grey area of shared responsibility between operations and developers.? Operations teams may set-up, configure, secure and tune servers for a production environment.? Developers may set-up their own development environment, then build the application free of all of the constraints of the production server… the inconsistency between the two environments inevitably leads to trouble during integration onto the production server.? Maybe ports are locked down, dependency libraries are not installed, open source is not cleared or log files are not maintained leading to disk space problems.? These examples are oversimplified, but the root causes are usually the same.? Sometimes it?s merely a lack of planning and communication between the two teams.? Sometimes it?s a lack of shared responsibility and helping to bridge the divide.? Usually the fixes are rushed and not integrated into a formal process, so the problems continue.
To quote our own Heath Spurlock, ?[The solution] is the coordination of operations and development in a seamless environment and delivery cycle?,? also known as DevOps or Operations Engineering.? These are the key words here: seamless, coordination, cycle.? If you don?t feel like you have this sort of collaboration between the two groups, then you don?t have a DevOps role.? This concept has been around for a long time.? However, the ability to automate tasks doesn?t mean the divide between operations and developers has been bridged.? To properly coordinate, you need to collaborate with the development team to achieve the overall goals of the project.? To make this seamless, you should try to integrate your process with the tools in the development cycle.? So what is involved in their work?
For operations, one part of their responsibility has been hardware management – with modern virtualized infrastructures, this is now evolving into script and resource management.? It?s almost like getting a remote control to do all of your work… your new job is to learn the language of the remote so you can tell it precisely what to do.? The operations folks will know what to communicate and the developers will know how to communicate it.
More than that, the DevOps role is meant to maintain governance best practices within the full lifecycle of a system.? The best person for the role is someone who fully grasps the gravity of the responsibility they have and who abstracts that responsibility into comprehensive automation tools for every aspect of the health of the system.
If you are running applications in the cloud, you likely need a resource to manage all of the following things:
?????? Manage and allocate security keys
- Network topology
?????? Virtual private networks
?????? Hybrid cloud accessibility
?????? Load balancing
- Automation and Disaster Recovery
?????? Plan on the assumption that systems will fail
?????? Test your backup and recovery plan, routinely
?????? Health diagnostics, logging and log file management
- Monitoring, audits and alerts
?????? Archiving policies
?????? Budget limits
?????? Tagging for Inventory management / cost analysis
?????? Manage the lifecycle of the infrastructure / application
?????? Manage change control practices
?????? Integration with corporate infrastructure / compliance
?????? Databases and NoSQL
?????? Web servers
?????? Application servers
?????? Operating systems
What Developers can Learn from Operations
Developers have a lot to learn about the standards and practices in the DevOps checklist mentioned above.? Perhaps the most important is the discipline to start exercising disaster recovery drills.
What Operations can Learn from Developers.
Operations teams can learn the best practices in designing software.? Complexity has a nasty habit of decreasing stability.? Learning the appropriate patterns in solving problems and using the right language for the job.? This often means collaborating with developers more.? Writing software in a fault tolerant way, using service oriented techniques that assume systems are unreliable.? The use of a continuous integration process to test changes to scripts and unit testing them.
DevOps is the secret sauce that bridges the divide between operations and development.? It requires collaboration between the two to balance the overall project objectives.? At a minimum, not accounting for DevOps is assuming that governance, security, disaster recovery and organizational cost controls are not important.? Ease of automation doesn?t replace the need for operations oversight.? Automation is just a part of the software cycle, providing the capability to manage much larger volumes.? DevOps is a systems management role; the more automation you have, the more you need that oversight.? Looping this back to the check-out kiosks at the grocery stores, you wouldn?t let those kiosks run themselves, would you?
Part 2 of this post will suggest some best practices for a DevOps resource…