Home An Introduction to Amazon Web Services (AWS)
Post
Cancel

An Introduction to Amazon Web Services (AWS)

Amazon Web Service(AWS) is the most popular cloud provider service nowadays. As a software engineer in Amazon, I use AWS everyday. There are hundreds of services provided by AWS, but most of them are not used often. I can feel the pain when someone is new to AWS and has a difficult time choosing the right service for themselves.

In this blog, I pick the services that are used frequently in my everyday work and provide an overview and their use case of each one. Hopefully this can provide you some guidance and save you some time in browsering documentations.

There are two types of services in AWS: Foundational services and Application Services. Foundational services represents the bottom layer used almost everywhere, which can be further divided to Network, Compute, Storage and Security. Application services include Database, Developer tools, Analytics, Application integration, Operation and Machine Learning.

aws services

Foundational Services

Network

VPC

Virtual Private Cloud, aka. VPC, enables you to create a virtual network, which ensembles the traditional network. Your resources, like EC2, are laid in a VPC. You can configure rules for both inbound and outbound traffic, which guarantees your service’s security in network level.

Route 53

Route 53 is a Domain Name System(DNS) web service. It basically has 2 frequently used functionalities: register domain names and route internet traffic to your resources for your domain.

CloudFront

CloudFront is a Content Delivery Network(CDN) service, which improves speed of delivering contents to end user. Your request to retrieve contents is routed to the edge location which is near to you and provides the lowest latency instead of to origin by using CloudFront. It is commonly used in front end websites to deliver your.html, .css, .js files to your server with best possible performance.

API Gateway

API Gateway is an API management web service which sits between the client and a collection of backend services. API acts as the “front door” for applications to access backend and storages. API Gateway makes it easy to create, publish, maintain and monitor APIs.

App Mesh

App Mesh is a service mesh that makes it easy to monitor and control services, especially when your application consists of multiple micro-services. App Mesh provides application-level networking and can be viewed as an infrastrcture layer dedicated to handling service-to-service communication. For example, an application has 2 microservices, A and B, where A routes traffic to B. If a new version of B2 is developed, App Mesh can easily distribute traffic from A to both B and B2. After B2 is fully tested, 100% traffic can be dialed up to B2. This process requires no application code change using App Mesh.

Cloud Map

Cloud Map is a cloud discovery service, which allows you to register any application resources, like microservices, databases, and other cloud resources, with custom names. It also maintains the most up-to-date locations of these dynamically changing resources. One common use case is tightly integrating with ECS to track each container task.

Storage

S3

S3 is short for Simple Storage Service, which can store customers’ data for a range of use cases, such as data store of enterprise applications, websites… Data can be stored in S3 and loaded to backend services in real time. S3 provides access control, version control and lifecycle, which facilitates management of data.

EFS

EFS is short for Elastic File System, which is a fully-managed shared file storage service. It can be used to extend storage on your instance without replacing host. It is fully-managed so that you do not worry infrastructure setup. Also scalability and high availability are benefits provided by EFS.

EBS

EBS is short for Elastic Block System, which is a block-level storage service and is basically designed to be used exclusively with EC2 instances. Addtional volumes are provided by EBS and can be mounted to EC2 instances. It is similar to a separate hard drive.

Compute

EC2

EC2’s full name is Elatic Compute Cloud, which is the most commonly used service. It provides scalable computing capacity and eliminates your need to invest in hardware. An instance resembles a virtual server. Multiple instance types with various CPU, memory, storage configuration and multiple preconfigured templates, known as Amazon Machine Images(AMIs), that bootstrap the instance including operating system and additional software can be chosen when launching an instance.

ECS

ECS is short for Elastic Container Service, which is a highly scalable container management service. Compared with EC2, you deal with containers instead of instances. With ECS, your containers are defined in a task definition that you use to run an individual task or task within a service. You can run your tasks and services on a serverless infrastructure that’s managed by AWS Fargate, where instance is invisible to customer. Alternatively, for more control over your infrastructure, you can run your tasks and services on a cluster of Amazon EC2 instances that you manage.

Lambda

Lambda is an example of SaaS model. It allows you run code without provisioning or managing servers. With Lambda, you can run code for virtually any type of application or backend service. When you run Lambda function, compute resources are assigned for your need. When Lambda is not running, compute resources are automatically released, which means you pay only for the compute time that you consume - there is no charge when your code is not running. It worths mentioning that infrastructure is invisible to customer.

ECR

ECR is short for Amazon Elastic Container Registry. It is an AWS managed container image registry service, which usually works together with container services, such as ECS, EMR… ECR supports private repositories with resource-based permissions using AWS IAM. ECR repositories can save docker images which are deployed to containers.

Batch

AWS Batch helps you to run batch computing workloads on the AWS Cloud, which lets developers, scientists, and engineers efficiently run hundreds of thousands of batch and ML computing jobs while optimizing compute resources. You can create AWS Batch compute environments within a new or existing VPC. After a compute environment is up and associated with a job queue, you can define job definitions that specify which Docker container images to run your jobs.

Security

IAM

IAM is short for Identity and Access Management. It is a web service that helps you securely control access to AWS resources. You use IAM to control who is authenticated(signed in) and authorized(has permissions) to use resources.

KMS

KMS is short for Key Management Service that makes it easy for you to create and control the cryptographic keys used to protect your data. This is commonly integrated with most other AWS service, such as S3, to encrypt your data.

Cognito

Amazon Cognito provides authentication, authorization, and user management for your web and mobile apps. Your users can sign in directly with a user name and password, or through a third party such as Facebook, Amazon, Google or Apple. It is commonly used in frontend applications

Application Services

Database

DynamoDB

Amazon DynamoDB is fully managed NoSQL database service. DynamoDB lets you offload the administrative burdens of operating and scaling a distributed database so that you do not have to worry about hardware provisioning, setup and configuration, relication, software patching, or cluster scaling. With DynamoDB, you can create database tables that can store and retrieve any amount of data and serve any level of request traffic.

RDS

RDS is short for Relational Database Service, which is a web service that makes it easier to set up, operate, and scale a relational database.

ElastiCache

ElastiCache is a web service that makes it easy to set up, manage, and scale a distributed in-memory data store or cache environment in the cloud. It supports the Memcached and Redis cache engines. For example, existing applications that use Redis can use ElastiCache with almost no modification.

Developer Tools

CodeCommit

CodeCommit is a version control service hosted by AWS. You can use it to host private Git repositories. It is familiar to users of GitHub.

CodeBuild

CodeBuild is fully managed build service in the cloud. It compiles your source code, runs unit tests, and produce artifacts that are ready to deploy, without provisioning, managing and scaling your own build servers. Build environments of popular programming languages and build tools such as Apache Maven, Gradle are provided.

CodeDeploy

CodeDeploy is a deployment service that automates application deployments to Amazon EC2 instances, on-premises instances, serverless Lambda functions, or Amazon ECS services.

CodePipeline

CodePipeline is a continuous delivery service you can use to model, visualize, and automate the steps required to release your software. You can quickly model and configure the different stages of a software release process.

X-Ray

AWS X-Ray is a service that collects data about requests that your application serves, and provides tools that you can use to view, filter, and gain insights into that data to identify issues and opportunities for optimization. It is a good choice to integrate with API applications to generate a detailed service map. The service map can be used to identify bottlenecks, latency spikes, and other issues.

Analytics

Redshift

Amazon Redshift is a fully managed data warehouse service in the cloud. You can upload your data set and then perform data analysis queries. A data warehouse is different from a database in the sense that it is more optimized for analytical queries rather than transactional queries.

Athena

Amazon Athena is an interactive query service that makes it easy to analyze data directly in S3 using standard SQL

ElasticSearch

AWS ElasticSearch service was renamed to Amazon OpenSearch service. It unlocks real-time search, monitoring, and analysis of business and operational data for use cases like application monitoring, log analytics, observability, and website search. Basically, ElasticSearch is a NoSQL database to store the unstructured data in document format. One common use case is ELK stack, which leverages E = ElasticSearch, L = Logstash, K = Kibana to aggregate logs from all your systems and applications, analyze these logs, and create visualizations for application and infrastructure monitoring, faster troubleshooting, and more.

EMR

EMR, previously called Amazon Elastic MapReduce, is a managed cluster platform that simplifies running big data frameworks, such as Apache Hadoop and Apache Spark, on AWS to process and analyze vast amounts of data. This is popular to data scientists and engineers when they process huge datasets.

Kinesis

Kinesis is used to collect and process large streams of data records in real time. You can use Kinesis data streams for rapid and continuous data intake and aggregation.

Glue

AWS Glue is a serverless data integration service that makes it easy for analytics users to discover, prepare, move, and integrate data from multiple sources. With AWS Glue, you can diccover and connect to more than 70 diverse data sources and manage your data in a centralized data catalog. It is usually integrated with other AWS services, such as Amazon Athena, Amazon Redshift.

QuickSight

Amazon QuickSight is a cloud-scale business intelligence(BI) service that you can use to deliver easy-to-understand insights to the people who you work with, wherever they are. It connects to your data in the cloud and combines data from many different sources, then provides an interactive visual environment to decision-makers.

Application Integration

Step Function

Step functions is a serverless orchestration service that lets you integrate with Lambda functions and other AWS services to build complex applications. Through step functions’ graphical console, you see your application’s workflow as a series of event-driven steps. Machine learning auto-train and auto-inference pipelines are built and powered by step function.

SNS

SNS, short for Simple Notification Service, is a managed service that provides message delivery from publishers to subscribers. Publishers communicate asynchronously with subscribers by sending messages to a topic, which is a logical access point and communication channel. Clients can subscribe to the SNS topic and receive published messages.

SQS

SQS, short for Simple Queue Service, offers a queue that lets you integrate and decouple distributed software systems and components. It is commonly used in designs where components needs to be decoupled or traffic needs to be slowed down.

EventBridge

Amazon EventBridge is a severless event bus service that you can use to connect your applications with data from a variety of sources. It receives an event, an indicator of a change in environment, and applies a rule to route the event to a target. Rules match events to targets based on either the structure of the event, called an event pattern, or on a schedule. For example, when an Amazon EC2 instance changes from pending to running, you can have a rule that sends the event to a Lambda function.

Operation

CloudFormation

CloudFormation is an infrastructure automation platform for AWS. You can write CloudFormation template that defines resources in code. It can also be described as IaC(Infrastructure-as-Code) tool. CDK is commonly used together, which defines infrastructure in popular programming languages, such as TypeScript, Python… Then CDK code can be compiled to CloudFormation templates.

CloudWatch

CloudWatch monitors your AWS resources and the applications you run on AWS in real time. You can use CloudWatch to collect metrics, create alarms and generate dashboards.

CloudTrail

CloudTrail is enabled on you AWS account when you create it. When activity occurs in your AWS account, that activate is recorded in a CloudTrail event. You can easily view recent events in the CloudTrail console.

Machine Learning

Sagemaker

Amazon Sagemaker is a fully managed machine learning service. With Sagemaker, data scientists and developers can quickly and easily build and train machine learning models, and then directly deploy them into a production-ready hosted environment.

This post is licensed under CC BY 4.0 by the author.

An Amazing Road Trip from San Francisco to San Diego

Getting it Right Between EC2, Fargate and Lambda

Comments powered by Disqus.