What is Cloud Computing?
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?
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.
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.
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;
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.
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.
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.
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?
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.