Schema 설계
nullable 여부, input type, enum, pagination 형태를 클라이언트 계약으로 고정한다.
nullable 하나가 호출자 분기를 바꾼다GraphQL의 장점만 설명하면 실제 서버 구현에서 생기는 타입 불일치가 보이지 않는다. schema가 공개 계약을 만들고 resolver가 데이터를 채우며, context가 인증과 loader를 전달하고, codegen이 TypeScript 타입을 생성해 클라이언트와 서버의 오차를 줄인다.
nullable 여부, input type, enum, pagination 형태를 클라이언트 계약으로 고정한다.
nullable 하나가 호출자 분기를 바꾼다Query와 Mutation은 업무 로직으로 연결하고 field resolver는 관계 데이터를 채운다.
resolver가 DB 접근으로 흩어지지 않게 한다사용자, 권한, DataLoader, request id를 요청 단위 context에 넣는다.
전역 loader는 권한 누출 위험이 있다목록의 field resolver가 반복 쿼리를 만들면 DataLoader로 batch 처리한다.
쿼리 수를 로그로 확인한다schema와 operation에서 TypeScript 타입을 생성해 resolver와 클라이언트 사용을 검증한다.
수동 타입은 drift가 생기기 쉽다