pile·

GraphQL 잘 쓰고 계신가요? (Production-ready GraphQL)

NAVER D2·DEVIEW 2023 2023·

챕터별 상세

010:00 – 2:22

프로덕션 GraphQL — 페이로드 도구가 아니라 타입 레이어로

마이플레이스 프론트엔드 개발자 권기범 님은 1년 반 동안 GraphQL을 운영하며 얻은 결론으로 발표를 연다. GraphQL은 API 레이어의 쿼리 언어로 흔히 세 가지 특징이 거론된다. 필요한 필드만 골라 받고, 여러 데이터 소스를 한 번의 요청으로 묶으며, 무엇보다 API의 유스케이스를 타입의 세계로 끌어올린다는 점이다. 발표자가 진짜 하고 싶은 이야기는 세 번째다.

그래서 두 가지 흔한 오용을 먼저 못 박는다. GraphQL을 단지 페이로드를 줄이는 도구로만 쓰거나, 외부에서 받은 데이터 모양을 고민 없이 그대로 스키마에 옮기는 것이다. BFF를 운영하면서도 "이게 REST와 뭐가 다르지"라고 느끼는 사람이 바로 이 세션의 타깃이다.

왜 마이플레이스가 GraphQL을 택했는지는 화면 하나만 봐도 드러난다. 영수증·카드 내역·주문·예약 같은 결제 내역을 토대로 리뷰를 제공하고 피드와 미션도 운영하는데, 메인 화면 하나를 그리는 데에 유저 데이터는 내부 DB, 팔로잉·피드는 다른 팀의 외부 API, 핵심인 리뷰·장소 정보는 또 다른 API에서 온다. 이렇게 출처가 제각각인 데이터를 클라이언트에 깔끔하고 유연하게 합쳐 내려주는 일이 GraphQL을 도입한 실질적 이유다.