TAG | Operations
DevOps is scary stuff for us pure Ops folks that thought they left coding behind a long, long time ago. Most of us Ops people can hack out some basic (or maybe even advanced) shell scripts in Perl, ksh, bash, csh, etc… But the term DevOps alone makes me cringe and think I might really need to know how to write code for real (which I don’t enjoy, that’s why I’m an ops guy in the first place).
So here’s my plan. I’m going to do a bunch of research, play with relevant tools (what fun is IT without tools?), and document everything I discover here in a series of blog posts. My goal is to educate myself and others so that we operations types can get more comfortable with DevOps. By breaking down this concept and figuring out what it really means, hopefully we can figure out how to transition pure Ops guys into this new IT management paradigm.
What is DevOps
Here we go, I’m probably about to open up Pandoras Box by trying to define what DevOps means but to me that is the foundation of everything else I will discuss in this series. I started my research by asking Google “what is devops”. Naturally, Wikipedia was the first result so that is where we will begin. The first sentence on Wikipedia defines DevOps as “a software development method that stresses communication, collaboration and integration between software developers and information technology (IT) professionals.” Hmmm… This is not a great start for us Ops folks who don’t really want anything to do with programming.
Reading further on down the page I see something more interesting to me … “The goal is to automate as much as possible different operational processes.” Now that is an idea I can stand behind. I have always been a fan of automating whatever repetitive processes that I can (usually by way of shell scripts).
My next stop on this DevOps train lead me to a very interesting blog post by the folks at the agile admin. In it they discuss the definition and history of DevOps. Here are some of the nuggets that were of particular interest to me:
- “Effectively, you can define DevOps as system administrators participating in an agile development process alongside developers and using many of the same agile techniques for their systems work.”
- “It’s a misconception that DevOps is coming from the development side of the house – DevOps, and its antecedents in agile operations, are largely being initiated out of operations teams.”
- “The point is that all the participants in creating a product or system should collaborate from the beginning – business folks of various stripes, developers of various stripes, and operations folks of various stripes, and all this includes security, network, and whoever else.”
Wow, that’s a lot more comforting to my fragile psyche. The idea that DevOps is being largely initiated out of the operations side of the house makes me feel like I misunderstood the whole concept right from the start.
For even more perspective I read a great article on O’Reilly Radar from Mike Loukides. In it he explains the origins of dev and ops and shows how operations has been changing over the years to include much more automation of tasks and configurations. He also explains how there is no expectation of all knowing developer/operations super humans but instead that operations staff needs to work closely or even be in the same group as the development team.
When it comes right down to it there are developers and there are operations staff. The two groups have worked too far apart for far too long. The DevOps movement is an attempt to bring these worlds together so that they can achieve the effectiveness and efficiency that the business deserves. I really do feel a lot better about DevOps now that I have done more research into the basic meaning and I hope this helps some of you who were feeling intimidated like I was. In my next post I plan to break down common operations tasks and talk about the tools that are available to help automate those tasks and their associated processes.
As always, please feel free to comment if you think I have missed something or if you have a request for content in an upcoming post.Link to this post:
It seems like every article, tweet, blog post I read someone has a different definition of the same buzzwords – especially in technology. Mentioning cloud or big data on a tech blog is like bringing sand to the beach. That’s one of the reasons why we made The Real DevOps of Silicon Valley - to make fun of the hype. I got to thinking… has anyone taken the time to shed some light on these ambiguous terms? I investigated on Urban Dictionary and this is what I found…
IT According to UrbanDictionary.com
(Not kidding, look it up…)
1. CLOUD COMPUTING
cloud com·put·ing, noun.
“Utilizing the resonance of water molecules in clouds when disturbed by
wireless signals to transmit data around the globe from cloud to cloud.
‘I use cloud computing so I don’t have to worry about viruses, I
only have to worry about birds flying through my cloud.’”
“Agile is a generalized term for a group of anti-social behaviors used by office workers to avoid doing any work while simultaneously giving the appearance of being insanely busy. Agile methods include visual distraction, subterfuge, camouflage, psycho-babble, buzzwords, deception, disinformation, and ritual humiliation. It has nothing to do with the art and practice of software engineering.”
3. BIG DATA
big da·ta, noun.
“Modern day version of Big Brother. Online searches, store purchases, Facebook posts, Tweets or Foursquare check-ins, cell phone usage, etc. is creating a flood of data that, when organized and categorized and analyzed, reveals trends and habits about ourselves and society at large.”
“When developers and operations get together to drink beer and color on whiteboards to avoid drama in the War Room. Also a buzzword for recruiters to use to promote overpaid dev or ops jobs.”
Watch episode HERE.
“The parts of a computer that can’t be kicked, but ironically
deserve it most.
“The word the Knights of Ni cannot hear or say.”
(Monty Python & the Holy Grail reference)
Link to this post:
As you may have heard by now, Stephen Covey – the author of “Seven Habits of Highly Effective People” passed away this week. He published this book for the first time in 1989, just as I was entering the workforce and had a strong influence on how I analyzed my own effectiveness. To honor him and his contribution to professional development and the millions of lives that he has touched, I thought I’d tailor his Seven Habits to make them even more relevant and prescriptive to AppDynamics users – Application Operations, DevOps & IT Operations professionals.
Managing mission-critical apps isn’t easy. There is a lot of pressure to “keep the trains running on time” in an environment where change is a given. Thus, it can be very easy to spend your day on what’s “urgent” or “hot” instead of what’s most “important”. This relates to habit #3 of the Seven Habits and perhaps my favorite. Luckily, we work with some really strong App Operations & DevOps teams who have figured out how to be the most effective and have the most impact at their company.
So, what are their secrets and how can Stephen Covey’s habits help Application Operations folks be more effective? What do the most effective Application Operations groups do to differentiate themselves and their company? Let’s dig in and look at each habit one at a time.
1. Be proactive
Ok. This concept is a no-brainer for folks in Operations. If you let things happen to-you (ie reactive), you’ll spend your whole day responding to angry users and line-of-business folks…trapped in endless war-room conference calls trying to figure out why something broke after-the-fact. At the most basic level, being pro-active can only happen if you have enough visibility into how your applications are working before any problem reaches a Severity-1 level. Pilots can’t fly a plane without the right set of gauges and instrumentation, so don’t put your team in the position of operating a mission-critical app without the right level of visibility. Having visibility puts you in control and allows you to be proactive.
2. Begin with the end in mind
Define what success is and what impact you want to have on your organization. Go beyond uptime and availability measures and think about how your work can contribute to the company’s revenue achievement, revenue growth, competitive advantage, customer satisfaction, etc. Thinking in these terms will better align you with your Line-of-Business (LOB) colleagues as well as enhance your job satisfaction. Our users who can say: “my company would have never been able to grow web sales by 35% last year without my contributions to scaling and operating our app” have a lot of job satisfaction.
3. Put first things first
In a nutshell, this habit instructs us to prioritize tasks based on importance, rather than urgency. It is an easy trap to “live in your inbox” or see half the day get wasted by chasing down false alarms. I like Covey’s 2×2 matrix and it’s a good five minute exercise to put all of our projects/tasks in this matrix to ensure we are spending the bulk of our week on things that are both important and urgent. Certainly, the right Operations tools and automation can help provide focus by prioritizing what work will have the most impact on the success of a mission critical application.
4. Think win-win
This is also a major tenet of the DevOps movement – If Dev, Ops, and LOB all have divergent goals and objectives…there will always be tension and conflict. As the Operations guy, take the initiative to find out what matters to your Dev and LOB counterparts and how they measure success. Once you’ve don that, align your goals and objectives with theirs and co-build a plan to get there. What most of the successful DevOps shops are doing is picking shared goals/objectives that matter to Dev/Ops/ LOB and then aligning their efforts to achieve those goals. When everyone is committed to the same goals and a shared plan to get there, a lot of the daily conflict/political infighting goes away.
5. Think first to understand, then to be understood
Application Operations can be hard. For most of our App Ops users, they didn’t architect or code the application they are responsible for, but there is a lot they must understand about it to operate it successfully. On top of that, if their shop is agile, their app is likely changing all the time and it can be near impossible to know how it has changed each time. With agile, the days of complete knowledge transfer and gated exit criteria seem to be gone, so you’ll need different approaches to understand what you need to know about the App to succeed. The right tools/ automation can help by automatically discovering what has changed and whether or not the new build is performing as well as the last build. Once you have this understanding – you’ll be in a better position to communicate to Dev/Test if/how/where the new build is performing poorly….and be listened to.
This habit can often mean to use teamwork to reach goals unattainable by one person working alone. Often we hear Dev & Ops folks talk about the “blame game” that goes on inside their company and the acronym MTTI – “Mean-time-to-Innocence”…where each silo (network, database, application, server, storage) are all trying to prove that their area isn’t to blame for the latest problem. When the culture that exists between Dev and Ops is one that leads to finger-pointing rather than collaboration, then there is an opportunity for improvement. The DevOps movement has some good materials on how to enact a cultural change to enhance collaboration and teamwork.
7. Sharpen your saw
Continually look for ways to improve your knowledge and the way you do Operations. What we’ve seen a lot in the last 2 years is Infrastructure Ops folks re-defining themselves as AppOps or DevOps people. And they aren’t just changing their title. What this means is that they’ve changed the way they work, added to their skills, gained experience with new tools/automation (AppDynamics, Puppet, Chef, etc..). What I often see from folks that have embraced these new skills is a new level of confidence and job satisfaction. I hear a new pride when they say they are “Ops people who can code” or “Ops people who can troubleshoot App issues better than their peers”. If you are interested in taking this same journey, study the presentations on slideshare by Netflix and others on how they run Operations and what this has meant to their job definitions.
In the end, the habits and behaviors of highly effective Application Operation require a range of skills that go beyond learning a new way to use automation to improve availability and performance – these skills also include effective relationship management and goal alignment across teams, prioritization/time management, and continuous improvement. The good news is that most of the App Ops folks we work with seem naturally inclined to continually improve.Link to this post: