Ice 인터넷 통신 엔진
GStreamer 2011 컨퍼런스 발표 자료 를 보다가 Ice 미들웨어 라는 걸 알게 되었습니다. 참고로 제가 본 발표 자료에서는 원격 임베디드 장치와 PC 사이의 비디오 스트리밍 및 장치 제어에 사용하고 있습니다.
Ice(The Internet Communication Engine) 미들웨어는 쉽게 말해 간편하게 사용할 수 있는 통신 라이브러리인데, 윈도우, 리눅스, 솔라리스, 맥OS, iOS 등의 운영체제를 지원하면서 C++, Java, C#, Python, Ruby, PHP, Objective C 등의 언어에서 사용할 수 있습니다. 라이센스는 GPL과 더불어 상용 제품에 사용할 수 있는 라이센스를 동시에 적용합니다. 즉, 다양한 이기종간의 네트웍 통신을 가능하게 합니다.
지원하는 기능을 보면, 우선 가장 눈에 띄는 점이 방화벽(firewall) 넘어 자유롭게 피어(peer)간 TCP / UDP 통신을 지원한다는 점입니다. 요즘은 방화벽 대신 NAT, IP 공유기 등이 더 일반적이겠지만, UDP 홀 펀칭(hole punching)이나 인증, 필터링 등과 같은 복잡한 작업을 모두 대신해 준다는 점입니다. 더불어 동기 / 비동기 방식 RPC(Remote Procedure Call) 지원, SSL을 통한 암호화 지원, 다중 서버 인스턴스 지원을 통한 결함 허용(fault tolerance)과 로드 밸런싱(load balancing) 지원, 마지막으로 (제가 직접 사용해보진 않아서 잘 모르지만) 성능과 확장성도 매우 뛰어나다고 합니다.
라이브러리를 개발한 ZeroC라는 회사는 이 라이브러리를 기반으로 다양한 상용 제품을 제공하는 것은 물론, 용역(?) 개발을 하면서 라이브러리가 실무 분야에서 검증된 것임을 강조하고 있습니다.(당연히 저는 이 회사와 아무 관계가 없습니다)
언제나 느끼는 거지만, 세상에는 내가 아는 것보다 모르는게 훨씬 더 많고, 뭐가 어디에 있는지 알고 있는게 점점 더 중요해지고 있는 것 같습니다.