AWS - Lambda 사용 후기

권태용·2020년 7월 22일

AWS

목록 보기
1/2

내가 처음으로 사용해본 AWS의 서비스.

처음 람다를 사용하게된 계기는 Twitter 크롤링을 하기위해 사용하였습니다. 하지만 여러가지 제약사항이 있었고 결국 EC2로 진행하였습니다. 😭 결국 Lambda는 Twitter 데이터 처리 결과를 보여주는 RestAPI 배포용으로 사용하였습니다.

이번 글에서는 Lambda에 대한 간단한 설명을 이야기하고 제가 겪었던 람다의 장단점을 이야기 해보려 합니다.

Lambda란 ?

람다의 설명은 AWS사이트에 자세히 나와있습니다. 이번에 람다를 사용하면서 배웠던점 그리고 람다를 사용하는것이 맞는지에 대한 고민의 흔적들을 적어보겠습니다.

  1. DB 연결
  • 람다는 실행시 컨테이너 기반으로 프로세스가 올라갑니다. 따라서 이벤트가 여러개가 동시에 왔을때 컨테이너가 각각 올라가기 때문에 그 숫자에 맞춰 DB 컨넥션도 같이 늘어납니다. 이를 해결하기위해 MongoDB Connection을 재사용하는 방법을 사용하였습니다.링크텍스트

  • Lambda는 Serverless 서비스이기 때문에 같은 Serverless 서비스와 같이 상용 하는것이 좋다고 생각됩니다. 예로 Nosql서비스는 AWS-DynamoDB가 있습니다.

  • 회사는 DB를 내부 망으로 운영하여 외부에서 DB접근이 불가능 했습니다. 때문에 Lambda가 DB에 접속하기 위해서는 같은 내부망을 사용하여야 합니다. 이때 VPC를 DB와 같은 망으로 설정 하여 DB에 접속 하였습니다.
  1. 함수 호출
  • Lambda는 컨테이너 기반 서버리스 컴퓨팅 서비스일 뿐입니다. 저는 'Lambda RestAPI' 라는 키워드를 보고 함수호출이 HTTP Request기반으로만 이뤄진다고 잘 못된 생각을 가졌었습니다. Lambda 는 Event기반으로 호출이 이루어지고 이는 S3 File write, delete와 같은 이벤트도 연결 할 수 있습니다.

  • Lambda는 초당 최대 호출 개수를 지정할 수 있습니다. 저는 크롤링을 최대한 빨리 처리하고자 한번에 1000개 이상의 함수를 호출 시켰는데 저희 회사 웹 페이지중 람다로 배포된 API를 쓰는 페이지를 전부 다운시켰습니다..😰

  1. 함수 실행시간
  • 람다의 실행시간은 최대 12분입니다. 때문에 오랜시간이 걸리거나 고 사양의 컴퓨팅 파워를 요구하는 함수는 지양하는 것이 좋습니다. 저도 이러한 이유때문에 EC2로 하여 크롤링을 진행 하였습니다.. ㅜㅜ
  1. 멀티 프로세싱 처리
  • Python으로 크롤링 코드를 작성하는중 Network 작업을 고려해서 MultiProcessing 작업을 시도하였습니다. 로컬에서는 잘 돌아갔지만 Lambda에서는
[Errno 38] Function not implemented: OSError

    sl = self._semlock = _multiprocessing.SemLock(kind, value, maxvalue)
OSError: [Errno 38] Function not implemented

에러가 발생했습니다. 람다는 프로세스간에 공유변수가 지원되지 않습니다.. 때문에 공유변수를 사용하지 않는 방식으로 코드를 짜시는 것을 추천드립니다.

Lambda사용 후기

  • 장점1. 상당히 개발 및 배포에 대한 소요시간이 매우 짧습니다. AWS에서 많은 기능을 제공해주고 있어서 API연동이 쉬웠고 Serverless의 강점인 배포방법이 정말 쉬웠습니다. 함수를 수정해주기만 하면 되니까요.😭

  • 단점1. 디버깅이 정말 힘듭니다. 로컬의 경우 디버깅모드로 에러코드의 상태값을 확인하면 되지만 Lambda의 경우 CloudWatch를 통해 저장된 로그기록을 통해 확인해야 합니다. 그리고 환경설정에서 발생하는 에러들도 있어서 무조건 Cloud환경에서의 테스트는 필수입니다.

  • 단점2. 요금이 생각보다 비쌉니다.. 함수 호출 빈도가 낮을 경우에는 확실한 비용절감의 효과를 누릴수 있습니다. 하지만 그 반대의 상황이라면 굳이 Lambda를 사용하는것이 좋다고는 말 할 수 없을것 같습니다. 컴퓨팅 파워와 시간을 고려한 개발스택 구성이 필요합니다.

profile
개발일기장

2개의 댓글

comment-user-thumbnail
2021년 8월 23일

현업에서는 서버리스가 추세인가요??? 저도 새로 웹앱 만들면서 고민되네요. 항상 EC2 에 올려왔는데...

1개의 답글