본문으로 건너뛰기
버전: 11.x

개념

RPC란 무엇이며, 어떤 마인드셋을 가져야 하나요?​

그저 함수일 뿐입니다​

RPC는 "Remote Procedure Call(원격 프로시저 호출)"의 약자입니다. 이는 한 컴퓨터(서버)의 함수를 다른 컴퓨터(클라이언트)에서 호출하는 방식입니다. 전통적인 HTTP/REST API에서는 URL을 호출하여 응답을 받습니다. 반면 RPC에서는 함수를 호출하여 응답을 받습니다.

ts
// HTTP/REST
const res = await fetch('/api/users/1');
const user = await res.json();
// RPC
const user = await api.users.getById({ id: 1 });
ts
// HTTP/REST
const res = await fetch('/api/users/1');
const user = await res.json();
// RPC
const user = await api.users.getById({ id: 1 });

tRPC(TypeScript Remote Procedure Call)는 RPC의 한 구현체로, TypeScript 모노레포를 위해 설계되었습니다. 자체적인 특징이 있지만, 그 핵심은 RPC입니다.

HTTP/REST 구현 세부사항에 대해 생각하지 마세요​

tRPC 앱의 네트워크 트래픽을 검사하면 상당히 표준적인 HTTP 요청과 응답을 볼 수 있지만, 애플리케이션 코드를 작성할 때 구현 세부사항에 대해 생각할 필요가 없습니다. 함수를 호출하면 tRPC가 나머지를 처리합니다. HTTP 동사(Verbs)와 같은 세부사항은 REST API에서는 의미를 지니지만, RPC에서는 함수 이름의 일부로 사용되므로 무시해야 합니다. 예를 들어, GET /users/:id 대신 getUser(id)를 사용합니다.

용어​

아래는 tRPC 생태계에서 자주 사용되는 용어들입니다. 문서 전반에서 이 용어들을 사용할 예정이므로 익숙해지는 것이 좋습니다. 이 개념들의 대부분은 문서에 별도의 페이지가 있습니다.

용어설명
프로시저 ↗API 엔드포인트입니다. 쿼리, 뮤테이션, 구독중 하나일 수 있습니다.
쿼리데이터를 가져오는 프로시저입니다.
뮤테이션데이터를 생성하거나 수정하거나 삭제하는 프로시저입니다.
구독 ↗지속적인 연결을 만들고 변경 사항을 수신하는 프로시저입니다.
라우터 ↗하나의 네임스페이스 아래에 모인 프로시저 및 다른 라우터의 모음입니다.
컨텍스트 ↗모든 프로시저에서 접근할 수 있는 값입니다. 세션 상태나 데이터베이스 연결 등에 주로 사용합니다.
미들웨어 ↗프로시저 실행 전후에 코드를 실행할 수 있는 함수입니다. 컨텍스트를 수정할 수 있습니다.
검증 ↗"이 입력 데이터에 필요한 값이 올바르게 들어 있나요?"