Apache Thrift는 다양한 플랫폼과 언어에 걸쳐 확장 가능한 분산 시스템을 구축하는데 도움이 되는 도구 중 하나이다.
원래 페이스북에서 내부적으로 사용하기 위해 개발했지만, 지금은 Apache Foundation에서 지원하는 오픈소스 프로젝트이다.
다양한 언어지원, 유연성 및 성능이 특징이다.
An introduction to Apache Thrift
Apache Thrift는 페이스북에서 개발한 다양한 언어를 지원하는 'RPC 프레임워크'이다. IDL(interface definition language)로 작성된 단일 파일에서 여러 언어에 대한 코드가 자동으로 생성된다.
- RPC 프레임워크
RPC(remote procedure call)는 원격 API를 호출하는 대표적인 방법이다. 원격 서버의 함수를 호출해서 결과를 얻는다. 즉, 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 함수나 프로시져를 실행할 수 있게 하는 프로세스 간 통신 기술이다.
- IDL : 인터페이스 정의 언어
소프트웨어 컴포넌트의 인터페이스를 묘사하기 위한 명세 언어이다. 어느 한 언어에 국한되지 않는 언어중립적인 방법으로 인터페이스를 표현함으로써 같은 언어를 사용하지 않는 소프트웨어 컴포넌트 사이의 통신을 가능하게 한다.
Supported programming language
Apache Thrift로 일을 시작하기 전에 지원하는 언어들의 종류를 알아봐야 한다.
(version 0.9.3 기준 / http://thrift.apache.org/docs/features 참고)
ActionScript3, C++, C#, D, Delphi, Erlang, Haskell, Java, JavaScript, Node.js, Objective-C/Cocoa, OCaml, Perl, PHP, Python, Ruby, Smalltalk
Data types
Apache Thrift는 개발자들을 위해 모든 더러운(?)일을 한다. 고유한 데이터 유형을 제공하여 해당 프로그래밍 언어의 기본 데이터 유형에 매핑하므로 개발자는 통신 인터페이스(communication interface)가 아니라 application을 creating하는데 집중할 수 있다.
Interface description language
Apache Thrift의 핵심 기능은 간결성과 유연성을 제공하는 Apache Thrift만의 IDL이다. 현대의 프로그래밍 언어로 코딩을 한 사람이라면 누구나 한 번쯤은 볼 수 있을 것이다. IDL을 사용하면, 사용하는 모든 변수와 서비스를 하나의 파일에서 정의할 수 있다.
Protocol Buffers
Protocol Buffers는 Apache Thrift의 older broter이고, 이것들은 비슷한점이 많다.
|
Thrift |
Protocol Beffers |
개발사 |
Facebook -> Apache |
Google |
지원 언어 |
많다(앞에서 설명함) |
C++, Java, Ptthon |
자료형 지원 |
Map, List, Set 등 |
지원 안 함 |
사용자 |
많다 |
보통 |