개발 가이드
- front-end
nuxt 프로젝트 빌드 -> html+script로 전부 변환 -> 정적 리소스가 되어 S3버킷에 올라감
웹브라우저에서 정적리소스 (웹페이지) 요청
https://dev.myapp.cloud -> Route53 -> CloudFront -> S3
-Route53 : DNS기능, 가비아같은놈
-S3 : 저장소, 실제 nuxt 빌드된 프로젝트가 저장되어있음
-CloudFront : CDN, S3 캐싱기능
ex) 브라우저 : 한국, S3버킷 : 미국 - 멀리있을때
a) CloudFront에 리소스 있는지 조회
b) 없으면 S3가서 갖고옴. 처음엔 오래걸림.
c) CloudFront에 캐싱
d) 다음요청때부턴 CloudFront에서 빠르게 가져올수있음 - backeend
1에서는 껍데기만있는 페이지를 받음. 내용은 없는상태
axios로 api호출해서 비동기로 내용채워넣음
ex)
GET : dev-api.myapp.cloud/users/1259012 -> Route53 -> API Gateway -> lambda
-API Gateway : HTTP Request 라우팅기능, 람다 함수에 매핑하는기능
-lamba : 직접 작성한 함수 - lambda
요청을 받았으면 db에 연결해서 리턴해주던 저장하던 처리를 해야함
controller(핸들러, 라우팅), service(비즈니스 로직), repository(DB CRUD)로 분류
dynamoDB와 연결 : aws-sdk 이용, 이때 credential 필요
AWS 리소스(S3, dynamoDB, lambda 등)을 sdk로 이용하려면 credential 있어야함. IAM에서 발급가능 - offline <-> AWS
serverless framework : offline에서 개발하고 실행해서 테스트하고 deploy해서 AWS에 동기화 가능
resource.yml : dynamoDB 관련 설정파일
functions.yml : API Gateway 관련 설정파일
functions/*.ts: lambda 코드 작성
serverless.yml : 프로젝트 전체 설정파일 (lambda가 갖는 권한, S3 권한 등)
ex) lambda에서 cloudwatch에 로그를 찍을수있는 권한이 있어야 로그출력 가능
ex) S3버킷 getObject를 하기위해선 sdk로 S3 connection을 open하는 credential도 있어야하지만,
S3 CRUD를 실행하는 lambda가 실행권한도 있어야함 - Cloud Watch
lambda -> 모니터링 -> cloud watch에서 보기 : 람다함수내에 console.log 해논애들이 여기 전부 찍힘
한줄한줄이 다 돈임 - Cloud Formation
serverless framework -> deploy -> Cloud Formation -> 역할, lambda, dynamoDB, API Gateway
serverless로 deploy할때 AWS와 동기화해주는놈
역할, 람다, dynamoDB, API Gateway 설정들을 모두 리소스로 따져서 정리해줌
api 서버 프로젝트를 deploy 해놓고 바로 Cloud Formation보면 바쁘게 리소스 정리하고 동기화시키고
중간에 실패하면 롤백하고 로그까지 찍어줌
serverless.yml : provider : iam : 람다의 역할 -> 배포시 Cloud Formation, 역할에 자동등록됨
serverless.yml : provider : s3 : S3설정 -> 배포시 Cloud Formation, S3의 설정정보에 자동등록됨 ex) CORS setting
ex)resource.yml로 테이블 정의하고 deploy하면 Cloud Formation에 기록되며
dynamoDB에 테이블이 생성되는데 추후에 dynamoDB에 들어가서 수동으로 테이블 지우면
Cloud Formation과 꼬일수있음 - dynamoDB
기본 : Hash key, Range key
Secondary index : Hash key, Range key
Provisioning : 미리 준비해놓는건데 Thrououtput 5가 기본설정인데 매우비쌈
개발할때 on-demand로 해놨다가 QE타거나 판매했을때 모자르면 올리면됨 - Cloud Front
아무나 접근하면 안되므로 signedURL을 발급하던 signed cookie를 발급하던해야함
'Amazon AWS' 카테고리의 다른 글
[dynamoDB] Indexing (1) | 2021.08.25 |
---|---|
[CloudFront] (0) | 2021.07.13 |
[IAM] (0) | 2021.07.07 |