서버리스 백엔드
1.관리문제
EC2 로 백엔드를 구성하면 EC2를 직접 관리해 줘야 하는 문제가 있음
예로 인스턴스 크기를 선택해줘야 하고 OS를 업데이트, 디스크 용량 조절 등 많은 부담이 있다.
2. 확장의 유연성
트래픽이 몰릴 경우 EC2를 추가해서 부하를 분산하거나 인스턴스 유형을 조절해서 처리능력을 늘려주어야 함
3.요금에 대한 문제
우리가 관리해야 할 서버가 없고, 우리가 원하는 기능, 설정값들만 맞춰주면 알아서 정적 웹 사이트 기능을 관리해주는 것이 서버리스(Serverless)
Lambda
서버리스 인프라를 구성하게 AWS에서 만들어진 서비스
S3처럼 백엔드를 서버리스로 운영할 수 있는 서비스. S3가 별도의 서버, 관리 없이도 프론트 페이지를 운영할 수 있는 것처럼, 백엔드도 인프라를 신경쓰지 않고 운영할 수 있는 서비스 S3와 비슷
Lambda는 Lambda Function이라고 불리는데 Function 은 함수로 Lambda는 기본적으로 하나의 함수를 실행한다.
기존의 개발, 배포 방식은 프레임 워크에 의존하여 작업을 하고 모든 기능을 포함하고 있는 전체를 배포하는 과정이었지만 Lambda는 기본적으로 함수단위로 배포
-장점
비용절감 - 필요할 때만 함수가 호출되고 비용이 부과(최대34퍼 가격대비 성능)
인프라 관리 부담의 효율 (관리 필요없음)
빠르게 백엔드를 구성가능
-단점
리스소제한 - 메모리(최대10gb),처리시간(최대900초,15분)
Cloud Start - 오랜만에 실행하게 되면 딜레이 발생
동시성 제약 - 동시에 처리할 수 있는 요청의 수가 리전별로 1000개 제한
Lambda 구성 살펴보기
- 트리거
연관된 작업이 실행된 후 람다 함수를 실행하게 할 수 있게 연관된 작업을 지정하는 부분
-권한
AWS의 어떤 자원에 접근할 수 있는 역할을 정의한 부분
-대상
람다 함수가 성공, 실패 하고 난 후 다른 대상을 호출할 수 있도록 정의
-함수 URL
빠르게 함수에 URL을 부여할 수 있다.
-환경변수
환경변수는 람다 함수 내에서 사용하는 환경변수를 정의하는 부분
-태그
태그는 사용자의 편의에 따라 태그를 정의하는 부분
-VPC
VPC는 람다 함수를 어떤 VPC에 포함할지 정의하는 부분
-모니터링 및 운영도구
모니터링 및 운영도구는 람다 함수의 모니터링을 위해 기존 AWS의 기능과 통합할 수 있게 설정해주는 부분
-동시성
동시성은 특정 시간에 함수가 제공하는 요청의 수 / 예약된 동시성, 프로비저닝 된 동시성이 있다.
-비동기식 호출
비동기 방식으로 호출된 이벤트의 수명과재시도 횟수를 조정
-코드서명
코드서명을 설정하여 확인되지 않은 코드의 배포를 제한 할 수 있다.
-데이터베이스 프록시
데이터베이스 프록시를 이용해서 RDS와 통신이 가능
-파일시스템
파일시스템과 연결
-상태머신
이벤트 중심 어플리케이션을 손쉽게 설계 할 수 있게 해주는 부분
API Gateway
함수 URL만으로는 미디어 처리나 스테이지 처리가 불가능 하다.
API Gateway는 HTTP 통신을 할 수 있게 HTTP URL, METHOD(GET,POST..)를 만들어주어 API엔드 포인트 역할을 해줌
-Lambda + API Gateway 연동
Lambda 와 API Gateway를 연동하면 외부에서 접근 할 수 있는 API를 만들 수 있다.
RDS를 Lambda를 연결
RDS를 만들고 데이터베이스에서 스키마 테이블을 만들고 프로젝트를 만든다.
이후 postman을 이용한 테스트
Secrets Manager
Secrets Manager는 보안상 중요한 정보를 저장할 수 있는 서비스(ex.데이터베이스 정보)
Lambda의 환경변수를 사용할 수 있지만, 한정적이므로 Secrets Manager를 사용하는 것이 좋다.
이 아래는 프리티어라도 과금이 될 수 있음
vpc 구성
Lambda 함수에서 RDS연결을 Database proxy를 사용하도록 권장하고 있는데 Proxy는 데이터 베이스 연결 풀을 관리하고 함수에서 쿼리를 릴레이 함
이렇게 하면 데이터베이스 연결을 소모하지 않고 높은 동시성 레벨에 도달 할 수 있다.
Lambda 함수에 VPC를 연동하면 외부통신이 되지 않는데 외부통신이 가능해야 boto 라이브러리가 사용 간읗다ㅏ.
외부통신을 하기 위해서는 지정한 서브넷에 NAT게이트웨이 설정을 해줘야 함
NAT게이트웨이 구성
프라이빗한 서블릿을 위부 인터넷과 연결
inbound vs outbound
퍼블릭 서브넷 vs 프라이빗 서브넷
인터넷 게이트웨이에 연결되어 잇는 서브넷은 퍼블릭 서브넷이 된다.
연결이 되지 않은 서브넷은 프라이빗 서브넷이 됨.
ex. 중요한 데이터가 저장된 데이터 베이스는 외부에서 연결할 수 없게 프라이빗 서브넷에만 연결
'정리' 카테고리의 다른 글
비전공자의 청년취업사관학교 - 본질을 꿰뚫는 웹 개발자 과정 수료 및 취업 후기(SeSAC) (9) | 2024.04.11 |
---|---|
27 TIL 정리 (서버리스 프론트엔드) (0) | 2022.05.25 |
26-2 TIL 정리 (SQL subquery) (0) | 2022.05.25 |
26 TIL 정리 (SQL-Read) (0) | 2022.05.25 |
25 TIL 정리 (SQL-Read) (0) | 2022.05.24 |