Programming-[Infra]/Cloud-AWS

[TIL] AWS Lambda, CloudFormation, Gateway

컴퓨터 탐험가 찰리 2022. 10. 19. 20:21
728x90
반응형

람다 서비스 구조

AWS Lambda로 AWS에서 Function Resource를 만들어서 하나의 서비스를 처리하도록 만들 수 있다. 작은 서버와도 같아서, 기존 서비스와는 별개로 요청을 받고, 어떤 작업을 처리하고 응답을 내보낼 수 있는 구조이다.

 

람다는 내부 용량 제한이 있는데, 만약 이 용량 제한이 512MB라면 작업을 처리하기 위한 모든 파일을 포함하기에는 부족하다. 서버를 띄우기 위한 일부 코드와 파이썬 프로그램 등만 포함해도 512MB를 초과할 수 있다. 따라서 람다에 필요한 라이브러리 등의 코드들은 직접 포함하지 못하고 Layer라는 참조 정보만 포함하게 된다(단순하게 표현하자면 특정 라이브러리를 다운로드 받을 수 있는 URL). 실제 람다 실행 시에 Layer 정보를 참조로하여 다른 라이브러리에 접근하고 그 프로그램들을 가져와서 작업을 처리하는 것이다.

 

참조자료: https://labs.brandi.co.kr/2022/01/04/kimsj7.html

람다 내부의 어떤 작업을 처리하는 함수에는 각종 AWS Resource들을 연결할 수 있다. 예를 들어 인증 정보를 처리하는 서비스를 이 함수에 연결하여 실행 전에 인증 처리가 되도록 만들 수 있다. 이런 연결구조를 AWS에서는 ColudFormation이라는 서비스로 구성할 수 있다.

 

 

게이트웨이

보통은 CloudFormation 구조상에서 Resource끼리 거미줄처럼 연결되어 있고, 그 맨 앞단에 Gateway를 달아놓는다. 모든 요청과 응답이 이 Gateway를 통해 통신하도록 만들고 요청과 응답에 여러 옵션을 지정할 수 있다. 예를 들어 URL이 ‘v2/example’로 Gateway에 들어오더라도, 서버에 ‘v3/example’로 요청하도록 Gateway에서 조작하는 것이다. 다른 예로, 특정 url로 오는 요청을 특정 시간 단위(ex 1주)에 최대 100개만 처리가능하도록 설정해줄 수도 있다. 다시 말해 Gateway를 통해 서비스의 입출력을 제어하여 URL 변경에 대한 무중단배포, 요청/응답 풀 관리, 서비스 모듈 분리 등 다양한 기능을 구현할 수 있게 된다.

728x90
반응형