IT Solutions 2004년 3월호
파이썬, 이슈에서 벗어나 대세로 자리매김
지난 2월 11일 샌 디에고에서 있었던 ETech 2004 의 기조 연설에서 세계 최대의 휴대전화 제조사인 노키아의 CTO인 퍼티 코호넨(Pertti Korhonen)은 자사의 새로운 휴대전화 모델인 60시리즈에서 전화 내의 빠른 응용 프로그램 개발과 개발 과정을 단순화 하기 위해서 객체지향 스크립트 언어인 파이썬을 도입했다고 밝혔다. (그림 1) 그는 여기서 간단한 통화 변환 프로그램과 날씨 정보를 보여주는 프로그램 등을 시연했는데, 이 프로그램들은 각각 불과 50줄 내외의 파이썬 스크립트로 작성되어 있었고, 즉석에서 (휴대전화의 키패드를 이용해서!) 새로운 기능을 추가하기도 하였다. 노키아의 휴대전화 플랫폼에서 스크립트 언어를 채택한 것은 이번이 처음이며 스크립트 언어 개발 환경을 지원함으로써 앞으로 휴대전화 애플리케이션 개발자들은 훨씬 쉽고 빠르고 간단하게 개발할 수 있게 되었고, 사용자들도 자기가 필요한 간단한 프로그램은 쉽게 스크립팅 해 넣을 수 있게 되었다.
파이썬의 등장
동적인 객체/변수 타입과 통합형 객체지향적 설계를 특징으로 하는 제 3세대 스크립트 언어로써 단연 가장 앞서 나가 있는 파이썬은 원래 90년대 귀도 반 로섬(Guido van Rossum)에 의해서 창시되었다. 그 이후 여러 개발자들의 참여로 성숙해지면서 99년에 레드햇 리눅스의 인스톨러인 아나콘다(Anaconda)에 채택되고 , 강력한 웹 애플리케이션 서버로 부상한 Zope 의 플랫폼으로 알려지면서 명성을 얻게 되었다. 국내에서도 파이썬은 2000년에 파이썬 정보광장을 주축으로 사용자 모임이 결성되면서, 네 차례 공개 세미나를 개최하고 여러 권의 책이 발간되는 등 어느 정도 널리 알려진 스크립트 언어로 떠 오르게 되었다.
스크립트 언어인 이유
스크립트 언어는 C, C++로 대표되는 다른 언어들에 비해 속도가 느리다. 또한 통상적으로 메모리 소모도 더 많은 편이다. 그런데 왜 스크립트 언어를 사용해야 하는가? - 바로 속도와 메모리는 중요하지 않기 때문이다. 일반적인 프로그램의 가장 큰 미덕인 속도와 메모리 절약이 필요한 곳은 일반적인 상식으로 보통 프로그램의 10% 미만의 코드에 불과하다. 나머지 90%는 느리고 천천히 돌아도 되며 자주 호출되지도 않는다. 반면, 개발자의 시간은 상당히 평등해서 그 90%의 코드는 개발자를 10%에 집중할 수 없도록 괴롭힌다. 물론, C++ 등은 C만을 사용하는 것에 비해 개발자의 짐을 많이 덜어준 것은 사실이지만, 스크립트 언어를 사용하면 메모리 관리, 컴파일 과정을 줄이는 것으로 인한 디버그 효율성, 고상한 규칙들을 지키기 위한 복잡한 클래스끼리의 관계 같은 것으로부터 해방될 수 있다. 또한, 근래의 프로그래밍 경향은 모듈화다 . 파이썬과 같은 프로그래밍 언어들은 이미 자주 사용되는 수많은 패턴들과 자료 구조들, 자료 처리/저장, 네트워크 함수들이 이미 내장되어 있으므로, 다른 고상한 언어들에서 수도 없이 사용되는 뻔한 for 루프, 값의 조건에 따른 필터링, 값의 일괄적인 변환, 재진입 처리를 위한 상태 저장 같은 처리를 단 한번의 내장 함수나 모듈 호출로 단순화하여 개발자를 단순 노동에서 구출해 준다. 결국 이런 여러 편의성은 개발자들의 능률을 향상시켜서 빠른 제품 출시와, 보다 완벽한 테스트를 가능케 해 준다.
그럼 왜 파이썬인가?
이러한 위치로 자주 사용되는 언어로는 유구한 역사와 엄청난 규모의 사용자가 있는 펄(Perl)과 아주 작고 빠른 속도로 게임에서 많이 활용되는 루아(Lua)가 있다. 펄은 현재의 안정버전인 5에서는 아직 완전한 객체지향성을 보여주고 있지 않아서 동적 설계에서의 한계성을 갖고 있으며, 펄 6는 아직 발표가 요원하다. 루아는 원래부터 작은 것을 목표로 충실하게 역할을 수행하고 있지만, 아주 단순한 스크립팅을 넘어서는 규모에서는 적용이 점점 힘들어진다는 문제점이 있다. 그 외에, SCUMM같이 개발사에서 직접 스크립트 언어를 개발해서 사용하는 경우도 있다. 그러나, 개발사에서 스크립트 언어를 개발하여 사용하는 것은, 초기부터 많은 비용이 들며 스크립트 언어가 독자적인 것이기 때문에 새로운 개발자를 투입할 때마다 새롭게 교육이 필요하고 필요한 모든 모듈들을 독자적으로 개발해야하기 때문에 유지비용도 또한 엄청나다는 문제점이 있다. 실제로, SCUMM을 이용하여 매니악 맨션 이후 50개 이상의 게임을 개발하여 납품했던 Humongous Entertainment의 경우에는 SCUMM의 유지 비용으로만 연간 백만달러 이상이 소요되었는데 , 그렇게 수년을 개발해도 여전히 새로운 게임을 개발할 때마다 언어 스펙이 약간씩 바뀌어야 할 정도였다고 한다. 이 회사는 결국 그 후에 파이썬으로 전향하여 뒷마당 하키 (Backyard Hockey) 등 여러 개의 상용 콘솔 게임들을 개발하였다 .
파이썬의 도입 효과
파이썬은 비영리재단인 파이썬 소프트웨어 재단(Python Software Foundation)을 가반으로 하여 개발되는 오픈 소스 소프트웨어다. 파이썬의 라이센스는 응용 프로그램과 수정된 프로그램의 소스를 전혀 공개하지 않아도 되는 BSD 라이센스 부류에 속한다 . 따라서, 상용 프로그램을 개발하기 위해 파이썬을 사용하거나 파이썬을 수정해서 사용해도 전혀 법적인 문제가 발생하지 않는다. 또한 오픈 소스 소프트웨어 세계적으로 수많은 개발자들에 의해 꾸준히 사용되고 있기 때문에 새로운 플랫폼에 대한 대처, 기존에 있던 코드의 버그, 새로운 개념이나 프로토콜을 위한 응용 모듈 같은 것들을 대가 없이 계속 유지보수 받을 수 있는 셈이다. 그리고, 관리자의 측면에서는 금방 입문한 개발자라하더라도 파이썬으로는 헛점이 적은 코드를 생산하기가 다른 언어들에 비해 훨씬 쉽고 금세 익히기 때문에 고용 효율을 높일 수 있으며, 고급 개발자들은 사소한 코드를 위한 반복작업을 피하여 전체 구조를 보는데 더 많은 시간을 투자할 수 있기 때문에 자신의 시간을 더 알차게 쓸 수 있게 된다.
웹 사업에서의 파이썬
종합 포탈 사이트인 야후 (Yahoo)는 기존에 파이썬을 사용하던 여러 회사들을 흡수 합병함으로써 파이썬 솔루션을 여러 곳에서 활용하게 되었다 . 야후의 지도 서비스, 메일 서비스, 메일 그룹 같은 것들은 상당수가 파이썬으로 구현되어 있으며, 내부적인 통계, 서버관리의 부문에서도 곳곳에 활용되고 있다. 2000년 이후 대표적인 검색엔진으로 떠오른 구글(Google)은 웹을 검색하고 다니는 구글 스파이더와 검색 엔진의 전체를 관장하는 시스템이 파이썬으로 구현되어 있다 . 구글의 서비스 품질담당 이사인 피터 노빅(Peter Norvig)은 "파이썬은 처음부터 구글의 중요한 요소였고, 시스템이 커지고 변화하면서도 여전히 중요한 부분을 맡고 있다. 수십명의 구글 기술자들이 이미 파이썬을 사용하고 있으며, 더 많은 파이썬 개발자들을 찾고 있는 중이다."라고 말했다 . Zope는 파이썬을 지원하는 가장 큰 회사로써, 파이썬에 기반한 웹 애플리케이션 프레임웍인 회사 이름과 동명인 Zope를 미해군, 미국 농무부, SGI, 호스트웨이(Hostway) 등에 적용하여 파이썬에 기반한 빠르고 효율적인 웹 사이트 구축에 성공했다 . 또한, 대표적인 인증서 취급 기관 중의 하나인 써트 컨설팅 (Thawte Consulting)은 파이썬을 이용해 인증서 발급 시스템을 구축하였는데, 써트의 설립자인 마크 셔틀워스(Mark Shuttleworth)는 "파이썬은 우리를 매우 생산성 있게 만들어 주었다. 또한, 방대하고 빨리 바뀌는 코드를 비교적 간단하고 쉽게 관리할 수 있게 해 주었다."라고 밝혔다.
순수 과학에서의 파이썬
미항공우주국(NASA)에서는 CAD/CAE/PDM 저장소 관리와 모델 관리/통합/전송 시스템을 파이썬으로 구현했다. NASA에서는 차세대 공동 개발 환경으로 파이썬을 채택했으며, 파이썬의 높은 생산성과 깨끗하고 관리하기 쉬운 코드 스타일, 엄청난 양의 편리한 기본 라이브러리 와 많은 플랫폼 지원을 높이 평가하였다. 미국립기상청인 NOAA에서는 전국 기상 정보 시스템들을 파이썬 GUI인 Tkinter을 기반으로 한 시스템으로 교체했다. NOAA에서는 기상정보와 결합해야하는 다양한 경우를 접착제 언어로써의 파이썬이 충실히 수행해 주었다고 한다. 그 외에 대표적인 유전자, 단백질 탐사 업체인 알파진(AlphaGene), 이론 물리학을 연구하는 로스 앨러모스 국립 연구소 (NANL)등이 그들의 연구에 파이썬을 중추적으로 사용하고 있으며, 많은 실험 장비 자동 제어와, 실험 결과 분석에 파이썬으로 작성된 툴들이 개입하고 있다.
그래픽에서의 파이썬
조지 루카스(George Lucas)가 세운 Industrial Light & Magic사에서는 스타워즈와 미이라 2, 101마리 달마시안 등의 수많은 작품의 렌더링의 전체 제어와 자원 관리 시스템 등에 사용하여 전체 시스템을 통합하여 하드웨어 효율을 높였다 . 또한 월트 디즈니사에서는 기존에 사용했던 펄을 파이썬으로 교체하면서 다른 C++ 프로그램들과의 보다 밀착하여 결합할 수 있는 점과 빠르게 자기가 원하는 것을 만들어서 그것을 실제로 사용할 수 있다는 점을 높이 평가하여 2001년부터 사용하고 있다 . 또한, JASC 소프트웨어의 페인트샵 프로에서도 버전 8.0부터 파이썬 스크립팅을 지원하고 있다.
오픈소스에서의 파이썬
대표적인 오픈소스 운영체제인 레드햇/페도라는 설치 프로그램인 아나콘다를 비롯해서, 업데이트 시스템인 up2date, 환경설정 시스템, 패키지 관리 시스템인 yum등 수많은 구성 요소들을 파이썬으로 작성하고 있다. 그리고, 최근 많은 관심을 얻고 있는 젠투 리눅스 (Gentoo Linux)또한 대부분의 패키지 관리 시스템을 파이썬 기반으로 하고 있다. 그 외에도 메일링 리스트 서버로 가장 널리 사용되고 있는 GNU 메일맨, 스팸 필터 Spambayes, 메일 관리자 TMDA, 데스크탑 시스템 GNOME 등 많은 오픈소스 소프트웨어가 파이썬을 채택하고 있다.
국내의 파이썬 동향
KT의 무선랜 서비스인 네스팟의 기업DHCP 서버가 파이썬으로 구성되어, 다양한 비표준 클라이언트들과 복잡한 요금 상황들을 처리하고 있으며, 하나로통신의 무선랜 서비스 애니웨이의 가입자 인증 시스템, 동축망 관리 시스템이 파이썬으로 되어 있어서 하나로통신의 관리자들은 파이썬 명령행을 통해서 시스템에 아주 능숙하게 복잡한 명령을 내리기도 한다. 그 외에도 SK텔레콤의 무선랜 인증 시스템, 두루넷의 가입자 관리 시스템이 파이썬을 기반으로 한 소프트웨어들로 구축이 되었다. 한편, 국내 최대의 IRC 네트워크인 HanIRC는 불량 사용자 추적과, 망관리를 위한 서버, 통계 분석 등을 파이썬으로 구축하고 있는데, 급속도로 퍼지는 바이러스에 대한 대처나 아주 다양한 수법으로 변화하는 불량 사용자들의 형태에 대한 대응 같은 것은 기존에 사용하던 C로 된 루틴으로는 개발 속도로나 안정성으로나 도저히 할 수 없었던 것이기에, 파이썬의 도입을 아주 긍정적으로 평가하고 있다고 한다.
파이썬이 필요할 수 밖에 없다
국내의 IT 업체들은 늘 시간에 쫓긴다. 자금 사정이나 우수한 개발자 수급 사정이 그다지 좋지않은 평균적인 특성으로 인해 완성된 솔루션을 만들기도 전에 납품하거나 계약을 해야하는 경우가 허다하기 때문에, 제품은 일반화되지 못한 채 발주자의 요구에 따라 이리 저리 수정되어야 하고 급하게 처리하다 보니 소프트웨어는 점점 불안해져서 프로젝트 기간이 늘어질 수 밖에 없는 현실이다. 파이썬은 잘못된 디자인을 한꺼번에 버려버리기에 가장 좋은 언어다. 어느 소프트웨어든 다양한 상황을 겪어보지 않고 완벽해지기는 힘들다. 따라서, 발주자의 요구에 따라 고쳐지든, 일반화를 위해 고치든 간에 여러 번 전체적으로 수정되어야 할 때가 많다. 만약 C나 C++로 작성된 소프트웨어를 처음부터 새로 작성하거나 전반적으로 수정한다면 엄청난 고욕이라는 것은 경험이 있는 개발자라면 쉽게 동조할 것이다. 그러나, 파이썬은 많은 부분을 언어에서 제공해 주기 때문에 아주 짧은 코드를 유지할 수 있고, 새로 작성하는 데도 그렇게 많은 시간이 걸리지 않는다. 1cm 짜리 블럭만으로 지어진 집과 10cm인 블럭으로 되어있는 집을 부시고 새로 지을 때 어느 것이 더 쉬울지는 당연하다. 게다가, 그 10cm짜리 블럭은 1cm짜리 블럭과 잘 붙어서 미세한 조정까지 가능하다! 두 블럭을 섞어서 지을 것인지, 1cm짜리 블럭만으로 짓겠다는 공연한 장인정신만 고집하고 있을 것인지는 독자의 판단이다.