▶ 들어가기 전
최근 취업을 준비하면서 사전 질문 또는 면접 질문에서 Serverless 환경에 대한 질문이 많았습니다. 아무래도 최신 트랜드인 것 같습니다. 하지만 저는 Serverless 환경을 구축해본 경험은 물론 뭔지도 몰랐기에 단편적으로 공부하고자 정리를 남깁니다. GCP Cloud Functions나 Azure Functions 등 Serverless 환경을 구성할 수 있는 많은 서비스들이 존재하지만 역시나 부동의 원탑 AWS의 Lambda만큼 대중적이고 강력한 서비스가 없는 것 같습니다.
▶ Serverless?
Serverless는 Server와 less( ~이 없는 )의 합성어로 서버가 존재하지 않는 환경을 뜻합니다.
정확한 작동원리는 나중에 다루겠으나 간단하게 요약하자면 이벤트 발생 -> 서버가 켜짐 -> 코드 실행 -> 서버가 꺼짐의 절차를 밟을 것 입니다. ( 실제로 서버가 켜지고 꺼지기 보단 클라우드 업체가 이미 구동 중인 서버 인프라 위에 가상 인스턴스를 동적으로 할당하고 해제할 것 입니다. )
Serverless 환경은 다음과 같은 특징을 갖고 있습니다.
- True 온디맨드 ( 사용한 만큼만 요금을 냅니다. )
- 고가용성과 장애 내구성이 확보되어 있음 -> 서버 관리의 공수가 적어짐
- 빠르게 배포하고 업데이트 가능
- 이벤트 기반 아키텍처 ( https://aws.amazon.com/ko/what-is/eda/ )
▶ AWS Lambda
AWS Lambda는 직접 서버를 프로비저닝 또는 관리하지 않고 백엔드 서비스에 대한 코드를 실행할 수 있는 이벤트 중심의 서버리스 컴퓨팅 서비스입니다.
- 다양한 언어를 지원합니다
- Java, C#, Go, Node.js, Python, Ruby ... 등
- 내부 컴파일을 통해서 공식적으로 지원하지 않는 언어도 사용이 가능합니다.
- 크게 아래와 같은 방법으로 호출합니다.
- 이벤트 기반
- AWS의 다른 서비스 ( 주로 API Gateway )
- 어플리케이션에서 직접
- 저렴한 가격
- 첫 100만건 호출 무료
▶ Lambda를 사용해봅시다.
- 함수 이름을 지어줍시다.
- 런타임에서 사용할 언어를 선택합니다.
- Lambda 함수를 생성합니다.
요청을 통해 두 숫자가 들어오면 두 숫자를 합하고 응답해주는 Lambda 함수를 테스트해봅시다.
- 코드를 작성해줍니다.
- Deploy 버튼을 클릭합니다.
- 테스트 ▼를 클릭합니다.
- 이벤트 이름을 설정합니다.
- 템플릿에서 hello-world를 선택합니다.
- 이벤트 JSON을 작성합니다.
- 저장을 클릭합니다.
- Test를 클릭합니다.
- 정상적으로 3을 응답해주는 것을 알 수 있습니다.
▶ 마치며
AWS Lambda 함수를 작성하고 테스트를 해보았습니다.
다음 포스트에선 API Gateway를 트리거로 설정하고 HTTP 엔드포인트를 통해 호출할 수 있도록 해보겠습니다.
'공부노트' 카테고리의 다른 글
Nest.js + Redis (1) | 2024.01.14 |
---|---|
AWS Lambda + API Gateway (0) | 2023.12.28 |