What is Cloud?

What is Cloud Computing?

What is the cloud?

A simplified explanation of what cloud computing could be:

Essentially, the idea starts with your ability to ‘rent’ space on a server owned and maintained by a third party. This can then be run and used, by you, remotely. This service is paid for on an on-demand basis. You don’t have to worry about the physical server’s location, maintenance, security or cost. They are ‘elsewhere’, out of sight and out of mind, they may as well be… in the cloud.

Now a more precise version of this explanation would be…

The ‘space’ you use on that physical server is referred to as a virtual server or machine. A virtual machine is a software computer that emulates an actual physical server. A portion of the physical server’s resources, such as CPU and RAM, are utilised by the virtual machine.

Cloud computing is a fully visualized environment based on this premise. The physical server, which is in the Cloud Provider’s data-centre, is divided into a ‘multi-tenancy’ architecture which enables users (or tenants) to share that physical server’s computing resources in the form of virtual machines. The virtual machines can be used for storage, running applications and much much more.

IaaS, PaaS, SaaS

Whilst on the topic of cloud computing there are 3 commonly referred to service models of cloud computing that may be worth familiarising yourself with these are:

Infrastructure as a Service (IaaS) – In this model, a cloud provider hosts the infrastructure components (and complementary services) traditionally used in an on-premises data centre.

Platform as a Service (PaaS) – With this model the underlying infrastructure is hidden from the user. PaaS is geared towards app hosting and development.

Software as a Service (SaaS) – This model is based on having software applications hosted in the cloud, users access via browser and don’t have to download the software to their local computer as it’s run on cloud servers.

Ok, so what is AWS then?

What is AWS?

AWS is an abbreviation of Amazon Web Services, a cloud platform owned by Amazon.

Yes, we mean the online retail giant Amazon. Who else is better suited to provide a globally available online platform of computing resources than a company built on a globally available online platform of computing resources?

AWS allow you to use a range of services within their virtual environment. These services can be categorized into domains (a broader group sharing similar functionality or use). The most widely used domains are:

• Compute                • Storage                      • Database

• Migration              •  Network                   • Management Tools

• Security                  • Messaging                •  Analytics

To better understand these domains we can look at some of the services available and what they are used for.

Compute

Services in the Compute Domain allow you to execute and run applications that require processing resources. Commonly used compute services on AWS are:

EC2 – Elastic Computing Cloud (or EC2) allows you to deploy virtual machines. You can run these instances whenever you want. Instances can be divided into categories. The categories describe what kind of workload each instance type is best suited for. For example, Accelerated Computing which is best for graphic-intensive applications. Or Memory Optimized which is ideal for real-time analytics and high-performance databases.

Lambda – This service is a staple of the ‘Serverless Computing’ services (we’ll go into more detail about serverless shortly). Lambda allows you to run functions in the cloud, without having to worry about the underlying servers.

Elastic Beanstalk – Often described as an orchestration tool, this service is used for automatic deployment and scaling of services and applications. You can simply upload your code and Elastic Beanstalk handles the rest automatically, including deployment, load balancing, monitoring and more.

LightSail – With LightSail quick deployments and simple workloads are ideal. Similar to EC2 but your ‘compute’ is automatically handled. This makes LightSail a more user-friendly option for small applications.

Analytics

The Analytics Domain is full of services that help you query, ingest, visualise and analyse your data. A few of the commonly occurring services in this domain are:

Athena – This is an interactive query service that makes it easy to analyse data in Amazon S3.

Kinesis  – This analytics service helps you to stream and analyse real-time data at massive scale.

QuickSight – QuickSight is a business analytics tool. It is used to create visualisations for your data.

Storage

The services and resources of the Storage Domain are all related to data storage (fairly straight forward right?). They vary in the types of storage they handle but the most commonly used services are;

S3 – Simple Storage Service (known as S3) was one of the initial services AWS launched with. S3 is an object storage service. This means the data uploaded to S3 is treated as an object, this object is made up of all the pieces of data that make up a file, the metadata and a custom identifier. An example of this could be storing a photo on S3. The pixels of the image (the data) the size, height, width, file type, the date it was created, etc (the metadata) and the identifier given to it when it is uploaded. These objects are then placed in ‘buckets’. A bucket is the name of a container in that you store your objects in. Also worth mentioning –  S3 is designed and built for 99.999999999% (11 9’s) durability. Durability basically means the data stored in S3 is safe, but this is different to availability (which would imply your data is safe and you can access it) See Here for more info on Availability [link to below].  

Glacier – Is a data archival service. It is extremely low cost and robust, being an extension of S3 build for data that needs to be archived and accessed very infrequently.

EBS – Elastic Block Storage (EBS) is used to provide block-level storage to the virtual machines created with EC2. EBS works alongside the virtual machines by acting in the same way as a physical hard-drive would in a physical computer. EBS volumes can be attached and detached from instances, a bit like you would do using a USB hard drive.

Storage Gateway – This service is used to connect on-premises software applications with cloud-based storage. It offers a secure way to integrate the computers in your office with AWS’s storage services. To the local computer, the storage looks like a normal Windows (or NFS) fileserver. But it’s backed by S3, which means you can have, potentially, limitless storage – with the frequently used data available locally at high speed.

Database

Services in this Domain are used for database related workloads. There are a range of services, focused on different kinds of databases and analytics available, a few of these are:

DyanmoDB – this is a NoSQL database service. It is both cost-effective and scalable so the data within can be queried just as easily with a high-level of traffic as with a low level of traffic. You just choose the amount of ‘read and write’ capacity you need and it scales appropriately to achieve that.

RDS – Relational Database Service (RDS) is used to set up, operate and scale relational databases in the cloud. It can be used to run MySQL, MSSQL, Postgres, Oracle, and others.

Aurora – is a managed database engine that’s compatible with either MySQL or PostgreSQL. It’s similar to RDS, but optimised to give even better performance and automatically scales its storage.

Migration

The Migration domain is used for transferring data to or from AWS. 

Services in this category include;

DMS – Database Migration Service (DMS) is used to migrate on-site databases to AWS. It can also be used to migrate from one type of database to another, for example, Oracle to MySQL.

SMS – Server Migration Service (SMS) allows you to migrate from on-site servers to AWS quickly and easily.

Snowball – Snowball is a service that uses a physical device for transferring massive amounts of data between on-premises and S3. 

Security

Services relating to Security, Identity and Compliance fall under this domain. They are used to authenticate and provide security to your AWS resources. Some of the services available in this domain are:

IAM – Identity Access and Management (IAM) allows you to create users and give them access to AWS resources and services in your account. You can create roles for users and apply permissions to those roles. For example, you could create a developer role with access to EC2, S3, RDS, etc but keep them restricted from billing. You can control access in a fine-grained way to specific resources — such as a particular S3 bucket or Lambda function.

KMS – Key Management Service (KMS) is a managed service that helps you to control the encryption keys used to encrypt your data.

Shield – This is a managed DDoS (Distributed Denial of Service) protection service. It offers protection from DDoS attacks for any websites or apps you may have hosted on AWS. Shield Standard is the free protection that AWS gives you against network-level attacks. Shield Advanced is a paid DDoS protection service.

Management Tools

Services in this Domain are used to manage other resources in AWS. A few of the most commonly used services in the management tool domain are:

CloudWatch – this service allows you to monitor AWS resources like Amazon EC2 and Amazon RDS DB Instances. It will also support custom metrics so that you can monitor the metrics that are most important to you. You can set up dashboards and alerts. Also, Cloudwatch logs allows you to centralise logging and aggregate these into metrics as well.

CloudFormation – CloudFormation allows you to provision all the infrastructure resources with either a text file or using JSON or YAML. 

CloudTrail – This service offers to keep track of API calls on your account – whether they’re made by users, or by other AWS services. This helps you to audit what’s been happening to your AWS resources.

Messaging

Services in the Messaging Domain are used for queuing, notifying or emailing and other aspects of messaging. The most commonly used of these services are;

SQS – Simple Queue Service (SQS) is a managed message queuing service that is used to de-couple and scale applications. This is useful for eliminating complexity and prevent message loss at large volumes as applications scale.

SNS – Simple Notification Service (SNS) this service can be used to send you notifications in the form of email and SMS.

SES – Simple Email Service (SES) is a cloud-based email sending service you can use to send bulk emails to your customers.

Networking & Content Delivery Network

Route 53 – Route 53 is a Domain Name System (DNS) web service for routing end-user traffic to Internet applications and websites.

CloudFront – is AWS’s Content Delivery Network (CDN) it uses AWS’s global infrastructure (more on this later) to deliver data, videos, apps and APIs to customers around the globe without long wait times.

Now we’re more familiar with some of the services and resources available on AWS we can further explore some terminology associated with AWS & Cloud computing.

Global Infrastructure

What is Amazon Web Services

One of the most common terms that come up when discussing AWS is Global Infrastructure. While the term itself is fairly self-explanatory there is a specific way in which this describes AWS. Global Infrastructure refers to the network of data centres AWS has around the world. These are divided into ‘Regions’ around the world. AWS is constantly expanding but at the time of writing, there are twenty-two ‘Regions’ in total with three more announced and soon to be added – Indonesia, Italy, and South Africa. The current regions are;

North America:

  • Ohio
  • Oregan
  • North California
  • North Virginia
  • Canada

South America:

  • São Paulo (Brazil)

Europe:

  • Ireland (UK)
  • London (UK)
  • Stockholm (Sweden)
  • Frankfurt (Germany)
  • Paris (France)

Middle East:

  • Bahrain

Asia Pacific:

  • Singapore
  • Beijing (China)
  • Sydney (Australia)
  • Tokyo (Japan)
  • Seoul (South Korea)
  • Ningxia (China)
  • Osaka (Japan)
  • Mumbai (India)
  • Hong Kong

In each Region, there are between 1 and 4 Availability Zones (AZs), currently, there are sixty-nine AZs. Each AZ is made up of one or more data centres – which house the physical servers. All AZs are interconnected with high-bandwidth, dedicated metro fibre providing low-latency (able to send a massive amount of data with minimal delay) networking between AZs.

The key benefits of this Global Network, available to you through AWS, are:

  • Performance: High performing, low latency cloud infrastructure with virtually unlimited capacity.
  • Availability: Regions are split into availability zones. By utilising these, you can design for redundancy and resilience, allowing uninterrupted performance. In addition, this is sometimes confused with Reliability or Durability but there are differences between them.
  • Security: AWS infrastructure is monitored 24/7 to help ensure the confidentiality, integrity, and availability of data and the ability to encrypt it.
  • Scalability: Customers can spin-up resources as they need them, deploying hundreds or even thousands of virtual servers in minutes.
  • Low Cost: Without having to use physical servers, costs can be massively reduced and beyond simple monetary costs, reductions are reflected in staff efficiency and increased growth. Being able to bring servers up and down to fit demand, means that costs can be reduced during quiet periods (see below). Costs in AWS tend to be OPEX rather than CAPEX.

What is Auto Scaling?

The best way to understand autoscaling is to first look at an example of a solution without autoscaling. In this example, say you have an eCommerce website that sells children’s toys. You host this website on a physical server (either on-premises or in a data centre). The problem with having this physical server is that it remains the same size regardless of need. When Christmas comes around, suddenly there are 5 times as many visitors to your site as normal. Your site cannot cope with the sudden increase in traffic and when people try to check out or purchase items the site crashes. Customers become frustrated and decide to purchase toys elsewhere. Other customers make it through payment but it crashes while going through delivery options. These customers are now frustrated and need refunding. Eventually, the site goes down altogether. Disaster! You are stuck under-capacity and losing out on your most profitable time of year.

What is Auto Scaling

Next time around you know this massive traffic peak is coming so you provision a much larger server that can cope with the traffic. Now you are prepared for Christmas, but it’s March and you have 5 times less traffic than your capacity can handle. That’s several months of paying for much more compute than you need. Several months of extra cooling and extra maintenance. It can be very costly to be over capacity in this way and rather than reaping the benefits of the holiday influx you spend the rest of the year eating into that potential profit.

What is auto-scaling

Now we understand the circumstances that can occur without the benefits of auto scaling, we can now address the question, what is auto-scaling and how does it resolve these issues?

The name auto scaling is a hint, the idea is to automatically scale your compute to meet capacity demand. With virtual machines you have the option to increase the size of the machine, you can also add new virtual machines almost instantly so with the earlier example, from January to November, you can keep everything small and cheap – then, come December, as traffic pours in, the compute will grow to meet the demand. In addition, because your virtual servers have the ability to scale up and down automatically, if there is a sudden peak of customers buying outdoor toys in the middle of summer, you aren’t caught off guard. You already have in place the ability to meet this unscheduled demand and to cut back again – therefore ensuring that you aren’t paying for unused capacity.

Auto Scaling

What is Load Balancing?

Another way to optimise your application for a better user experience (minimal downtime and fast loading speeds) is to use load balancing. You can replicate your application across multiple servers, then as traffic goes to your application, the traffic is balanced across the servers. This means that when one server starts to struggle to deliver content, the users are then presented with the content available from a different server (which is not under strain) to keep load times low.

What is High Availability / Fault Tolerant / Low Latency?

As we discussed earlier, AWS has a Global Infrastructure that lends to its High Availability, Fault Tolerance & Low Latency. When we describe something (for example an application you have built on AWS) as Highly Available, Fault Tolerant or having Low Latency this means, regardless of faults or issues that may occur, the application is not only consistently available for users to access but it will continue to serve content at an acceptable level. 

With a properly solutioned cloud environment, even devastating natural disasters cannot take your systems offline. There are strategies for Redundancy (like having your database on dynamoDB which is a multi-AZ service) and even Self-Healing (when a solution is architected in a way that when a virtual server is taken down, another is instantly brought up to replace it and ensure continued service).

Low latency services on AWS such as CloudFront, Amazon Web Service’s Content Distribution Network (CDN). CloudFront distributes content using ‘Edge Locations’ in regions around the world, this allows data, videos, applications and APIs to be accessed from locations nearer to the end-user. We see this in applications like mobile games where a developer may be based in London but the people playing their game may live in Brazil and Tokyo. CloudFront means they can play the same game together without the dreaded lag! If video games aren’t to your taste, another example would be watching a film on a streaming service with servers based overseas but not experiencing boring buffering!

What is the AWS Economy of scale?Economy of scale

AWS can buy servers at huge quantities for a low price and pass these savings on to their customers. The AWS Virtuous Cycle discusses this process in which AWS pass their savings and reductions on to their customers.

What is TCO?

Total cost of ownership – showing the cost savings and added value of AWS over on-premises physical servers. The main cost saving and value added comes from these main components;

  • You no longer have the cost of maintenance and up-keep of physical servers.
  • Operational Resilience (the cost of recovery)
  • Staff Productivity (staff can be re-assigned)
  • Business Agility (developing, release and reaction to market are quicker)

These expenses convert from CapEx (capital expenditure) to OpEx (operational expenditure).

What is serverless?

Taking the concept of Cloud Computing to the next level with severless rather than paying for a virtual machine (saving you the cost of buying a physical one), you only pay for the queries and compute functions you run, while they are running.