HTTP & API 기초
RAG, Agent, LLMOps 파이프라인은 대부분 API 호출로 연결됩니다. API 기본기를 모르면 기능은 동작해도 운영에서 쉽게 무너집니다.학습 목표
- HTTP 메서드와 상태코드를 정확히 구분할 수 있습니다.
- 멱등성, 타임아웃, 재시도 정책을 설계할 수 있습니다.
- REST와 GraphQL의 차이를 이해하고 상황에 맞게 선택할 수 있습니다.
- API 변경 시 호환성과 버전 전략을 설명할 수 있습니다.
HTTP 메서드 비교
| 메서드 | 용도 | 멱등성 | 요청 본문 | 대표 사례 |
|---|---|---|---|---|
GET | 리소스 조회 | O | 없음 | 모델 상태 조회 |
POST | 리소스 생성 | X | 있음 | 추론 작업 생성 |
PUT | 전체 교체 | O | 있음 | 설정 전체 업데이트 |
PATCH | 부분 수정 | X | 있음 | 파라미터 일부 변경 |
DELETE | 리소스 삭제 | O | 없음/선택 | 실험 데이터 삭제 |
멱등성(Idempotency)이란 같은 요청을 여러 번 보내도 결과가 동일하게 유지되는 성질입니다.
POST는 멱등하지 않으므로 재시도 시 중복 생성을 방지하는 별도 설계가 필요합니다.HTTP 상태 코드 주요 분류
| 코드 | 의미 | 대응 주체 | 예시 |
|---|---|---|---|
200 | 성공 | - | 정상 응답 |
201 | 생성 완료 | - | 리소스 생성 성공 |
400 | 잘못된 요청 | 클라이언트 | 파라미터 누락/형식 오류 |
401 | 인증 실패 | 클라이언트 | 토큰 만료, 키 누락 |
403 | 권한 없음 | 클라이언트 | 접근 권한 부족 |
404 | 리소스 없음 | 클라이언트 | 잘못된 엔드포인트 |
429 | 요청 과다 | 클라이언트 | Rate Limit 초과 |
500 | 서버 내부 오류 | 서버 운영자 | 서버 코드 버그 |
502 | 게이트웨이 오류 | 서버 운영자 | 업스트림 서버 장애 |
503 | 서비스 불가 | 서버 운영자 | 서버 과부하/유지보수 |
504 | 게이트웨이 타임아웃 | 서버 운영자 | 업스트림 응답 지연 |
실무 설계 원칙
- URL은 리소스 중심으로 설계합니다. (
/v1/models/{id}/predict) - 요청/응답 스키마를 문서화합니다. (OpenAPI/Swagger 권장)
- 에러 포맷을 서비스 전체에서 통일합니다.
- 타임아웃/재시도/지수 백오프 정책을 기본값으로 제공합니다.
- 버전(
/v1,/v2) 정책으로 하위 호환성을 관리합니다.
REST vs GraphQL 비교
| 항목 | REST | GraphQL |
|---|---|---|
| 엔드포인트 | 리소스별 다수 | 단일 엔드포인트 |
| 데이터 선택 | 서버가 결정 | 클라이언트가 필드 지정 |
| Over-fetching | 발생 가능 | 필요한 필드만 요청 |
| 캐싱 | HTTP 캐싱 활용 용이 | 별도 캐싱 전략 필요 |
| 학습 곡선 | 낮음 | 중간 |
| 적합 사례 | CRUD 중심 API | 복잡한 관계형 데이터 조회 |
요청/응답 예시
curl로 API 테스트하기
API 버전 관리 전략
URL 경로 방식 (가장 일반적)
/v1/models, /v2/models처럼 URL에 버전을 명시합니다.
직관적이고 캐싱이 쉬워서 대부분의 AI/ML API가 이 방식을 사용합니다.재시도는 무조건 좋은가?
재시도는 무조건 좋은가?
아닙니다. 멱등성이 없는
POST를 단순 재시도하면 중복 작업이 생길 수 있습니다.
Idempotency-Key 헤더 또는 작업 상태 확인 API를 함께 설계하세요.
지수 백오프(Exponential Backoff)와 최대 재시도 횟수를 반드시 설정합니다.4xx와 5xx를 분리해야 하는 이유
4xx와 5xx를 분리해야 하는 이유
4xx는 입력/권한 문제라 클라이언트 수정이 필요합니다.
5xx는 서버 문제라 운영자 대응이 필요합니다.
이 구분이 없으면 장애 대응 우선순위가 무너집니다.
알림 시스템에서 5xx만 즉시 알림으로 설정하는 것이 일반적입니다.
초보자에게 가장 중요한 운영 지표
초보자에게 가장 중요한 운영 지표
성공률, p95 지연시간, 타임아웃 비율, 5xx 비율을 먼저 보세요.
기능 수보다 API 품질 지표가 운영 안정성을 결정합니다.
LLM API 호출 시 특수 고려사항
LLM API 호출 시 특수 고려사항
LLM API는 응답 시간이 수 초~수십 초로 길어 일반적인 타임아웃(5초)이 부족합니다.
스트리밍 응답(
stream: true)을 활용하면 첫 토큰 도착 시간(TTFT)을 줄일 수 있습니다.
토큰 사용량 기반 과금이므로 max_tokens 설정과 비용 모니터링이 필수입니다.체크리스트
- API 스키마와 에러 코드가 문서화되어 있나요?
- 타임아웃/재시도/백오프 정책이 있나요?
- API 변경 시 하위 호환 전략이 있나요?
- 상태 코드별 대응 주체(클라이언트/서버)가 정의되어 있나요?
- LLM API 호출 시 스트리밍과 토큰 제한이 설정되어 있나요?

