AWS

GreenBean·2022년 4월 22일
0
post-thumbnail

Lambda

Lambda란?

  • AWS Lambda를 찾아보면 서버리스(serverless) 라는 단어를 볼 수 있음
    • 처음 접했을 때 서버가 없는데 어떻게 요청을 받고 실행하는지 헷갈릴 수 있는데 여기서 서버리스서버가 없다는 뜻이 아니라 사용자가 직접 관리해야 하는 서버가 없다는 뜻
      • 보이지 않는 곳에서 관리형 서버(추상화된 서버)가 따로 존재하고 필요에 따라 자동으로 Scale up 되거나 Scale down
      • 따라서 개발자가 직접 서버의 구성과 유지 관리를 고려할 필요가 없다는 것을 의미
  • 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행
  • 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행 가능
  • 코드를 업로드하면 Lambda에서 높은 가용성으로 코드를 실행 및 확장하는 데 필요한 부분을 처리
  • 다른 AWS 서비스에서 코드를 자동으로 트리거하도록 설정하거나 웹 또는 모바일 앱에서 직접 코드를 호출할 수 있음

Tip! 프로비저닝이란?

  • 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요 시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말함
  • 서버 자원 프로비저닝, OS 프로비저닝, 소프트웨어 프로비저닝, 스토리지 프로비저닝, 계정 프로비저닝 등이 있고 수동으로 처리하는 수동 프로비저닝과 자동화 툴을 이용해 처리하는 자동 프로비저닝이 있음

Lambda의 장단점

장점

  • 인프라에 대한 걱정 없이 코드 실행 가능
    • 인프라 설계에 대한 부담을 줄일 수 있음
    • 코드 개발에 집중 가능
  • 트리거를 이용해 애플리케이션을 자동으로 확장 & 축소 가능
    • 확장성이 뛰어남
  • 코드가 병렬로 실행되고 각 트리거는 개별적으로 처리되어 정확히 워크로드 규모에 맞게 조정됨
  • 100ms 단위로 코드가 실행되는 시간 및 코드가 트리거되는 회수를 측정하여 요금을 부과하고, 코드가 실행되지 않을 때는 요금이 부과되지 않음
    • 함수가 호출되는 만큼 비용 부과

단점

  • 코드 용량이 250MB
    • 압축하면 50MB
  • 함수 최대 실행 시간이 15분
  • 요청이 들어올때마다 컨테이너를 띄워 처리하기 때문에 EC2에 비해 상대적으로 느림
  • 함수가 호출되는 만큼 비용이 부과되기 때문에 트래픽이 많은 서비스를 Lambda로 처리하는 경우 많은 비용이 청구될 수 있음

Lambda의 동작 구조

  • 미리 함수의 형태로 구현해 둔 뒤, 특정한 요청(이벤트)의 트리거(trigger)가 발생했을 때, 함수를 호출
    • 특정한 작업에 따라 실행할 코드나 함수를 미리 구현한 뒤에 특정 상황에 이벤트를 불러일으키는 방식으로 코드를 실행할 수 있다는 뜻

Lambda 사용 사례

실시간 파일 처리

  • Amazon S3를 사용하여 업로드하는 즉시 데이터를 처리하도록 AWS Lambda를 트리거할 수 있음
  • Lambda를 사용하여 실시간으로 이미지를 썸네일하고, 동영상을 트랜스코딩하고, 파일을 인덱싱하고, 로그를 처리하고, 콘텐츠를 검증하고, 데이터를 수집 및 필터링할 수 있음

실시간 스트림 처리

  • AWS Lambda 및 Amazon Kinesis를 사용하여 애플리케이션 활동 추적, 트랜잭션 주문 처리, 클릭 스트림 분석, 데이터 정리, 지표 생성, 로그 필터링, 인덱싱, 소셜 미디어 분석, IoT 디바이스 데이터 텔레메트리 및 측정을 위한 실시간 스트리밍 데이터를 처리할 수 있음

추출•변환•로드

  • AWS Lambda를 사용하여 DynamoDB 테이블의 모든 데이터 변경에 대한 데이터 검증, 필터링, 정렬 또는 기타 변환 작업을 수행하고 변환된 데이터를 다른 데이터 스토어로 로드할 수 있음

IoT 백엔드

  • AWS Lambda 및 Amazon Kinesis를 사용하여 사물 인터넷(IoT) 디바이스 데이터 텔레메트리 및 분석을 위한 백엔드를 구축할 수 있음

모바일 백엔드

  • AWS Lambda 및 Amazon API Gateway를 사용하여 API 요청을 인증 및 처리하도록 백엔드를 구축할 수 있음

웹 애플리케이션

  • AWS Lambda를 다른 AWS 서비스와 결합하면, 확장성, 백업 또는 여러 데이터 센터 중복에 필요한 별도의 관리 작업 없이 개발자가 자동으로 확장 및 축소되고 여러 데이터 센터에 걸쳐 가용성이 높은 구성에서 실행되는 강력한 웹 애플리케이션을 구축할 수 있음
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글