Dev/AWS

[AWS] Lambda, hoxy 너 뭐 돼?

아콩2 2022. 6. 21. 15:02
반응형

회사에서 솔루션을 배포한 클라이언트의 목록을 API로 조회해야 하는 일이 생겼다.
당시 나의 생각으로는 API 필요 -> 서버 구축 이였기 때문에 서버를 새로 구현해서 배포하겠다고 호기롭게 주장했다.
??? : 굳이 서버를 ,,,? 람다로 하면 되는거 아닌가요?
나 : 람다요,,? 넵 알겠습니다. (사실 모름)
회의를 마치고 자리에 돌아와서 1차 멘붕에 빠졌다. 왜냐면 내가 아는 람다는 () -> {} ㅇㅣ거 뿐이였기에,,
혼란스러운 마음을 뒤로 하고 갓구글에 람다라고 검색해 람다의 존재를 알게 되었다 :-)

AWS 람다(Lambda) ?

  • 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스 (= 서버리스 컴퓨팅 서비스)
  • 람다를 사용하면 거의 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행 할 수 있음
  • 람다가 지원하는 언어(JS,Python,Ruby,Java,Go, dot Net)중 하나로 코드를 공급하기만 하면 됨.
  • 람다 API를 사용하여 람다 함수를 호출하거나, 람다가 다른 AWS 서비스의 이벤트에 응답하여 함수를 실행 할 수 있음
  • 람다를 사용하면 사용자는 자신의 코드에 대해서만 책임을 갖음. 람다는 메모리,CPU,네트워크 및 기타 리소스 균형을 제공하는 컴퓨팅 플릿을 관리하여 코드를 실행
  • 자체 컴퓨팅 리소스를 관리하는 경우 AWS의 다른 컴퓨팅 서비스를 이용하세요 ^_^

프로비저닝 (Provisioning) : 공급,준비,대비,식량 이란 의미로 IT 에서 의미는 특정 서비스를 제공 받기 위하여 서비스 실행부터 시작해 서비스를 제공받기 전 단계까지 처리되는 일련의 절차를 뜻한다. 즉, 사용자 혹은 비지니스 요구사항에 맞게 할당,배치,배포하여 시스템을 사용가능하도록 준비하는 절차

람다 장점

  • 람다는 필요 시에만 함수를 실행하며, 일일 몇 개의 요청에서 초당 수천 개의 요청까지 자동으로 확장이 가능함.
  • 사용한 컴퓨팅 시간만큼만 비용을 지불하고, 코드가 실행되지 않을 때는 요금이 부과되지 않음
    __ 즉, 람다를 이용하면 비용과 인프라 운영관리 부담이 절감 된다!__

람다의 단점

  • 리소스 제한 : 메모리 (최대 10GB), 처리시간 (최대 900초)

    • 하나의 함수가 한번 호출될 때 AWS에서는 최대 10GB의 메모리까지 사용이 가능하며, 처리 시간은 최대 15분
    • 람다 할당량 에서 자세한 스펙 참고
  • Stateless (상태비저장)

    • 람다 함수가 호출되면 새로운 컨테이너를 띄우는 방식이기 때문에 별도의 상태를 저장하지 않음
    • 이전 이벤트의 실행 컨텍스트에 대한 액세스 권한이 없다보니 db connection을 유지하는 등의 기능을 수행하지 못함
  • Cold start (콜드 스타드)

    • 람다를 오랫동안 사용하지 않고 있다가 오랜만에 실행하게 되면 딜레이 발생
    • 람다 컨테이너를 띄우기 위해 서버가 켜지고 실행환경을 구성하기 위해 딜레이가 발생하며 적지 않은 시간임
    • 해결 방법
      • 람다를 계속 호출 : 항상 컨테이너가 준비되어 있게 하도록 람다를 지속적으로 호출해주는게 가장 좋은 방법이지만 호출이 될 때마다 비용이 산정이 되는 방식이기 때문에 그만큼 비용이 더 들 수 있음.
      • 람다의 메모리를 늘려 스펙 향상
      • 프로비저닝된 동시성 활성화 : 2019년도에 콜트스타트 문제를 해결하기 위해 나온 옵션으로 함수의 호출에 바로 응답할 수 있게 미리 준비하는 옵션, 이를 활성화 하면 미리 함수의 환경을 세팅해서 딜레이가 줄어들지만 추가적인 비용은 발생함

    람다함수 라이프사이클
    소스코드 다운로드 -> 실행환경 구성(컨테이너 시작) -> 런타임 동작 -> 코드 실행

  • 동시성 제한

    • 람다는 각 리전별로 동시에 실행할 수 있는 람다함수의 개수를 최대 1000개로 제한 하고 있음
    • request 수가 1000개를 넘어가게 되면 람다가 수행되지 않는 문제점 발생

람다의 장단점까지 확인 해보니 API 1개를 위해 서버를 배포하겠다고 당당하게 말한 나의 의견을 개그라고 생각 안해주셔서 놀라울 따름 ㄴ0_0ㄱ
람다의 단점을 확인 했을땐 콜드 스타드, 동시성 제한이 우리의 API의 이슈가 될 것 같다. 일단은 이런게 있다~ 정도만 알고 실제 적용 할 때 추가로 포스팅 하겠읍니다

마치며

자바에서의 람다와 AWS의 람다가 한국어 표기법이 동일하고 영어 스펠링이 다른 줄 알았는데 둘다 Lambda 였다.
현재 사용되고 있는 람다의 근간은 수학과 기초 컴퓨터과학 분야에서의 람다 대수라고 한다. 람다 대수는 간단히 말하자면 수항게서 사용하는 함수를 보다 단순하게 표편하는 방법이다.

자바에서의 람다 표현식의 장점중 하나가 간결한 코드 작성이라는 점을 고려해본다면 ,,
서버를 배포 하지 않고 간단하게 사용 할 수 있는 서비스 이기 때문에 AWS에서도 해당 서비스의 이름을 람다라고 칭한걸까,,? 찾아보고 명확한 해답을 알게 된다면 람다 적용편 혹은 번외로 찾아오겠습니다

뭔가 ㄱㅖ속 찾아보기를 미루는 듯한 느낌적인 느낌

AWS 람다라는 개념 자체는 어려운 내용은 아닌 듯 하지만 깊게 파고 들 수록 알아야 하는 내용이 많은 것 같다.
글감이 늘어나면 오아~

References

aws 공식문서
https://brownbears.tistory.com/428
https://pearlluck.tistory.com/637

반응형