Oct 172011

I grew up with Unix (RIP, dmr!) for a long time. Originally, my idea of computing is playing with Unix. In fact, I still say that Linux taught me more about practical aspects of programming than any of my courses.

Two years back, I became involved in a large project where I was closely working with Infra and ops teams. It was a very valuable experience where I could see the impact of each architectural and programming decision we take. I knew all that before, of course, but that project made it much more vivid.


Since then, I have been spearheading a movement in my organization about nextgen application platform which brings the operational and infrastructure view to development. Virtualization, of course, is the key technology that can deliver the synergy.

The big revelation for me is how much of infrastructure knowledge is required to engineer a proper system. We think machines as an abstraction, where we put the code in and they run magically. We ignore the true costs of deploying and running the code. In fact, the wall between the development and operations is the one causing lot of application instability or inflexibility.

Incidentally, if you look at most modern computer companies (like Google, Amazon, Facebook), they embrace this philosophy of erasing the boundaries. The devops people straddle the multiple universes – see the picture below:

From Wikipedia

What is fascinating to me is this: How the trends become part of collective consciousness. One day the word doesn’t exist and then it seems to be part of every conversation. I think devops is one becoming one such word.

To be concrete, what is devops? Well, there is no one single definition. The goal, though, is clear: to align development and operations so that they can support business agility. How does devops do it? Through a a set of practices addressing the following issues:

  1. Last mile problems in development: Deployment, testing, configurations, roll outs, integration …
  2. Non-functional problems in applications: HA, DR, performance, caching…
  3. Operational aspects of applications: Log file management, log correlation, upgrades, roll backs …

I may be missing some, but by and large, this is the main focus.

What are the tools that support it? Well, as it is a nascent field, there are lot of tools that are being built to support devops. I can only list out a few:

  1. Configuration management: Puppet/Chef – so that we can automate most of the configurations, including those of applications. Extensible and declarative. It is instructive that these tools came out of people that worked at cloud companies like Amazon.
  2. Source code control systems: Git and Github seems to be the way most of these systems are developed.
  3. Monitoring tools: Hyperic etc.
  4. […]

Looks like I can’t enumerate these ones as they keep growing. Just Google and follow the list.

Meanwhile, this is what I can suggest for any developer/sysadmin who wants to become good at devops thing:

  1. Learn a modern scripting language, or even two: Python and Ruby are the popular ones.
  2. Learn the existing tools: Start with Git. Use Puppet and so on. Play with a hypervisor.
  3. Learn standard datacenter components: Learn about storage (Standard SAN). Learn about network.
  4. Learn some standard deployment architectures: Say,using varnish, HA-Proxy, and caching. Or, site-to-site replication. Or, database backups.
  5. Learn some web servers: I would suggest in-depth understanding of one web server, say apache, would help a great deal.
  6. Learn about VMs: Not merely VMware based VM’s, but JVM as well. Understand a little basics on how to monitor, manage, and optimize.

I am also new at devops – but most of the skills that are needed for devops is what an average Unix programmer used to learn in 90’s. It is just old wine in new bottle. Still vintage!

 Posted by at 1:06 pm

  7 Responses to “Devops: A cross functional skill set between developer and operations”

  1. Really nice one Rama – informative!

  2. I heard this word first time, but seems like it answers a host of questions I had about bridging the divide between writing code and the operational aspects of running the code. will look it up further, but looks like we need one in our team ASAP.

  3. I cannot concur more about the need for this. If you look at it – Functionally Complete applications are no longer enough, performance and NFR focussed applications still do not cut it, the key is to be able to functionally re-configure and operationally re-configure the application to meet growing demands from Business.

  4. I am developer and working in operations kind of environment. Sometimes I used to wonder why I am restarting servers since I am a developer! Now I know, I belongs to DevOps 🙂

  5. […] of the more exciting things to come out of operational technologies is “devops” which integrates the continuous development with operational view of the applications. Even if […]

  6. After reading this article, I realize that the experience I aquired in automation and configuration management in last few years still keeps me on the future path and there is a lot of scope to learn and deliver. Thanks, Rama.

  7. Thank you very much ! You have cleared out the difference between them.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>