( 참고 : “FastCampus, 데이터 엔지니어링 올인원” )
[ Data Engineering ]
Serverless Lambda
1. Micro Service & Serverless Lambda
크론탭은 1분/10분/하루 에 한번 씩 자동으로 수행하는 것이다.
이에 반해, “새로운 artist”가 들어왔는데, 그 아티스트에 대한 정보가 없을때에 한해서만 코드가 수행되도록 하고 싶은 경우에 적절하다.
앞으로 챗봇을 serverless lambda로 구현할 것이다.
서버로 구현할 수도 있지만, 왜 lambda를 사용해서?
-
유저가 늘어남에 따라 lambda가 병렬적으로 늘어난다!
( 서로 연결 X .. 어느 하나 무너져도 ㄱㅊ )
Crontab을 통해 lambda를 호출할 수도, lambda가 다른 lambda를 호출할 수도 있다.
2. Lambda 생성
- 함수를 script로 작성하는 곳
- client_id, client_secret 등
- ( 보안 상의 이유로, 일반적으로 코드 상에 직접 입력해놓지는 않는다 )
- python script에서
os.environ.get('client_id')
를 통해서 불러올 수 있음
특정 event가 발생하여 Trigger ! Example?
-
1) 유저가 특정 artists에 대한 top tracks를 요청함.
( 해당 artists의 top tracks를 DynamoDB에 추가해야 ( artists의 id값은 이미 가지고 있음. ) )
-
2) artists id값을 lambda에 던짐
-
3) lambda가 Spoty API의 top tracks API hit
-
4) Dynamo DB 업데이트
- event : 발생하는 사건 input
requirements.txt : 설치할 패키지명들을 입력한 텍스트 파일
- lambda function script 생성하고 저장
에러가 뜰 경우?
pip3 install -r requirements.txt -t ./libs
3. Deployment
deploy.sh
새로운 lambda function이 잘 들어온 것을 확인할 수 있다.