Cloud
"Cloud is the new OS"
Cloud is just a fancy name for systems (in this modern world, they are most likely distributed systems), with the hardware procurement and maintenance and many other things abstracted away from software developers.
Cloud can be public, meaning Amazon or Microsoft or Google is running your infrastructure. Or private, meaning you still fully own your data center but resource request and allocation is done through software UI. Or hybrid, taking the best parts of public and private cloud.
Based on the abstraction level, cloud offerings can be infrastructure as a service (IaaS), platform as a service (PaaS), and software as a service (SaaS).
Computation evolution: bare metal -> virtualized -> containerized -> cloud -> serverless.
Cloud Infrastructure
3 big players (60%+ combined market share):
- Amazon AWS
- Microsoft Azure
- Google Cloud Platform.
Other players (less than 10% of market share each):
- Outside of China:
- IBM / Redhat
- Oracle
- China: (the top 4 has >80% marketshare in China)
- Alibaba Cloud
- Huawei Cloud
- Tencent Cloud
- Baidu AI Cloud
Specialized:
- Okta: identity.
- DigitalOcean: compute.
- Backblaze: storage / backup.
- Snowflake: data warehouse.
- Hashicorp: infrastructure-as-code (IaC), enable IT collaboration and automation.
- CloudFlare: CDN, security.
- ServiceNow: task management.
- PagerDuty: Incident Response.
- Workday
- Salesforce
3 Key Categories
Each public cloud offers dozens of services. To make it easier to understand, think of these 3 key categories:
- compute: VM, containers, serverless functions, etc.
- storage: databases, datawarehouses, object stores, etc.
- networking: DNS, VPC, load balancing, etc.
Virtualization
Virtualization is the key enabler of the Cloud, so that the resources can be split and re-packaged to sell: virtual machine(hypervisor), virtualized (software-defined) storage and network.
Hyper-converged infrastructure (HCI): software-defined infrastructure, virtualizes all of the elements of conventional "hardware-defined" systems.
Read more about Virtualization.
Data Plane vs Control Plane vs Management Plane
The 3 Planes in distributed systems/clouds:
- Management Plane:
- manage and push configs to the control plane and data plane.
- directly used by admins, either through code (e.g. checkin some config files to Git repo then picked up by CI/CD) or UI (e.g. modify configs in cloud console web UI), or CLI / API.
- slow rate of change.
- Control Plane:
- input: configs from the Management Plane and signals from the Data Plane.
- state transition initiated by events:
- dataplane signals
- config change triggered by the user (from the Management Plane)
- time-triggered jobs, e.g. backups.
- state transition initiated by events:
- output: control instructions to the Data Plane.
- determine which path the data plane will take.
- ensures the data plane is operating with correct state as provided by the management plane (the configs) or a dynamic control algorithm (like network routing protocol).
- medium rate of change.
- input: configs from the Management Plane and signals from the Data Plane.
- Data Plane:
- the actual services, databases etc.
- controlled by the Control Plane.
- fast rate of change.
Availability Requirements: Data Plane > Control Plane > Management Plane.
How to provision cloud resources
- CLI (e.g. gcloud, aws)
- Web UI (Google Cloud Concole)
- REST API
- Terraform or other infrastructure-as-code tool
Events / Conferences
Follow the latest developments in the Cloud world:
- AWS re:Invent: usuall at the end of the year, in Las Vegas.
- Google Cloud Next: usually at the end of summer, in San Francisco.
Comparison Charts
https://cloud.google.com/free/docs/aws-azure-gcp-service-comparison