LTKA #7: Cloud Computing
Connected Services and Cloud Computing: Cloud Computing. Cloud Computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.
LTKA #7: Cloud Computing:
Cloud Computing (also called simply, “the cloud”) describes the act of storing, managing and processing data online - as opposed to on your own physical computer or network (Ref: Rackspace).
Cloud Computing is the on-demand delivery of compute power, database storage, applications, and other IT resources through a cloud services platform via the internet with pay-as-you-go pricing (Ref: AWS).
Cloud Computing, often referred to as simply “the cloud”, is the delivery of on-demand computing resources (everything from applications to data centers) over the Internet on a pay-for-use basis.
The first cloud computing services are barely a decade old, but already a variety of organisations - from tiny startups to global corporations, government agencies to non-profits - are embracing the technology for all sorts of reasons.
NIST (National Institute of Standard and Technology) Definition
- 5 Essential Characteristics
- 3 Service / Delivery Models
- 4 Deployment Models
- Key Enablers: fast networks, powerful servers, high-performance virtualization etc.
Computing as a service over the Internet
- Elastic Resources : Scale up or down quickly and easily to meet demand
- Metered Service : You only pay for what you use
- Self Service : All the IT resources you need with self-service access
How does it work?
- Cloud computing services all work a little differently, depending on the provider.
- Many provide a friendly, browser-based dashboard that makes it easier for IT professionals and developers to order resources and manage their accounts.
- Some cloud computing services are also designed to work with REST APIs and a command-line interface (CLI), giving developers multiple options.
Benefits
- Cost: Cloud computing eliminates the capital expense of buying hardware and software and setting up and running on-site datacenters - the racks of servers, the round-the-clock electricity for power and cooling, the IT experts for managing the infrastructure.
- Speed: Most cloud computing services are provided self service and on demand, so even vast amounts of computing resources can be provisioned in minutes, typically with just a few mouse clicks, giving businesses a lot of flexibility and taking the pressure off capacity planning.
- Scalability: The benefits of cloud computing services include the ability to scale elastically. In cloud speak, that means delivering the right amount of IT resources - for example, more or less computing power, storage, bandwidth - right when its needed and from the right geographic location.
- Productivity: On-site datacenters typically require a lot of “racking and stacking” - hardware set up, software patching and other time-consuming IT management chores. Cloud computing removes the need for many of these tasks, so IT teams can spend time on achieving more important business goals.
- Performance: The biggest cloud computing services run on a worldwide network of secure datacenters, which are regularly upgraded to the latest generation of fast and efficient computing hardware. This offers several benefits over a single corporate datacenter, including reduced network latency for applications and greater economies of scale.
- Reliability: Cloud computing makes data backup, disaster recovery and business continuity easier and less expensive, because data can be mirrored at multiple redundant sites on the cloud provider’s network.
Services / Types of Cloud
Most cloud computing services fall into three broad categories: Infrastructure as a Service (IaaS), Platform as a Service (PaaS) and Software as a Service (Saas).
These are sometimes called the Cloud Computing Stack, because they build on top of one another.
- IaaS: The most basic category of cloud computing services. With IaaS, you rent IT infrastructure - servers and virtual machines (VMs), storage, networks, operating systems - from a cloud provider on a pay-as-you-go basis.
- PaaS: PaaS refers to cloud computing services that supply an on-demand environment for developing, testing, delivering and managing software applications. PaaS is designed to make it easier for developers to quickly create web or mobile apps, without worrying about setting up or managing the underlying infrastructure (and other services) needed for development.
- SaaS: SaaS is a method for delivering software applications over the Internet, on demand and typically on a subscription basis. With SaaS, cloud providers host and manage the software application and underlying infrastructure and handle any maintenance (eg. upgrades, patching).
Deployments / Types of Cloud
Not all clouds are the same.
There are three different ways to deploy cloud computing resources: public cloud, private cloud and hybrid cloud. NIST has defined another type of deployment: community cloud.
- Public Cloud: Public clouds are owned and operated by a third-party cloud service provider, which deliver their computing resources like servers and storage over the Internet. With a public cloud, all hardware, software and other supporting infrastructure is owned and managed by the cloud provider. You access these services and manage your account using a web browser.
- Private Cloud: A private cloud refers to cloud computing resources used exclusively by a single business or organisation. A private cloud can be physically located on the company’s on-site datacenter (on-site); Some companies also pay third-party service providers to host their private cloud (outsourced); A private cloud is one in which the services and infrastructure are maintained on a private network.
- Hybrid Cloud: Hybrid clouds combine public and private clouds, bound together by technology that allows data and applications to be shared between them. By allowing data and applications to move between private and public clouds, hybrid cloud gives businesses greater flexibility and more deployment options.
Uses of Cloud Computing
You are probably using cloud computing right now, even if you don’t realise it. Why??
If you use an online service to send email, edit documents, watch movies or TV, listen to music, play games or store pictures and other files, it is likely that cloud computing is making it all possible behind the scenes.
Examples of the things we can do with the cloud:
- Create new apps and services
- Deliver software on demand
- Store, back up and recover data
- Analyse data for patterns and make predictions
- Host websites and blogs
- Stream audio and video
Common Interpretations
- Rebranding of Web 2.0: Rich, Interactive, Multi-Device (Web) Applications; The network is the computer; DIY Style/Interface
- Utility Computing: Metered Computing Service (Pay-as-You-Go); Dinamic Resource Provisioning (Scaling)
- Everything as a Service: Mainstream: IaaS, PaaS, SaaS; Others: BaaS, ..
- Large Data (Big-Data): Planet-Scale Services; Data Capture / Analytics / IoT (Science, Engineering, Commerce, Society)
Cloud Infrastructure
Cloud infrastructure is the collection of hardware and software which is needed to provide cloud services e.g. IaaS, PaaS or SaaS.
Data-Center
A dedicated place/building that houses IT infrastructure. A warehouse-sized “computer”. A single data center can easily contain 10,000 racks with 100 cores in each rack (1,000,000 cores total). This figure tends to increase over time.
Cloud Software
To deliver cloud services we have to run cloud software to abstract and manage the underlying hardware infrastructure.
The software can be proprietary (e.g. Microsoft Azure, GCP, AWS) or open-source (e.g. OpenStack, Cloud Foundry). Here we’ll shortly address OpenStack and Cloud Foundry.
Cloud Software - OpenStack
OpenStack is an open source cloud operating system that controls large pools of compute, storage, and networking resources, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface.
Resources are made accessible to developers through APIs. OpenStack can be used to manage resources in a single data center or across multiple data centers (regions).
Cloud Software - Cloud Foundry
Cloud Foundry is the industry standard open source cloud application platform for developing and deploying enterprise cloud applications.
It automates, scales and manages cloud apps throughout their lifecycle. Applications can be written in just about any language and are deployed in container images on any infrastructure.
Public Cloud Examples
AWS
Amazon Web Services offers a broad set of global cloud-based products including compute, storage, databases, analytics, networking, mobile, developer tools, management tools, IoT, security and enterprise applications.
These services help organizations move faster, lower IT costs, and scale. AWS is trusted by the largest enterprises and the hottest start-ups to power a wide variety of workloads including: web and mobile applications, game development, data processing and warehousing, storage, archive, and many others.
GCP
With Google Cloud Platform, you can build, test, and deploy applications on Google’s highly-scalable and reliable infrastructure for your web, mobile, and backend solutions.
Cloud Platform offers a full spectrum of cloud products and services for compute, storage, networking, big data, machine learning, operations, and more.
Cloud Platform consists of a set of physical assets, such as computers and hard disk drives, and virtual resources, such as virtual machines (VMs), that are contained in Google’s data centers around the globe.
In cloud computing, what you might be used to thinking of as software and hardware products, become services. These services provide access to the underlying resources. The list of available Cloud Platform services is long, and it keeps growing. When you develop your website or application on Cloud Platform, you mix and match these services into combinations that provide the infrastructure you need, and then add your code to enable the scenarios you want to build.
Azure
Microsoft Azure is a flexible, open, and secure public cloud built for business. Access a broad collection of integrated services that accommodate many languages and operating systems. Use world-class tools to accelerate a wide variety of app development and delivery capabilities.
Azure is a complete cloud platform that can host your existing application infrastructure, provide compute-based services tailored for your application development needs, or even augment your on-premises applications. Azure integrates the cloud services that you need to develop, test, deploy, and manage your applications - while taking advantage of the efficiencies of cloud computing.
By hosting your applications in Azure, you can start small and easily scale your application as your customer demand grows. Azure also offers the reliability that’s needed for high-availability applications, even including failover between different regions.
References
- Jimmy Lin, Big Data Infrastructure, Univ. of Waterloo, 2017
- Giordano Tamburrelli, Windows Azure Platform
- A. Haeberlen, Z. Ives, Scalable and Cloud Computing, Univ. of Pennsylvania, 2013
- GCP Resources: Google Cloud Platform Overview, GCP Tech Talk by @joeint; Tutorial of Google Cloud Platform
- AWS Resources: AWS Introduction and History, AWS Free Tier, AWS | Start Now
- Azure Resources: Get started guide for Azure developers, An Azure Overview and Perspective, 1. Azure Training Courses | Microsoft Learning
- IBM cloud technologies