How does the Cloud work?
The basics for all cloud infrastructure is virtualisation technology, which is used to separate resources from the underlying physical hardware. These resources are then allocated and provisioned to the users through the use of automation software and management tools. The user then typically uses a cloud specific interface to compose these resources into the desired business application.
Cloud infrastructure components
Every cloud is build on four basic components, which are integrated into a single architecture and presented to the end user through some one or more interface, like a Web GUI, programmatic interfaces or complete solutions. Based on these basic services, cloud providers build extensive service catalogues, augmenting the underlying infrastructure and providing the building blocks for cloud native applications.
Even as hardware is usually not associcated with clouds, everything is running on some hardware, in a data centre somewhere. When utilising the public cloud, the hardware could be on a different continent than the users, or it could be hardware owned by, and dedicated to you, in Redpill Linpros Nordic Cloud "Bring Your Own Hardware" platform.
Typical hardware components besides servers are networking equipment like switches, routers and firewalls, storage solutions or anything else that is necessary to provide the cloud services. Virtualisation across all hardware components helps with abstracting and distributing these resources to all users of the cloud.
Virtualisation separates IT services and functions from the underlying hardware. Software on top of the physical hardware abstracts the resources, such as memory, CPU power, storage or network functions. The most relevant Open Source Software for virtualisation are KVM and Xen.
These virtual resources are then pooled together, and allocated to an user for consumption. Together with supporting services like automatic resource management, orchestration, authentication and authorisation, monitoring and billing, this is considered a cloud.
Storage in the cloud can be somewhat different from traditional storage, and comes in different flavours. Broadly speaking, these can be divided into block storage and object storage. Block storage usually organises data in folders and files, and requires a virtual compute instance or similar service for access. Object storage adresses individual blobs or objects, which are accessed via a standardised HTTPS API.
Virtual compute resources (compute instances) are sometimes provided with integrated storage, often based on SSD disks. One caveat of this type is that you usually won't get any redunancy at the storage level. The data stored on these disks is considered ephemeral, and the application architecture needs to take this into account. For solutions that require persistent storage, different services that provide redundant block storage are available, usually with different levels of availability and performance parameters. These types of storage are typically used in conjunction with virtual instances, in the same manner as traditional disk arrays or SAN volumes - but without the need to maintain the underlying infrastructure, and often with better resilience and performance.
The most well-known API for object storage is Amazons S3 API. Object storage is usually extremely resilient, with data distributed over several independent locations by the cloud provider. On the other hand, object storage services have generally lower performance than block storage services. Another important difference is price - object storage services are priced much lower than other solutions, and often very attractive for high-volume storage requirements. Another advantage is the possibility to access data via HTTPS, which makes object storage the perfect solution for many web-based applications.
As with the other components, networking services are build around virtualised resources based on physical components, with logical separation between users of the cloud. Connectivity between the different cloud services is provided based on virtual networks and routers, and security is often built in by means of secure standard configurations. Additional services like virtual load balancers, global traffic distribution solutions or CDN solutions are just a few examples of networking services available on the cloud.