GitHub, 두 개의 ID? 내부 구조와 API 활용 팁!

by DD
4개월 전
조회수 26

GitHub는 각 객체에 두 가지 ID 체계를 사용하며, 글로벌 노드 ID(Global Node ID)데이터베이스 ID(Database ID)를 제공함

글로벌 노드 ID는 객체 유형과 데이터베이스 ID를 포함하는 Base64 인코딩된 페이로드(Payload)를 사용하며, 내부 구조에 대한 의존은 지양해야 함

GraphQL API를 통해 데이터베이스 ID를 직접 쿼리하고, REST API에서 노드 ID를 가져오는 것이 권장됨

GitHub API의 ID 및 URL 구조는 변경될 수 있으므로, 직접 구성하는 대신 API에서 제공하는 값을 사용하고 캐싱하는 것이 중요함

GitHub ID 체계의 내부 구조 분석

논의에서는 GitHub의 글로벌 노드 ID(Global Node ID)가 객체 유형을 나타내는 접두사와 Base64 인코딩된 페이로드로 구성된다고 설명한다. 특히, 페이로드는 버전 정보와 데이터베이스 ID를 포함하며, 객체 유형에 따라 구조가 달라질 수 있다. 기술적으로 보면, 이러한 ID 구조는 내부 구현 세부 사항이며, API 사용자는 내부 구조에 직접 의존하는 것은 지양해야 한다.

GraphQL API를 활용한 데이터 접근

커뮤니티에서는 GitHub GraphQL API를 통해 데이터베이스 ID를 직접 쿼리하는 방법을 권장한다. 이는 글로벌 노드 ID의 내부 구조에 의존하는 것보다 안정적인 접근 방식이다. 데이터베이스 ID(Database ID)는 GraphQL API에서 제공되며, REST API에서는 노드 ID를 반환한다. 이러한 접근 방식은 API의 내부 구현 변경에 유연하게 대응할 수 있도록 돕는다.

ID 구조 변경에 따른 API 안정성 확보

댓글에서는 GitHub API의 ID 및 URL 구조가 변경될 수 있음을 지적하며, 직접 ID를 구성하는 방식의 위험성을 강조한다. 대신, GitHub API에서 제공하는 값을 사용하고, 필요한 경우 캐싱(Caching)을 통해 성능을 최적화하는 것이 권장된다. API 엔드포인트(API Endpoint)의 변경에 유연하게 대처하고, 시스템의 안정성을 유지하기 위한 전략이다.

GitHub API 활용 시 주의사항

GitHub API와 GraphQL API의 복잡성을 언급하며, ID를 직접 조작하는 방식의 문제점을 지적한다. 특히, API의 내부 구조에 대한 의존성은 향후 유지보수 및 호환성 문제를 야기할 수 있다. API 문서(API Documentation)를 통해 공식적인 사용 방법을 따르고, 변경 사항에 대한 알림을 주시하는 것이 중요하다.

Every GitHub object has two IDs