There was a famous prediction from the early years of computing that “there is a world market for maybe five computers”, allegedly attributed to the then CEO of IBM. Now, in 2018, it’s paradoxically become true again. We can risk this statement because, from a logical point of view, there are now only five relevant computers in the world. They are called: Amazon Web Services, Microsoft Azure, Google Cloud Platform, IBM Cloud, and Oracle Cloud.
In this article, we will explore the main benefits of Cloud computing in detail. First, however, let’s have a look at some of the basics and gain a common understanding of the different levels of service that Cloud vendors offer, as well as common hosting methods.
The Worldwide Computer
This prediction is, of course, a simplification but, if we think about it deeper, it is not very far from the truth. What is the Cloud? It’s just someone else’s computer. Actually, it’s a bunch of them packed together with all the needed infrastructure, from network cables and racks to a diesel generator that will take over in case of an electricity outage.
From our point of view, the Cloud is a myriad of services operating at various levels of abstraction, but the very fabric of all consists of processing cores, random access memory and permanent storage. It’s a computer we can rent and take advantage of.
Yet the question needs to be asked: why would rent, instead of just buying one or using one they already own? There are numerous reasons for this, but before we explore them in depth, let’s have a look at the various Cloud computing types and hosting options that are commonly used by companies, as well as the size of the gap that can be closed by moving to the Cloud.
The Service Levels
There are numerous articles all over the Internet listing the advantages of the Cloud, but they usually fail to convey an important assertion: there are three main levels of Cloud computing – SaaS, PaaS, and IaaS – and we should be aware of which level we are talking about.
SaaS – Software as a Service. This allow us, the consumers, to remotely use the software the company hosts, whether it’s directly or indirectly. It can be accessed in various ways, most commonly via a web browser, but also a command line interface or other dedicated client software. A well-known example of this is Google Docs. As consumers, we can use our browser to create, edit and store various documents, slides or spreadsheets, while Google takes care of everything that is happening behind the scenes.
PaaS – Platform as a Service. This give consumers an environment we they can deploy our own software, such as web applications. We don’t have to care about the underlying infrastructure like hardware, operating systems, provisioning etc. – we can simply focus on functionality. A great example of this is AWS Beanstalk. We can just feed it with our Java application packed to war, jar, or a Docker image, and it handles everything else for us.
IaaS – Infrastructure as a Service. This provides consumers with the basic building blocks of IT infrastructure. This includes computers both big and small, as well as physical and virtual. Other factors include network connectivity, specialized devices, and various types of storage. These service providers let us configure all this, while housing all the required hardware and taking care of things such as electricity, cooling, and replacing fried hard drives, or whatever else was killed in action. Amazon VPC is an example of this from a network point of view.
At this point, let’s make something clear – we all understand that having an important document backed up in the Cloud, instead of on the employee laptop, has certain advantages, but this is not what we want to discuss here. We are a software house, so our expertise and interests lie in serious, sophisticated IT systems and their environments: systems that are tailored to the exact needs of our customers. Consequently, we are going to look at the Cloud through the lenses of architecting and bringing such systems to life.
The Hosting Gap
Mind the gap, as they say. When considering Cloud advantages, we should take into consideration other options for hosting our systems. Traditionally, IT companies have kept their servers in their own data centres, which means they had to take care of racks, network cables, power, cooling, air conditioning, physical security, audits, compliance, repairs, maintenance and a plethora of other issues. Companies needed people to do all this, so they either had to employ a lot of specialists or go for some trade-offs and trust several such responsibilities to a smaller number of individuals. No one person can be an expert in everything.
With time, it became more common to rent the required amount of racks in a data centre and let somebody else worry about these problems. We were still left with our physical servers, which still costed money to buy, time to deliver and install, only to sit under-utilised or over-utilised, become obsolete, and break. In short, there were still plenty of problems we needed to solve.
With this solution, we could go on and rent particular existing servers from someone else. Yet we would still have physical machines with certain capabilities in limitations. What if we want to change how many servers we have, depending on our current system traffic and needs? What if the data centre gets hit by an earthquake? How long we will have to wait if a server breaks? Depending on the contract with the vendor, there may still be many more concerns.
Here comes the true power of Cloud computing! We are renting processing power, memory, storage, network infrastructure, and whatever other service we need. Yet we don’t care about the bare metal underneath and all its associated problems. Well, most of the problems at least. Let’s explore the reasons to go down this route in more detail.
1 – The Beauty of Abstraction
Creating IT systems is all about abstractions. We endlessly put one layer above the other, in order to deal with the tremendous complexity of software and hardware. Similarly, we gladly push back responsibilities to different layers and let others take care of it, so we can focus on what’s really important: crafting awesome applications that earn money for our customers!
We tend to use existing frameworks instead or inventing our own. We don’t want to write bytecode interpreters, operating systems, container engines, and virtual machines. The Cloud provides us with yet another abstraction level on top of the physical machine, which lets us do our work easier and more effectively.
2 – Unlimited Resources and Scalability
Effectively unlimited, to be precise. With a classical hosting model, extending our computing capacity is a long and tedious process. We need to plan ahead, anticipate business growth, decide on the hardware and vendor, buy, and wait for shipping and installation. Let’s be honest, we don’t have the technology to foresee the future, so we always end up with either not enough servers to handle the traffic, or having too much unused hardware and paying for them to sit idle. The closer we try to get rid of this discrepancy, the more expensive the process itself becomes.
In the Cloud, we can spin additional instances exactly when we need and as much as we require. Of course, every Cloud vendor has a limited number of resources, but these limits are far beyond what 99.9% of business will ever require and, just in case, there is always more than one Cloud vendor.
3 – Availability and Recovery
Things break apart. Processors burn, the network gets interrupted, and hard drives get corrupted. The Cloud aims to deliver us abstract computing power, memory, and space. Depending on the service and architecture of our applications, we are able to forget for a moment about the problems of physical word.
Processor dies? Reallocate a virtual machine under the cover and start over. A hard drive with our precious files had a bad day? We have another ten copies on different machines. Did the data centre get smashed by a meteorite? We have another two, geographically far enough to safely take over. Wait – it was a really big meteor? Well, we have dozens of other facilities all over the globe, but that’s probably not our most important concern at this time.
In short, we can also easily test whether our disaster recovery really works as expected, which might be more difficult in on-premise systems.
4 – Flexibility
The loads on our systems tend to fluctuate. This happens at several scales, depending on your own circumstances. For example:
- If we are in the tourist business, we are busier in certain seasons of the year.
- If we are in accounting, we will have to handle things that people do on a monthly or quarterly basis.
- If we deal with any people at all, depending on where are they, we may notice that they use the system on certain parts of the day.
Aside from this, there are also sudden spikes that we can often anticipate, like Black Friday, and those we can’t, such as the Slashdot effect. In the Cloud, we can deal with all of this by scaling up and down automatically, only paying for exactly what we use at any given moment while effortlessly handling everything thrown at us. On the other hand, with our own servers, we would be constantly either overpaying or rejecting some requests due to limitations.
Last, but not least, sometimes we just need to do a massive amount of one-time computations. In the Cloud, we can recruit a massive fleet of spot instances, do our thing and immediately get rid of them – all without ever have to worry about unused servers.
5 – Insight and Control
The costs of running our own hardware infrastructure is often indirect and convoluted. First of all, there are many initial payments, while other payments have to be repeated over various periods of time.
Aside from what we can predict and plan for, we also need to handle emergencies and random problems, care about employees and many other aspects. With the Cloud, we pay as we go, and we can tell exactly how much we spend on particular services and individual parts of our system. With proper resource tagging, we can go even deeper and know, for example, how it distributes over company departments, teams, products or business domains. We can leverage this data to optimize our systems from both a pure technical point of view, as well as a business one. Who knows, maybe we spent 80% of our money on the part that only earns 20% revenue, and its economically suitable to just shut down this part entirely. Alternatively, maybe there is something we can do to drastically change these proportions. We don’t have to guess – we have hard data to help us in shaping our strategy!
6 – Standardisation
Many people don’t seem to realise but, at this point, the Cloud is the new standard. It’s normal – and doing normal things usually pays off. Certainly, doing innovative things may pay off more, but “normal” is first step on the way to “innovative” after leaving the “obsolete” zone.
Of course, the Cloud itself is still evolving and presents new opportunities to be innovative on a daily basis, too. As we adopt a new layer of abstractions, standardisation soon follows. One might argue, however, that we are at risk of vendor lock-in but, with the rise of multi-cloud paradigms, we can effectively combine the best aspects of several Clouds. We have the tools to abstract over vendor-specific aspects of the Cloud and we can also balance between vendor-specific managed services and generic virtual machines, where we deploy the required services or applications on our own. If we choose to change Cloud vendor, we just lift and shift our virtual machine or container images and carry on.
7 – Performance
Cloud computing comes in many shapes. There are instances specialised in processor-heavy operations, those with lots of fast memory or options with enhanced network capabilities. We might need fast hard drives, or maybe just a lot of them.
It could be argued that we can buy all that ourselves and put in our own racks. This is certainly true, but these needs might vary over time and adjusting hardware manually to compensate is difficult. Furthermore, we might need particularly specialised capabilities just for a one-time job. What are we going to do with all this hardware when we are finished?
At higher service levels, we can take advantage of automatically managed massively distributed services, which offer virtually unbound throughput. Need to simulate protein molecule folding before the competition does? Just increase the number of servers to cut on time, perhaps with the help of built-in big data services.
8 – Economy of Scale
Major Cloud infrastructure providers, such as AWS, Azure and Google Cloud Platform, are really huge. They have close to 20 regions, each operating several data centres, and they can buy and operate hardware cheaper than anyone. When they are building their 50th computing facility in a row, they know how to do this efficiently. Part of these savings can then be transferred to customers via competitive prices. As our system grows and requires more computing capacity, additional Cloud costs grow shorter, rather than being directly linear – there are increasing discounts. It’s also noteworthy that, aside from the flexibility of starting and stopping resources on the spot, we can further decide to commit to longer periods, such as year or three, to land additional substantial savings.
9 – Painless Maintenance
I remember a story from a previous companies I worked for. It was a late afternoon when the CTO (Chief Technology Officer) stormed into the administrator’s room and asked if anyone fancied a trip to the data centre. This was not very unusual, as administrators sometimes drove a few hundred kilometres there to deploy or replace some servers, as well as specialized equipment that was to delicate or important to trust “remote hand service” to do. My friend replied “sure, why not, when?” The answer was “Now.” There was not even time to wait for the cab, so the managing director himself drove my colleague to the airport, breaching several speed limits in order to catch a plane and add physical memory to some crucial network device that was on the brink of collapse.
With Cloud systems, we don’t need to perform such stunts. Network devices are hidden under the abstraction of service and taken care of behind the scenes, just like failed hard drives, burnt processors and other hardware problems that previously required our attention. Similarly, on the software level of managed services, we don’t have to worry about patching the database, container engine or big data framework. It’s handled behind the scenes and all we need to do is decide the update window, in case of major patches that might impact the functionality.
10 – Capital Expenditure Reduction
Setting up computing infrastructure can be expensive, even when we’re just renting space in existing traditional data centres. Racks, servers, switches, firewalls, network cables, power supplies, hard drive arrays and all other equipment needs to be bought, installed, and tested. This is a big problem, especially for start-ups with limited funding, unproven business plans and uncertain computing capacity requirements.
With the Cloud, we skip all these huge and risky investments and just pay as we go for what we use. One might argue, however, that it’s just a one-time investment, but Moore’s law is merciless and in the classic model, our servers will become drastically energy-inefficient at some point and will require replacement.
Interested? Want to know even more? Make sure you didn’t miss the second part of this article.
So, that’s it…. For now! When writing this, I realised the benefits of the Cloud are long and varied, so much so that I couldn’t fit into one post! If you want to know more, I’ll be doing a follow up with 10 more advantages soon – make sure not to miss it!
The Cloud computing industry is very competitive, with vendors offering a growing number of benefits for businesses. This, of course, makes it a great time to further establish yourself in the Cloud, or start the migration process and free yourself from traditional costs and drawbacks of your own, dedicated servers.
If you want to get started, our Cloud adoption workshop might help you on your journey to Cloud computing, gaining all the associated benefits and opportunities.