~17p
Serverless (서버리스)
: 서버 없이 관리형 서비스만을 이용해 코드를 배포하고 사용할 수 있게 해주는 서비스
이를 구현하기 위해 AWS에서는 Lambda라는 서비스를 제공하고 있다
서버의 관리나 운영 없이 람다함수라는 코드만 업로드하고, 이벤트가 발생했을 때만 함수가 실행하면서
실행시간에만 과금한다
AWS Lambda
각 함수는 컨테이너에서 실행
각 컨테이너는 운영체제의 커널이 격리된 환경을 구현하는 서버 가상화 방식
물리적 서버의 가상 컨테이너 내에서 코드가 실행되지만 그 인프라를 관리할 필요는 없다(=서버리스)
람다 함수 만들기
1. 함수 이름 지정
2. 프로그램 코드 작성
3. 실행 환경 구성 지정
- memory (함수 실행에 필요한 최대 메모리 크기)
- timeout (함수가 완료되지 않아도 종료시킬 제한 시간)
- role (AWS IAM을 통해 함수가 접근 할 수 있는 AWS 자원 및 권한에 대한 역할)
* 함수 실행에 필요한 메모리 양을 선택하면 이에 비례하여 CPU 성능을 자동 할당한다
AWS Lambda 비용 계산
- 총 호출 수
- 밀리세컨드 단위의 실행 시간
* 실행시간의 비용은 할당 메모리와 함께 선형으로 증가
ex) 메모리 할당량을 두배로 늘리고 실행시간은 유지하면 비용은 두배가 된다
이벤트, 콘텍스트
AWS Lambda로 함수 호출 시 이벤트(event), 콘텍스트(context)를 입력해야 한다
- 이벤트 : 함수에 대한 입력 매개변수를 보내는 방법 (JSON 문법 사용)
- 콘텍스트 : 서비스에서 실행 환경과 이벤트 수신 및 처리 방법
RequestResponse 호출 = 동기적 호출
로직
-> RequsetResponse 호출
-> 람다 api 호출(이벤트와 콘텍스트 입력)
-> AWS Lambda 함수 호출
-> 결과 반환
예시)
숫자 두개의 합을 구하는 간단한 동기 함수 (자바스크립트)
exports.handler = (event, context, callback) => {
var result = event.value1 + event.value2;
callback(null, result);
};
이벤트 호출 = 비동기적 호출
(함수가 호출 되어도 결과는 즉시 반환하지 않는다)
로직
-> 이벤트 함수 호출
-> 비동기적으로 AWS Lambda 함수 호출
-> 리소스 생성/업데이트/삭제 (이메일 전송/모바일 푸시 알림 등 다른 동작 처리 가능)
-> 결과 (옵션)
예시)
AWS Lambda 로깅 기능을 사용해 Node.js로 간단한 로깅 기능 구현
exports.handler = function(event, context) {
console.log(event.message);
context.done();
}
[AWS] Cloud Practitioner 공부_2 (0) | 2022.12.05 |
---|---|
[AWS] Cloud Practitioner 공부_1 (0) | 2022.11.15 |
[aws lambda] 개념정리 -2 (0) | 2021.04.07 |