Today we’re kicking off a series that will tackle the basics of the Cloud – specifically Amazon Cloud. At this point, most everyone knows about the Cloud, but you may not know some of the basics, especially in regards to Amazon Web Services (AWS). The goal is to break down some of the most popular components of AWS in hopes that it becomes less overwhelming, aids in risk management and gives you a more solid understanding of what it means when your software application is running in the Cloud.
What is the “Cloud”?
The Cloud is any publicly available on-demand infrastructure or computing resource. On-demand is key. As an example, Amazon, one of the most well known technology companies around, offers a service called Amazon Web Services (AWS). For this conversation, I’ll focus on AWS terminology. Why? Because as of Q1 2018, Amazon still leads overall market share among cloud providers with Microsoft, showing strong growth but still far behind.
API & Elastic Compute Cloud (EC2)
Before we go any further, it’s helpful to understand a tiny bit about how cloud based software applications work. In our API 101 article, we mention that your phone makes contact with the Cloud via an API, which is pretty much just a URL that does fancy stuff. All of the work and logic that happens behind the API is hosted on a cloud service provider like AWS, typically using Elastic Compute Cloud (EC2) as the foundation.
As a systems engineer, I worked at several Software as a Service (SaaS) companies and we hosted all of our software in data centers. A data center is often a really huge building that contains a ton of computers, also known as servers. Anytime we wanted to expand or scale our software application we would buy more servers and rack them in the data center. There was much joy in the unboxing of new servers. That new hardware smell…like a new car. One of my teammates was even known to sniff the new servers, that’s right…you know who you are.
Sorry, back to the story. With AWS, a physical server equivalent is an Elastic Compute Cloud (EC2) instance. No need to purchase hardware, cable it and pay for power and location at a data center anymore – simply go to the AWS Console and create one on the fly. You may hear the term virtual machine or virtual server. An EC2 instance is Amazon’s version of a virtual server. A physical server, like those in the picture above, host several virtual servers. At a super high level, they’re basically special files that behave very much like a traditional server, except you can orchestrate these files, move them around to different physical servers, copy them, delete them and much more. Instead of looking at racks of servers, you login to the AWS Console, go to EC2 and have instances running like the one below:
Once an EC2 instance is setup and available, it operates very much like a physical server. You can login to the server, install software packages, reboot, shutdown and so on, just like a normal computer. For more scalable infrastructures, which is a topic for another day, we can take advantage of things like auto-scaling groups and other automation options that don’t require someone to login.
Amazon also provides a wide variety of services that make up Amazon’s total cloud service offering, “the AWS Cloud.” So when someone says they’re in the Cloud (with Amazon), they really have the software infrastructure hosted within one of Amazon’s massive data centers on Amazon physical servers. The same concept applies to Google Cloud and Microsoft Azure and several other cloud providers. It gets complicated because the terminology changes among the providers, as well as how they each approach their service offerings.
Understanding the basics can help you avoid any major issues down the road as your software architecture gets more complicated. Stay tuned to learn about Amazon Relational Database Service (RDS), in our next exciting post about AWS Cloud 101!