101

Cloud Computing is:

the on-demand delivery of compute power, storage, databases, applications, artificial intelligence, machine learning and other IT resources over the internet with pay-as-you-go pricing.

The term “Cloud” is generally used to encompass this technology, ecosystem of platforms and tools as well as ways-of-working and architectural approaches that make the best use of cloud technology.

Cloud services should be “OSSM”:

  • On-demand: services are available when requested, being provided in seconds/minutes not days and weeks
  • Self-service: users can create, manage and destroy resoruces themselves, often via an API
  • Scalable: users can choose the amount of resources they want, increasing and decreasing them in line with their needs
  • Measurable: service usage is measured and monitored supporting logging, auditability and cost management

Cloud is often decribed in terms of IaaS, PaaS and Serverless.

Cloud Stacks
Edit this page

IaaS

“IaaS” refers to Infrastructure-as-a-Service which is the foundation of cloud computing. IaaS provides compute (VMs), Networking (routes, firewalls, dns) and storage (object stores, databases) over the network created via APIs and usually GUIs.

IaaS enablez the ability to create environments (such as a server configuration) deterministically, based on rules. This means that environment creation becomes predictable, and testable, rather than a variable unknown.

Good IaaS services must be API based to allow development teams to incorporate distribution, load balancing, resilience, fail-over and configuration into the development and build process. Because of the necessary speed, amount of change and quality advantages IaaS provisioning, configuration and tear-down should be automated.

IaaS is sometimes characterized as treating servers as cattle, not pets. They tend not to have special names and designated purposes anymore. Servers are treated as utilities, if one goes wrong we simply turn it off and stand up a new server, with the exact same configuration, in its place.

IaaS is currently best provided by Public Cloud providers rather than built on premises.

Edit this page

PaaS

Platform-as-a-Service (PaaS) is a step on from Infrastructure-as-a-Service as it provides a configured environment to build software and services over the network.

PaaS allows developers to create applications based on tools provided by the PaaS service. Platforms are made from previously optimised features, packages and configuration ranging from Operating Systems, execution environments, server management software, design and development tools and hosting tools.

Platforms can build on basic infrastructure to create development, test, integration and deployment environments. As environments become more rules based and API driven it becomes possible to wrap up an environment (virtualized hardware, configuration and software) into a single package and simply move it from place to place. This “Containerization” means that as well as considering the progressing of changes during development we can also progress environments, or even networks of environments, as iterative development builds.

PaaS involves taking the grunt work out of development by providing, ideally portable, well configured server, development and deployment environments that are already hooked up to common Enterprise Architecture Mechanisms such as authentication, logging, security, asset management etc.

Edit this page

Serverless

Serverless refers to a class of cloud services that require minimal or zero server management, configuration, patching, provisioning or scaling actions by the user.

The most common examples are in the compute space with “serverless functions” such as AWS Lambda, Azure Functions or Google Cloud Run where you can write code and have it respond to events without any management of cloud resources. To learn more about serverless computing, try Tutorial: AWS S3 Lambda

Serverless doesn’t just apply to short-lived compute though, it also applies to:

  • Serverless container management and execution
  • Databases (e.g. AWS DynamoDb, Azure CosmoDB)
  • Storage (e.g. AWS S3, Azure Blob Storage)
  • Other managed services such as AI, Search, Messaging, Queueing etc.
Edit this page

Benefits

Cloud Computing brings the following benefits for organisations:

  • Focus on business value Increase in focus on solving business problems instead of managing infrastructure
  • Organsiational Agility Innovation and development cycles are sped up making the organisation more response to change and disruption. Fast provisioning of services enabling experimentation without large up-front costs
  • Resource Efficiency Only pay for what you use, scaling up and down as business needs change increases efficiency, but does not necessarily reduce costs
  • High-level Architecture the leading Cloud platforms offer consumable high-level services and capabilities around running code, artificial intelligence, queues, databses etc. These provide a set of bigger lego building blocks for creating new business value
  • Immutable infrastructure The ability to create clean repeatable environments for testing and deployment
  • Automation Automation of build, configuration, deployment, scaling and support via APIs
  • Compliance The automation of infrastructure, means that changes to assets and data (intended or otherwise) are all logged improving security and compliance.
  • Democratisation of Infrastructure Democratisation of large scale infrastructure as individuals can provision the sort of large scale resources that used to be only availabe to large enterprises
  • Democratisation of Innovation Democratisation of vendors innovations in areas such as machine learning, analytics, automation, artificial intelligence etc.
  • Reduction in complexity For large enterprises adoption of public cloud means a reduction in 2nd order complexity and costs of managing datacentres, cooling, safety etc.
Edit this page

Mental Model

We can think of Cloud services in three levels:

  • Service - a fully managed service, the easiest to use, but the least configurable, provides Serverless offerings
  • Platform - a semi-managed approach providing wizards, lots of configuration options for common use cases, but not complete control, often on a PaaS
  • Infrastructure - building what you need yourself from IaaS, total control, but hardest to use
Cloud Mental Model

We can apply these levels to different aspects of Cloud computing such as compute, storage, AI etc. Generally speaking, using the higher-level offerings at the Service and Platform level will be quicker and easier than building everything up yourself from the Infrastructure level.

When solving problems with cloud computing, start at the top, and only work downwards if you really have to. Start by asking:

  • What native cloud service does this for me?
  • What marketplace/serverless solution does this for me?
Edit this page