GraphQL을 이용한 QueryFacade 개발기

안녕하세요. 저는 로컬 비즈니스실에서 서버 개발자로 일하고 있는 에렌(Eren)이라고 해요. 당근을 사용해 본 적 있으신가요? 당근의 동네지도 탭에 들어가면 ‘음식점’, ‘카페/간식’ 등 카테고리별로 동네 업체를 모아볼 수 있는데요. 여기서 각 업체의 정보를 담고 있는 ‘비즈 프로필’을 저희 팀이 만들고 있어요. 저희 팀은 사람들은 믿을 만한 동네 업체를 빠르게 찾고, 동네 사장님들은 더 효과적으로 장사할 수 있도록 돕는 플랫폼을 만들고 있어요.


로컬 비즈니스실의 핵심 모델은 Business Profile(업체 프로필)이에요. 다양한 카테고리의 업체 사장님들이 비즈 프로필을 효과적으로 사용하기 위해선 여러 도구가 필요해요. 그래서 저희는 상품 판매, 예약, 후기, 쿠폰, 채팅, CRM 같은 여러 기능을 계속 추가하고 있어요. 동네 사장님의 필수 채널이 되는 것을 꿈꾸는 만큼 제품의 복잡도가 빠르게 증가하고 있어요.


로컬 비즈니스실은 각 도메인의 복잡한 정책을 나누기 위해 마이크로서비스 아키텍처를 지향하고 있어요. 그럼에도 도메인 자체가 상호작용할 필요가 늘어났고, 각 서비스의 데이터를 조합하는 일도 증가했어요. 특히 다음과 같은 상황에서 복잡한 데이터 조합이 필요했어요. 대표적으론 다음과 같은 경우가 있었어요.


  • 모든 정책과 연관 관계가 모이게 되는 프로필 홈 화면.

  • 정책 자체가 여러 도메인의 데이터를 기반으로 결정되는 경우.

  • 외부 서비스에 데이터를 취합하여 데이터를 제공하는 경우.


서비스가 고도화되면서 도메인 간의 관계는 점점 복잡해졌어요. 트래픽 또한 1만 TPS를 뛰어넘게 되었고요. 조회해야 할 데이터 관계는 늘어나고 시스템의 부하도 증가했어요. 로컬 비즈니스실에서 조회 로직과 관련해 구체적으로 어떤 문제가 발생했고, 어떻게 해결했는지 공유하고자 글을 작성하게 되었어요. 비슷한 고민을 하고 계시는 다른 분들에게 도움이 되면 좋겠어요.


GraphQL로 QueryFacade를 구현해 내부 복잡도를 개선한 과정이 궁금하다면

지금 당근 테크 블로그에서 글 전문을 읽어보세요!🥕

GraphQL을 이용한 QueryFacade 개발기

내일배움캠프

GraphQL을 이용한 QueryFacade 개발기

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2025년 1월 2일 오전 6:20

댓글 0

    함께 읽은 게시물

    예제로 뿌수는 코틀린 Kotlin 프로그래밍 76제

    안드로이드 네이티브 앱 개발의 표준 언어이자, 최근 백엔드 개발에도 공격적으로 활용되고 있는 코틀린 프로그래밍 언어를 다양한 예제를 통해 배울 수 있는 온라인 학습 사이트를 공개합니다. 코틀린 공식 홈페이지에 있는 Kotlin By Example이라는 자료는 편역해서 구성했어요. 저는 NHN에 근무할 때 코틀린을 백엔드 API서버 개발에 활용한 경험이 있는데, 자바로 개발할 때보다 훨씬 편하고 즐거웠던 게 기억에 남았습니다. 코틀린을 배우시려거나, 이미 쓰고 있는데 궁금한 점이 많으셨던 분들에게 유용한... 더 보기

    예제로 격파하는 코틀린

    Hatemogi

    예제로 격파하는 코틀린

     • 

    저장 42 • 조회 2,406


    혹시 Cursor 채팅만 사용하시나요? Agent 쓰는 방법!

    Cursor와 함께라면, 더이상 에디터는 단순한 입력 도구가 아닌

    ... 더 보기

    공식적으로 뭐하는 회사인지는 모르지만 일단 100억달러 기업가치

    ... 더 보기

    무라티의 싱킹 머신즈, 20억달러 투자 유치..."실리콘 밸리 사상 최대 시드 투자"

    AI타임스

    무라티의 싱킹 머신즈, 20억달러 투자 유치..."실리콘 밸리 사상 최대 시드 투자"

    조회 390


    🤖 최초의 AI 브라우저, Dia 직접 써봤습니다! 🌐

    ... 더 보기

    코루틴 Q&A

    코루틴에 대해 알아보아요 Q. 코루틴에 대해 쉽게 설명해주세요. A. 코루틴은 실행을 일시 중지하고 상태를 잃지 않고 호출자에게 다시 제어권을 양보할 수 있는 함수입니다. 이렇게 하면 기능이 나중에 재개되어 중단된 위치에서 다시 시작할 수 있습니다. 코루틴은 단일 스레드에서 여러 작업을 동시에 수행할 수 있도록 프로그래밍에 자주 사용됩니다. Q. 스레드와 비교해서 설명해주세요. A. 스레드는 다른 스레드와 동시에 실행할 수 있는 별도의 실행 경로입니다. 프로그램이 새 스레드를 생성할 때 일반적으로 별도의 스택 및 레지스터 세트가 제공되며 운영 체제는 스레드가 하나 이상의 CPU 코어에서 실행되도록 예약합니다. 이를 통해 여러 스레드가 동시에 실행될 수 있으므로 한 번에 둘 이상의 작업을 수행할 수 있으므로 프로그램의 성능이 향상될 수 있습니다. 대조적으로, 코루틴은 실행을 일시 중지하고 상태를 잃지 않고 호출자에게 제어권을 다시 양보할 수 있는 함수입니다. 이렇게 하면 기능이 나중에 재개되어 중단된 위치에서 다시 시작할 수 있습니다. 스레드와 달리 코루틴은 일반적으로 단일 스레드에서 실행되며 동일한 스택 및 ... 더 보기

     • 

    저장 14 • 조회 1,296


    Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자로" 강의를

    ... 더 보기

    Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로

    www.productengineer.info

    Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로

     • 

    저장 8 • 조회 757