DevOps in the Cloud
IT professionals and developers have, traditionally, inhabited two very distinct and separate worlds. Users need both. Devs (the artists formerly known as programmers) are the ones who create the software they use to get their work done, and to upgrade it and write code fixes to patch vulnerabilities. IT pros (a.k.a. admins, as in that annoying message to “contact your network administrator” when something goes wrong) are the ones who are responsible for installing, configuring and maintaining that software and applying those patches and updating the systems on which it runs.
Developers and IT operations specialists have long worked in parallel to keep the business computers and networks of the world running. The two tend to have different skill sets and personality types, so it’s no surprise that management’s new “agile” philosophy, which pushes them into a sort of uneasy cross-training through the rise of a new role called DevOps, has caused some discomfort on both sides. The cloud has complicated matters even further.
In the olden days (which in the technology industry can mean last year), devs often worked in isolation. Sure, it takes a whole village of coders to create a modern operating system or a complex application package, but individuals traditionally worked on their bits and pieces behind closed doors, shutting out distractions so they could focus on the tedious tasks of composing thousands of lines of instructions that would eventually power the functions and features of the programs. It was the IT pro who was expected to be a “people person,” interacting with users, vendors, and managers while at the same time trying to find time to attend to their primary job duties.
The agile movement and the DevOps role changes all that. IT pros are now being pushed into learning some coding skills whether they want to or not – thanks in large part to Microsoft’s move away from the graphical user interface on its server operating system. The server core installation and Windows PowerShell mean there is much more emphasis on scripting rather than using GUI-based tools.
At the same time, developers are being forced into more direct team collaboration. Open office plans put everyone together into one big room, where they’re encouraged to bounce ideas off of one another and form closer bonds with their co-workers. This trend has spread through the business world in general and the technology industry in particular, although not everyone is a fan.
These changes in job description, role, function and expectations alone are disruptive enough for IT pros and devs who have been doing things the old way for years or even decades. But to add to the mix, now there’s the cloud.
A brave new “cloudified” world
As if the agile/DevOps trend weren’t bringing about enough changes in the work lives of IT pros and developers, they also must now get used to the idea of moving both development and operations to the cloud. There are those who would have you believe that a move to the cloud is completely transparent, and for many casual users, that’s (mostly) true. For developers and IT professionals, though, working in the cloud has its differences. Some of those are positive – such as the fact that developers will be able to access their files and dev tools from any computer, no matter where they are, and IT admins will be able to monitor and manage their (virtual) servers from anywhere in the world, both without the hassle factor that’s sometimes involved in remotely accessing the corporate network.
However, there are drawbacks to working online, as well. Perhaps the most serious one is also both the most obvious and the most overlooked: If you don’t have an Internet connection, you might not be able to get anything done at all. Of course there’s the possibility of the cloud network itself going down. In March of 2015, Microsoft’s Azure Infrastructure as a Service (IaaS) and Platform as a Service (PaaS) services for customers in the central U.S. suffered an outage for a couple of hours, and last month, Amazon’s AWS cloud services in Australia were affected by heavy storms that took them offline for six hours or more.
Luckily, the cloud services providers have processes in place to respond to such events and are usually able to get their customers back online within minutes or hours rather than days. Nonetheless, in today’s fast-paced business world (and “agile” is all about getting things done more quickly, remember), a few hours of lost productivity can be a big deal, resulting in missed deadlines and even loss of business.
Inability to do your job is frustrating, but realistically can happen whether you’re working in the cloud or not. Net admins in corporate datacenters know that a critical server can go down or your LAN can be hit with a Denial of Service attack, with effects as profound (for you) as a major cloud outage. If you’re a developer, a sudden hardware failure that crashes your personal workstation can bring your work to a grinding halt, as you may have to wait for a replacement or at the very least, get a new system configured to fit your working preferences (the proper programs installed, options configured, and so forth).
The daily differences
It's more the practical everyday differences between working locally and working in the cloud that sometimes require some adaptation. For IT admins, the biggest issue is likely to be the loss of total control over your network environment. Yes, yes – cloud providers stress that you’ll still be in charge of your virtual machines, even though you have no idea where in the world they’re physically located. They assure you that your data will be secure, and it’s true that they most likely have much more money and expertise to put into security mechanisms and processes than your company does. They also have a more comprehensive backup system and a more sophisticated disaster recovery plan.
Nonetheless, it’s hard to get past the fact that the servers where all of your domain controllers, email servers, web servers, and the storage systems where all of your users’ data files reside are located somewhere “out there,” ultimately physically under someone else’s control. Admins tend to have at least a little of the “control freak” mentality – you have to, in order to do the job well – and letting go of that control doesn’t feel natural or right.
Developers are in a slightly different boat. Their evolution actually began with the name change. Once upon a time, most coders were called programmers – but when the job title morphed in software developer, the job duties expanded. Programmers were only expected to write code. Developers are had to be designers of software, even software architects or software engineers, who make high-level decisions regarding how programs are to be built and the standards to which they will adhere.
Beyond the fancy titles and expanded duties, however, someone still has to write the code. Writing code, at its best, is a creative process. Many talented devs feel about their code the way novelists feel about their books – it’s their baby. Working in the cloud, especially the “agile” way, usually means more collaboration, more team interaction, and more “sharing” of your creation (which also includes sharing the credit for it) at earlier stages.
Stereotypes aside, devs can’t sit in their little cubicles and work in blissful solitude until their parts of the project are perfected, before unveiling it for the rest of the development team. Now even if you happen to be lucky enough to have your own office or work remotely from home, you’re likely to be working in the cloud where your files are saved instantly and accessible to others.
Standard development tools such as Microsoft’s Visual Studio have grown into cloud services (Visual Studio Team Services) that combine the development environment tools themselves with services for sharing code and tracking work. In a way, what SharePoint is to those who write documents, VSTS is to those who write code. Developing in the cloud has cost advantages and also (theoretically, at least) enables companies to get the software shipped faster.
Similarly, deploying and managing your IT infrastructure in the cloud offers cost savings and convenience, but there are a few BOLOs – Be On Lookout (things that both need to be aware of before making the shift to the cloud).
Cloud transition watch list
Whether you’re running a network infrastructure or developing software, you’re likely to run up against some things that don’t work exactly the same way in the cloud as they did in your previous, non-cloudified environment.
Cloud is a new computing model. Security and reliability are usually top concerns of IT admins, but another challenge that you might run into is backward compatibility. You may have old machines in your local datacenter that are still running outdated operating systems and applications that were custom built for your organization many years ago and are still needed. Cloud VMs may not support that legacy software.
Developers may find that software tested in the cloud doesn’t work as perfectly in “real life” as it did in the more limited cloud environment, because of all the hodge-podge of different hardware, software and configurations that the new applications must “play nicely” with when it comes back down to earth.
The solution might be a hybrid environment, where you have the “best of both worlds” – connecting your local datacenter with the cloud’s network. However, sometimes integration of internal applications with those in the cloud can be tricky.
Both IT pros and devs may find themselves running up against bandwidth limitations of the cloud, as well. No matter how fast the machines in the cloud provider’s datacenter might be, no matter how many millions they’ve spent on building a speedy infrastructure, ultimately your data is being transferred across the Internet and is only as fast as the slowest link, which is likely to be your own Internet connection (corporate network, or personal if you work from home). Although there are some amazingly fast Internet plans available at reasonable cost these days, they’re still slower than most local area networks, where the rates are measured in gigabytes instead of megabytes. And if you need to work on a mobile connection (4G), bandwidth can get very expensive very quickly.
To wrap it up...
We often think of the rush to the cloud as something that only impacts IT pros, and the agile movement as something that only affects software developers, but with the new DevOps trend that aims to combine the skills of the two into one position and job title, both of these monumental changes will affect admins and coders alike. Developing and operating in the cloud is the future, whether or not we like it. Understanding the challenges it will bring gives us the ability to plan a strategy to overcome them, and understanding the advantages that it will impart gives us the opportunity to leverage them to our advantage.