이벤트 기반 서비스로서의 AWS Lambda: 동작 원리와 활용
# AWS Lambda
람다에 대해 알아보기 전에 EC2에 대해 가볍게 훑어보자.
EC2 인스턴스를 사용하면
-> 클라우드에 가상 서버가 생긴다
-> 그러나 메모리와 CPU 성능에 제한이 있다
-> EC2를 사용하지 않을 때도 계속 실행된다
-> 확장이 필요하면 오토 스케일링 그룹을 사용할 수 있다
람다는?
-> 서버가 없고, 가상 함수만 있다
-> 함수들은 시간에 제한이 있다 (짧은 실행 유형의 함수를 위해 설계됨)
-> 필요할 때만 실행된다 (필요할 때 언제든 실행할 준비가 되어있음)
-> 함수가 필요하지 않을 땐 람다는 실행되지 않고, 따라서 해당 시간에 대해 비용도 청구되지 않는다
-> 스케일링이 자동으로 이뤄진다
EC2와 비교했을 때 위와 같은 장점을 가진 서비스: Lambda
람다는 이벤트 기반의 서비스이다.
AWS에서 어떤 이벤트가 발생할 때, 람다가 트리거되어 실행된다. 이러한 특징을 반응형 서비스라고도 부른다.
Lambda의 사용 사례를 살펴보면 '이벤트에 의해 트리거된다'는 말의 의미를 이해하기 더욱 쉽다. 아래 이미지와 함께 알아보자.
위 예시는 서버리스 썸네일 생성 서비스를 만드는 과정을 도식화한 것이다.
1. 우리는 S3 버킷을 가지고 있고, 그 안에 해변 이미지를 추가하려고 한다.
2. 이미지가 업로드되면 S3 버킷이 Lambda 함수를 트리거 한다.
3. 트리거 된 람다 함수가 버킷에 올라온 이미지를 가져와 썸네일을 생성한다.
4. 생성된 썸네일을 다시 S3에 푸시한다.
5. 필요한 경우, 썸네일에 대한 메타데이터(이미지 크기, 이름, 생성날짜 등)를 포함하여 DynamoDB에 푸시할 수도 있다.
'S3 버킷에 이미지가 업로드된 상황'이 이벤트이고, 해당 이벤트가 람다를 트리거 하여 이미지를 썸네일로 생성하게 된다. 이것이 '이벤트 기반'이다.
또한 람다 서비스는 완전한 서버리스 서비스로, 사용자는 서버를 프로비저닝할 필요 없고, 확장(스케일링)이 필요한 경우에도 자동으로 스케일링이 이뤄진다. (그것이 서버리스니까..!)
람다는 평소에 실행되지 않다가, 이벤트 등으로 호출되는 경우에만 실행되는 서비스로, 함수가 호출되는 횟수와, 해당 함수가 실행된 시간에 따라 비용이 책정된다는 점도 기억하자~