What is cloud computing?
Posted on June 7, 2021 by Adrian Wyssmann ‐ 8 min read
As I start looking into Azure, I thought it may be a good starting point to look into understanding what cloud computing is
What is cloud computing
As always, let’s see what Wikipedia has to say
Cloud computing is the on-demand availability of computer system resources, especially data storage (cloud storage) and computing power, without direct active management by the user.[2] cloud computing is commonly known as delivery of computing services including servers, storage, databases, and intelligence over the Internet.The term is generally used to describe data centers available to many users over the Internet.[3] Large clouds, predominant today, often have functions distributed over multiple locations from central servers. If the connection to the user is relatively close, it may be designated an edge server.
This means you don’t have your own hardware, but use services which are running in a datacenter. You only pay for what you use (“pay-as-you-go”) and you don’t have to worry that the hardware is up and running. Some of the prominent cloud provider, which I tried out so far:
- Microsoft Azure
- Google Cloud
- Amazon WS
- Hetzner Cloud
- Oracle Cloud
- Alibaba Cloud
- Huawei Cloud
- DigitalOcean
- Linode
The first three offer more or less similar services which go beyond [compute resources] and storage, whereas the other have less to offer and focus more on [compute resources] and storage.
What are the benefits/advantages of cloud computing?
No investment in hardware
You rely on some others hardware i.e. the cloud-providers one. so you don’t need to buy your hardware or everything else that is required to have a server farm
No maintenance, more reliability
- The cloud provider is the one who ensures, that the computers are running 24x7, are patched and backed-up
- Depending on your contract you may have an SLA which guarantees no downtime
Scalability
You can easily add additional resources when needed without the hassle or purchasing additional hardware yourself - this includes vertically scalability (adding additional resource like RAM and CPU), as well as horizontally scalability (adding more machines)
Agility
Cloud resources can be deployed and configured quickly and when you need it - no wait time until your purchased hardware is here
Geo-Distribution
Applications and data can be deployed to regional datacenters around the globe, so your customers always have the best performance in their region.
Disaster recovery
Being able to use geo-distribution and data replication you can have your application deployed in different locations, which facilitates recovering from a disaster
What are cloud service models?
With the adoption of cloud services, the concept of everything as a service (EaaS, XaaS, *aaS) has emerged. There are different service model:
- Software as a Service (SaaS): Software is running in the cloud and accessed via a thing client or the web-browser. The consumer do not have to worry about installing and managing the software
- Platform as a Service (PaaS): Allows the consumer to deploy onto the cloud infrastructure applications (consumer-created or acquired), using programming languages, libraries, services, and tools supported by the provider.
- Infrastructure as a Service (IaaS): The cloud provider manages complete virtual machines, to provide computer power to the customer. The customer will manage these machines (start, stop, ..) and maintain them (e.g. upgrade OS in VM, …)
- Serverless computing: Is another way to provide compute power where - in contrary to IssS - the cloud provider manages the VMs. Despite the name, there is a server on which the code runs, it’s just the customer does not have to care about.
- Function as a service (FaaS): is a service-hosted remote procedure call that leverages serverless computing to enable the deployment of individual functions in the cloud that run in response to events
- “backend” as a service (MBaaS)
These models differ in the level of shared responsibility that a cloud provider and cloud tenant
Deployment Models
When speaking about cloud, there are different Deployment Models:
- Public cloud: Cloud services offered over the public internet
- Private cloud: Cloud infrastructure operated solely for a single organization either internally or externally - managed internally or by a third party
- Hybrid cloud: A combination of public and private cloud infrastructure
The significant difference from public to private cloud is the responsibility and the significant physical footprint it imposes for your company. Cause you need hardware (servers, networking components, …), space to place the hardware and environment controls (ventilation, backup-power-generators, …). Beside your hardware has to periodically refreshed or replaced in case of failure.
There are some other models like multi cloud, High-Performance Computing (HPC) cloud or Community cloud.
Moving to the cloud
Despite the advantages of cloud, moving or migrating an existing on-premise is not an easy task. First you have to understand the services and resources offered by the service in order to think about how, what and when you can migrate an on-premise resource. In addition, it’s also important to understand the concerns and disadvantages. Some of these concerns are also valid for your on-prem infrastructure, but the main difference is that as a tenant you certainly do not have the same permission/access and insights as you have with your own infrastructure (hardware):
- Privacy and Confidentially as your data will be on the premises of the cloud company, and so does your traffic, when you access the cloud resources. Thus major concerns are:
- immense risk of data being disclosed either accidentally or deliberatelypriv1
- ease to control and monitor communication between host company and end user, and access user data (with or without permission)priv2, priv3
- data breaches where sensitive information like e-mail addresses, credit card information and more is stolen
- Legal and Compliance issues:
data may be processed or remain on systems in different regions and thus may fall under different jurisdiction - some providers address these with “regions and availability zones”
legal requirements on where to store data have to be met - in Switzerland for example, privacy law demands that private data, including emails, be physically stored in Switzerland
legal issues like including trademark infringement, security concerns and sharing of proprietary data resources
One important but not often mentioned problem with cloud computing is the problem of who is in “possession” of the data. If a cloud company is the possessor of the data, the possessor has certain legal rights. If the cloud company is the “custodian” of the data, then a different set of rights would apply. The next problem in the legalities of cloud computing is the problem of legal ownership of the data. Many Terms of Service agreements are silent on the question of ownership
achieving certification may be more difficult or maybye not possible with pure cloud approach - however bigger cloud operators also offer compliant services
- Vendor lock-in, as platforms and services may be proprietary and are using their own standards, tools and protocols, instead open standards and tools. This may make migrating off the cloud much more complicated and expensivelockin1. Three types of vendor lock-in can occurlockin2:
- Platform lock-in
- Data lock-in
- Tools lock-in
- Availability is key, so be aware of these major concerns:
- Network availability the cloud needs to be permanently available and provide connectivity and enough bandwidth to meet your demands
- Cloud provider availability may shut down without warningavail1, which may be less of a concern with well known providers
- Security the book securing the cloud identifies some security concerns:
- Disaster Recovery and Business Continuity must be in place by your cloud provider, so that your operations and services keep running in case of a disaster
- Security Incidents should be properly communicated to the tenants so they are aware of the risk to them. You also hope for proper reaction on incidents as well as support for investigations.
- Vulnerabilities on the cloud provider hardware any (proprietary) cloud software are properly addressed and assets are protected from common types of attacks
- Integrity of your data is ensured by your cloud provider so that
- Lose of Physical Control is less secure as the equipment is off site and under someone else’s control. This leads to the privacy and confidentially concerns, mentioned earlier.
Some of these concerns may be addressed - especially by prominent cloud providers, but there are still valid concerns, so keep them in mind when you are looking to go into the cloud. The book securing the cloud is also worth reading to get a better understanding of some concerns and mitigation to it.
Serverless Computing
serverless computing is another form of cloud service, but despite the name, servers are actually required to perform the computing. However, serverless means that the cloud provider takes care of the underlying hardware (provisioning, maintenance), and the developer only has to focus on the code which has to be run on top of the servers. The code is often optimized to react on triggers to perform some actions - thus serverless platforms may also be called Function as a Service (FaaS) platforms. It’s also cheaper in pricing, as you only pay for the resources you use during which your code consumes resources.
Some of prominent serverless platforms:
- heroku runs your app in lightweight, isolated Linux containers called “dynos.”
- netlify is an intuitive Git-based workflow and powerful serverless platform to build, deploy, and collaborate on web apps
- cloudflare workers allows to deploy serverless code instantly across the globe to give it exceptional performance, reliability, and scale.
What next?
I wrote this article to get an overview of cloud computing and the main terms. As a next step, at least for me, is to dig into Microsoft Azure, which is the cloud provider of choice for my current employer.
Privately I use Hetzner Cloud. It offers far less services than Azure - the main focus is compute resources and storage - but the pricing is amazing, especially if you plan to have use them for your personal projects. If you decide to give it a try, you may use my Hetzner Referral Link so you get € 20 in cloud credits