아파치 스리프트

스리프트(Thrift)는 인터페이스 정의 언어이자 이진 통신 프로토콜로서 수많은 언어를 위한 서비스의 정의 및 생성에 사용된다. 원격 프로시저 호출(RPC) 프레임워크를 형성하며 페이스북에서 "스케일링이 가능한 언어 간 서비스 개발"을 위해 개발된 것이다. 크로스 플랫폼 서비스 빌드를 위해소프트웨어 스택을 코드 생명 엔진과 결합하고 있으며 이로써
액션스크립트, C, C++, C#, 카푸치노, 코코아, 델파이, 얼랭, Go, 하스켈, 자바, Node.js, 오브젝티브-C, OCaml, 펄, PHP, 파이썬, 루비, 스몰토크를 포함한 다양한 언어와 프레임워크로 작성된 응용 프로그램들을 연결할 수 있다. 페이스북에서 개발되었으나 현재는 아파치 소프트웨어 재단의 오픈 소스 프로젝트이다. 이 구현체는 2007년 4월 페이스북이 출시한 기술 논문에 기술되었으며 현재 아파치에서 호스팅되고 있다.

스리프트 서비스 생성 
스리프트는 C++로 작성되어 있으나 수많은 언어를 대상으로 코드를 만들 수 있다. 스리프트 서비스를 만들려면 이를 기술하는 스리프트 파일을 작성한 다음 대상 언어로 코드를 생성한 이후 서버 시작을 위한 일부 코드를 작성하고 클라이언트로부터 이 코드를 호출해야 한다. 아래는 이러한 서술 파일의 코드 예시이다:

enum PhoneType {
  HOME,
  WORK,
  MOBILE,
  OTHER
}

struct Phone {
  1: i32 id,
  2: string number,
  3: PhoneType type
}

service PhoneSvc {
  Phone findById(1: i32 id),
  list<Phone> findAll()
}

스리프트는 이러한 서술 정보 외에 코드를 생성한다. 이를테면 자바에서 PhoneType는 Phone 클래스 안에 단순한 enum이 된다.

같이 보기 
 아파치 아브로
 프로토콜 버퍼
 SDXF
 GraalVM

각주

외부 링크 
 

응용 계층 프로토콜
데이터 직렬화 포맷
프로세스 간 통신
원격 프로시저 호출
페이스북 소프트웨어
아파치 소프트웨어 재단 프로젝트