본문 바로가기
버전: 10.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 ↗"입력 데이터가 올바른 형식을 가지고 있을까?"