이 책 초판에 실린 내 글에서, 이클립스 리치 클라이언트 플랫폼(RCP, Rich Client Platform)은 나사(NASA)의 로봇을 우주로 보내는 거대한 로켓과 아주 유사하다고 묘사했다. 즉 로켓은 강력하고 정교한 기술로 이뤄졌고 아주 중요하긴 하지만, 궁극적으로는 로봇을 목적지로 안전하게 운반하는데 그 목적이 있는 발사체다. 이후 4년 동안 RCP는 움직이고 날고 떠다니는 수많은 우주선과 로봇을 제어하기 위해 개발한 도구의 발사체로서 그 역할을 계속해왔다. RCP는 컴포넌트 기반 개발을 위한 견고한 플랫폼이고 풍부한 사용자 인터페이스(rich user interfaces)를 위한 유연한 프레임워크이며, 작은 단위의 소프트웨어를 지원하는 매우 다양한 기능을 제공한다.
우리 팀이 만든 작은 코드 조각이 나사에서 이룬 일은 매우 자랑스러웠으나, 행성 간 우주 탐사 프로젝트의 성공은 우주선의 궤도를 설계하는 일에서부터 로봇 가장자리를 따라 촘촘하게 케이블을 연결하는 일에 이르기까지 나사 안팎의 수많은 전문가가 모여 달성한 성과다. 물론 오래 전에 처음으로 로켓을 만들 때 화살촉에 화약으로 채워진 튜브를 묶는 일은 소수만이 가능했다. 그러나 화성 탐사로봇을 착륙시키고 움직이게 할 만큼 복잡한 일을 할 수 있었던 건, 특성화와 협업의 엄청난 위업 덕분이다.
특성화와 협업의 놀랄 만한 조합은 다른 곳에서도 일어난다. 창고 같은 간단한 건물은 몇몇 인부들이 함께 모여 만들면 된다. 그러나 마천루는 설계자와 목수, 배관공, 전기기사, 석공 등 수많은 전문가의 노력이 모여 만들어진 결과물이다.
최근의 소프트웨어 애플리케이션은 로켓 달린 화살보다는 우주 탐사로봇, 창고보다는 고층빌딩에 더 가깝다. 복잡한 애플리케이션을 개발하는 데는 특성화와 협력이 필요하다. 이것이 바로 이클립스 RCP가 존재하고 지속적인 성공을 거둔 이유다. 이 책을 통해 소개하는 플랫폼은 전 세계에 알려진 전문가 집단이 협력한 결과다. 이들은 어떤 애플리케이션 개발에도 쓸 수 있는, 무료이면서 확장성이 좋은 프레임워크 구현을 미션으로 몇 년 동안 협력해온 다양한 분야의 전문가들이다. 이 프레임워크를 사용한다는 건, 이클립스 RCP 위에 애플리케이션을 개발하는 엄청난 규모의 개발자 커뮤니티에 합류했음을 의미한다.
우리 팀은 2005년부터 열린 이클립스 개발사와 사용자 모임인 이클립스컨(EclipseCon)에 매년 참석할 때마다 RCP로 개발된 다양한 애플리케이션을 보고 놀라움을 금치 못한다. 원자로 제어에서, 기차 스케줄링, 주식 거래, 데이터 센터 설계, 재고 관리, 테러 중지, 단백질 분석, 어선 모니터링, 파일 공유, 많이 사용되는 프로그래밍 언어 편집기까지 매우 다양한 RCP 애플리케이션을 직접 목격했기 때문이다. 이클립스컨에 몇 번 참석한 후, 나는 다른 우주국에서 RCP를 기반으로 임무 통제 애플리케이션을 개발했다(수도 없이 얘기했으니 아마 상상이 될 것이다). RCP의 다양성보다 더 놀라운 것은 애플리케이션 간의 유사성이다. 예를 들면 APC가 데이터 센터를 설계하는 프로그램에서 서버 랙을 배치할 때 사용한 그래픽 편집 프레임워크는 우리 팀이 우주선 운행 프로그램에서 화성의 이미지를 조작할 때 사용한 프레임워크와 동일하다. 우리 팀은 우주선 명령어 편집기를 만들 때 이클립스 프로그램 도구에서 가장 많이 사용되는 기본 컴포넌트도 사용했다. 이 같은 유사성 덕분에 애플리케이션 간에 리소스를 조합하고 서로를 참조할 수 있으며, 결국 고객을 위해 더 좋은 제품을 제공할 수 있다.
일반적으로 지리적으로 분산된 그룹이 개발한 소프트웨어를 기반으로 애플리케이션을 개발하는 일은 다소 위험해서, 모든 기능을 한 곳에서 직접 개발하는 편이 더 쉽고 안전하다고 생각할 것이다. 하지만 나사의 프로그래머들이 직접 로켓 엔진을 개발하거나, 배관 일밖에 해본 적 없는 고층건물 배관공이 건물의 기초를 다지는 일을 안전하게 해낼 수 있을까? 팀원이 리치 애플리케이션 개발의 모든 영역에 전문가일 수는 없을 뿐만 아니라 그렇게 하면 오히려 일에 집중하지 못하기 때문에 전체 프로젝트를 위험에 빠트리기 쉽다. 예를 들어 다음 해 동안 애플리케이션 개발을 위해 세 명의 개발자로 구성된 팀을 꾸렸다고 해보자. 그리고 필요한 기능 중 하나가 진행 상황 사용자 알림 기능을 유지하고 오래 걸리는 작업을 수행하는 일이라고 가정하자. 물론 아무런 사전지식 없이도 개발할 수 있지만, 이클립스 플랫폼 팀 멤버에게 작업 예상 시간을 물어보니, 탄탄하고 유연한 프레임워크 Jobs API를 개발하려면 거의 3년이 걸린다고 예측했다. 이클립스 RCP는 전문 영역이 아닌 분야에 투자되는 프로젝트 예산을 줄여준다.
로봇과 우주선을 조작하는 도구 개발이 전문인 이도 있을 테고 보건이나 청정 에너지와 관련된 도구 개발이 전문 영역인 사람도 있을 것이다. 하지만 이 책의 저자는 도구 개발을 쉽게 해주고 결국 우리가 각자의 전문 영역에 집중할 수 있게 해주는 분야에서의 전문가다. RCP 기반 위에서 개발하는 커뮤니티에 참여하고자 한다면, 다음 번 이클립스컨에서 자신의 작업을 지원하는 도구들을 사용하는 방법을 익혀보고, RCP 개선에 자신의 능력을 기여하는 방법도 찾아보기 바란다.
제프 노리스 (캘리포니아 공과대학 제트 분사 연구소, 플래닝 소프트웨어 시스템즈 그룹 책임)