What does DevOps mean?
Like many terms, there are a variety of slightly different (in some cases vastly different) definitions. The current definition per Wikipedia seems pretty good:
“DevOps is a software development method that stresses communication, collaboration and integration between software developers and information technology (IT) professionals. DevOps is a response to the interdependence of software development and IT operations. It aims to help an organization rapidly produce software products and services.” – Wikipedia
There has always been an important relationship between the people who develop applications, and the people who manage the servers where these applications live long-term. It hasn’t always been a positive relationship, but there is a relationship nonetheless.
What concern does this movement address?
Not everything fits into a generic generalization, but the contention historically relates to:
1) Developers love to be nimble and make changes (bug fixes, updates, etc.) very quickly as they are ready. This is not a bad thing – especially if your business is dependent on the success of a particular application. A developer makes a change on their development machine, runs through some tests, and wants to push these updates to the production servers… where the contention arises…
2) Operations people (think server, storage, security, and network administrators) are responsible for the 24x7x365 monitoring, operation, and support of the organization’s IT systems. These people thrive on consistency and plans. To do their jobs well they need to know the operating system, how it was configured, what changes were made, what changes are planned, how will those changes impact the running systems? Will there be performance impacting changes? Will changes push capacity thresholds? Will the changes impact the stability?
See the potential issue there? I can’t count how many times I’ve heard from a developer “but it works fine on my machine” after deploying code and either it doesn’t work as expected or it creates operational support challenges. It is very likely that the development environment isn’t as secure as the production systems. It’s also fairly common for a developer to install an update – perhaps the latest version of some development framework – and assume that it is either already on the server or that installing it there won’t be an issue.
So what’s the solution? What is DevOps?
The solution is actually rather simple in concept (but not always easy to get people to follow). A main ingredient needs to be communication. Operations people need to communicate the environment, its constraints, generalized reasons for certain “restrictions” (permissions, changes, etc.). Developers need to communicate what they’re planning, what dependencies exist, what changes made need to be made to the systems, and generalized reasons justifying the changes.
Another key ingredient needs to be education. It’s fine to communicate things, but both departments need to understand what the other is doing and why. It will make the communication part easier, and will help both departments appreciate the reasons for certain guidelines.
DevOps in hosted world
Addressing the DevOps topic is often a easier in a corporate enterprise environment. Communication not working? Let’s get the IT Director involved and they’ll referee to straighten things out. There are a lot of hosting companies that either hide from this type of interaction or don’t have the experience and expertise to deal with it. The support teams may know operating systems but not know a model view from a case statement from a dynamic query (whatever – you know what I mean). This increases the challenge level but definitely does not rule out successful DevOps implementation. It just takes a bit more work up-front before engaging with a hosting company.
First, successful DevOps interaction with a site or server host is going to require managed hosting. In an unmanaged situation the client is generally on their own. Super-cheap hosting models are generally unmanaged – it costs money to maintain quality, experienced, and educated operations people, and make them available as-needed.
Second, you’ll want a host that doesn’t hide. Does the host respond quickly to email tickets? Do they provide telephone access not only for critical issues, but for talking about plans and changes and working proactively through upcoming deployments?
Third, you’ll want a host with knowledge and experience. Do they have developers on staff that work in the same development stack that you do? Are those people available to help out if needed? Sometimes development topics can be extremely technical and it might help to have a developer-to-developer interaction. Do the support people have some basic development knowledge? If you explain to them that your code is doing X, Y, and Z – do they get it?
Lastly, you’ll want a host who is proactive. Communication should flow both directions – not just from the customer’s developers to the host – but the host should also proactively review the systems and communicate and trends being noticed. Patching and change schedules should be communicated and coordinated. Operations people should make themselves available during deployments to assist and closely monitor for any issues. Scheduling a planning meeting to discuss ideas, plans, and suggestions (from both sides) shouldn’t be a hassle.
Do any hosts really operate at this level?
Yes, some do. Definitely not all of them though – in fact, in a world with thousands of “hosts” available, a small percentage provide this level of quality interaction.
If you don’t already know, OrcsWeb was founded 17 years ago (1996) and focuses on exactly this level of interaction with its customers. Its goal is to operate as an extension of the customers IT team and work proactively together for the overall success of the project. The Complete Care Managed Services (CCMS) that is available to all cloud server and dedicated server hosting clients provides all of the above: Proactive system reviews, system operational analysis, performance analysis (slow load pages, long running queries, optimization pointers, etc.), architectural guidance as needed – in addition to 24x7x365 monitoring with immediate alert response, 24x7x265 critical issue resolution, security solutions (VPN, firewall, ISP, etc.)
There may be other options too – I’m just not familiar with any. Before you decide who to partner with, I’d suggest picking up the phone and calling candidates. Chat a little with the person who answers the phone. Ask about the possibility of having a pre-sales architectural call to discuss your project and their solutions. Are you dealing with just a sales person or do they engage experienced architects to understand your concerns and needs?
I hope this helps you better understand the DevOps topic and some of the surrounding challenges (aka opportunities), and I hope it helps you make a good decision with selecting your hosting partners. Remember that group of people is going to be key to your success as a developer/manager/owner, so take the time up front and choose wisely.