AWS Lambda는 서버를 프로비저닝하지 않고도 내가 작성한 코드를 실행시켜주는 서버리스 컴퓨팅의 가장 대표적인 서비스다.

Lambda에서 실행할 수 있는 런타임은 가장 많이 활용되는 언어인 Node, Python, Java를 모두 네이티브하게 지원.

표시되지 않은 언어는 사용자 지정 런타임을 이용해 실행 가능.

 

이렇게 작성한 Lambda 함수를 실행함에 있어 가장 중요한 것은 "이벤트" 이다.

Lambda는 데이터 상태 변화, 엔드 포인트 요청, 혹은 Lambda를 호출하도록 설정해둔 리소스 상태 변화등에 의해 실행된다.

 

이렇게 이벤트에 의해 트리거된 Lambda는 작성해둔 로직을 그대로 실행한다.

이때는 API나 SDK에서 지원하는 작업 거의 대부분을 수행할 수 있다.

 

Lambda = 즉, 특정 이벤트가 발생했을 때 Lambda가 실행 되어서 내가 코드로 작성한 로직을 수행한다.

 

Amazon API gateway

개발자가 API를 손쉽게 생성, 게시, 유지 관리, 모니터링할 수 있도록 하는 서버리스 기반의 완전 관리형 서비스다.

API는 애플리케이션이 백엔드 서비스의 데이터, 비즈니스 로직, 또는 기능에 엑세스할 수 있는 "정문" 역할을 한다.

 

앞에서 개발했던 Lambda 함수를 API Gateway에 등록함으로써 클라이언트나 서비스에서 REST API 기반으로 요청할 수 있는 엔드포인트를 제공한다.

API gateway는 엣지 최적화, 리전, 프라이빗 등 세 가지 종류의 엔드포인트를 제공하며, 캐싱 및 간편한 모니터링과 같은 기능도 제공한다.

API gateway를 사용하면 실시간 양방향 통신이 가능한 WebSocket API 및 서버리스 워크로드 및 HTTP 엔드포인트에 최적화된 RESTful api를 만들 수 있다.

ㄴRESTful API와 HTTP API 두 가지 버전을 제공한다.

 

가장 일반적인 서버리스 기반 애플리케이션은 API gateway를 이용해서 엔드포인트를 제공하고 백엔드는 Lambda가 수행하고 데이터는 관리형 데이터베이스 서비스인 Amazon RDS를 활용하는 단순 아키텍쳐다.

 

1. 운영 관점에서의 접근

- 모니터링이 중요하다. API Gateway 액세스 로그를 활성화하여 로깅을 할 수 있고, AWS X-Ray를 활용해 API 요청에 대한 가시성을 높이거나 Amazon CloudWatch의 다양한 매트릭을 모니터링 할 수 있다.

2. 안정성 관점에서의 접근

- 초당 요청 건수에 따라 Lambda의 Provisioned Concurrency를 구성해 백엔드를 보호할 수 있다.

이를 통해 쓰로틀링을 방지함으로써 애플리케이션의 안정성을 향상시킬 수 있고, 아니면 API gateway의 할당량을 구성하여 

과도한 요청이 백엔드로 들어오는 것을 방지하는 것도 가능하다.

3. 보안 관점에서의 접근

- Lambda 코드 자체에 DB의 크리덴셜 정보나 API Key와 같은 자격 증명을 직접 저장하기보다는 AWS Secrets Manager라는 서비스에 저장하고 이를 Lambda에서 읽어서 사용하는게 더욱 안전하다.

4. 성능 관점에서의 접근

- RDS로의 연결은 RDS Proxy를 사용하는 것이 보다 효과적이고, API Gateway에서는 HTTP API로 레이턴시를 개선할 수 있다.

5. 비용 관점에서의 접근

- Lambda Insights를 통해 Lambda 함수의 메모리 사용률을 모니터링하고 최적의 메모리를 할당해 비용을 최적화할 수 있다. 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기