Amazon Lambda를 사용할 때 Apache APISIX가 필요한 이유

Xiaolan Cheng

December 9, 2022

Ecosystem

서버리스와 Amazon Lambda

서버리스란 무엇인가?

서버리스 컴퓨팅 또는 간단히 서버리스는 현재 소프트웨어 시장에서 인기 있는 트렌드입니다. 점점 더 많은 기업들이 전통적인 서버 중심 아키텍처에서 더 빠르고 비용 효율적인 서버리스 아키텍처로 운영을 이전하고 있습니다.

서버리스 아키텍처는 인프라를 관리하지 않고 애플리케이션을 구축하고 실행하는 방법입니다. 이는 클라우드 벤더나 자체 배포된 서버리스 플랫폼에서 필요한 인프라를 배포하여 관리합니다. 따라서 엔지니어들은 인프라의 구축, 관리, 확장에 많은 노력을 들이지 않고 애플리케이션의 비즈니스 로직에 집중할 수 있습니다. 빅3 클라우드 벤더(Amazon Web Services, Microsoft Azure, Google Cloud)는 최고의 서버리스 서비스를 제공하는 데 큰 관심을 보이고 있습니다. 예를 들어, Amazon Lambda는 AWS(Amazon Web Services)의 핵심 서버리스 컴퓨팅 서비스입니다.

아래 그림에서 볼 수 있듯이, 전통적인 배포 방식과 달리 Amazon Lambda를 사용하면 소스 파일을 업로드하고 실행 환경을 선택한 후 실행하기만 하면 됩니다. 그러면 운영 결과를 얻을 수 있습니다. 서버에서 업로드 및 컴파일 단계에서 자유로워질 수 있습니다. 이 과정에서 서버 배포, 런타임 설치, 컴파일은 모두 Amazon 서버리스 컴퓨팅 플랫폼에서 관리 및 실행됩니다. 엔지니어는 소스 코드와 실행 환경의 관련 구성만 유지하면 됩니다.

이와 관련된 기술은 BaaS(Backend as a Service)로, 더 이상 서버 측 구성 요소를 작성하고 관리하지 않고 애플리케이션의 모든 부분을 완전히 아웃소싱하는 것을 의미합니다. 서버리스는 코드가 실행되는 새로운 호스팅 환경입니다.

아키텍처 다이어그램

왜 서버리스가 필요한가?

서버리스는 몇 가지 장점이 있습니다:

  • 개발자에게 더 친숙합니다. 서버 관리의 세부 사항을 추상화하여 엔지니어들이 비즈니스 코드 자체에 집중할 수 있게 합니다.
  • 비용 측면에서, 서버리스는 사용량에 따른 지불 방식입니다.
  • 성능 측면에서, 요청 트래픽에 따라 자동으로 확장할 수 있습니다.
  • 함수에 할당된 메모리 양을 조정하여 코드 실행 및 응답 시간을 최적화할 수도 있습니다.

서버리스를 사용할 때 API 게이트웨이가 필요한 이유는?

서버리스에도 약점이 있습니다:

  • 함수 URL이 애플리케이션에 하드코딩되어 있습니다.
  • 번거로운 인증 및 인가 로직.
  • 클라우드 벤더에 대한 높은 의존성: 클라우드 벤더가 다운되면 서비스도 다운됩니다.
  • 다른 클라우드 벤더들은 매우 다른 스키마를 가지고 있어 특정 표준이 없으며, 한 벤더에서 다른 벤더로 이전하는 데 일반적으로 비용이 많이 듭니다.

API 게이트웨이는 이러한 문제를 본질적으로 해결할 수 있습니다. 함께 결합하면 서버리스는 강력한 아키텍처가 될 수 있습니다. 아래 그림은 Amazon 서버리스 서비스를 사용하여 간단한 웹 서비스를 빠르게 조립하는 방법을 설명합니다. API 게이트웨이는 인가, 경로 정의, 프록시 요청을 제공하는 데 중요합니다. Apache APISIX를 예로 들면, AWS와 Azure에 대한 서버리스 지원을 제공합니다. 애플리케이션에 함수 URL을 하드코딩하는 대신 서버리스 플러그인을 활성화하기 위해 경로를 정의할 수 있습니다. 함수 URI를 핫 업데이트할 수 있는 유연성으로, 다른 FaaS(Function as a Service) 클라우드 서비스 제공자로 업데이트하는 것이 쉬워집니다. 또한, 이 접근 방식은 번거로운 인증 및 인가의 고통을 덜어줍니다.

Amazon 서버리스 서비스로 웹 서비스 조립

Apache APISIX

Apache APISIXApache Software Foundation (ASF)의 클라우드 네이티브 API 게이트웨이입니다. 동적, 실시간, 고성능인 APISIX는 로드 밸런싱, 동적 업스트림, 카나리 릴리스, 서킷 브레이커, 인증, 관찰 가능성과 같은 기능을 제공합니다. 우리는 Apache APISIX를 사용하여 서비스 간의 전통적인 남북 및 동서 트래픽을 처리할 수 있습니다. 동시에, K8s Ingress Controller로도 사용할 수 있습니다. APISIX는 내장 플러그인을 통해 생태계를 확장하며, 인증, 보안, 관찰 가능성, 트래픽 관리, 다중 프로토콜 액세스 등 API 게이트웨이의 다양한 사용 시나리오를 다룹니다. 물론, 여기에는 많은 서버리스 관련 플러그인도 포함됩니다.

aws-lambda 플러그인

aws-lambda 플러그인은 AWS Lambda를 APISIX와 통합하여 특정 URI에 대한 모든 요청을 AWS 클라우드로 프록시합니다. 활성화되면, 이 플러그인은 구성된 URI에 대한 진행 중인 요청을 종료하고 클라이언트를 대신하여 AWS Lambda 게이트웨이 URI에 새로운 요청을 시작합니다. 이 새로운 요청은 이전에 구성된 인가 세부 정보, 요청 헤더, 본문 및 매개변수(원래 요청에서 전달된 세 가지 모두)를 포함합니다. 그리고 헤더, 상태 코드 및 본문과 함께 응답을 APISIX로 요청을 시작한 클라이언트에게 반환합니다. 이 플러그인은 AWS API 키와 AWS IAM 비밀을 통한 인가를 지원합니다.

자세한 내용은 APISIX 또는 이 블로그를 참조하십시오.

Apache APISIX의 서버리스 관련 플러그인

Amazon Lambda 외에도, Apache APISIX는 Azure Function, Lua function, Apache OpenWhisk와 같은 서버리스 관련 생태계와의 통합을 지원하며, 해당 서버리스 플러그인을 제공합니다.

표 1 Apache APISIX 서버리스 관련 플러그인

플러그인 이름설명
serverless사용자는 serverless 플러그인을 통해 사용자 정의 Lua 스크립트를 업로드하고 구성에 따라 코드 실행 단계를 지정할 수 있습니다. 예를 들어, 액세스 단계에서 요청에 대한 액세스 제어를 수행하거나, 헤더 필터 및 본문 필터 단계에서 응답 헤더 또는 응답 본문을 수정하거나, 로그 단계에서 개인화된 로그를 출력할 수 있습니다. 또한, serverless 플러그인은 핫 리로드되므로 수정 사항이 즉시 적용될 수 있으며 Apache APISIX를 재시작할 필요가 없습니다.
azure-functionsAPISIX를 Azure Serverless Function과 통합하여 특정 URI에 대한 모든 요청을 Microsoft Azure 클라우드로 프록시합니다. 활성화되면, azure-functions 플러그인은 구성된 URI에 대한 진행 중인 요청을 종료하고 클라이언트를 대신하여 Azure Functions에 새로운 요청을 시작합니다. 새로운 요청은 이전에 구성된 인가 세부 정보, 요청 헤더, 본문 및 매개변수(원래 요청에서 전달된 세 가지 모두)를 포함합니다. 그리고 헤더, 상태 코드 및 본문과 함께 응답을 APISIX로 요청을 시작한 클라이언트에게 반환합니다.
openwhiskAPISIX를 오픈소스 분산 서버리스 플랫폼 Apache OpenWhisk와 통합합니다. 활성화되면, 플러그인은 구성된 URI에 대한 진행 중인 요청을 종료하고 클라이언트를 대신하여 OpenWhisk의 API Host 엔드포인트에 새로운 요청을 시작하며, openwhisk 플러그인은 응답 정보를 클라이언트에게 반환합니다.
openfunctionAPISIX를 오픈소스 분산 서버리스 플랫폼 CNCF OpenFunction과 통합하여 동적 업스트림으로 사용합니다. 활성화되면, 플러그인은 구성된 URI에 대한 진행 중인 요청을 종료하고 클라이언트를 대신하여 OpenFunction 함수에 새로운 요청을 시작하며, openfunction 플러그인은 응답 정보를 클라이언트에게 반환합니다.

Apache APISIX와 서버리스 관련 제품 간의 관계

요약

최근 몇 년 동안 마이크로서비스 아키텍처의 등장으로 모든 것이 클라우드로 이전되고 있으며, 많은 클라우드 서비스 제공자들이 서버리스 관련 제품을 출시하고 있습니다. 서버리스 기반 개발은 매우 편리한 개발 모델이 되었습니다. 클라우드 네이티브 트렌드에 발맞춰, APISIX는 serverless, azure-functions, openwhisk, openfunction 플러그인을 제공하여 서버리스 컴퓨팅을 지원합니다.

API 게이트웨이와 그 서버리스 기능에 대해 더 알고 싶다면, https://api7.ai/contact로 문의하십시오.

Tags: