GraphQL 수용: API 개발의 패러다임 전환
December 27, 2023
GraphQL에 대해 들어보셨나요? 이 API 쿼리 언어는 처음에 Facebook(현재 Meta)에서 개발되었으며, 이제는 번성하는 생태계로 발전했습니다. 이 새로운 API 패러다임을 받아들이는 것이 왜 중요한지 이해하기 위해 이 글을 탐색해 보세요.
복잡한 소프트웨어 엔지니어링이 새로운 도전을 제시합니다
API 스키마
전통적인 REST API를 관리할 때는 일반적으로 OpenAPI나 Postman과 같은 도구를 사용하여 API 스키마를 처리합니다. 이 접근 방식은 API 자체와 독립적이며, 이러한 설명 파일을 제공할지 여부와 이를 올바르게 수행하는 방법에 대해 전적으로 개발자의 지식과 전문성에 의존합니다.
API 스키마를 생성하는 과정에서 개발자들은 종종 복잡한 도구 체인과 오류가 발생하기 쉬운 출력에 직면하며, 이는 좌절감을 유발합니다. 데이터 모델, API 설명, 문서 및 예제를 포함한 포괄적인 정의를 제공하는 것은 쉬운 일이 아닙니다. OpenAPI를 표시하려면 Swagger UI와 같은 추가적인 노력이 필요합니다.
API 프로토콜
HTTP의 요청-응답 모델은 전통적인 REST API에서 데이터를 쿼리하거나 제출하는 데 잘 작동하지만, 자주 변경되는 데이터를 처리하려면 롱 폴링(long polling)이나 WebSocket과 같은 고려 사항이 필요합니다. 이러한 방법들은 실행 가능하지만, 현재로서는 이 두 모드 간의 효율성과 비용 제어를 원활하게 균형 잡는 즉시 사용 가능한 메커니즘이 없습니다.
복잡한 시나리오에서의 도전
과거에는 개발자들이 사용자가 브라우저에서 HTML을 통해 직접 데이터에 접근할 수 있도록 API 기반의 웹 페이지만 제공하면 되었습니다. 모바일 시대가 도래하면서, 이제 개발자들은 Android와 iOS 플랫폼을 위한 네이티브 애플리케이션을 제공해야 합니다. 이러한 앱들은 서로 다른 사용자 그룹과 습관에 맞춰져 있으며, 각각 다른 정보 밀도를 가지고 있습니다. 모든 플랫폼을 지원하기 위해 단일 API를 제공하는 것은 어려운 일입니다. 각 플랫폼의 고유한 데이터와 상호 작용 요구 사항은 특정 API를 필요로 합니다. 서버 측에서는 개발자들이 관계형 데이터베이스나 Redis 캐시와 같은 확장되는 데이터 소스에 직면합니다. 데이터 지속성과 캐싱을 적절히 관리하면서 클라이언트를 위한 쿼리를 제공하는 것은 큰 도전입니다.
GraphQL: API 개발을 강화하다
GraphQL은 이러한 복잡성을 효과적으로 해결합니다. 이는 통합된 API 스키마를 제공하며, Schema-first 또는 Code-first 접근 방식을 통해 데이터 모델과 API 인터페이스 설명을 작성할 수 있게 하여 API 구현과 정의의 일관성과 정확성을 보장합니다. GraphQL은 네이티브 데이터 변경 구독 기능을 지원하여 WebSocket 채널을 통해 실시간 데이터 업데이트를 가능하게 합니다.
HTTP와 JSON 인코딩을 기반으로 구축된 GraphQL의 요청 트래픽은 프록시에 매우 친화적입니다. 또한 필요에 따라 데이터를 쿼리하고 집계할 수 있는 기능을 제공하여, 다른 플랫폼의 호출자들이 동일한 GraphQL API를 사용하고 필요한 데이터를 얻을 수 있게 하여, 모든 데이터를 강제로 가져올 필요를 피할 수 있습니다. 게다가, GraphQL은 풍부한 생태계와 다양한 확장 기능을 자랑합니다. 예를 들어, GraphQL Relay 사양, GraphQL 연합, 그리고 GraphiQL 도구 등이 있습니다.
결론
요약하자면, GraphQL은 REST보다 더 발전된 접근 방식을 나타내며, API 정의의 복잡한 워크플로를 간소화하고 API 개발을 더 유연하게 만듭니다. 엔지니어링 관점에서, 증가된 자동화 도구들은 반복적인 템플릿 코드 작업을 단순화하여 개발자들이 애플리케이션 자체에 더 집중할 수 있게 합니다.
REST API와 달리, GraphQL은 개발자들이 사용자들이 알지 못하게 API를 점진적으로 개선할 수 있게 합니다. 새로운 API나 필드를 추가하더라도, 버전 관리가 필요하지 않으며, 이전 버전의 API에 의존하는 사용자들을 방해하지 않습니다. 현재 많은 플랫폼들이 GraphQL API를 제공하고 있습니다. Meta의 모바일 앱에서 사용되는 GraphQL API부터 GitHub와 Shopify가 개발자들이 직접 활용할 수 있는 GraphQL API를 제공하는 것까지 포함됩니다.