Technical discussions about distributed systems are in the Distributed Systems section. This section is mostly about
- the offerings of the public clouds, both software and customized hardware
- options and notes for hybrid or private clouds
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.
There are only 3 big players you need to be aware of: Amazon AWS, Microsoft Azure, and Google Cloud Platform. However if you are in China, Alibaba Cloud is the safe bet.
Other smaller players are neglectable, Oracle is unlikely to catch up with the big 3, and whether IBM's Redhat acquisition can move the needle is yet to be seen.
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.
It is estimated that the global market size of cloud computing is more than $100 billion around 2020, and will continue to grow rapidly in the coming years.
Amazon AWS's 2018 revenue was $25.7 billion, however Azure and GCP do not separately report the revenue from cloud computing.
Google's 2019Q2 earnings reported 28 billion ads revenue and 4.4 billion "other" revenue (GCP should be part of it), so once cloud business is full blown, it can be as large as its ads business.
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
- GCP vs AWS: https://cloud.google.com/docs/compare/aws#service_comparisons
- GCP vs Azure: https://cloud.google.com/docs/compare/azure#service_comparisons
The 3 Planes in distributed systems/clouds:
- Management Plane: WRITE configs, either through code or (cloud) console (for human use, infrequent)
- Control Plane: can be modified by Management Plane; distribute, sync and READ configs in realtime from Data Plane, e.g. admission control, telemetry reporting, etc (for machine use, as frequent as API calls)
- Data Plane: the actual services (APIs), databases etc. Call Control Plane to get configs.
PUE: power utilization efficiency:
- PUE=1.0: all power is used by servers
- PUE=2.0: half of power is used by the building, half by servers