진지한 개발자

Lambda 본문

IT/AWS

Lambda

제이_엔 2024. 1. 24. 15:43
728x90

AWS Lambda

  • 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스
  • Go, Java, JavaScript, Python, Ruby 등 다수의 언어로 람다함수 만들수 있음

Serverless

  • 람다는 서버리스 컴퓨팅 서비스
  • 서버리스는 개발자가 서버를 관리하지 않을 뿐 결국 클라우드 서비스가 처리하는 서버를 관리함
  • 서버리스 컴퓨팅 기술은 클라우드가 어떤 방식으로 관리를 하는지를 기준으로 BaaS와 FaaS로 나눌 수 있음

1. BaaS (Backend as a Service)

  • 보통의 서버 개발을 할때 서버뿐만이 아니라 데이터 저장을 위한 데이터베이스, 유저인증기술, 이미지를 저장할 공간 등도 함께 구성해야 함
  • BaaS는 위처럼 서버 개발에 필요한 데이터베이스, SNS로그인 연동, 객체 저장소 등을 자체 API로 제공을 해주는 서비스임. 대표적으로 Firebase와 같은 서비스가 있음
  • Lambda 는 FaaS 서버리스 기술 임

주요 사용사례

  • S3 + Lambda : AWS S3의 특정이벤트(이미지 업로드 등)에 대응
  • CloudWatch + Lambda : AWS CloudWatch에 로그이벤트(특정 패턴 등록 가능) 에 대응
  • API Gateway + Lambda : API Gateway로 들어오는 HTTP 요청을 람다 함수를 사용해 응답처리
  • SQS + Lambda : AWS SQS 등으로 들어온 이벤트를 확인 후 비동기로 람다 함수를 이용해 작업처리

장점

  • 실행횟수에 비례하여 비용을 청구 (100만번 실행당 0.2$)
  • 자동 스케일업, 높은 가용성 : 요청이 들어올 때 동적으로 자원을 할당하고 스케일링을 지원함
  • 빠른 제품 출시 : 서버관리에 신경 쓸 필요없이 코드에만 집중할 수 있음 (서버 트래픽, 사양, 프로비저닝, 스케일링 고려할 필요 없음)

단점

  • cold start (Lambda가 깰때 걸리는 시간)
    • 람다는 처음 호출한다면 Cold Start를 하게 됨. 이 경우 초기 지연시간이 발생하고 이후 Warm 상태를 유지하며 이때의 경우는 람다를 다시 호출해도 지연시간이 발생하지 않고 빠르게 응답하게 됨. 그러다 약 5분여 이상 호출이 되지 않는다면 Cold상태로 바뀌어 사용자는 다시 지연시간을 경험하게 됨
    • CloudWatch 를 통해 Lambda를 5분마다 한번씩 지속적으로 호출하거나 Route53에서 Health Check를 람다함수 API Gateway Endpoint 로 설정해 둘수도 있음
    • 5분마다 함수 실행시 프리티어를 고려하지 않고 메모리 1024로 람다가 약 10초간 실행되는 함수를 10개 warm 상태 유지시 대략적인 비용은
      • 함수호출비용 = $ 0.18
      • 함수에 사용한 컴퓨팅 비용 = $ 14.4
  • 실행시간 제한
    • AWS Lambda 함수의 실행시간은 최대 900초 (15분) 로 제한
    • 최대시간을 초과하면 예외가 발생하기 때문에 함수를 분할하여 작성하고 메모리의 사용량도 효율적으로 관리해야 함
  • 제한된 환경변수 크기
    • AWS Lambda는 환경 변수를 사용하여 함수에 설정 정보를 제공하는데 이러한 변수에 저장할수 있는 데이터의 크기는 제한적 (환경변수의 크기 : 4 KB로 제한)
  • 메모리 제한
    • 실행 중 사용할 수 있는 메모리 양에 대한 제한이 있음 (기본 128 MB ~ 최대 3008 MB)
    • 함수에 많은 메모리를 할당하는 함수의 연산은 더 빠르게 실행 될 수 있음
  • 제한적인 로깅 및 디버깅 기능
    • 디버깅 및 문제해결을 위해 일부 로깅 및 모니터링 기능을 제공. 기능은 좀 제한적
  • 지역성 제한
    • Lambda 함수에서 사용 가능한 리소스 유형이 지역에 따라 다를 수 있음

 

Lambda의 효율을 위한 확장 기능

Lambda Layer

  • 코드 재사용이 어려웠으나, 공통부분을 레이어로 만들고 람다 함수들이 이를 공유해서 사용할 수 있음
  • 이는 같은 계정 뿐만 아니라 다른 계정들 사이에서도 서로 공유가 가능

provisioned Concurrency

  • Lambda의 cold start 문제점을 해소하기 위한 기술
  • 함수를 지속적으로 초기화하고 아주 빠르게 준비하여 두 자리 수 밀리초로 응답하는 기능. 이 기능은 웹 및 모바일 백엔드, 지연 시간에 민감한 마이크로서비스 또는 동기식 API와 같은 대화형 서비스를 구현하기에 적합

step function

  • 람다 함수들을 조합해서 하나의 워크플로우를 구성할 수 있는 기술
  • SNS, SQS, 다이나모 DB 등 여러 서비스와 통합해서 사용할 수 있음

RDS 프록시

  • RDS 데이터베이스 사이에서 커넥션을 관리해 줌
  • 서버의 경우 커넥션의 수를 자체적으로 관리하지만 람다의 경우는 그렇지 않음
  • 이를 위해 RDS와 람다 사이에 RDS 프로시를 두고 RDS 프록시로 커넥션을 관리함

Serverless Framework

  • 람다 설정, 배포 등의 작업을 할때 일일이 AWS 콘솔로 업로드하기에는 힘듬
  • 코드로 명시하고 명령어로 작업할 수 있도록 도와주는 IaC(Infrastructure as Code) 도구

람다 엣지

  • 람다 엣지는 AWS CloudFront에서 제공해주는 기능
  • CloudFront는 파일을 전송해주는 캐시 서버
728x90

'IT > AWS' 카테고리의 다른 글

NLB load balancing  (0) 2024.02.17
AWS VPN  (0) 2024.02.17
Lambda  (1) 2024.02.08
ElastiCache Redis  (1) 2024.01.24
Route53  (1) 2024.01.24