手把手教學(xué)在云上部署一個(gè)twitter
一個(gè)全部代碼開源,學(xué)習(xí)云環(huán)境開發(fā)應(yīng)用的bootcamp,成果是一個(gè)mini版的推。
項(xiàng)目?jī)?nèi)容1. 準(zhǔn)備工作
注冊(cè)aws賬號(hào),多重認(rèn)證保護(hù)賬號(hào)安全,設(shè)置賬單報(bào)警和預(yù)算。
2. 基礎(chǔ)前后端功能+本地容器化
flask后端/react前端項(xiàng)目代碼直接提供,自己操作的是將前后端項(xiàng)目用docker容器化。本地的(后面會(huì)上云)結(jié)構(gòu)化數(shù)據(jù)庫(kù)postgresql,Nosql數(shù)據(jù)庫(kù)DynamoDB。整個(gè)項(xiàng)目用docker compose整合到一起。使用gitpod平臺(tái)部署。
image
?gitpod 一個(gè)直連github代碼,可以構(gòu)建docker鏡像,部署服務(wù)的平臺(tái)
3. 監(jiān)控報(bào)警
四種監(jiān)控報(bào)警工具:X-ray和Cloudwatch是aws集成的,honeycomb和Rollbar是通用的云監(jiān)控產(chǎn)品。
image
image
4. 認(rèn)證授權(quán)
使用Amplify(工具包)和Amazon Cognito(服務(wù))實(shí)現(xiàn)身份認(rèn)證和授權(quán)。
5. 云數(shù)據(jù)庫(kù)+Serverless
postgres數(shù)據(jù)庫(kù)上云(用aws的),AWS Lambda(一個(gè)Serverless工具)結(jié)合Cognito實(shí)現(xiàn)發(fā)推認(rèn)證。
DynamoDB Stream實(shí)現(xiàn)私聊功能,結(jié)合Lambda實(shí)現(xiàn)緩存(也可以用momento實(shí)現(xiàn))。
image
image
6. 鏡像化項(xiàng)目部署
ECS Cluster(容器集群)和ECR Repo(鏡像倉(cāng)庫(kù)),負(fù)載均衡,域名,解決跨域問(wèn)題。Fargate鏡像服務(wù)管理啟動(dòng)服務(wù)!
7. CDN內(nèi)容管理和分發(fā)
實(shí)現(xiàn)個(gè)人信息管理,頭像上傳功能。圖片存在S3 bucket,使用Amazon CloudFront作為CDN提供服務(wù)。
?S3只適合個(gè)人/內(nèi)部的文件管理,對(duì)外提供服務(wù)需要通過(guò)CDN。適合場(chǎng)景:
- 對(duì)延時(shí)要求高。
- 需反復(fù)下載相同的內(nèi)容。
信息流推薦剛好就是這樣的場(chǎng)景。
8. CI/CD
AWS CodePipeline, CodeBuild and CodeDeploy實(shí)現(xiàn)CI/CD。
9. 資源編排
AWS CloudFormation模板化云資源管理。
image
?參考資料資源編排工具Terraform,通過(guò)把每一家云平臺(tái)定義為一種provider的形式,只需要用一套代碼就可以操作所有的云平臺(tái)。
- 老師教學(xué)素材:https://github.com/omenking/aws-bootcamp-cruddur-2023
- 學(xué)生作品:https://github.com/beiciliang/aws-bootcamp-cruddur-2023
- 視頻講解:https://www.youtube.com/playlist?list=PLBfufR7vyJJ7k25byhRXJldB5AiwgNnWv
