1. 왜 GraphQL을 사용하는가?
✅ REST의 한계
- 오버페칭:
/users를 호출 했을 때 이름만 필요했지만 이메일, 나이 등 불필요한 데이터까지 함께 옵
- 언덜페칭:
/users에서는 기본 정보만, 상세 정보는 /users/details처럼 여러 요청이 필요
✅ GraphQL의 해결책
- 필드 단위 요청 가능:
query { user { id name } }처럼 원하는 데이터만 요청 가능
- 하나의 요청으로 여러 데이터 요청 가능:
query { user { name } posts { title } }처럼 여러 리소스를 동시에 요청 가능
- 결과적으로 오버페칭/언더페칭 없이 필요한 만큼만 받아옴
- 기존 백엔드 스키마 수정 없이도 프론트가 원하는 데이터만 선택적으로 가져올 수 있음
➕ 추가 장점
type User {
id: ID!
name: String!
age: Int
}
- 스키마를 통한 강력한 타입 체크
- 런턴임 이전에 타입 에러 발견 가능
- 실시간 데이터 처리
subscription {
newMessage {
text
sender
}
}
- WebSocket 기반 실시간 데이터 구독 가능
2. 서브모듈 (Submodule) 구조 이해
✅ agent-builder-api-protocol 레포는 Submodule로 연결되어 있음