For those interested in or already working in the tech industry the importance of cloud technologies is undeniable. With this prevalence only growing, it’s become imperative to get acquainted with the cloud and its providers. In the spirit of this understanding, this will be a small series introducing the cloud, and its different providers and services.
First thing first what is “The Cloud”? The simplest definition of the cloud is on-demand computer resources delivered to you or your organization over the internet. The biggest provider of the cloud currently is Amazon with its Amazon Web Services also known as AWS. AWS services could be broadly characterized under compute, storage, networking, migration, machine learning, security, and others. Over the next few weeks, we’ll dive into these areas and more as we explore the services and the why behind them.
Amazon Elastic Compute Cloud(EC2)
The first services I would like to explore is AWS compute Services. Compute services as the name suggests provides compute power for a host of various needs. Starting with one of AWS's most important services is AWS EC2. Amazon defines EC2 as a web service that provides secure, resizable compute capacity in the cloud. Basically, these are your servers in the cloud. Eliminating the need for running your own physical servers presents many advantages. Reduction of cost and maintenance time. On demand scaling to match real-time needs. As well as job specific instance types. Instance types include:
General purpose instance – used for a range of workloads.
Compute optimized instance- used for compute-bound applications that benefit from high-performance processors.
Memory optimized instance- used for workloads that need fast performance for workloads that process large data sets in memory.
Storage optimized instance- used for workloads that require high, sequential read and write access to very large data sets on local storage.
Amazon EC2 also provides autoscaling that allows you to automatically add and delete EC2 instances according to preset conditions. EC2 also provides instances for Linux and Windows. You launch your EC2 machines from something called an Amazon Machine Image or AMI. An AMI provides the information required to launch an instance and a single AMI can launch multiple EC2 instances. AMI is made up of a few components. First is a template for the root volume of the instance or an EBS snapshot. Another is Launch permissions. These control access to the use of the AMI. And finally, block device mapping. Which is used to specify volumes to attach to the instance at its launch. When purchasing EC2 instances you have a number of options.
On-Demand Instances- Purchase, by the second.
Reserved Instances- Purchase upfront for a term of 1 or 3 years at a reduced cost.
Dedicated Instances- Purchase instances that run in Virtual Private Cloud on hardware that's dedicated to a single customer.
Spot Instances- Purchase spare EC2 instances that are available for less than the On-Demand price.
Dedicated Hosts- Purchase a physical host that is fully dedicated to running your instances.
Savings Plans- Purchasing a plan for a consistent amount of usage, in USD per hour, for a term of 1 or 3 years.
Capacity Reservations- Purchase reserved capacity for your EC2 instances in a specific Availability Zone(AZ) for any duration of time.
AWS App runner
The next service we’ll look at is AWS App runner. “App runner is a fully managed container service which allows developers to deploy containerized web applications and API services quickly and at scale”. Developers don’t need prior experience and can get up and running very quickly. App Runner will automatically build, deploy and scale to what you need. It automatically load-balances your traffic and includes fully managed TLS certificates. Even if you don’t use containers App runner can containerize your app if that becomes the direction you want to go. With that let's talk now about our third service.
Since we're already on the topic of containers let’s explore a service called Amazon Fargate. A serverless pay-as-you-go compute engine for your containers removing the headache of managing infrastructure. Fargate works with both Amazon Elastic Container Service (ECS) and Amazon Elastic Kubernetes Service (EKS) two containers’ services we’ll dive deeper into later. This service will handle all provisioning of containers from automatically scaling to load balancing traffic and optimize container availability through its managed scheduling.
Amazon LightSail is Amazon’s free cloud server. LightSail is used to build custom sites and small business apps, as well as being a great test environment. These virtual private servers will automatically configure access, networking, and security environments and comes with preconfigured Linux and Windows application stacks. The ease of use is matched only by its ease of billing. One simple price which includes a free tier.
AWS Elastic Beanstalk
Let us continue our exploration of AWS computes with AWS Elastic Beanstalk. Elastic Beanstalk is a service used to quickly and easily deploy and scale web applications and services. Built to automatically deal with the details of deploying like capacity provisioning, auto-scaling, load balancing, and application health monitoring. Beanstalk can handle many web stacks and languages like Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker. Great for anyone with no experience with the cloud but who wants to deploy to AWS cloud.
The following service is one of the most used serverless compute services provided by Amazon, AWS Lambda. Lambda can run your code without you having to provision or manage infrastructure. A pay-as-you-go service that only charges you for the compute time that you use. Lambda can handle requests at any scale with high availability. It’s a serverless service so you don’t have to concern yourself with provisioning or managing servers. Lambda works by triggering events called invocations. Lambda function events can be triggered by nearly anything. The service is run in an isolated environment with its own file system view and resources. Your code is kept safe as it is stored in S3 and encrypted at rest.
Our tour now takes us to AWS Batch. Batch is a service that enables you to run batch workloads in the cloud. Batch computing allows organizations or individuals access to large amounts of compute resources. This is a fully managed service that can help you with workloads of any size. New Batch environments can be started in new or existing VPCs. Batch environments are made of a few components namely a job, job definitions, job queue, and compute environment. A job is a unit of work you submit to a batch. A job definition specifies how to run the job. The job queues are where the job is held until it's scheduled onto a compute environment. Compute environments are a set of resources that can be managed or unmanaged that are used to run jobs.
Lastly, we close out part one of AWS compute services by discussing AWS Outpost Family. This service is different than the previous services we looked at in that this is a hybrid option. Outpost Family allows you to run AWS infrastructure and services on premises. The family consists of two members Outpost Rack and Outpost Server. Outpost Rack is for when you have applications that have low latency or local data processing requirements. It also can be used to securely store and process customer data that needs to remain on premises or in countries where there are no AWS regions. You can also use it if you must run data intensive workloads and process that data locally when transmitting data to AWS Regions is expensive and wasteful. Outpost Servers is the beefer option. It can come in two versions 1U and 2U rack-mountable servers. Outposts servers are delivered directly to you and can be installed by your organization or a 3rd party vendor. Outpost servers will deliver networking and compute services for places with space and capacity constraints.
This concludes our tour of AWS compute services for now. As you can see Amazon provides a range of compute services for a host of use cases and situations. Be on the lookout for part two and other future articles on programming and the cloud. Keep learning.