on
AWS Lambda란?
AWS Lambda란?
AWS의 serverless 컴퓨팅 서비스
serverless application을 만들기 전에 간단하게 aws lambda 란 무엇인지 알고 들어가자. aws lambda 공식문서에는 다음과 같이 글이 써져 있다. 소개글을 읽으면서 대략적으로 파악해보자.
Lambda is a compute service that lets you run code without provisioning or managing servers. - aws lambda docs
우리가 직접 서버를 관리하거나 준비할 필요없이 코드를 실행시켜주는 컴퓨팅 서비스라고 한다. 저번 포스팅에서 알아본대로 serverless답게 우리가 인프라자원에 대해서는 관리를 거의 할 필요가 없다는 것 같다.
Lambda runs your code on a high-availability compute infrastructure and performs all of the administration of the compute resources, including server and operating system maintenance, capacity provisioning and automatic scaling, and logging.
high-availability 컴퓨팅 인프라에서 코드를 실행하고 OS, server, auto-scaling, logging등등 컴퓨팅의 모든 자원 관리를 수행한다고 한다.
With Lambda, you can run code for virtually any type of application or backend service. All you need to do is supply your code in one of the languages that Lambda supports.
lambda가 지원하는 언어라면 어떤 백엔드 서비스 코드여도 실행이 가능하다고 한다.
Why? Lambda?
그렇다면 왜 쓸까? 그리고 언제 lambda를 써야할까?
코드만 고려하고 인프라는 생각안해도 된다고 적혀있다. 아니, 애초에 인프라 리소스에는 직접 접근이 불가능함을 알려준다. 따라서 지금 당장 서비스를 빠르게 배포하고 운영하고 싶은 개발자가 쓰면 될 것 같다.
빠른 배포가 장점이지만 그 배경에는 인프라의 관리를 서비스 제공 측에게 의존하기에 만약 우리가 서버에 본인만의 설정을 추가하고 싶다면, aws lambda라는 서비스 보다는 EC2서비스를 쓰는 것을 나도 추천하고 aws에서도 추천한다.
자체 컴퓨팅 리소스를 관리해야 하는 경우 AWS는 사용자의 요구를 충족하는 다른 컴퓨팅 서비스도 제공합니다. 예:
- Amazon Elastic Compute Cloud(Amazon EC2)는 선택할 수 있는 다양한 EC2 인스턴스 유형을 제공합니다. 운영 체제, 네트워크 및 보안 설정, 전체 소프트웨어 스택을 사용자 지정할 수 있습니다. 용량을 프로비저닝하고, 플릿 상태 및 성능을 모니터링하고, 내결함성을 위해 가용 영역을 사용할 책임은 사용자에게 있습니다.
- AWS Elastic Beanstalk를 사용하면 Amazon EC2에 애플리케이션을 배포하고 확장할 수 있습니다. 사용자는 기반 EC2 인스턴스에 대한 소유권과 완전한 제어 권한을 보유합니다.
따라서 우리가 해야하는 것은 lambda function
에 우리가 원하는 동작의 코드를 작성해주면 되는 것이다.
Payment
You pay only for the compute time that you consume—there is no charge when your code is not running.
소비하는 시간에만 요금을 부과하고, 실행되지 않을 때에는 요금이 부과되지 않는다고 한다. 요금에서 조건부로 자유로울 수 있기에 해당 서비스에 익숙해진 뒤, serverless 아키텍처로 나의 서비스를 배포하는 것이 공부의 목적이다.
동작 방식
event driven 방식으로 동작한다. 따라서 API gateway
나 Application Load Balancer
가 받은 요청에 lambda function을 실행시킬 수 있다. 또한 외부 서비스의 event로 lambda function을 실행시키는게 가능하다고 한다.
Lambda Test Event
-
private
: 최대 10개까지 생성 가능. -
public
: 같은 계정의 다른 IAM 사용자에게 공유 가능 -
다양한 서비스에서(api gateway, load balancer등등) 호출 시 전다하는 event format이 미리 지정되어 있다.
{ "key1" : "value1", "key2" : "value2", "key3" : "value3" }
와 같은
Hello World
test template을 본적이 있을 것이다. 해당 json format의 데이터가event
로 전달된다고 한다.
Next…
이게 다음 포스팅에서는 AWS Lambda
를 이용하여 아주 작고 귀여운 백엔드 서버를 만들어 볼 것이다.