반응형
REST API의 HTTP 메서드(GET, POST, PUT, DELETE 등)와 호출 패턴(동기·비동기·폴링·웹훅·스트리밍)을 이해하면 시스템 성능과 안정성을 모두 잡을 수 있습니다.

1. HTTP 메서드 기본 이해
REST API는 HTTP 메서드를 통해 자원을 조작합니다. 주요 메서드는 다음과 같습니다.
- GET: 서버에서 데이터를 조회
장점: 멱등성(Idempotent) 지원, 캐시 활용 가능
단점: 요청 본문(request body)을 지원하지 않아 복잡한 쿼리 처리 한계 - POST: 서버에 데이터를 생성 또는 서버 내부 프로세스 트리거
장점: 요청 본문을 활용해 복잡한 데이터 전송 가능
단점: 멱등성 미지원, 중복 요청 시 이중 생성 주의 - PUT: 기존 자원 전체 교체
장점: 멱등성 보장, 자원 업데이트 명시적
단점: 전체 업데이트가 필요해 불필요한 데이터 전송 - PATCH: 기존 자원 부분 수정
장점: 변경 필드만 전송해 효율적
단점: 멱등성 구현 복잡, 표준화 논쟁 - DELETE: 자원 삭제
장점: 멱등성 보장
단점: 삭제 후 복구 로직 별도 구현 필요
반응형
2. 호출 패턴별 비교
2.1 동기 호출 (Synchronous Request)
클라이언트가 요청 후 응답을 기다립니다.
- 구현 단순·직관적
- 동시 요청 과부하 시 응답 지연↑
- GET/POST/PUT/DELETE CRUD 작업에 적합
2.2 비동기 호출 (Asynchronous Request)
요청 후 즉시 응답을 받고, 실제 처리 완료 시 콜백·웹훅·메시지 큐로 알림 받습니다.
- UI 반응성 우수
- 콜백 설계·재시도 로직 복잡
- 대용량 ETL·백그라운드 작업에 적합
2.3 폴링 (Polling)
클라이언트가 주기적으로 GET 요청으로 상태를 조회.
- 구현 간단
- 불필요한 호출·네트워크 부하↑
- 웹훅 미지원 외부 API 상태 감시에 사용
2.4 웹훅 (Webhook) / 서버 푸시 (Push)
서버가 이벤트 발생 시 클라이언트 엔드포인트로 POST 요청 전송.
- 실시간성 우수
- 엔드포인트 보안·가용성 관리 필요
- 결제 알림·CI/CD 이벤트 등에 적합
2.5 스트리밍 (Streaming API)
장기 연결로 서버가 데이터 변경을 지속 전송.
- 실시간 데이터 피드(예: 금융 시세)
- 장기간 연결 유지로 리소스 점유
- 방화벽·프록시 설정 이슈
3. 시스템 부하 관점
| 호출 방식 | 메서드 활용 | 실시간성 | 구현 복잡도 | 부하 특성 |
| 동기 호출 | GET/POST/PUT/DELETE | 낮음 | 낮음 | 요청 시점 집중 |
| 비동기 호출 | POST + 큐 연동 | 중간 | 높음 | 초기 가벼움→후속 작업 집중 |
| 폴링 | 반복적 GET | 낮음 | 중간 | 주기별 지속 부하 |
| 웹훅/푸시 | POST | 높음 | 중간 | 이벤트 발생 시 분산 부하 |
| 스트리밍 | GET (장기 연결) | 최고 | 높음 | 연결 지속 점유 |
4. 사용 가능한 원천과 도구
- API 게이트웨이(Azure API Management, AWS API Gateway): 인증·로깅·로드밸런싱
- 메시지 큐(RabbitMQ, Kafka, Azure Service Bus): 비동기 호출·이벤트 버스
- 웹훅 플랫폼(ngrok, Azure Functions HTTP Trigger): 개발 환경 엔드포인트 노출
- 스트리밍 플랫폼(Server-Sent Events, WebSocket, SignalR): 실시간 양방향 통신
5. 선택 가이드라인
- 즉시성↓ 단순성↑: 동기 호출 + GET/POST
- 실시간성↑ 인터랙션↑: 웹훅(POST) 또는 스트리밍
- 대규모 배치 처리: 비동기 POST + 메시지 큐
- 외부 API 폴링 한계: 폴링 대신 웹훅 지원 여부 확인
비즈니스 요구사항, 대기시간 허용범위, 인프라 제약조건을 종합 고려해 최적의 메서드와 호출 패턴을 선택하면 안정적인 REST API 서비스를 구축할 수 있습니다.
반응형
'● Data Insights > System' 카테고리의 다른 글
| 데이터 엔지니어링 인프라의 변화: Lakehouse + Semantic Model 통합 시대 (0) | 2025.10.22 |
|---|---|
| (Data) JSON 활용 가이드: 보안·정합성·RDB 변환 관점 (0) | 2025.10.15 |
| (Data) 데이터 성숙도: 수집부터 통합, 분석, AI·ML·DL까지 (0) | 2025.10.10 |
| (Windows) WSL과 가상머신을 활용한 Linux 환경 구축: 6가지 방법 비교 분석 (0) | 2025.10.08 |
| (Data) ETL/ELT 증분 처리의 핵심: DELETE+INSERT부터 CDC까지 (1) | 2025.10.07 |