Basic Concepts

Learn about AWS and cloud basics, and learn about CLIs, SDKs, and the AWS Console.

This chapter is meant to give you a brief overview of AWS and the ecosystem it operates in. It’s always good to know how a business is positioned if we plan to invest significant time into learning its services.

AWS stands for Amazon Web Services and is a subsidiary of Amazon. According to Statista 1^1, AWS is the market leader of the $150 billion cloud market with a 32% market share. AWS had global revenue of $46 billion in 2020.

AWS was started at the early 2000s to improve the internal developer experience and reduce the amount of heavy lifting their developers needed to do. A lot of development time was spent on recreating common infrastructure, so AWS sought to improve this by providing a common platform to work with. In August 2006, AWS Elastic Compute Cloud was publicly launched to give other developers access to the infrastructure. Since then, AWS has grown rapidly to become the market leader of cloud services and now offers over 200 different services. 2^2

Other notable cloud providers

The cloud space is growing rapidly, and so is the number of companies providing cloud services. The closest competitors to Amazon and AWS are Microsoft with Azure and Google with GCP, which offer very similar services.

Press + to interact
Azure and Google Cloud logos
Azure and Google Cloud logos

Alibaba Cloud, IBM Cloud, Tencent Cloud, and Oracle Cloud are more recent offerings of other large tech and infrastructure companies, showing that the market is still rapidly growing and evolving.

Press + to interact
Other notable cloud providers
Other notable cloud providers

Furthermore, there are a large number of companies offering some of the services AWS offers:

  • Content delivery networks (CDNs) like Cloudflare and Fastly compete with AWS CloudFront.
  • Equinix and Rackspace are examples of companies offering physical servers on demand, but without all the other services AWS offers.
  • Okta competes with AWS Cognito for user authentication and authorization.

Many other companies offer services that are implemented to be compatible with AWS (for example, Backblaze B2 and Cloudflare R2 are emulating some AWS S3 features), so learning AWS will make it easy to understand offerings from other cloud providers.

Before we dive into this course, let’s get a better understanding of what a CLI is because we’ll be using it throughout the course. We’ll also discuss the difference between a CLI and an SDK.

CLI vs. SDK

A command-line interface (CLI) processes commands via text, as opposed to graphical user interfaces, like most desktop or mobile applications (e.g., PowerShell in Windows, bash or zsh in the macOS and bash in Linux). The terminal in this course uses the bash shell. We’ll use AWS CLI, which is the command-line interpreter that parses our input when we enter a line of text starting with aws in our shell.

A software development kit (SDK), on the contrary, is used to facilitate the creation of applications. In other words, it’s used to develop applications, while a CLI is used to interact with an application. We can consider a CLI as a user interface and an SDK as a component used in development.

Fun fact: The AWS CLI is actually developed with the AWS SDK for Python (Boto). We can see the code of the AWS CLI on GitHub.

AWS CLI vs. AWS Console

The AWS CLI and the AWS Console serve a similar purpose—to manage resources on AWS. While the AWS CLI is text based, the AWS Console can be considered a graphical interface. Almost all actions can be performed either through the AWS CLI or the AWS Console with the same outcome. We’ll see the AWS CLI and AWS Console side by side in some lessons to understand the similarities.

Why use a CLI?

  • It’s usually faster to interact through a CLI (if we know the application well).
  • It works on systems without a graphical user interface (like servers).
  • We can save and repeat commands consistently because all parameters are stored as part of the command.
  • We can integrate it into scripts to automate more complex tasks.

There are some disadvantages, though:

  • Unlike a graphical interface, it isn’t obvious which commands, subcommands, or parameters are available and which format they use. There are differences between various CLI programs as well.
  • Normally, we won’t be asked to confirm a dangerous operation. So we should always double-check our command.

For both disadvantages, we will learn some tricks to avoid them.

Summary

The CLI has a steeper learning curve because it isn’t obvious what it can do by just looking at it, but once we master it, we’ll be faster than if we use a graphical user interface.