It so happened that until 2020, I did not deal with clouds. When I finally delved into this topic, I got a little lost from the abundance of services offered in AWS.
It was necessary to create an application with the following features:
- Login via facebook or google.
- The ability to download and display media files.
- Receiving events from the server in real time.
This article describes the services that I needed to implement the project and feel the process.
Application architecture
Web service
- - -. AWS Fargate Elastic Beanstalk.
Fargate
PaaS ECS EKS (EKS-Elastic Kubernetes Service, ECS-Elastic Container Service — kubernetes). — (Task), .
Elastic Beanstalk
Fargate. (EC2). -. — , . — . Elastic Beanstalk .
EC2 | Fargate | ||||
---|---|---|---|---|---|
t2.micro | 10% | $0.0134 | 1vCPU,1GB | $0.05167 | 3.85 |
t2.medium | 20% | $0.0536 | 2vCPU,4GB | $0.11356 | 2.12 |
t2.xlarge | 22.5% | $0.2144 | 4vCPU,16GB | $0.268 | 1.25 |
Elastic Beanstalk — . Fargate .
Application Load Balancer
Fargate, Elastic Beanstalk . . , . Fargate Task Definition, Elastic Beanstalk Auto Scaling Group.
Application Load Balancer HTTP. HTTPS, , CloudFront, . ALB HTTP.
.
DynamoDB
NoSql . ( 10–20 ). , .
S3
. . . .
Parameters Store
. .
, , , , . , , - S3.
.
Route53
DNS AWS.
CloudFront
CDN AWS. CloudFront - S3, api- -. Http Https ( S3 bucket ).
AppSync
AppSync — — AWS Amplify. serverless- no-code-. “”, AppSync, AWS, .
Cognito
aws . User Pool c Google, Amazon, Facebook .
DevOps
.
IAM-Identity and Access Management.
CloudFormation, , , SDK. .
:
- CodeCommit — git-, github.
- CodeBuild — . ECR-Elastic Container Repository.
- CodeDeploy — , Fargate Elastic Beanstalk.
- CodePipeline — .
CloudWatch. , , .
, , -, 9 AWS, , — 8 .
AWS, , — , 17 !
When I started out, I didn't think I might like it. I resisted. So, for example, I coded the jwt-authentication mechanism myself, instead of using Cognito.
But I changed my mind. Still, it's nice to shrug off the burden of infrastructure code and focus on business logic. After getting a little more comfortable, I began to experience the feelings of a child in an amusement park. Each new service brings new fun. I am glad that this park has not yet been fully explored. For myself, I made a decision that I am here for a long time.