본문 바로가기
버전: 11.x

개념

비공식 베타 번역

이 페이지는 PageTurner AI로 번역되었습니다(베타). 프로젝트 공식 승인을 받지 않았습니다. 오류를 발견하셨나요? 문제 신고 →

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)는 TypeScript 모노레포를 위해 설계된 RPC 구현체입니다. 고유한 특색이 있지만 본질적으로 RPC입니다.

HTTP/REST 구현 세부사항은 신경 쓰지 마세요

tRPC 앱의 네트워크 트래픽을 살펴보면 상당히 표준적인 HTTP 요청과 응답임을 확인할 수 있지만, 애플리케이션 코드를 작성할 때는 이러한 구현 세부사항을 고민할 필요가 없습니다. 여러분은 단순히 함수를 호출하기만 하면, tRPC가 나머지 모든 것을 처리합니다. HTTP 동사 같은 세부사항은 무시해야 합니다. REST API에서는 의미를 지니지만 RPC에서는 함수 이름의 일부로 활용되기 때문입니다. 예를 들어 GET /users/:id 대신 getUser(id)처럼 표현됩니다.

용어 사전

다음은 tRPC 생태계에서 자주 사용되는 용어들입니다. 문서 전반에 걸쳐 이 용어들을 사용하므로 미리 숙지하는 것이 좋습니다. 대부분의 개념은 문서 내 별도 페이지에서도 다루고 있습니다.

용어설명
Procedure ↗API 엔드포인트 - {쿼리}, {뮤테이션}, 또는 {구독}으로 구성됩니다.
Query데이터를 조회하는 {프로시저}입니다.
Mutation데이터를 생성, 업데이트 또는 삭제하는 {프로시저}입니다.
Subscription ↗지속적인 연결을 생성하고 변경 사항을 수신하는 {프로시저}입니다.
Router ↗공유 네임스페이스 아래에 모인 {프로시저} (및/또는 기타 라우터)의 모음입니다.
Context ↗모든 {프로시저}가 접근할 수 있는 요소들입니다. 세션 상태나 데이터베이스 연결 등에 주로 사용됩니다.
Middleware ↗{프로시저} 실행 전후에 코드를 실행할 수 있는 함수입니다. {컨텍스트}를 수정할 수 있습니다.
Validation ↗"입력 데이터가 올바른 형식을 가지고 있을까?"