Apollo Connectors 소개와 사용법
분야
프로그래밍/소프트웨어 개발
대상자
GraphQL 및 REST API 통합을 고려하는 개발자, 기존 시스템을 GraphQL로 점진적으로 전환하고자 하는 팀
난이도: 중급~고급 (GraphQL 스키마 작성 및 Apollo Connectors 설정 이해 필요)
핵심 요약
- *GraphQL + REST API 통합 도구**
- Apollo Connectors는 REST API를 GraphQL API로 변환하여 통합하는 선언적 도구로, 새로운 GraphQL 서버 구축 없이도 REST API를 GraphQL로 변환 가능
- @connect와 @source 지시문을 통해 REST 엔드포인트와 GraphQL 필드/타입을 맵핑
- 기존 시스템 변경 없이 GraphQL 점진 도입 가능, 아키텍처 단순화 및 비용 절감 효과
섹션별 세부 요약
- Apollo Connectors 개요
- REST API를 GraphQL API로 변환하여 통합하는 도구로, 복잡한 코드 작성 없이 간편하게 구현 가능
- 기존 REST 시스템과 GraphQL의 혼합 사용 시 발생하는 비용 절감 및 아키텍처 단순화 효과
- 예: REST API의
products
엔드포인트를 GraphQL의products
쿼리로 변환
- 기본 구조 및 설정
- GraphQL 스키마에서
@source
로 REST API 소스 정의 (예:name: "ecomm"
,baseUrl
) @connect
로 REST 엔드포인트와 GraphQL 필드 연결 (예:selection
으로 HTTP 응답 필드 선택)products.graphql
파일 예시:
```graphql
type Product {
id: ID!
name: String
description: String
}
type Query {
products: [Product]
@connect(
source: "ecomm"
selection: """
$.products {
id
name
description
}
"""
)
}
```
- 실무 구현 및 실행
supergraph.yaml
파일 생성 및 설정 (Federation 2.10.0 버전 사용)- 환경 변수 설정:
APOLLO_KEY
,APOLLO_GRAPH_REF
rover dev
명령어로 로컬 개발 환경 실행 (생산 환경 사용 금지)- 주의사항:
- rover dev
명령어는 개발용으로만 사용
- Apollo 텔레메트리 및 디버깅 기능 활성화 시 민감 정보 노출 가능성
- 최신 변경 사항 및 경고
rover dev
명령어에 대한 큰 변경 사항 포함 (문서 확인 권장)- "resource attributes 설정 금지" 및 "Connector 디버깅 활성화 시 민감 정보 노출" 경고
결론
Apollo Connectors는 REST API를 GraphQL로 변환하여 통합하는 효율적인 방법으로, 기존 시스템 변경 없이 점진적 도입이 가능합니다. 실무에서는 @connect
와 @source
지시문을 활용한 스키마 작성과 rover dev
명령어를 통해 로컬 개발 환경 구축이 필요하며, 생산 환경에서는 사용하지 않도록 주의해야 합니다. 특히, 최신 버전의 변경 사항을 확인하여 안정적인 구현이 중요합니다.