1. Lambda란?
AWS에서 제공하는 서버리스 컴퓨팅 플랫폼
서버리스? (Serverless Computing)
서버가 없다는 뜻? >> ❌
개발자 입장에서 서버에 대해 신경 쓸 필요가 없다 >> ⭕
즉, 개발을 할 떄 서버가 잘 돌아가고 있는지,
사양이 적당한지 등을 신경 쓸 필요 없이
코드와 비즈니스 로직 개발에만 집중할 수 있도록 해줌.
이렇게 AWS에서 서버리스 컴퓨팅을 지원해 주는 대신, 사용한 컴퓨팅 시간, 용량에 대해 비용을 지불하게 된다.
2. Lambda 장단점
1) 장점
- 비용 절감
- Lambda로 함수를 만들면 함수 호출시에만 실행되어, 서버가 항상 켜져 있을 필요 X
- 람다 함수의 요청 수, 코드 실행 시간에 따라 요금이 부과
- 인프라 운영 관리에 대한 부감 절감
- 앞서 말했던 것과 같이, 서버 자체의 성능, 보안 등의 관리를 AWS에서 관리
- 서버 관리의 필요성이 사라져 운영 관리에 대한 부감 절감 가능
- 빠른 개발과 배포
- AWS 자체적으로 제공하는 기능 중 API Gateway 등의 기능을 통해 API 연동이 간편
- 함수 수정 후에도 배포하는 방법이 간편
2) 단점
- 리소스 제한
- 하나의 함수가 한 번 호출될 때 기준으로 사용 가능한 메모리 (최대 10GB), 처리시간 (최대 15분) 제한이 존재
- 서버를 직접 가동하여 돌리는 것보다는 스펙이 떨어지게 됨
- 상태 비저장
- 함수가 호출되면 새로운 컨테이너를 띄우는 방식 >> 별도의 상태 저장 X
- 예를 들어 DB에 연결이 필요한 함수의 경우, connection을 유지하는 것이 아닌, 호출될 때마다 새로 connection이 실행된다는 의미
- ColdStart
- 리소스의 효율적인 사용을 위해 일정 시간 사용하지 않을 시 컴퓨팅 파워를 종료
- 즉, 함수를 실행하게 되면 컨테이너를 띄우기 위해 서버가 실행되고, 실행 환경을 구성하기 위한 시간 동안 딜레이가 발생
3. Lambda를 사용하면 좋은 환경
- 서버를 띄우지 않고 간단한 코드를 실행시키고 싶은 경우
- 특정 기간 또는 특정 주기로 코드를 실행시키는 경우
- 트리거가 실행될 때에만 코드를 실행시키려고 하는 경우
4. Lambda 생성 및 사용
✏️ 함수 생성
Lambda 콘솔에 접속한 뒤, 우측 상단 함수 생성 버튼을 누른다.

함수를 생성하는 화면이다.

함수 생성 옵션은 세가지가 존재한다.
- 새로 작성 : 말 그래도 새로 함수를 구현하는 것
- 블루프린트 : AWS에서 제공하는 기능을 템플릿처럼 사용하여 커스터마이징하여 사용
- 컨테이너 이미지 : Docker 컨테이너용 이미지
서버리스 앱 리포지토리 찾아보기 : 공유되어있는 간단한 서비스 아키텍처를 가져와서 사용
우선 새로 작성으로 선택한 뒤, 함수 이름과 런타임, 권한을 설정해 준다.
런타임은 어떤 언어로 작성할 지에 대한 옵션인데, Java, Python, Node 등 지원하는 언어와 버전이 다양하다.
권한에 대해서는 새로 IAM 권한을 생성하거나, 기존에 설정되어 있는 권한을 부여해 줄 수 있다.

생성이 완료되면 기본적으로 선택한 런타임에 대한 코드가 작성된다.
✏️ 함수 코드 이해
Lambda 핸들러
- 생성된 함수를 확인해보면 handler라는 Node.js 함수가 포함
- handler 함수는 항상 코드의 진입점
- 즉, 함수가 호출되면 Lambda에서는 handler를 찾아 해당 메서드를 실행
- handler 함수는 event, context 두가지 인수 사용
Lambda 이벤트 객체
- handler 함수의 첫번째 객체
- 이벤트 객체는 함수가 처리할 데이터가 포함된 JSON 형식의 문서
Lambda 컨텍스트 객체
- handler 함수의 두번째 객체
- Lambda는 컨텍스트 객체를 함수에 자동으로 전달
- 함수 간접 호출과 실행 환경에 관한 정보 포함
이를 이제 입맛에 맞게 함수를 작성해 주면 된다.
https://docs.aws.amazon.com/ko_kr/lambda/latest/dg/getting-started.html
Lambda 시작하기 - AWS Lambda
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
728x90
'AWS' 카테고리의 다른 글
[AWS] SAM Deployment Guide (0) | 2024.02.02 |
---|---|
[AWS] Lambda 모듈 사용법 (cannot find module error) (0) | 2024.01.29 |
[AWS] API Gateway란? (0) | 2024.01.24 |