Amazon Web Service (AWS)

As a software engineer, one of the most sought after skills is cloud computing. This article will explore one of the powerhouses that dominate the cloud market, AWS.

What kind of application can you build in the cloud? Serverless applications! Serverless applications are usually comprised of several AWS services and are integrated with custom code run in Lambda functions.

AWS services are characterized by the following:

  1. Serverless
  2. Automatic Scaling
  3. Pay Per Use

Common Use Cases

CategoryAWS service
ComputeLambda
Data storageAmazon S3, DynamoDB, Amazon RDS
APIAPI Gateway
Application integrationEventBridge, Amazon SNS, Amazon SQS
OrchestrationStep Functions
Streaming data and analyticsAmazon Data Firehose

Common Patterns

PatternAWS service
QueueAmazon SQS
Event busEventBridge
Publish/subscribe (fan-out)Amazon SNS
OrchestrationStep Functions
APIAPI Gateway
Event streamsKinesis

API Gateway

Connecting and scaling inbound requests

CloudFront

Content Delivery Network (CDN)

Cognito

Authentication and authorization of users

Data Firehose

Deliver real-time streams to a destination

DynamoDB

NoSQL database

Elastic Compute Cloud (EC2)

Virtual servers for compute tasks

Elastic Container Service (ECS)

Container orchestration

EventBridge

Event driven routing from source to target

Kinesis

Real time streaming data analysis

Lambda

Event driven compute tasks

Route 53

Domain Name System (DNS) and routing

Simple Notification Service (SNS)

Message delivery using publisher subscriber model

Simple Queue Service (SQS)

Queue service for asynchronous processing

Simple Storage Service (S3)

Storage for unstructured data

Step Functions

Microservice workflow orchestration

Glossary

Fan Out - when a message published to a topic is replicated and pushed to multiple endpoints for parallel asynchronous processing

Microservice - an application architecture that divides an application into independent services that communicate through APIs

Serverless - development model where applications are developed without having to manage or worry about servers; in other words there is a server but it is abstracted away to simplify the development process