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:
- Serverless
- Automatic Scaling
- Pay Per Use
Common Use Cases
| Category | AWS service |
|---|---|
| Compute | Lambda |
| Data storage | Amazon S3, DynamoDB, Amazon RDS |
| API | API Gateway |
| Application integration | EventBridge, Amazon SNS, Amazon SQS |
| Orchestration | Step Functions |
| Streaming data and analytics | Amazon Data Firehose |
Common Patterns
| Pattern | AWS service |
|---|---|
| Queue | Amazon SQS |
| Event bus | EventBridge |
| Publish/subscribe (fan-out) | Amazon SNS |
| Orchestration | Step Functions |
| API | API Gateway |
| Event streams | Kinesis |
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