쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

REST 대신 GraphQL을 사용하는 이유는 무엇인가요?

포커스 모드
REST 대신 GraphQL을 사용하는 이유는 무엇인가요? - AWS AppSync GraphQL

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

REST는 웹 API의 기초 아키텍처 스타일 중 하나입니다. 그러나 세계가 점점 더 상호 연결됨에 따라 강력하고 확장 가능한 애플리케이션을 개발해야 할 필요성이 더욱 커지고 있습니다. REST는 웹 API 빌드에 자주 사용되지만, RESTful 구현에는 몇 가지 반복되는 단점이 있습니다.

  1. 데이터 요청: RESTful API를 사용하면 일반적으로 엔드포인트를 통해 필요한 데이터를 요청합니다. 문제는 데이터가 깔끔하게 패키징되지 않을 때 발생합니다. 필요한 데이터는 여러 추상화 계층 뒤에 있을 수 있으며, 데이터를 가져올 수 있는 유일한 방법은 여러 엔드포인트를 사용하는 것입니다. 즉, 모든 데이터를 추출하기 위해 여러 요청을 수행해야 합니다.

  2. 과다 가져오기 및 과소 가져오기: 여러 요청을 수행해야 하는 문제점 외에도 각 엔드포인트의 데이터가 엄격하게 정의되므로 기술적으로 원하지 않더라도 해당 API에 정의된 모든 데이터를 반환하게 됩니다.

    이로 인해 요청이 필요 이상의 데이터를 반환하는 과다 가져오기가 발생할 수 있습니다. 예를 들어, 회사 직원 데이터를 요청하면서 특정 부서의 직원 이름을 알고 싶다고 가정해 보겠습니다. 데이터를 반환하는 엔드포인트에는 이름이 포함되지만, 직책이나 생년월일과 같은 다른 데이터도 포함될 수 있습니다. API가 고정되어 있으므로 이름만 요청할 수는 없으며 나머지 데이터도 함께 제공됩니다.

    충분한 데이터가 반환되지 않는 반대의 상황을 과소 가져오기라고 합니다. 요청된 데이터를 모두 가져오려면 서비스에 여러 번 요청해야 할 수 있습니다. 데이터가 구조화된 방식에 따라 비효율적인 쿼리가 발생하여 우려스러운 n+1 문제와 같은 이슈로 이어질 수 있습니다.

  3. 느린 개발 반복: 많은 개발자가 애플리케이션의 흐름에 맞게 RESTful API를 조정합니다. 하지만 애플리케이션이 성장함에 따라 프런트엔드와 백엔드 모두에 광범위한 변화가 필요할 수 있습니다. 결과적으로 API가 더 이상 효율적이거나 영향력 있는 방식으로 데이터의 형태에 맞추지 않게 될 수 있습니다. 이렇게 되면 API 수정이 필요하기 때문에 제품 반복 속도가 느려집니다.

  4. 규모에 따른 성능: 이러한 복합적인 문제로 인해 많은 영역에서 확장성에 영향을 받게 됩니다. 요청에서 반환되는 데이터가 너무 많거나 너무 적어(이 경우 요청 수가 늘어남) 애플리케이션 측 성능에 영향을 미칠 수 있습니다. 두 상황 모두 네트워크에 불필요한 부담을 일으켜 성능이 저하됩니다. 개발자 측에서는 API가 고정되어 요청하는 데이터에 더 이상 맞지 않기 때문에 개발 속도가 느려질 수 있습니다.

GraphQL의 장점은 REST의 단점을 극복합니다. GraphQL이 개발자에게 제공하는 몇 가지 주요 솔루션은 다음과 같습니다.

  1. 단일 엔드포인트: GraphQL은 단일 엔드포인트를 사용하여 데이터를 쿼리합니다. 데이터의 형태에 맞춰 여러 API를 빌드할 필요가 없습니다. 그 결과 네트워크를 통해 전달되는 요청 수가 줄어듭니다.

  2. 가져오기: GraphQL은 필요한 데이터를 간단히 정의하여 과다 가져오기 및 과소 가져오기라는 고질적인 문제를 해결합니다. GraphQL을 사용하면 요구 사항에 맞게 데이터를 구성하여 요청한 정보만 수신할 수 있습니다.

  3. 추상화: GraphQL API에는 언어에 구애받지 않는 표준을 사용하여 데이터를 설명하는 몇 가지 구성 요소와 시스템이 포함되어 있습니다. 즉, 데이터의 형태와 구조가 표준화되어 있기 때문에 프런트엔드와 백엔드 모두 네트워크를 통해 데이터가 전송되는 방식을 알 수 있습니다. 따라서 양쪽 모두의 개발자가 주변 시스템이 아닌 GraphQL의 시스템으로 작업할 수 있습니다.

  4. 신속한 반복: 데이터의 표준화로 인해 개발의 한쪽 엔드에서 변경한 사항이 다른 쪽 엔드에서는 필요하지 않을 수도 있습니다. 예를 들어, GraphQL을 사용하면 데이터 사양을 쉽게 수정할 수 있으므로 프런트엔드 프레젠테이션 변경으로 인해 백엔드가 광범위하게 변경되지 않을 수 있습니다. 애플리케이션이 성장함에 따라 요구 사항에 맞게 데이터 형태를 간단히 정의하거나 수정할 수 있습니다. 따라서 개발 작업이 줄어들 수 있습니다.

이는 GraphQL의 이점 중 일부에 불과합니다. 다음 몇 개의 섹션에서는 GraphQL이 구조화되는 방식과 GraphQL을 REST의 고유한 대안으로 만드는 속성에 대해 알아봅니다.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.