목차
이 글에서는 다음 사항들을 다룹니다.
- AWS Lambda란 무엇인가
- AWS Lambda의 장점과 단점
- 람다의 기가막히게 저렴한 비용
- 람다 실행 예제
Lambda 란?
Lambda는 AWS에서 단순한 코드 조각을 손쉽게 실행하게 해주는 Component 중 하나입니다.
AWS상에서 Serverless Architecture를 구현하기 위한 가장 간단한 솔루션으로 볼 수 있죠.
Lambda의 가장 큰 장점은 ms 초당 과금된다는데 있습니다.
따라서 초기에 트래픽이 많이 몰리지 않는 서비스들의 경우 복잡한 인프라 아키텍처를 고려하지 않고도 저렴하게 이용할 수 있습니다.
AWS에서 pre-tier 라고해서, 최소 사용량만큼 사용하면 과금을 하지 않는 정책을 피고 있는데,
이를 잘만 구성하면 공짜로 서비스를 만들 수도 있습니다.
Lambda의 장단점
장점
- 아주 기초적인 단계까지는 한 function을 실행시키는데 복잡한 지식이 필요하지 않습니다.
- 과금은 사용한만큼 1ms단위로 재서 과금됩니다.
- 아주 직관적으로 동작합니다.
단점
- 꽤 크리티컬한 제한 사항을 가지고 있습니다.
- 최대 실행시간이 5분을 넘어가서는 안됩니다.
- 사용할 수 있는 메모리가 최대 10GB입니다. 이 이상의 메모리를 사용할 수 없습니다.
- 프로젝트의 용량이 제한됩니다.
- 의외로 모니터링 및 디버깅하기가 까다롭습니다.
- 제대로 이해하기 위해서는 Lambda와 다른 컴포넌트가 어떤방식으로 trigger되는지 이해할 필요합니다.
Lambda의 비용
비용의 정확한 값을 outdate 될 수 있습니다.
AWS에서는 매번 비용을 내리고 있습니다. 기술혁신에 따라 효율화되면 가격을 내리고, 고객을 모으는 방식을 선택하고 있죠.
그래서 이 정보는 outdate 될 수 있음을 미리 말씀드립니다.
GB-초
근데 이해하기 어렵죠? GB 초라는 건 메모리 * 사용 시간(초)입니다.
그 밑에 있는 가격표를 보시는편이 더욱 이해하기 쉽습니다.
메모리를 저만큼 쓰는 코드조각이 1ms초 실행 될 때 요금이 저렇다는 겁니다.
1GB 초 = 1,024 메모리에 1,000ms = 0.0000167 달러입니다.
기가막히게 저렴한 Lambda의 사용 가격 Simulation
한 함수의 호출당 100ms가 걸린다고 하면 100만번 api가 호출되면 16.7달러가 과금된다는 겁니다.
아 그리고 100만 요청당 0.2달러가 추가로 붙죠. 그러니 100만 요청당 16.9달러 정도 청구된다고 볼 수 있습니다.
Lambda의 pre-teir
저도 매번 까먹어서 적어놓겠습니다. pre-tier는 월별 적용이며, 1년이 지나도 계속 무료로 사용할 수 있다는 장점이 있습니다.
- 100만건의 무료 요청
- 월별 400,000GB-초의 컴퓨팅 시간
400,000GB-초가 계산이 잘 안되네요.
1GB-초는 메모리 1GB짜리 어플리케이션을 1,000ms 사용했을 때 charging 됩니다.
우리가 가정한 어플리케이션은 1GB당 10회의 처리를 할 수 있겠네요.
4,000,000 번 호출할 수 있네요! 대충 400만번입니다.
메모리는 4G로 올리거나, 한 API당 실행 시간을 400ms로 넉넉히 사용할 수 있겠네요.
이제 최소 100만회의 요청을 보내거나 넉넉한 메모리를 사용해서 서비스를 구성할 수 있겠네요!
그것도 무료로 말이죠!
AWS Lambda 비용 계산기
간단한 Lambda Service 만들어보기
⚠️ 이 파트는 AWS의 계정이 있음을 가정하고 진행됩니다.
AWS콘솔에서 Lambda를 검색합니다. 그리고 함수 생성을 누릅니다.
버전에 따라 다르겠지만 아래와 같은 창이 뜰겁니다.
저는 python을 좋아하니 python3.9로 런타임을 지정하고, 실행합니다.
함수 이름을 짓는것도 잊지마세요.
저는 간단하게 테스트하는 함수를 작성해 봤습니다.
import json
def lambda_handler(event, context):
# TODO implement
return {
'statusCode': 200,
'body': '테스트 '
}
그럼 다음과 같은 에디터 창이 뜰텐데 에디터에 원하는 코드를 삽입하고 deploy 버튼을 눌러봅시다.
그러면 lambda 함수가 업데이트 됐다고 뜰텐데 이제 테스트 탭에가서 테스트를 해봅시다.
잘 동작하나요?
아주 기초적인 lambda 사용법이었습니다.
마무리
람다는 매우 고수준으로 추상화된 서비스입니다.
사실 서버라는 것이 무엇인지 모른다고 하더라도, json정도만 알면 누구나 서버를 구축할 수 있죠.
왠만한 EC2를 사용하는 것보다 더 저렴하게 서비스를 구성할 수 있을 겁니다.
다만 진짜 production으로 나가게되면 고려해야할 점들이 몇가지 있습니다.
Lambda 자체가 안정성이 떨어지는 편이기도 하고,
디버깅이 정말 까다롭기도 하죠.
다음에는 lambda로 제대로된 웹 어플리케이션 서버를 작성해 보겠습니다.