실시간 2편 — SSE로 실시간을 구현했다
토픽마다 EventSource를 하나씩 열던 초기 방식을 버리고, 프로젝트당 연결 1개로 멀티플렉싱하는 SSE를 설계했다. 도메인 무지 transport와 도메인 정책을 분리한 백엔드, 연결/해석 2계층으로 나눈 프론트엔드의 실제 코드.
Backend
토픽마다 EventSource를 하나씩 열던 초기 방식을 버리고, 프로젝트당 연결 1개로 멀티플렉싱하는 SSE를 설계했다. 도메인 무지 transport와 도메인 정책을 분리한 백엔드, 연결/해석 2계층으로 나눈 프론트엔드의 실제 코드.
도메인 노드, ResolveField, 3개의 레이어, 진입점과 도메인 이벤트 — REST 사고방식을 벗어나 그래프로 사고하기 위한 모든 것.
NestJS에서 DataLoader를 요청별로 격리하는 두 가지 패턴을 객체 수명 관점에서 비교합니다. REQUEST scope가 정답인 줄 알았던 저의 의문에서 시작했어요.
DataLoader의 배치 처리 원리, 이벤트 루프와의 관계, 중첩 resolver에서 어떻게 구조화하는지 구체적으로 정리했습니다.
relations JOIN, @ResolveField, DataLoader — 각 방법이 DB에 쿼리를 몇 번 날리는지, 왜 N+1이 발생하는지, GraphQL 철학에 맞는 해결 방향을 정리했습니다.