Ncloud API Gateway로 서버리스 API 구축하기

Ncloud API Gateway로 서버리스 API 구축하기

서버리스(Serverless) 아키텍처는 클라우드 시대에 비용 절감과 개발 속도를 모두 잡을 수 있는 이상적인 방식으로 각광받고 있습니다. 네이버 클라우드 플랫폼(Ncloud)은 이러한 서버리스 개발을 위해 API Gateway, Function 서비스, Object Storage 등을 연계할 수 있는 환경을 제공합니다. 이 포스팅에서는 Ncloud API Gateway로 서버리스 API 구축하기라는 주제로, 프론트엔드와 백엔드 사이를 연결하는 API Gateway의 역할부터 실제 연동 방법까지 단계적으로 설명합니다.


API Gateway란?

API Gateway는 다양한 클라이언트(웹, 모바일, IoT 등)의 요청을 백엔드 서비스로 중계해주는 프록시 서버입니다. 경량화된 API 관리를 위한 핵심 컴포넌트로, 다음과 같은 기능을 제공합니다:

  • RESTful API 인터페이스 제공
  • 트래픽 제어 및 인증/인가 처리
  • 요청 필터링 및 응답 가공
  • 서버리스 Function 또는 외부 엔드포인트 연동

네이버 클라우드의 API Gateway는 Function Compute, Container, 외부 API, Static Content 등 다양한 리소스와 연동 가능하며, API 사용량 통계, 응답 시간 측정, 사용자 인증 기능도 기본 제공합니다. Ncloud API Gateway로 서버리스 API 구축하기는 단순한 API 배포를 넘어, 전체 서비스 아키텍처를 코드 없이 빠르게 구성할 수 있게 도와줍니다.


1. API Gateway 서비스 생성하기

Ncloud 콘솔에 로그인한 후, 다음 절차를 따라 API Gateway를 생성합니다.

  1. 서비스 선택
    • 왼쪽 메뉴에서 [Application Service] → [API Gateway] 선택
  2. 게이트웨이 생성 클릭
    • 이름, 설명 입력
    • 연결할 VPC 선택 (일반적으로 기존 VPC 사용)
  3. 기본 설정
    • 엔드포인트 도메인이 자동으로 생성됩니다 (https://<게이트웨이 ID>.apigw.ntruss.com)
    • 사용자 정의 도메인 연결도 가능 (선택 사항)
  4. 사용자 인증 여부 설정
    • 로그인 기반 API를 만들 경우 Naver Cloud Platform ID 인증 또는 외부 OAuth 인증도 연동 가능합니다.

게이트웨이를 만들고 나면, 이제 API 경로 및 대상 리소스를 연결하는 작업으로 넘어갑니다.


2. 리소스 및 메서드 추가

서버리스 방식의 API는 Function과의 연동이 핵심입니다. 다음 절차로 API 리소스를 구성합니다.

  1. 리소스 추가
    • 예: /weather, /user/info 등 RESTful 경로 설계
    • 하위 리소스로 계층적 API 설계 가능
  2. HTTP 메서드 선택
    • GET, POST, PUT, DELETE 등 메서드 설정
    • 각 메서드마다 다른 대상(Function 등) 지정 가능
  3. 대상 유형 선택
    • 네이버 클라우드 Function을 선택하거나, 외부 서버의 URL을 직접 입력할 수도 있습니다.
  4. Function 연결
    • Application Service > Function에서 미리 작성한 함수를 연결
    • 파라미터 매핑, 요청 본문 처리 방식 설정 가능

예를 들어, /get-news 경로에 연결된 Function이 뉴스 데이터를 수집하고 가공하는 역할을 한다면, 클라이언트는 단순히 해당 URL을 호출하는 것만으로 결과를 받을 수 있습니다.


3. Function으로 서버리스 백엔드 구축하기

Ncloud Function은 Python, Node.js, Java 등 다양한 언어를 지원하는 서버리스 실행 환경입니다. 별도의 서버 없이 코드를 작성하고 업로드하면, API Gateway와 자동으로 연동해 백엔드 API를 구축할 수 있습니다.

  1. Function 생성
    • 콘솔 > Application Service > Function에서 생성
    • 런타임 선택 (예: Node.js 18, Python 3.9 등)
    • 코드 직접 작성 또는 ZIP 업로드 가능
  2. 핸들러 작성 예시 (Python)
def handler(event, context):
    name = event.get('queryStringParameters', {}).get('name', 'Guest')
    return {
        'statusCode': 200,
        'headers': {'Content-Type': 'application/json'},
        'body': f'{{"message": "Hello, {name}!"}}'
    }
  1. API Gateway와 연동
    • 앞서 만든 API Gateway 리소스에서 이 함수를 연결
    • 요청 방식(POST/GET), 파라미터 전달 구조 등을 설정

이렇게 구성하면, 클라이언트는 API Gateway 주소만 호출해도 Function이 자동 실행되어 결과를 반환받습니다. 이 방식은 유지보수가 매우 간편하고, 요청량에 따라 자동으로 확장되기 때문에 소규모부터 대규모 서비스까지 유연하게 대응할 수 있습니다.


4. 테스트 및 배포

API Gateway에서는 실시간 테스트 도구를 제공하므로, 배포 전 다음 항목을 점검할 수 있습니다.

  • 각 리소스와 Function이 제대로 연결되었는지
  • 요청 헤더, 파라미터, 바디의 전달 방식이 예상대로 작동하는지
  • 오류 시 응답 코드와 메시지를 명확하게 전달하는지

테스트 후 이상이 없다면 ‘배포(Deploy)’ 버튼을 클릭하여 API를 퍼블릭하게 오픈할 수 있습니다. 이후 클라이언트에서는 발급받은 URL을 통해 API를 호출하고 응답을 받을 수 있습니다.


Q&A

Q. API Gateway로 외부 API도 연결할 수 있나요?

네, 가능합니다. API Gateway는 Ncloud 내부 서비스(Function 등)뿐만 아니라, 외부 API 엔드포인트도 연결할 수 있습니다. 예를 들어 /stock 리소스를 만들고 외부 증권 API에 연결하면, 클라이언트는 Ncloud API Gateway만 호출해도 외부 API로 데이터를 가져올 수 있습니다.

이를 통해 외부 API의 호출 URL이나 인증 방식 등을 숨길 수 있어 보안적 측면에서도 장점이 큽니다. 또, CORS 문제 해결이나 응답 포맷 가공 등도 API Gateway에서 처리 가능하므로 프론트엔드 개발자는 더 단순한 방식으로 API를 사용할 수 있습니다.


Q. 서버리스 API의 장점은 무엇인가요?

서버리스 API는 물리적 서버를 유지할 필요 없이 요청이 들어올 때만 코드를 실행합니다. 주요 장점은 다음과 같습니다:

  • 비용 효율성: 사용한 만큼만 과금되어 Idle Time 비용이 없음
  • 확장성: 요청량에 따라 자동 확장, 트래픽 급증에도 안정적
  • 빠른 개발 속도: 인프라 구축 없이 API만 설계하면 바로 배포 가능
  • 유지보수 간소화: 보안 패치, 서버 모니터링 등 부담이 없음

Ncloud API Gateway와 Function을 연동하면, 이런 장점을 모두 누릴 수 있어 스타트업이나 소규모 프로젝트에 매우 적합한 방식입니다.


Q. API 호출량이 많아도 성능에 문제는 없나요?

네이버 클라우드 API Gateway는 고가용성과 자동 확장 기능이 내장되어 있어 대량의 요청에도 안정적인 응답 속도를 유지할 수 있습니다. 단, 기본 호출 횟수에는 제한이 있으며, 이를 초과하면 요금이 부과되거나 호출 제한이 걸릴 수 있습니다.

기본 무료 제공량은 일정 수준까지 있으며, 초과 시 100만 건당 약 5천 원 수준의 과금이 발생합니다. Function도 실행 횟수와 실행 시간에 따라 과금되므로, 호출이 많은 서비스라면 API 캐싱, CDN 연계 등을 통해 효율을 높이는 전략이 필요합니다. 콘솔에서 실시간 모니터링 기능을 통해 사용량을 추적하고, 필요 시 알림 설정을 통해 초과 사용을 방지할 수 있습니다.