👉 기존 EC2 아키텍쳐의 문제점
관리의 문제
EC2 인스턴스로 백엔드를 구성하면, EC2를 직접 관리해 줘야하는 문제가 있다. 인스턴스 크기를 선택해줘야 하고, OS를 업데이트 해야하고, 디스크 용량을 조절해야한다.
EC2가 여러가지이면 부담스러워짐
확장의 유연성
운영하고 있는 회사에 트래픽이 몰린다면❓
EC2를 추가해서 부하를 분산시키거나, 인스턴스 유형을 조절해서 처리능력을 늘려야 함.
운영중인 서비스에 대해서는 대응이 불가능하거나, 서비스를 정상화 하는데 상당한 시간이 걸린다.
요금
AWS는 생각보다 과금이 많이 되는 편
서비스가 운영되고 있을 때의 상황은 어떻게 변할지 누구도 모르기 때문에, EC2의 인스턴스 유형 조절 자체가 어려울 것
왜 서버리스를 사용해야할까?
우리가 관리해야 할 서버가 없고, 우리가 원하는 기능, 설정값들만 알아서 맞추면 알아서 정적 웹 사이트의 기능을 관리해주는 걸 서버리스(Serverless)라고 한다.
👉 Lamda는 서버리스 인프라를 구성하도록 AWS에서 만들어진 서비스다.
Lamda
람다는 S3처럼 백엔드를 서버리스로 운영할 수 있는 서비스다. S3가 별도의 서버, 관리 없이도 프론트 페이지를 운영했던 것처럼 백엔드도 인프라를 신경쓰지 않고 운영할 수 있는 서비스다.
Lamda ? Legacy?
👉Lamda는 Lamda Function이라고 불리는데 이름처럼 람다는 기본적으로 하나의 함수를 실행한다.
기존의 개발/배포 방식은 프레임워크에 의존하여 작업을 하고, 모든 기능을 포함해 전체 기능을 배포했지만 Lamda는 함수 단위의 배포를 실행한다.
Lambda
Lambda > 함수 >
함수 생성
(+) Java로는 Lambda를 잘 사용하지 않음. 동네축구(Lambda)에 손흥민(Java)이 와서 뛰노는 격...
🔵트리거
: 연관된 작업이 실행 된 후 람다 함수를 실행하게 할 수 있는, 연관된 작업을 지정하는 부분
Lambda > 생성 된 함수 > | 구성 | > 트리거
🔵구성
Lambda > 생성 된 함수 > | 구성 |
트리거 연관된 작업이 실행 된 후 람다 함수를 실행하게 할 수 있는, 연관된 작업을 지정하는 부분
권한 : AWS의 어떤 자원에 접근할 수 있는 역할을 정의한 부분
대상 : 람다함수가 성공, 실패 한 이후 다른 대상을 호출할 수 있도록 정의하는 부분
함수 URL : 빠르게 함수에 URL을 부여할 수 있다.
환경변수 : 람다 함수 내에서 사용하는 환경변수를 정의하는 부분
태그 : 사용자의 편의에 따라 태그를 구성
VPC : 람다 함수를 어떤 VPC에 포함할지 정의하는 부분
모니터링 및 운영도구 : 함수의 모니터링을 위해 기존 AWS의 기능과 통합할 수 있게 설정하는 부분
동시성 : 동시성은 특정 시각에 함수가 제공하는 요청의 수. (예약의 동시성, 프로비저닝 된 동시성)
비동기식 호출 : 비동기 방식으로 호출 된 이벤트의 수명과 재시도 횟수를 조정 가능
코드서명 : 코드 서명을 설정하여 확인되지 않은 코드의 배포를 제한 가능
데이터베이스 프록시 : 데이터베이스 프록시를 이용하여 RDS와 통신이 가능
파일시스템 : 파일 시스템과 연결 가능
상태 머신 : 이벤트 중심 어플리케이션을 손쉽게 설계 할 수 있게 도와줌
함수 URL 만으로는 미디어 처리나 스테이지 처리가 불가능하다.
HTTP 통신을 할 수 있게 HTTP URL, METHOD(GET, POST)를 만들어주어 API의 엔드 포인트 역할을 해줌
Lambda와 API Gateway를 연결하면 외부에서 접근 가능한 API를 만들 수 있다.
Lambda > 생성 된 함수 > 함수 개요 >
+트리거 추가
API 게이트웨이를 눌러서 API 게이트웨이로 이동 ( + API 엔드포인트 확인가능)