Apollo Router Core 는 Apollo Federation 2를 사용하는 연합 슈퍼그래프를 실행하기 위해 Rust로 작성된 구성 가능한 고성능 그래프 라우터 입니다.
Apollo Router Core는 잘 테스트되고 정기적으로 벤치마킹되며 Apollo Gateway의 대부분의 주요 기능을 포함하고 프로덕션 규모의 워크로드를 제공할 수 있습니다.
새로운 릴리스와 해당 릴리스 노트(모든 주요 변경 사항에 대한 참고 사항 포함)는 릴리스 페이지에서 찾을 수 있으며, 최신 릴리스는 항상 최신 페이지에서 찾을 수 있습니다. 이 저장소의 루트에 있는 CHANGELOG.md
전체 변경 내역 외에 출시되지 않은 변경 사항도 포함되어 있습니다.
현재 우리는 1~2주마다 새로운 릴리스를 게시하고 있습니다.
빠른 시작 튜토리얼에 따라 라우터를 시작하고 실행하세요.
자세한 내용은 설명서를 참조하세요.
Apollo Router Core에는 --supergraph
인수와 선택적 구성 파일로 전달될 supergraph 파일이 필요합니다. 공급됩니다. 이는 현재 디렉터리에 있거나 플래그를 통해 절대 경로 또는 현재 디렉터리에 대한 상대 경로로 명시적으로 지정됩니다.
Usage:
Commands:
config Configuration subcommands
help Print this message or the help of the given subcommand(s)
Options:
--log
Log level (off|error|warn|info|debug|trace) [env: APOLLO_ROUTER_LOG=] [default: info]
--hot-reload
Reload locally provided configuration and supergraph files automatically. This only affects watching of local files and does not affect supergraphs and configuration provided by GraphOS through Uplink, which is always reloaded immediately [env: APOLLO_ROUTER_HOT_RELOAD=]
-c, --config
Configuration location relative to the project directory [env: APOLLO_ROUTER_CONFIG_PATH=]
--dev
Enable development mode [env: APOLLO_ROUTER_DEV=]
-s, --supergraph
Schema location relative to the project directory [env: APOLLO_ROUTER_SUPERGRAPH_PATH=]
--apollo-uplink-endpoints
The endpoints (comma separated) polled to fetch the latest supergraph schema [env: APOLLO_UPLINK_ENDPOINTS=]
--apollo-uplink-poll-interval
The time between polls to Apollo uplink. Minimum 10s [env: APOLLO_UPLINK_POLL_INTERVAL=] [default: 10s]
--anonymous-telemetry-disabled
Disable sending anonymous usage information to Apollo [env: APOLLO_TELEMETRY_DISABLED=]
--apollo-uplink-timeout
The timeout for an http call to Apollo uplink. Defaults to 30s [env: APOLLO_UPLINK_TIMEOUT=] [default: 30s]
--listen
The listen address for the router. Overrides `supergraph.listen` in router.yaml [env: APOLLO_ROUTER_LISTEN_ADDRESS=]
-V, --version
Display version and exit
-h, --help
Print help
Apollo는 오픈 소스 도구와 상용 서비스를 구축하여 더 많은 사람들이 애플리케이션 개발을 더 쉽고, 더 좋게, 액세스할 수 있도록 합니다. 다음을 통해 더 빠른 배송을 도와드립니다.
동영상과 대화형 코드 과제를 통해 GraphQL 여정을 시작하기에 완벽한 장소인 Odyssey 학습 플랫폼을 확인하세요. Apollo 커뮤니티에 가입하여 GraphQL 커뮤니티와 교류하고 기술적인 도움을 받으세요.
Apollo Router Core의 개발은 아키텍처 결정 및 구현을 알리는 다음 설계 원칙에 따라 주도됩니다.
정확성: 라우터는 GraphQL 및 페더레이션을 가장 정확하게 구현하기 위해 노력합니다. 우리는 실패 사례까지 사양에서 암시하는 모든 것을 테스트하고 문서화하는 데 관심을 갖습니다. 라우터의 동작은 개발자에게 놀라움을 최소화하는 원칙을 따라야 합니다.
신뢰성: 라우터는 GraphQL API의 중요한 부분이므로 인프라의 가장 강력한 부분 중 하나여야 합니다. 이는 동작(충돌 없음, 무한 루프, 누수 등), 가용성(예측 가능한 대기 시간, RAM 및 CPU 사용량, 확장성) 및 관찰 가능성(메트릭, 경고)의 안정성을 의미합니다. 인프라스트럭처 사람들이 한계를 배우고 안전하게 운영할 수 있다는 강한 확신을 주어야 합니다.
안전한 실험: 라우터는 페더레이션과 관련된 모든 향후 작업을 지원하므로 기존 기능을 방해하지 않고 새로운 아이디어와 탐색을 허용해야 합니다. 프로젝트는 여전히 진행 중이므로 정확성과 신뢰성의 원칙을 계속 따르면서 프로젝트가 너무 일찍 구체화되는 것을 허용할 수 없습니다.
유용성: 라우터는 작동이 간단해야 합니다. 구성 옵션보다 확장성을 선호하고, 문제가 발생했을 때 사용자가 도움을 받을 수 있는 충분한 정보를 갖고 있는지 확인하세요. 예를 들어:
다음 원칙을 따르세요.
단위 테스트 가능성: 모든 새로운 코드는 단위 테스트가 가능해야 하며 그렇지 않은 데에는 합당한 이유가 있어야 합니다. 이는 코드를 독립적으로 테스트할 수 있는지 확인하기 위해 약간의 추가 시간을 소비하는 것을 의미할 수 있습니다. 통합 테스트에만 의존하지 마십시오.
통합 테스트 스위트: 게이트웨이의 테스트 스위트와 통합하여 사양의 모든 측면을 테스트할 수 있도록 개선하는 데 도움을 드립니다. 특히 이 테스트 스위트는 잘못된 쿼리나 네트워크 문제와 같은 실패 사례를 확인합니다. 통합 테스트는 완벽해야 하며 테스트 실행 속도가 느리거나 경쟁 조건이 발생하는 경우에도 실패해서는 안 됩니다.
측정 및 학습: 벤치마크, 프로파일링, 라우터 한계 탐색을 통해 신뢰성을 테스트하고 측정해야 합니다. 우리는 라우터 작동 방법과 공칭 포인트가 무엇인지 배우고 싶습니다. 이를 위해 라우터는 세부적으로 계측되어 코드 변경이 라우터에 어떤 영향을 미치는지 측정할 수 있습니다. 우리는 특히 새로운 기능의 오버헤드를 측정하여 대기 시간과 리소스 사용량을 최소화합니다.
확장성: 확장 및 지시어가 라우터의 동작을 수정하도록 허용함으로써 특정 쿼리나 엔드포인트에 영향을 주지 않고 실험을 실행하고 새로운 기능을 테스트할 수 있습니다. 또한 이러한 실험은 런타임 시 쉽게 비활성화할 수 있습니다(기능 플래그, 카나리아 등).
아폴로 그래프, Inc.
이 리포지토리의 소스 코드에는 Elastic License 2.0이 적용됩니다. 파일 헤더나 하위 디렉터리의 라이선스 파일이 다른 라이선스를 지정하지 않는 한 리포지토리 전체의 기본값은 Elastic License 2.0에 따른 라이선스입니다. 전체 라이센스 텍스트는 LICENSE를 참조하세요.