특정 패키지 또는 라이브러리를 여러 람다 함수에서 공유하여 사용하는 경우가 자주 있습니다. 이러한 공유되는 패키지는 비즈니스 로직의 구현을 간소화하기 위해 추가하는 사용자 정의 코드이거나, 하나 이상의 함수가 사용하는 코드이거나, 표준 라이브러리일 경우가 많습니다. 람다 레이어의 출시 이전에는 공유되는 패키지와 해당 패키지를 사용하여 실제 동작을 원하는 코드를 패키징하여 람다에 배포해왔습니다. 이러면 패키징의 사이즈가 커진다는 점과 다른 람다함수에서 해당 공유 패키지를 사용할 수 없다는 단점이 있었습니다. 

람다 레이어는 이러한 불편한 점을 해소하기 위해 나왔습니다. 공통적으로 사용할 패키지 또는 라이브러리를 압축 파일에 담아 하나의 람다 레이어로 업로드한 다음, 사용자는 함수 코드를 변경할 필요 없이, 람다 레이어 안의 라이브러리를 참조하여 사용하면 됩니다.

람다 레이어란?

  • 공통으로 사용되는 패키지 또는 라이브러리를 압축하여 업로드 함으로써 여러 람다함수에서 접근하여 코드 수정 없이 사용할 수 있음
  • 람다 함수는 최대 5개의 레이어를 참조할 수 있음
  • 업로드 할 패키지를 실행할 런타임을 직접 선택할 수 있음
  • 업로드가 성공하면 새로운 람다 레이어가 생성되고 각각의 레이어는 버전별로 수정이 불가능. 만약 수정이 필요하다면 zip파일을 다시 올리고 새로운 리비전이 생성
  • 람다 함수를 호출하면 제공한 순서대로 레이어가 /opt 폴더에 생성
    • 레이어는 모두 동일한 경로에 생성되므로 이전에 생성한 레이어와 다음 생성된 레이어의 이름이 같을 경우, 덮어씌워지는 문제가 발생할 수 있음. → 레이어 호출 순서 중요

람다 레이어 장점

  • 종속성과 사용자 정의 비즈니스 로직 사이에서 우려 요소를 강제로 분리
  • 함수 코드를 더 작고 제작 목적에 더 집중하도록 만듦
  • 패키징 및 업로드해야 할 코드가 더 적고 종속성을 재활용할 수 있으므로 배포 시간이 단축

마치며

람다 레이어를 사용하여 람다에 올릴 패키지의 용량을 줄일 수 있지만 람다는 250MB 크기 제약은 여전히 “한 함수의 소스코드 크기 + 레이어 크기 합”으로 되어 있기 때문에 레이어로 쪼개더라도 총 합이 250MB로 제약이 걸려 있습니다. 따라서 람다 레이어를 단순히 람다 함수의 패키지 용량을 줄이는 목적이 아닌 비즈니스 로직 분리 및 다른 람다 함수에서 공통적으로 사용하는 패키지를 업로드 하는 점에 집중 해야 람다 레이어를 쓰는 목적성을 뚜렷하게 볼 수 있을 것입니다.

'AWS' 카테고리의 다른 글

[AWS] 람다 레이어(Lambda Layer)란?  (0) 2019.01.27
[AWS] 람다(Lambda)란?  (0) 2019.01.27
[AWS-EC2] 리눅스, 맥 터미널로 EC2 Instance 접속하기  (0) 2016.09.23

AWS람다를 찾아보면 서버리스(serverless) 라는 단어를 볼 수 있습니다.  처음 접했을 때 서버가 없는데 어떻게 요청을 받고 실행할 지 햇갈렸는데 여기서 서버리스는 내가 요청받고 처리하는 서버가 없는 것을 뜻합니다. 한 마디로 내 서버가 필요없이 AWS 서버가 알아서 처리해준다는 것입니다. 간략하게 람다를 사용하는 목적은 서버에 대한 걱정 없이 코드를 실행하고 사용한 컴퓨팅 시간에 대해서만 비용을 지불합니다. 아래에서 좀 더 자세하게 설명하겠습니다.

AWS Lambda 란? 

  • 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행
  • 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행 가능
  • 코드를 업로드하면 Lambda에서 높은 가용성으로 코드를 실행 및 확장하는 데 필요한 부분을 처리함
  • 다른 AWS 서비스에서 코드를 자동으로 트리거하도록 설정하거나 웹 또는 모바일 앱에서 직접 코드를 호출할 수 있음

프로비저닝이란?

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

Lambda 의 주요 장점

  • 인프라에 대한 걱정 없이 코드 실행 가능 -> NoOps 실현
  • 트리거를 이용해 애플리케이션을 자동으로 확장/축소 가능.
  • 코드가 병렬로 실행되고 각 트리거는 개별적으로 처리되어 정확히 워크로드 규모에 맞게 조정됨.
  • 100ms 단위로 코드가 실행되는 시간 및 코드가 트리거되는 회수를 측정하여 요금을 부과하고, 코드가 실행되지 않을 때는 요금이 부과되지 않음.

Lambda 사용 사례

람다를 AWS의 다른 서비스들과 조합하여 사용하면 더 큰 시너지를 낼 수 있다는 것이 람다의 또 다른 장점인 것 같은데요, 이런 방법으로 람다를 이용하면 어떤 것들을 구축할 수 있는지 사용 사례를 보겠습니다.

  • 실시간 파일 처리
    • 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 서비스와 결합하면, 확장성, 백업 또는 여러 데이터 센터 중복에 필요한 별도의 관리 작업 없이 개발자가 자동으로 확장 및 축소되고 여러 데이터 센터에 걸쳐 가용성이 높은 구성에서 실행되는 강력한 웹 애플리케이션을 구축할 수 있음.


'AWS' 카테고리의 다른 글

[AWS] 람다 레이어(Lambda Layer)란?  (0) 2019.01.27
[AWS] 람다(Lambda)란?  (0) 2019.01.27
[AWS-EC2] 리눅스, 맥 터미널로 EC2 Instance 접속하기  (0) 2016.09.23


$ chmod 400 인스턴스키.pem
 
#ssh -i 인스턴스키.pem [리눅스계열에 맞는 사용자이름]@publicIP 또는 publicDNS
$ ssh -i 인스턴스키.pem ubuntu@100.100.100.1

리눅스계열에 맞는 사용자 이름 목록

  • Amazon Linux AMI 경우 사용자 이름은 ec2-user
  • RHEL5 AMI 경우 사용자 이름은 root 또는 ec2-user
  • Ubuntu AMI 경우 사용자 이름은 ubuntu
  • Fedora AMI 경우 사용자 이름은 fedora 또는 ec2-user
  • SUSE Linux 경우 사용자 이름은 root 또는 ec2-user


만약 리눅스계열에 맞지 않은 사용자이름으로 접속을 시도할 시 Permission denied (publickey) 에러가 납니다.

'AWS' 카테고리의 다른 글

[AWS] 람다 레이어(Lambda Layer)란?  (0) 2019.01.27
[AWS] 람다(Lambda)란?  (0) 2019.01.27
[AWS-EC2] 리눅스, 맥 터미널로 EC2 Instance 접속하기  (0) 2016.09.23

+ Random Posts