일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- JPQL
- 다대일
- exclusive lock
- 일대다
- 지연로딩
- PS
- execute
- shared lock
- 비관적락
- BOJ
- 연관관계
- 백트래킹
- 다대다
- 낙관적락
- 즉시로딩
- querydsl
- FetchType
- 유니크제약조건
- eager
- 힙
- 스토어드 프로시저
- 동적sql
- SQL프로그래밍
- CHECK OPTION
- 데코레이터
- 연결리스트
- 스프링 폼
- fetch
- 이진탐색
- dfs
- Today
- Total
흰 스타렉스에서 내가 내리지
Serverless Framework 본문
Serverless Framework는 엄밀히 말해서 aws에서 제공하는 서비스는 아니고, aws 바깥에서 오픈소스로 제공되는 프레임워크다.
> 기본 지식
- AWS CloudFormation
- Amazon DynamoDB
- AWS Lambda
- Node.js
> Serverless Framework
"All-in-one development & monitoring of auto-scaling apps on AWS Lambda"
- Serverless 아키텍처를 쉽게 구현할 수 있는 오픈소스 프레임워크
- 기능
- AWS Lambda의 배포 및 관리
- CloudFormation 기반으로 AWS의 인프라를 생성
- 참고 사항
- AWS Lambda에 관한 설정에 따라 기본적으로 프로비전하는 인프라 존재
- 예 : AWS Lambda 이벤트 타입이 HTTP 일 경우 API Gateway 자동 생성
- 최근에 람다 url이라는 서비스가 출시되긴 했지만, 그 이전에는 aws 에서 http 기반으로 람다를 볼 수 있는 유일한 방법은 API Gateway였고, 람다 url보다 나은 점도 있다.
Node.js 기반으로 람다 소스코드를 만들었다고 가정을 하면, 각각의 파일이 하나의 람다가 된다.
> Serverless.yml
- AWS의 인프라와 Serverless Framework로 배포할 Lambda 함수의 정보 및 설정을 담은 파일
- CloudFormation의 문법 사용 가능 (예 : aws:accountId 등)
- 다양한 Serverless Framework 플러그인 사용 가능
- 예 : 500개 리소스 제한인 CloudFormation 스택을 Nested Stack으로 만들어주는 플러그인 등
- 500개면 충분한 리소스같지만, 하나의 람다 함수에 권한도 있어야 하고, 트리고도 있어야 하고, 클라우드워치 로그기록도 있어야 하고, IAM Role도 있어야 한다. 하나의 람다 함수라도 4~5개의 리소스들이 들어간다. 실제 대규모 프로젝트라면 500개가 꽉 찰 수도 있다. 이런 것들을 Nested Stack으로 하나의 스택에서 파생될 수 있도록 만들어주는, 분할해주는 플러그인이 있다.
> Serverless CLI : 커맨드 라인 기반으로 서버리스를 실행할 수 있는 인터페이스
- deploy
- --config or -c : 설정 파일을 선택 (기본 serverless.yml)
- --function or -f : 특정 함수만을 선택해서 업데이트
- --aws-profile : configure 되어있는 AWS 프로파일 설정
# Demo - Serverless 기반 채팅
리액트 기반으로 프론트엔드를 만들었고 이를 S3 정적 웹 호스팅을 했다.
그리고 데이터를 저장하기 위한 DynamoDB가 2개가 있는데, 하나는 채팅내용, 하나는 유저목록 저장
함수는 총 4개가 있는데, 채팅을 불러오는 함수, 유저목록에 추가/삭제, 채팅 입력 및 전달.
> 진행 순서
- Node.JS 설치
- yarn 설치
- React 기반 클라이언트 실행
- Serverless Framework 설치
- AWS CLI 설치
- AWS IAM 사용자 생성
- AWS Configure
- Serverless Framework 를 활용해 솔루션 배포
- React 기반 클라이언트에 배포된 API Gateway ID 설정
- 데모 확인
소스코드를 가져온 후, yarn 명령어를 통해 dependencies를 다 가져오고 yarn start를 한다.
마찬가지로 backend 파일에서도 yarn 명령어로 dependencies를 가져온다.
IAM 유저 생성
일단은 그냥 admin 권한 다 준다.
액세스 키를 발급받는다.
터미널에서 다음과 같은 명령어로 aws IAM 연결을 한다.
이제 서버리스 프레임워크를 설치해보자.
반드시 백엔드 디렉토리에서 이 명령어를 실행해보자.
배포되는동안, CloudFormation에 들어가보자.
내부적으로 Serverless는 CloudFormation 기반으로 되어 있다.
serverless.yml 을 살펴보자
아까 cli에서 deploy했을 때, API Gateway Endpoint를 다음과 같이 준다.
frontend 코드에 다음과 같이 ID를 넣어준다.
저장하면, 끝
실제로 잘 생성이 되었는지 DynamoDB에 가보면,
실전이라면 굉장히 많은 소스코드 변화가 있을 것이다.
기획팀에서 채팅 맨 앞에 @ 표시를 항상 하게 해주세요 한다면, 코드에 채팅을 저장하는 부분에 앞에 @를 붙일 것이다.
해당 파일은 put.js 일텐데,
serverless deploy --aws-profile lecture-test -f chat_put
이라는 명령어만 치면 자동으로 빌드해서 배포해준다.
이렇게 소스코드의 변환과 배포가 굉장히 쉽다.
'AWS' 카테고리의 다른 글
Amazon EventBridge - 이벤트 매칭 규칙 (0) | 2023.09.20 |
---|---|
Serverless 서비스 기반 지진 알람 (0) | 2023.09.20 |
이벤트 기반 아키텍처, Lambda - S3 연결 예제 (0) | 2023.09.20 |
디커플링, SQS, SNS (0) | 2023.09.20 |
S3 정적 호스팅 (0) | 2023.09.18 |