• 본 시리즈에서는 How to GraphQL의 Tutorial 문서들을 차례대로 번역합니다.
  • 본 시리즈는 GraphQL Basic and Advanced 시리즈에서 이어집니다. GraphQL을 처음 접하는 분들은 해당 시리즈를 먼저 읽고 오시는 것을 추천드립니다.
  • 이 글은 GraphQL-Node Tutorial - Introduction을 번역한 글입니다.
  • 오역 또는 의역이 있을 수 있습니다. 양해 부탁드리며, 수정할 필요한 부분은 댓글로 요청해주세요.

GraphQL-Node 튜토리얼 - 소개

참고: 본 튜토리얼의 최종 결과물 소스 코드는 GitHub에서 확인하실 수 있습니다. 본 튜토리얼 코스의 이어지는 장에서 만약 내용을 잘 따라오지 못하신다면, 얼마든지 링크를 참조하시며 활용하시기 바랍니다. 도한 각 코드 블록에는 대응하는 파일명이 함께 적혀있습니다. 해당 표기를 클릭하면 GitHub 상의 대응하는 파일로 바로 링크됩니다. 이를 참조하면 코드를 어디에 입력할지, 최종 결과물은 어떤 모습인지 등을 확실히 알 수 있습니다.

개관

GraphQL은 백엔드 기술계의 떠오르는 샛별입니다. REST라는 API 설계 패러다임을 대체하고, 서버의 데이터와 기능을 노출하기 위한 새로운 표준으로 거듭나고 있습니다.

이 튜토리얼에서는 잘 작동하는 GraphQL 서버를 맨 처음부터 개발하는 방법을 배웁니다. 아래의 기술들을 사용합니다.

  • graphql-yoga: 손쉬운 설정, 성능, 그리고 탁월한 개발자 경험에 초점을 둔 전기능 GraphQL 서버입니다. Express, apollo-server, graphql-js 등을 기반으로 합니다.
  • Prisma: Prisma는 기존의 ORM을 대체합니다. Prisma 클라이언트를 사용하여 GraphQL 리졸버를 구현하고, 데이터베이스 접근을 간소화할 수 있습니다.
  • GraphQL Playground: 쿼리와 뮤테이션을 전송하면서 GraphQL API의 기능을 직접 사용해볼 수 있는 "GraphQL IDE"입니다. REST API에 대하여 유사한 기능을 제공하는 Postman과 유사합니다. 여러 가지가 있지만, GraphQL Playground는 아래와 같은 대표적인 기능을 가집니다.
    • 사용 가능한 API 동작을 설명하는 문서를 자동 생성합니다.
    • 쿼리, 뮤테이션, 구독을 작성할 수 있는 에디터를 제공합니다. 이 에디터는 자동 완성, 문법 강조 기능도 제공합니다.
    • API 동작을 간단히 공유할 수 있습니다.

예고

본 튜토리얼의 목표는 Hacker News 클론 프로젝트에서 사용할 API를 개발하는 것입니다. 튜토리얼을 통하여 진행할 사항들을 간단하게 살펴보겠습니다.

우선, GraphQL 서버가 작동하는 기본 원리를 익힐 것입니다. 이를 위하여 서버에서 사용할 GraphQL 스키마를 정의하고, 이에 대응하는 리졸버 함수들을 작성합니다. 이 리졸버들은 처음에는 메모리에 저장되는 데이터만을 다룰 것입니다. 따라서 서버의 런타임 이후까지 이어지는 지속성을 갖지는 못할 것입니다.

데이터가 지속성이 없고 저장이 불가능한 서버를 원하는 사람은 없을 것이므로, 이 서버에 데이터베이스 계층을 더할 것입니다. 데이터베이스 계층은 Prisma로 작동하며, Prisma 클라이언트를 사용하여 GraphQL 서버와 연동될 것입니다.

데이터베이스가 연동되고 나면, API에 심화 기능들을 더 추가할 것입니다.

우선, API를 사용하고자 하는 사용자들이 자격을 인증할 수 있도록 회원가입 및 로그인 기능을 구현할 것입니다. 또한 이 기능을 통하여 특정 API 동작에 대한 사용자의 권한을 검사할 수 있을 것입니다.

본 튜토리얼의 그 다음 부분은 GraphQL 구독을 사용하여 API에 실시간 기능을 추가하는 것입니다.

마지막으로, API로부터 반환되는 항목의 목록을 조절할 수 있도록 필터 및 페이지 기능을 추가할 것입니다.

자, 이제 시작해봅시다 🚀

Quiz

GraphQL Playground에 대한 설명으로 옳은 것은?

  • GraphQL API를 다루기 위한 GraphQL IDE
  • GraphQL 동작을 생성하기 위한 도구
  • REST 클라이언트
  • Postman의 후속 프로그램