Cloud. That magic word which is nowadays all around us. Your data are in the cloud, your money too, even your washing machine is connected to the cloud. It might seem that if you want to keep up with the current trends, you need to be in the cloud. So, what are the advantages? And are there any disadvantages?
Thanks to companies like Flexera and Rackspace, we have a great overview of trends in the cloud computing industry as they create annual reports on the "State of the Cloud." They collect responses from companies of various sizes all over the world. Let’s choose one of the many metrics they cover, which is “cloud maturity of users” (in the newest reports, it is specified as “company’s usage level of public cloud” instead).
With these reports, we can look back to data from 2015, where there were only 26% of respondents cloud-focused, but in the year 2024, it is already 71%. These reports cover only a small number of all companies in the world, but even with this small set of data, you can see the correlation of the cloud adoption trend with the perception that “everyone is in the cloud” nowadays. That’s an increase of almost 50% in 9 years, which might bring you to a question: will we get to 100%? Maybe. Eventually. Contrary to this trend, there are companies that think that the cloud is not a good idea. But we will get there.
What would be the hype about if there weren’t any advantages, right? Of course, there are, and quite a lot. The majority of the advantages of the cloud come from the cloud computing principles themselves. There are many perspectives you can use when talking about the advantages. But in this article, let’s look at the NIST definition of cloud computing (NIST) which defines five essential characteristics of cloud computing and use it as a reference.
A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed automatically without requiring human interaction with each service provider.
Excluding humans from the equation is always a great idea. It is also written a few times in the Site Reliability Engineering book by Google. With clouds, we are able to provision all the resources we need without the need for physically managing hardware, operating system installation, taking care of cooling, power supply, etc. Nowadays, you can do everything from the comfort of your home, simply by clicking on icons in the UI. This opens a huge variety of technologies to junior people or people who are interested in new technologies. Of course, it also removes the burden on companies to manage facilities and hardware.
Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, tablets, laptops, and workstations).
Access to the cloud is really not an issue nowadays. You can do all the magic, for example, through your smartphone. It is actually so easy that people lose track of what is happening in the background in the data centers. It is super easy to change regions from Europe to the US by clicking on one icon, but if you imagine the effort 10 years ago, it would definitely be a different story.
The provider’s computing resources are pooled to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. There is a sense of location independence in that the customer generally has no control or knowledge over the exact location of the provided resources but may be able to specify location at a higher level of abstraction (e.g., country, state, or datacenter). Examples of resources include storage, processing, memory, and network bandwidth.
Sharing is caring, right? It is actually one of the core principles of cloud computing. People share all the hardware and resources of data centers to effectively use their overall capacity. Data centers are spread around the world so users can change regions and ensure high availability and resilience in case of disasters and/or improve the speed and user experience of their applications by moving them closer to the end users. Users can further choose which data center inside a region they want so they can ensure that in case of a disaster, there is a mechanism that allows their application to keep running, which means having a competitive advantage in the market. They are usually called Availability Zones. Let’s quote part of the description of the Availability Zone by AWS:
An Availability Zone (AZ) is one or more discrete data centers with redundant power, networking, and connectivity in an AWS Region. All AZs in an AWS Region are interconnected with high-bandwidth, low-latency networking, over fully redundant, dedicated metro fiber providing high-throughput, low-latency networking between AZs. All traffic between AZs is encrypted. AZs are physically separated by a meaningful distance, many kilometers, from any other AZ, although all are within 100 km (60 miles) of each other.
Simply amazing!
Capabilities can be elastically provisioned and released, in some cases automatically, to scale rapidly outward and inward commensurate with demand. To the consumer, the capabilities available for provisioning often appear to be unlimited and can be appropriated in any quantity at any time.
Let me quote AWS S3 documentation: “Store and protect any amount of data for a range of use cases.” Any amount — that’s the important part. From users’ perspective, cloud resources seem infinite and available 365/24/7. But let’s take it with a grain of salt. It is definitely not true that cloud providers have some magic skills and have unlimited resources, but it sells well. On the other hand, you have the comfort of a vast amount of resources that you can use, and use any time you need or want. You can easily scale up and down without needing to think, “What if I run out of capacity?” or “Is there anyone who can extend my disk space?”. Of course, it will reflect on the price, but let’s discuss that in the disadvantages part.
Cloud systems automatically control and optimize resource use by leveraging a metering capability at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency for both the provider and consumer of the utilized service.
Having an overview of data is crucial. You want to know how much your infrastructure and product cost, what load it can survive, how much you need to scale, etc. Without proper metrics, you would be blind. Cloud environments provide a vast amount of metrics that you can use. Usually, the issue is not with the lack of data, but how to interpret them correctly and how to collect it efficiently.
Long story short, one of the biggest disadvantages is price. Users have everything on a silver plate all the time. It’s like with children who have a lot of toys. You want to play with everything at once, try every one of them, maybe lose a few of them under the couch. But there is a sad moment happening when you receive your first invoice. You suddenly realize that the usage of those services costs something. That even data movement is priced. That having cross-regional replicas will ensure you high availability and resiliency but at what cost. Having the comfort of all the benefits that the cloud provides has its own price tag. Lately, there are more people who are promoting leaving the cloud and moving back on-premise, for example, David Hansson, one of the co-founders of Basecamp. There are a bunch of articles you can read about it. Quoting Basecamp’s website on cloud exit:
The rough math goes like this: We spent $3.2m on cloud in 2022. The cost of rack space and new hardware is a total of $840,000 per year. Leaving the cloud will save us $7 million over five years.
Saving $7 million over five years is a really nice number. But that doesn’t mean you should start planning your cloud exit right away. It might be a good fit for some, but not for all.
One of the controversial disadvantages could also be the easy access to cloud and promotional offerings from cloud providers. Using the cloud is really easy. Providers offer free credits or free tiers for new users. People can easily hook up on these deals, create their product using a lot of services, become vendor-locked, and then cry over invoices because they run out of credits and don’t know how to optimize their workloads.
Next one is probably something you haven’t thought about: carbon footprint. Quite a hot topic these days, and it should be. Would you ever connect it with cloud usage? On one hand, you have an almost unlimited amount of resources that you can get from cloud providers; on the other, it has to run somewhere. The more resources and features, the bigger and more complex the data center and carbon footprint. Data centers spend a lot of energy on electricity and cooling. But it is great to see that providers care and are trying to improve. Many of them provide metrics for their users to measure their carbon footprint, for example, Customer Carbon Footprint Tool by AWS.
The last disadvantage that comes to my mind is a knowledge gap. IT overall is a really complex field. Even when you pick “only the cloud part,” it is still a huge amount of information that one needs to know. My favorite picture is the one from CNCF called Landscape. Each square represents a different tool, solving a different issue in a different way. DevOps engineers are supposed to have an overview of these tools and have knowledge of how to connect them to provide a proper solution. That’s a lot of knowledge! Finding skilled personnel can be a challenge. Of course, nobody knows everything. That’s not the point. People will eventually learn, but in the meantime, the chosen solution might not be the best and can cost you a lot of money. Yes, the same applies to on-premise solutions, but the easiness of making a mistake that would cost you thousands is much smaller.
In the end, there is no exact winner in this fight. On the one hand, cloud provides flexibility and a lot of tools ready to be used; on the other hand, it can cost you an arm and a leg. Clouds can bring you a lot of benefits that can help your company get to market and clients really fast. Running in your own data center is also possible, but it has different challenges like bigger initial costs and overall management. I believe that at the end of the day it should be like with all the technologies that you can use. It is one of the core values of Plectrum Engineering: every use case has its specific needs — don’t try to throw popular buzzwords at the issues, try to understand the problem first, then choose the best fitting technology.
This blog provided one point of view on this topic; there might be many more. Do you like clouds, and is it a good fit for you? Good. You don’t like clouds, and everything works like a charm in your data center? Also good. Every problem has its own solution, actually many times multiple solutions. It depends only on you, what you prefer, and how many resources and knowledge you have.
Peace