手把手教学在云上部署一个twitter
一个全部代码开源,学习云环境开发应用的bootcamp,成果是一个mini版的推。
项目内容1. 准备工作
注册aws账号,多重认证保护账号安全,设置账单报警和预算。
2. 基础前后端功能+本地容器化
flask后端/react前端项目代码直接提供,自己操作的是将前后端项目用docker容器化。本地的(后面会上云)结构化数据库postgresql,Nosql数据库DynamoDB。整个项目用docker compose整合到一起。使用gitpod平台部署。
![b3e324cb980a2fe04357da2cef150979.webp](https://filescdn.proginn.com/25c97442a141a9918e1fa966e016bf55/b3e324cb980a2fe04357da2cef150979.webp)
❝gitpod 一个直连github代码,可以构建docker镜像,部署服务的平台
3. 监控报警
四种监控报警工具:X-ray和Cloudwatch是aws集成的,honeycomb和Rollbar是通用的云监控产品。
![30f466bd9ec734207be1d78d725104cc.webp](https://filescdn.proginn.com/e888eabd6bfb13d786cf230aef8e2b8c/30f466bd9ec734207be1d78d725104cc.webp)
![b1a315980b1111101efd3334e5b32c6d.webp](https://filescdn.proginn.com/1beaca67af7af63f32dc73a4e0839f76/b1a315980b1111101efd3334e5b32c6d.webp)
4. 认证授权
使用Amplify(工具包)和Amazon Cognito(服务)实现身份认证和授权。
5. 云数据库+Serverless
postgres数据库上云(用aws的),AWS Lambda(一个Serverless工具)结合Cognito实现发推认证。
DynamoDB Stream实现私聊功能,结合Lambda实现缓存(也可以用momento实现)。
![504a79a9d89b7fd8ce166c56f0463f06.webp](https://filescdn.proginn.com/e435f2481fb1aad2c75095080142906b/504a79a9d89b7fd8ce166c56f0463f06.webp)
![5325dff656af5a87fe9ea9f235840f5f.webp](https://filescdn.proginn.com/8c5a45cad769932002f3478744ba83f3/5325dff656af5a87fe9ea9f235840f5f.webp)
6. 镜像化项目部署
ECS Cluster(容器集群)和ECR Repo(镜像仓库),负载均衡,域名,解决跨域问题。Fargate镜像服务管理启动服务!
7. CDN内容管理和分发
实现个人信息管理,头像上传功能。图片存在S3 bucket,使用Amazon CloudFront作为CDN提供服务。
❝S3只适合个人/内部的文件管理,对外提供服务需要通过CDN。适合场景:
- 对延时要求高。
- 需反复下载相同的内容。
信息流推荐刚好就是这样的场景。
8. CI/CD
AWS CodePipeline, CodeBuild and CodeDeploy实现CI/CD。
9. 资源编排
AWS CloudFormation模板化云资源管理。
![3f9259c7a2c9f71b2950e5c15f0d3cc6.webp](https://filescdn.proginn.com/4a79263e6faa90295a2883bfafc7e0d5/3f9259c7a2c9f71b2950e5c15f0d3cc6.webp)
❝参考资料资源编排工具Terraform,通过把每一家云平台定义为一种provider的形式,只需要用一套代码就可以操作所有的云平台。
- 老师教学素材:https://github.com/omenking/aws-bootcamp-cruddur-2023
- 学生作品:https://github.com/beiciliang/aws-bootcamp-cruddur-2023
- 视频讲解:https://www.youtube.com/playlist?list=PLBfufR7vyJJ7k25byhRXJldB5AiwgNnWv