티스토리 뷰

프로그래밍 공부/Ruby on Jets : 서버리스

AWS Lambda : 계층(Layer)의 이해

마음 따뜻한 개발자, 나른한 하루 2020. 1. 21. 06:55

 

Ruby on Jets로 배포된 모든 AWS Lambda 함수에 있어 공통적으로 계층(Layer)이 붙습니다.

그리고 이 계층들을 보면 공통적으로 하나의 파일을 가리키고 있습니다.

바로 Ruby on Jets에서 라이브러리 패키지로서 쓰이는 Gem입니다.

 

Gem 같은 경우는 Jets(Rails) 프로젝트를 돌리는데에 있어 근본이자, 핵심입니다.

Gem 없이는 일부 백엔드적 기능에 있어선 먹통이 발생될 수 있는 상황입니다.

 

즉, 계층(Layer)은 모든 Lambda 함수에 있어 공통적으로 필요한 패키지 파일을 언제든 재활용해서 쓸 수 있도록 하는 기능이라고 보면 됩니다.

 

 

  • AWS 계층(Layer)의 시작

AWS 계층(Layer)은 2018년 말 AWS Re:Invent에서 발표된 기술입니다.

본래 AWS Lambda에는 최대 250MB 데이터밖에 수용하지 못하는 문제점 때문에 용량절약에 많은 애를 먹었다고 합니다. 그렇다보니 모든 프로젝트에 있어 공통적으로 필요한 패키지 파일일지라도, 매번 함수에 있어 패키지파일도 함께 업로드를 해야한다는 문제점이 있었습니다.

[AWS Lambda] 계층(Layer) 기능이 나오기 전의 Lambda 아키텍쳐

이렇게되면 용량만 잔뜩 쌓이고, 너무 비효율적이었습니다.

그래가지고 나오게 된 기능이 AWS Layer였습니다.

[AWS Lambda] 계층(Layer) 기능이 나온 후, 확 변해버린 Lambda 아키텍쳐

계층(Layer) 이라는 개념이 나온 이후로 부턴 이제 파일 용량 관리에 겨우 숨통이 트이게 되었습니다.

 

 

  • AWS 계층(Layer) 업로드

새로운 계층 파일을 추가하고 싶을 경우, 그냥 단순히 AWS Lambda 페이지에 접속 후, 좌측에 보이는 '계층' 메뉴를 클릭해서 가면 됩니다.

 

새로운 계층을 추가 시, 파일은 반드시 zip 파일이어야 합니다.

 

 참고1  계층에 업로드된 파일은 압축이 풀린 상태로  /opt  디렉토리 내에 저장이 됩니다.

 참고2  계층 삭제 후 다시 계층을 생성함에 있어, 과거의 이름이 같은 파일을 업로드 시, 자동으로 버전 관리가 이루어집니다.

(만약 삭제/생성을 3번째로 한 계층일 경우 버전 3이라고 찍힙니다.)

 

 

  • 새로운 계층 생성 후, /opt 내부 들여다보기

새로운 계층을 생성 후, 한번  /opt  내부를 들여다보겠습니다.

 

1. 아무 파일을 하나 만듭니다.

저는  gift.rb  라는 파일을 만들어냈습니다.

 

2. 파일을 압축합니다.

 

3. 새로운 계층을 생성합니다.

계층의 이름은 awesome 이라고 하겠습니다.

 

4. 함수에 계층을 추가합니다.

 

5. 함수/계층 변경에 대해 저장합니다.

 

6. 이제 아래 코드를 가지고 테스트를 해보겠습니다.

 

7. 테스트 결과 /opt 디렉터리에 계층(Layer)파일인  gift.rb  가 압축이 풀려진 채로 있는게 확인이 됩니다!

 

 

  • 계층(Layer) 사용 시 유의사항

현재 계층(Layer)에는 계층 하나 당 파일 업로드가 50MB로 제한되어 있습니다.

이부분도 고려해서 계층 파일관리도 잘 해야 할겁니다.

 

 

  • Ruby on Jets : Deploy 시 계층(Layer) 자동 설정

Ruby on Jets에서는 AWS Lamabda로 Deploy 시 기본적으로 Gem 패키지에 대해선 모든 Lambda 함수별로 되지만, 그 외에는 개별적으로 설정을 해줘야 합니다.

 

개별적인 설정에 있어 함수별로 계층(Layer)을 자동적으로 추가해주는 기능이 있습니다.

## config/application.rb

Jets.application.configure do

  config.lambda.layers = [
    "arn:aws:lambda:ap-northeast-2:××××××××××××:layer:chromedriver:20",
    "arn:aws:lambda:ap-northeast-2:××××××××××××:layer:package:1"
  ]

end

다음과 같이  config/application.rb  에서 Deploy 시, 계층을 자동적으로 추가시키게 할 수 있습니다.

 참고  모든 람다 함수에 있어 Gem 패키지 파일은 자동으로 함수 레이어에 등록됩니다.

 

계층 명시에 있어선 계층(Layer)의 버전 ARN 명칭으로 정의를 내려주면 됩니다.

 

 

 

  • 관련자료

1. Custom 계층 설정 [클릭]

 

 

  • 자료 참고

1. AWS Layer(계층)의 이해 [클릭]

댓글
댓글쓰기 폼
공지사항
Total
37,626
Today
18
Yesterday
231
링크
«   2020/08   »
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
글 보관함