In a previous article, I reviewed some considerations for teams and organizations that want to get started with a DevOps methodology. But is DevOps really necessary to run in the cloud?
The short answer? Of course not. Using the cloud without DevOps is entirely possible. For example, you can leverage the pay-as-you-go business model to handle ecommerce peaks without expanding your data center. The cloud allows you to achieve global internet presence, and thus reduce end-user latency at the click of a button. It has many valid use cases that do not require immersion in a DevOps (or NoOps) philosophy. But is it really the best use of your resources?
Let’s say your company, like so many others, has made a commitment to deliver a certain percentage of workloads in the cloud against a deadline —wouldn’t adding in DevOps put too much on your plate? During the adoption, you need to make a handful of choices, and each decision leads to myriad additional choices. On top of that, challenges related to the change in working culture can create additional commotion. Maybe everything would be easier if you just got rid of Ops entirely (feeding into the NoOps vs. DevOps debate)?
In this article, I’ll explore different angles of using the cloud, both DevOps and NoOps. As usual, there’s no single solution that fits every organization. Read on to find out which use case suits your needs.
Some companies out there will offer to take your application and simply make it available to the world: no VMs to manage, no operating systems to upgrade, no firewalls to configure. They can even run individual functions. Be careful though—freedom comes at a price: NoOps in the cloud leads to reduced flexibility, vendor lock-in, and potentially enormous bills. Still, it’s okay to spend money to make money, assuming of course that the latter outweighs the former. In that position, you might not need to build custom components when the stock ones do the job. Going with Platform-as-a-Service (PaaS) eliminates the need to make a choice and allows you to iterate faster.
However, there are two sides to every story. Off-the-shelf solutions may not get you past a certain point. And in a highly competitive and innovative field, reliance on off-the-shelf apps can be a recipe for being overtaken by competitors.
Regardless, things can quickly get messy if you dive into the cloud without proper in-house competencies and engineering maturity. It may be a good idea to utilize the PaaS space while you grow those proficiencies.
At the opposite end of the scale, you could simply treat the cloud as your own personal outsourced data center. Bear in mind, however, that this approach, too, can get expensive very quickly (are you spotting a trend yet?). If you’re managing the infrastructure stack yourself anyway, you may want to compare the associated costs to those of renting dedicated servers or even getting a metal fleet of your own and co-locating. All in all, cloud providers deal with the same hassle and overheads as those who maintain physical machines, but on top of that, they have their own software stack to maintain as well. They’re probably better at it than most, but still have to take their margin.
You can use managed infrastructure (for example, caches and databases), but you’re limiting yourself to one vendor or offered solution. On the other hand, when practicing DevOps, utilities can be tailored to your needs. Whichever approach you select, we have you covered. Cloud Insights works with hybrid cloud environments and gives you the necessary visibility and cost optimization, regardless of what you might opt to run and where.
The Ops team can still use the cloud as a rapid prototyping tool for proof of concepts (PoCs). On the other hand, the Dev team can spin up a managed database to test some ideas without waiting for Ops (who are busy doing their own work). Testing out those ideas doesn’t require a single bit of DevOps. But can you imagine how quickly your organization could move if the two teams talked to each other with cloud as the common language?
DevOps is neither a person nor a department. And it’s definitely not a title you assign to a system administrator when they ask for a promotion. DevOps is a philosophy dedicated to reducing cycle time–the time span between the first draft of a feature and when that feature lands in production. The shorter the timespan, the faster you can test your theories. Since the cloud allows you to iterate more quickly, DevOps is a natural fit.
Gone are the days of quarterly deployments, since general cycle time has plummeted to several times a day. And that’s even the case with “old-school” fields, like the banking industry. In this case, you should find that the bottleneck is the utilization and management of your staging environments—either someone is waiting for an environment to become available or you’re spending too much money on it. The cloud solves this problem by allowing you to obtain a dedicated environment on demand and to pay as you go.
There are tools that solve general problems. Docker, for example, allows you to get past “works on my machine” by packaging service dependencies with the application itself. However, there are still business problems specific to your organization that don’t have a readymade solution. DevOps allows you to tackle these challenges from both the Dev and Ops points of view—and the cloud will frequently appear as part of the solution.
For example, if stability is a game changer for your enterprise, DevOps engineers can put up a safety net, so that developers can code without fear of breaking things. Administrators can then focus on long-term system durability, instead of putting out fires. All in all, it's not about the tools. Rather, DevOps is about rearranging the competency silos to reduce cycle time.
If your business grows quickly, you might turn your eye toward distributed systems, but they are inherently complex and require knowledge of both development and operations to work well. They also have to be thoroughly tested under harsh network conditions. Tread carefully at every step of the software development lifecycle. Having fast, direct access to unlimited and reproducible test environments can speed up the process and make the results more reliable.
DevOps is a cultural movement and won’t happen overnight. Still, adopting DevOps in an agile manner is a great idea. Take it one step at a time, with each step generating some tangible added value. Going slowly will also allow your team to figure out what DevOps really means for them, along with the best ways to embrace the movement. Investing in visibility can take you a long way because it’ll show progress over time and allow you to change course when needed.
The right approach to navigating the cloud and the DevOps space is a game of tradeoffs, and varies from company to company. For example, a one-person startup will probably focus on getting the low-hanging fruit quickly, while a developing company might be interested in establishing its geographical presence. All in all, you can get great velocity from NoOps in the beginning and substantial benefits from the cloud at later stages. However, when the cloud synergizes with DevOps, the sky's the limit.
Once you’ve settled on the appropriate strategy for your journey to the cloud, having considered the NoOps vs. DevOps debate, and decided which direction you’re going to take to develop and run your cloud infrastructure, it’s time to make sure you’re implementing the best cloud monitoring practices. Check out this on-demand webinar to learn more about cloud upkeep.