상황별 API·통신 기술 선택 가이드
2026.10.01 · 4분
1. 선택 원칙
기술 이름부터 고르지 말고 요구사항을 먼저 문장으로 적습니다.
text
나쁜 출발: gRPC가 빠르다니 사용하자.
좋은 출발: 내부 서비스 호출량이 많고 JSON 직렬화와 계약 불일치가 문제다.그다음 현재 방식으로 해결 가능한지, 새 기술을 도입할 만큼 문제가 큰지 확인합니다.
2. 빠른 결정 흐름
- 일반적인 요청과 응답인가?
- 단순 CRUD라면 REST부터 검토합니다.
- 화면별 데이터 조합이 복잡하다면 GraphQL을 검토합니다.
- 연결을 유지해야 하는가?
- 서버에서 클라이언트로만 보내면 SSE를 검토합니다.
- 양방향 이벤트가 빈번하면 WebSocket을 검토합니다.
- 내부 서비스 간 통신인가?
- 단순성과 범용성이 우선이면 REST도 충분합니다.
- 엄격한 타입·고빈도 호출·스트리밍이 중요하면 gRPC를 검토합니다.
3. 상황별 예시
관리자 페이지
회원, 게시글, 권한, 설정을 조회·수정하는 기능이라면 REST가 가장 단순합니다.
http
GET /users
PATCH /users/10
DELETE /posts/20쇼핑몰
- 상품·장바구니·주문: REST
- 화면별로 수많은 연관 데이터를 유연하게 조회: GraphQL 고려
- 고객 상담 채팅: WebSocket
- 주문 처리 진행률: SSE 가능
- 분리된 결제·재고 서비스 간 통신: 규모와 요구에 따라 REST 또는 gRPC
AI 채팅
- 대화 목록과 세션 CRUD: REST
- 질문 제출과 답변 스트리밍: HTTP 스트리밍 또는 SSE
- 음성 데이터를 계속 보내고 중간 결과를 동시에 받음: WebSocket 또는 양방향 스트리밍 검토
실시간 관제
- 장비와 세션 설정: REST
- 서버가 센서 상태를 계속 전달: SSE
- 웹에서 장비를 제어하고 장비 상태도 즉시 받음: WebSocket
- 대규모 내부 수집 서비스: 요구에 따라 gRPC 스트리밍 또는 메시지 브로커 검토
마이크로서비스
서비스 수가 적고 호출량이 보통이면 REST로 시작할 수 있습니다. 다음 문제가 반복될 때 gRPC의 가치가 커집니다.
- 여러 언어 사이의 계약 불일치
- 매우 빈번한 작은 요청
- 양방향 또는 서버 스트리밍
- 수동 DTO 작성과 변환 비용
4. 기술별 도입 전 확인표
GraphQL
- 복잡한 데이터 조합 문제가 실제로 반복되는가?
- N+1과 질의 복잡도를 통제할 수 있는가?
- 클라이언트 캐시 전략이 준비되었는가?
WebSocket
- 정말 양방향 실시간 통신이 필요한가?
- 재연결·누락·중복·순서를 처리할 것인가?
- 다중 서버 환경의 메시지 전달 구조가 있는가?
SSE
- 데이터가 서버 → 클라이언트 방향인가?
- 프록시 버퍼링과 Timeout 설정을 제어할 수 있는가?
- 인증 헤더 제약을 어떻게 해결할 것인가?
gRPC
- 성능 또는 타입 계약 문제가 측정되었는가?
.proto호환성과 코드 생성을 운영할 수 있는가?- 브라우저 직접 접근이 필요한가?
5. 함께 쓰는 경우의 경계 정하기
기술을 조합한다면 기능별 기준을 문서로 명확히 둡니다.
text
REST: 영속 데이터 CRUD와 일반 명령
SSE: 서버 작업의 진행 상황
WebSocket: 사용자·기기 간 양방향 실시간 이벤트
gRPC: 백엔드 내부 서비스 호출경계가 없으면 같은 기능이 여러 방식으로 중복 구현되어 인증, 오류 처리, 모니터링이 복잡해집니다.
6. 도입 후 공통으로 점검할 것
- 인증과 권한 검사
- 입력값 검증
- 오류 형식
- Timeout과 취소
- 안전한 재시도와 멱등성
- 로그, 지표, 추적 ID
- 버전 호환성
- 부하 테스트와 장애 시나리오
통신 기술을 선택해도 이 문제들은 자동으로 해결되지 않습니다.
7. 추천 학습·적용 순서
- HTTP 요청·응답을 이해합니다.
- REST로 CRUD API를 직접 만듭니다.
- 인증·CORS·캐시·오류 처리를 적용합니다.
- SSE로 간단한 진행률 스트림을 만듭니다.
- WebSocket으로 채팅을 구현합니다.
- GraphQL로 관계 데이터 질의를 경험합니다.
- gRPC로 두 서버 사이의 Unary와 Streaming 호출을 구현합니다.
- 같은 요구를 여러 기술로 구현해 운영 복잡성까지 비교합니다.
8. 최종 판단 문장
기술을 결정할 때 다음 문장을 완성해 봅니다.
현재 ___ 문제가 있으며, ___ 요구사항 때문에 ___ 기술을 선택한다. 기존 방식보다 ___가 좋아지고, 대신 ___의 운영 비용을 감수한다.
이 문장을 구체적으로 쓸 수 없다면 새 기술이 아직 필요하지 않을 가능성이 큽니다.
9. 핵심 정리
가장 좋은 기술은 기능 수와 관계없이 현재 문제를 필요한 만큼 단순하게 해결하고 팀이 안정적으로 운영할 수 있는 기술이다.