목록 보기
Lunit CARE는 왜 GraphQL을 선택했는가?
백엔드

Lunit CARE는 왜 GraphQL을 선택했는가?

루닛
루닛
2022년 4월 13일

두줄요약

Lunit CARE는 문서화, 타입 검증, 다중 API 호출 문제를 줄이기 위해 GraphQL과 Relay를 선택했습니다. gqlgen 자동 생성의 이점과 POST 캐시 제한·복잡한 리졸버 구현의 트레이드오프를 함께 설명합니다.

문제 상황

  • RESTful API 문서와 구현 간 불일치로 인한 프론트엔드·백엔드 협업 비용
  • 요청 데이터 정합성 검증의 수동 구현과 비즈니스 로직·DB 단계의 늦은 오류 검출
  • 단일 페이지의 다수 API 호출에 따른 네트워크 부담과 응답 조합 복잡도

구조와 흐름

  • GraphQL DSL 기반 스키마 정의와 gqlgen 코드 생성·Playground 문서화 연계
  • query·subscription의 조회 대상 명사화와 mutation의 행위 중심 함수형 모델링
  • 단일 POST 내 복수 query 처리 후 하나의 응답으로 집계하는 호출 구조

선택 이유

  • 스키마 수정과 서버 생성 코드 갱신의 결합으로 문서 최신성 확보
  • gqlgen과 Relay Compiler 기반의 서버 런타임·프론트엔드 컴파일 타임 타입 검증
  • Relay 규격 지원을 통한 React 프론트엔드의 API 사용성 향상

트레이드오프

  • 모든 요청의 POST 처리로 브라우저 GET 캐시 활용 제한
  • 깊이 제한 없는 graph 요청과 데이터 처리 구현 복잡도 관리 필요
  • 변경 빈도 대비 트래픽 비용이 높은 query의 REST API 전환 검토

다음 읽기

#GraphQL 주제를 다룬 다른 회사 글

GraphQL을 이용한 QueryFacade 개발기

GraphQL을 인메모리 QueryFacade로 활용해 복잡한 Aggregator 구조를 정리한 사례를 다뤘습니다. 필요한 의존성만 조회하고 부분 에러 처리와 캐시 제어를 붙여 성능도 개선했습니다.

당근마켓
당근마켓
백엔드
전체 보기

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...