안녕하세요!
요즘 AI 모델을 개발하고 서비스로 배포하는 일이 많아지면서, 백엔드 인프라 구축에 대한 고민도 깊어지고 효율적인 백엔드를 구축하려는 움직임이 많이 보이고 있습니다.
모델 자체의 성능을 끌어올리는 것도 중요하지만, 안정적이고 확장 가능한 API 게이트웨이를 만드는 것도 정말 중요한 부분인데요.
오늘은 이 고민을 해결해 줄 환상의 조합, Kong Gateway와 FastAPI에 대해 이야기해보려고 합니다.
이 둘을 함께 사용하면 얼마나 쉽고 효율적으로 AI 플랫폼을 구축할 수 있는지, 사용했던 경험들에 대해 공유해 보는 시간을 가져 보도록 하겠습니다. :)
Kong Gateway가 필요한 이유 :
왜 AI 모델 서비스에 Kong Gateway가 필요할까요?
AI 모델을 API로 만들어서 배포하는 건 정말 흔한 일입니다.
다만, 단순히 uvicorn 같은 걸로 띄워놓고 끝내면 다음과 같은 문제가 발생합니다.
① 인증과 보안: "우리 모델은 허가된 사용자만 써야 하는데..."
② 과부하 방지: "어떤 사용자가 API를 너무 많이 호출해서 서버가 죽으면 어쩌지?"
③ 여러 모델 관리: "모델이 여러 개인데, 엔드포인트가 다 제각각이라 관리하기 힘드네..."
이러한 문제점들에 대해서 Kong Gateway는 복합적으로 제공하고 있습니다.
다양한 플러그인을 제공해서 인증, 속도 제한, 로깅 같은 기능들을 모델 코드에 손댈 필요 없이 쉽게 추가할 수 있습니다.
한마디로, AI 모델 개발자는 핵심 로직에만 집중하고, 복잡한 인프라 관리는 Kong에게 맡길 수 있는 거죠. 야호 !

1. 인증 (Authentication): API 키나 JWT(JSON Web Token) 등을 이용해 허가된 사용자만 모델에 접근할 수 있도록 통제합니다.
2. 속도 제한 (Rate Limiting): 특정 사용자가 API를 너무 많이 호출해서 서버에 과부하가 걸리는 것을 막아줍니다. 1분당 10번만 호출할 수 있도록 제한을 걸어두면, 악의적인 공격이나 실수로 인한 시스템 다운을 방지할 수 있습니다.
3. 라우팅 (Routing): 여러 개의 AI 모델을 운영할 때, 각 모델의 API 엔드포인트가 제각각이면 관리하기가 매우 힘듭니다. Kong을 이용하면 모든 요청을 api.my-ai-platform.com 같은 하나의 도메인으로 받고, 요청 경로에 따라 적절한 모델로 알아서 보내줄 수 있습니다. 예를 들어, /api/v1/image-classification은 이미지 분류 모델로, /api/v1/text-generation은 텍스트 생성 모델로 보내는 식입니다.
Kong Gateway + FastApI 조합 :
그러면 Kong Gateway 와 FastAPI는 왜 AI 모델을 구축할때 같이 사용될까요?
AI 모델 추론은 대부분 I/O 바운드 작업으로, 데이터(ex : 이미지 파일, 텍스트)를 읽고 모델에 넣고, 결과를 반환하는 과정에서 CPU가 아닌 디스크나 네트워크 같은 I/O 작업이 대부분을 차지하고 있습니다.
FastAPI는 이름 그대로 '빠르게' 동작하는 Python 웹 프레임워크으로, asyncio 기반으로 설계되어 비동기 처리에 매우 강해 이러한 I/O 작업을 효율적으로 처리하여 여러 요청을 동시에 병렬로 처리할 수 있습니다.
마치 층층이 다른 사람들이 타는 초고속 엘리베이터처럼, 한 요청이 끝나기를 기다리지 않고 다음 요청을 바로 처리 가능합니다.
또한, FastAPI는 자동 문서화 생성 및 데이터 유효성 검사등 개발자 친화적인 기능들을 제공하고 있습니다.
자동 문서화 : API를 만들면 **OpenAPI(Swagger UI)**와 ReDoc 문서를 자동으로 생성해 줍니다. 개발자는 물론 API를 사용하는 다른 팀원들도 쉽게 API 명세를 확인하고 테스트할 수 있습니다.
데이터 유효성 검사 : Python의 타입 힌트(type hints)를 이용해 들어오는 요청의 데이터 타입을 자동으로 검증해 줍니다. 잘못된 형식의 데이터가 들어오면 모델에 도달하기도 전에 에러를 반환해 시스템 안정성을 높여줍니다.
그로 인해서 Kong Gateway가 든든한 방패 역할을 한다면, FastAPI는 번개처럼 빠른 무기 같은 존재라고 할 수 있습니다.
둘이 만나면 속도와 안정성을 모두 잡는 AI 플랫폼을 만들 수 있어 둘의 조합으로 많이 사용하고 있습니다
Kong Gateway + FastApI 예제 :
간단한 이미지 분류 AI 모델을 예시로, Kong과 FastAPI를 어떻게 연동하는지 예제를 구현해보도록 하겠습니다.
▶ 1단계: FastAPI API 만들기
우선, 이미지를 받아서 간단하게 분류해 주는 API를 만들어 보도록 하겠습니다. (실제 AI 모델 추론 로직은 더미 코드로 대체)
# main.py
from fastapi import FastAPI, File, UploadFile
from PIL import Image
import io
app = FastAPI()
@app.post("/classify_image/")
async def classify_image(file: UploadFile = File(...)):
"""
이미지 파일을 받아서 분류 결과를 반환하는 API
"""
image_bytes = await file.read()
image = Image.open(io.BytesIO(image_bytes))
# 여기서 실제 AI 모델 추론이 이뤄집니다.
# 예시: 이미지 크기로 분류하기
if image.width > 500:
prediction = "large_image"
else:
prediction = "small_image"
return {"filename": file.filename, "prediction": prediction}
그 다음 터미널에서 uvicorn main:app --host 0.0.0.0 --port 8000 명령어로 FastAPI 서버를 실행해 줍니다.
uvicorn main:app --host 0.0.0.0 --port 8000
▶ 2단계: Kong Gateway 설정하기
이제 이 FastAPI 서버를 Kong 뒤에 숨겨서 관리해보도록 하겠습니다. Docker Compose를 사용하면 Kong을 쉽게 배포할 수 있습니다.
docker-compose.yml 파일을 작성하고, docker-compose up -d 명령으로 컨테이너를 실행합니다
Kong이 뜨면 Admin API를 통해 우리의 FastAPI 서비스를 등록합니다.
# Kong에 FastAPI 서비스 등록하기
curl -X POST http://localhost:8001/services \
--data "name=my-ai-service" \
--data "url=http://host.docker.internal:8000"
# AI 서비스로 향하는 라우트 설정하기
curl -X POST http://localhost:8001/services/my-ai-service/routes \
--data "paths[]=/ai/classify"
이제 외부에서는 'http://localhost:8000/ai/classify/classify_image' 경로로 접근하도록 API ContextPath가 설정되었습니다.
깔끔하게 경로가 정리됐죠? 후훗
▶ 3단계: 플러그인 추가하기
kong 플러그인을 추가하여 API 키 인증과 속도 제한을 적용해보도록 하겠습니다.
# API를 사용할 소비자(유저) 등록하기
curl -X POST http://localhost:8001/consumers/ \
--data "username=model-user-1"
# 등록된 소비자에게 API 키 발급하기
curl -X POST http://localhost:8001/consumers/model-user-1/key-auth \
--data "key=shhh-this-is-my-secret-key"
# AI 서비스에 속도 제한(Rate Limiting) 플러그인 적용하기
# 1분당 최대 5번만 호출 가능!
curl -X POST http://localhost:8001/plugins \
--data "name=rate-limiting" \
--data "config.minute=5" \
--data "config.policy=local" \
--data "service.name=my-ai-service"
이제 API를 호출할 때는 발급받은 키를 헤더에 담아야만 호출이 성공하도록 인증이 구현 되었습니다
키가 없거나, 1분에 5회 이상 호출하면 Kong이 알아서 요청을 막아줍니다.
# API 키를 포함한 성공적인 호출 예시
curl -X POST http://localhost:8000/ai/classify/classify_image \
-H "apikey: shhh-this-is-my-secret-key" \
-F "file=@./my_image.jpg"
마치면서 :
FastAPI는 모델의 추론 성능을 최대로 끌어올려 요청을 빠르게 처리하고, Kong은 그 API를 안전하게 보호하고 효율적으로 관리하는 역할을 담당합니다.
이 둘을 잘 활용하면, 개발자는 AI 모델 개발이라는 본질적인 업무에 집중하고, 운영팀은 Kong의 관리 페이지(Kong Manager)를 통해 손쉽게 API 사용 현황을 모니터링하고 제어할 수 있습니다.
여러분의 AI 플랫폼이 단순히 '돌아가는' 것을 넘어, 안정적이고 확장 가능한 서비스로 성장하길 바란다면 이 조합을 꼭 고려해 보는것을 권장 드립니다 :)

'For 전공, 전문가 > IT' 카테고리의 다른 글
자바스크립트 함수 선언식 vs 함수 표현식 (1) | 2025.09.02 |
---|---|
AI 모델 , 양자화(Quantization) 란? (8) | 2025.08.29 |
데이터베이스 쿼리 속도를 높이는 인덱스(Index) 완전 정복 (3) | 2025.08.25 |
[보안] Jenkins Git Parameter Plugin 보안 대참사 - 혹시 당신 회사도? (7) | 2025.08.14 |
Python 3.14 톺아보기 : 템플릿 문자열(t-string) (4) | 2025.08.14 |