Lambda는 AWS가 제공하는 서버리스 FaaS 솔루션으로, 함수의 인스턴스를 실행하여 이벤트를 처리한다.
- FaaS는 자체 서버 시스템이나 수명이 긴 서버 애플리케이션을 관리하지 않고 백엔드 코드를 실행하는 것
- FaaS는 런타임(node.js, Java 등)에 대한 사전 준비가 필요하지 않음
- FaaS 기능에는 특히 상태 및 실행 기간과 관련하여 상당한 아키텍처 제한이 있음
- 수평적 확장은 완전 자동이며 탄력적이며 공급자가 관리함
- FaaS의 기능은 일반적으로 공급자가 정의한 이벤트 유형에 의해 트리거됨
- HTTP 요청에 대한 응답으로 트리거되도록 만들 수 있음
● Cold Start
- 앱이 처음부터 시작하는 것
- 기기가 부팅되거나 시스템에서 앱이 종료되고 나서 처음으로 시작
- 시스템과 앱이 다른 시작 상태보다 더 많은 작업을 실행해야 하므로 시작 시간을 최소화하는 데 큰 어려움
● Warm Start
- 콜드 스타트 시 발생하는 작업의 일부 하위 집합을 포함
- 애플리케이션을 실행하고 난 후, 장시간 사용되지 않아
프로세스를 안드로이드가 후순위로 밀어낸 후에
(그러나 아직 프로세스가 kill 되지 않은 순간)
다시 애플리케이션을 실행할 때 warm start로 인식
AWS Lambda에서 실행하는 코드는 'Lambda 함수'로 업로드 된다. 각 함수에는 이름과 설명, 진입점, 리소스 요구 사항 등 연관된 구성 정보가 포함되어 있다.
※ 유의점
- Lambda의 함수는 Stateless여야 한다.
- 무상태성을 유지해야만이 요청이 많아 졌을때 Lambda에서 필요한 만큼 함수 사본을 빠르게 시작하여 자동 스케일링이 가능하다.
- Lambda의 프로그래밍 모델은 상태 비저장이지만 코드 또는 S3, DynamoDB 등 다른 웹 서비스를 호출하여 상태 저장 데이터에 엑세스 할 수 있다.
▶ 트리거
▶ 함수 로깅 하는 방법
이러한 이유로 모놀리틱 아키텍처에서 마이클서비스 아키텍처로의 전환이 가속화되고 있는 요즘
API Gateway의 중요성이 대두되고 있다.
- 각 서비스들을 연결하고 요청에 대한 단일 진입점으로써 아키텍처의 복잡도를 줄여주며 전달의 정확성과 그 결과에 대한 로깅까지도 가능하다!
- API Gateway를 통해 마이크로서비스들을 연결하고 마이크로서비스의 단점을 보완할 수 있다.
마이크로서비스에 대해서?
IP 화이트리스팅
IP 주소 범위를 제한하거나 화이트리스트에 추가한다. 액세스는 일반적으로 액세스 정책 관리자를 통해 구성된다. 액세스 정책 관리자는 Gateway가 처리하는 방법 및 제한 사항을 사용자에게 표시하는 방법과 함께 제한 사항을 구현할 수 있다. AWS의 API Gateway를 예로 들면, 자원 정책 기능은 사용자가 리소스에 대한 JSON 정책 문서를 할당하고 IAM 그룹, 사용자 또는 역할이 그들에 액세스 할 수 있는지 확인할 수 있다.
전송 메세지 암호화
API Gateway를 통과하는 서비스 간의 메시지를 보호하는 역할을 하며 전송 중인 모든 정보에 공통 표준이 적용되도록 한다. Amazon API Gateway의 경우 적절한 최소 보안 표준을 설정하는 암호화되지 않은 워크로드를 지원하지 않는다.
속도 제한
스로틀링 메커니즘을 사용하여 대기열 및 경우에 따라 요청 우선순위를 관리하게 된다. 속도 제한은 요청 우선순위에 따라 API에 대한 요청 수를 제한하는 기능이다.
정책 수준으로 구성이 정의되며 모든 요청 및 프로토콜에 적용된다. 속도 제한은 DDOS 공격의 영향을 잠재적으로 제한하기 때문에 보안 기능으로도 간주된다.
API 구성 및 라우팅
API Gateway의 작업은 서비스에서 서비스로 요청을 라우팅하는 것 뿐만 아니라 성능과 효율성도 고려한다. API 구성 또는 집계는 서로 다른 서비스로의 쿼리 결과를 단일 응답으로 결합하는 프로세스다. 이것은 대규모 데이터 세트에 이상적이지는 않지만 요청자에서 서비스까지 이상적인 경로를 제공하는 매우 간단하고 효율적인 방법이다.
캐싱
TTL이 만료될 때까지 요청이 서비스를 모두 적중할 필요가 없도록 API Gateway 수준에서 캐싱할 수 있다. 캐싱은 대부분의 API Gateway에 공통적인 기본 기능이지만 구성의 세분성은 제품 제공 및 구현에 따라 다르다.
로깅 추적
즉시 사용 가능한 로깅 기능을 제공하여 API Gateway를 통과하는 모든 API 트래픽의 추적을 가능하게 하고 Gateway에서 들어오고 나가는 요청, URL, 관점에서 수행하는 방식과 함께 요청되는 매개변수에 대한 지표를 표시한다.
Gateway의 다른 모니터링 기능도 중요하다. 예를 들어 AWS Cloudwatch 를 사용 하여 Rest API 실행과 같은 API Gateway의 지표를 표시한다. 이는 서로 다른 API 간에 비교 지표를 제공할 수 있기 때문에 많은 가치가 있다.
API 버전 관리
다양한 버전의 API를 처리하는 것은 API Gateway의 중요한 기능이다.
API 버전 관리는 소비자와 함께 기존 API에 대한 코드 해독 변경을 방지하는 데 도움이 되는 중요한 전략으로 개발자가 사용자에게 미치는 영향을 최소화하면서 여전히 사용 중인 API의 이전 버전을 천천히 감가상각할 수 있다. 이는 내부 API 사용자에게 중요하지만 실제 개발자와 같이 도메인 소유자에게 직접 액세스할 수 없는 API의 제3자 소비자와 작업할 때는 훨씬 더 중요하다.
Amazon API Gateway는 트래픽 관리, 권한 부여 및 액세스 제어, 모니터링, API 버전 관리를 비롯해 최대 수십만 건의 동시 API 호출을 수락 및 처리하는 데 관련된 모든 작업을 처리합니다.