이번 글에서는 Apollo GraphOS 플랫폼에 대해 설명드려볼까 합니다. React와 React Native 관련된 내용도 몇 번 다룬 적이 있었는데 이에 대해서는 아래 글을 참고해주시면 되겠습니다.
React 프로젝트 생성 방법 (create-react-app)
React Native 장점, 설치 방법 (npx create-expo-app)
Apollo GraphOS 플랫폼이란?
Apollo GraphOS는 데이터, 서비스 및 기능의 통합 네트워크인 수퍼그래프를 구축, 관리 및 확장하기 위한 플랫폼으로, 모두 하나의 포괄적인 API로 구성됩니다. 수퍼 그래프의 라우터에 대한 하나의 쿼리로 애플리케이션 클라이언트는 모든 소스 조합에서 데이터를 가져올 수 있습니다.
클라이언트는 GraphQL이라는 강력한 언어로 슈퍼 그래프를 쿼리하여 오버페칭 없이 필요한 데이터를 정확하게 검색할 수 있습니다. 수퍼 그래프의 아키텍처는 노출되지 않으며 클라이언트는 GraphOS에서 관리하는 단일 엔드포인트를 통해 이를 쿼리합니다.
수퍼 그래프는 기존 인프라를 대체하지 않습니다! 대신 기존 인프라를 상호 연결하여 데이터와 상호 작용하는 모든 사람이 더 쉽게 액세스하고 유용하게 사용할 수 있도록 하는 방법론입니다.
Apollo GraphOS 주요 기능
GraphOS 플랫폼은 슈퍼 그래프를 구축하고 조직과 함께 안전하게 확장하는 데 도움이 되는 계속 성장하는 도구 및 서비스 모음을 제공합니다. 이러한 기능들은 GraphOS의 핵심입니다.
- 클라우드 라우팅: GraphOS는 각 수퍼 그래프에 대한 라우터를 자동으로 프로비저닝하고 호스팅합니다. 클라이언트는 개별 하위 그래프 대신 라우터를 쿼리하므로 라우터가 작업 메트릭을 자동으로 수집한 다음 Apollo Studio에서 시각화할 수 있습니다.
- 스키마 레지스트리: GraphOS는 모든 개별 하위 그래프에 대한 GraphQL 스키마를 추적하고 해당 하위 그래프 스키마를 라우터에 대한 하나의 상위 그래프 스키마로 구성하는 작업도 처리합니다.
- 안전한 스키마 전달: GraphOS의 스키마 검사 기능을 사용하면 하위 그래프에 대해 제안된 변경 사항이 다른 하위 그래프 또는 기존 클라이언트에 문제를 일으키는지 여부를 확인할 수 있습니다. 하위 그래프 스키마를 업데이트할 때마다 GraphOS는 라우터에 대한 새로운 상위 그래프 스키마를 구성합니다. 구성이 성공하면 라우터가 자동으로 새 스키마를 사용하기 시작합니다. 하위 그래프 스키마를 업데이트할 때마다 발생하는 각 시작의 결과를 볼 수 있으므로 발생할 수 있는 문제를 해결하는 데 도움이 됩니다.
- 모든 사용 사례를 위한 인터페이스: Apollo Studio는 GraphOS의 기본 웹 인터페이스입니다. 다른 기능 중에서 Studio를 사용하여 조직 및 해당 슈퍼 그래프를 만들고, 스키마 및 메트릭을 보고, Explorer에서 작업을 테스트합니다. Rover CLI는 GraphOS의 기본 명령줄 인터페이스입니다. 다른 기능 중에서 Rover를 사용하여 하위 그래프 스키마를 레지스트리에 게시하고, CI에서 스키마 검사를 실행하고, 개발 환경 내에서 상위 그래프를 테스트합니다. Studio 또는 Rover 외부에서 자체 워크플로우를 자동화하려는 경우 공식 GraphOS 플랫폼 API를 사용하여 자동화할 수 있습니다. 시간이 지남에 따라 플랫폼 API를 통해 더 많은 GraphOS 기능을 노출할 것입니다.
Supergraph 구성 요소
GraphOS가 슈퍼 그래프를 만들고 관리하기 위한 플랫폼이라면 슈퍼 그래프에 무엇이 있는지 이해하는 것이 중요합니다. 모든 수퍼 그래프는 다음 부분으로 구성된 Apollo Federation이라는 개방형 아키텍처를 사용합니다.
- 라우터: 라우터는 수퍼 그래프에 대한 클라이언트 액세스 가능 진입점 역할을 합니다. 들어오는 모든 쿼리를 받습니다.
이름에서 알 수 있듯이 라우터는 들어오는 각 쿼리를 하위 그래프의 적절한 조합으로 “라우팅”합니다(다음 항목 참조). 또한 여러 하위 그래프 응답을 클라이언트에 대한 단일 응답으로 결합하는 역할도 합니다. GraphOS는 슈퍼그래프의 라우터 프로비저닝 및 호스팅을 처리합니다 - 하나 이상의 하위 그래프: 각 하위 그래프는 그 자체로 상위 그래프의 사용 가능한 데이터의 다른 하위 집합을 담당하는 GraphQL API입니다. 클라이언트는 하위 그래프를 직접 쿼리하지 않습니다. 라우팅 기능만 수행합니다. 일반적으로 기존 백엔드 서비스는 각각 다른 하위 그래프로 작동합니다.
- 백업 데이터 소스 (데이터베이스, REST API 등): 하위 그래프는 이를 사용하여 들어오는 쿼리에 대한 데이터를 채웁니다.
Supergraph 장점
슈퍼 그래프를 채택하면 조직의 데이터와 상호 작용하는 모든 팀(내부 및 외부 모두)의 개발자 경험이 크게 향상됩니다. 이러한 개선 사항을 통해 개발자는 안정성과 성능에 대한 확신을 가지고 제품과 기능을 더 빨리 출시할 수 있습니다.
슈퍼 그래프의 많은 이점은 GraphQL 언어와 Apollo Federation 아키텍처에서 제공하는 것입니다. 슈퍼 그래프는 스키마 관리, 메트릭 집계 및 변경 유효성 검사를 위한 강력한 도구를 사용할 수 있도록 합니다. GraphOS 도구에 대해 자세히 알아보세요.
Supergraph 적용 방법
슈퍼 그래프를 구현하려면 개별 부분인 그래프 라우터와 하위 그래프를 설정합니다. Apollo는 각 부품을 설정하기 위한 라이브러리와 도구를 제공합니다. 그리고 이미 다양한 튜토리얼을 제공하고 있으니 이를 잘 참고하시면 되겠습니다.