메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일

리눅스 배포판에 대한 고찰(1)

한빛미디어

|

2007-07-19

|

by HANBIT

14,010

제공 : 한빛 네트워크
저자 : George Belotsky
역자 : 조성재
원문 : Rethinking the Linux Distribution

이 기사는 자유/오픈소스 커뮤니티에서 나온 재미있는 아이디어들을 묶어놓은 것으로 리눅스 배포판에 대한 새로운 방향을 제시한 것입니다. 이 아이디어 대부분은 BSD 기반의 시스템에서도 적용가능 합니다.

비록 여러 오래된 양질의 배포판이 존재하지만, 리눅스가 오랜 시간 동안 뚫지 못한 시장으로 데스크탑 시장이 있습니다. 거기에 새로운 컨텐츠 생산 산업을 위해 빠르게 변하고 있는 인터넷이 기존의 소프트웨어 패키징과 배포방법을 대체하게 될 것입니다.

웹 2.0의 영향력은 서비스로서의 소프트웨어(Software as a Service:Saas)를 부상시켰습니다. 예를 들어 구글은 몇몇 규모있는 사업들을 포함해 10만개 이상의 작은 사업들이 구글 을 청구했고, 잘 알려진 몇몇 커다란 서비스들은 구글 응용프로그램으로 승격되었습니다. 물론 마이크로소프트는 그들이 SaaS를 서비스하기 위해 윈도우즈 라이브를 만들기 위한 시도를 하고 있습니다. 반면에 많은 웹 응용프로그램들 분야들, 즉, 이메일, (홈페이지나 블로그와 같은) 온라인 네트워크, e-commerce(인터넷 상거래) 분야는 이미 성숙하였습니다. 다음 단계는 웹 OS으로서 종국에는 기업형 서비스를 목표로 한 경주가 될 것입니다.

저는 이 칼럼을 통해 FOSS 도구들이 후기 PC 소프트웨어 시기를 의미하는 올바른 기술이며, 다른 사람들에 의해 제공되는 독점적인 서비스로서의 서비스(SaaS)에 대한 백엔드 플랫폼이 아님을 이 기사를 통해 알리길 원합니다. 오늘날의 전형적인 리눅스 배포판은 윈도우즈 스타일의 프론트 엔드를 갖는 일반 Unix 시스템의 구성을 따르고 있습니다. 이것은 Vista와 같은 제품에 대한 경쟁자이며, 이 경쟁자도 마이크로소프트에게조차 윈도우즈 시리즈의 OS 종류 중 마지막이 될 것입니다. 이 사실은 이전의 비즈니스 모델로 친숙해진 우리들에게도 불운한 것입니다.

현재 자유/오픈소스 소프트웨어의 패키징 방법이 배포를 위한 유일한 방법이 아니라는 점을 인식하는 것이 중요합니다. 자유/오픈소스 소프트웨어의 영역은 전 세계에 다양하게 흩어져 있으며, 다양성에 대한 포용력은 혁신에 가까운 활력에 대한 핵심요소입니다. 이것은 생태계, 경제, 투자 포트폴리오, 심지어 개인의 기술에 있어서도 진리로 알려져 있을 정도입니다. 따라서 우리가 새로운 시대를 맞아들이기 위해 전통적인 리눅스 배포판을 어떻게 재정렬할지 알아보도록 합시다.

이 기사의 주된 목적은 미래의 리눅스 (혹은 BSD) 배포에 대한 진솔하고 가치있는 토론을 시도하고 시작하는 것입니다. 이 토론은 현재 존재하는 프로젝트들 또한 새롭게 나타날 프로젝트들의 나아갈 방향을 알려주는데 도움이 될 것입니다. 이 토론에 새로운 아이디어를 추가하고, 다른 기사들을 참조하고, 특히 실제 코드를 (간단한 예들과 함께) 포함하는 것으로 공헌해주시기 바랍니다.

무엇보다도 우리가 이번 기회를 공유된 시도로서 다루길 원하며, "집 안에서 가장 똑똑한 사람"의 콘테스트로 다루지 않길 원합니다. 이것은 적절한 통제의 방법 중 하나입니다. ("통제시 주의사항" 부분을 보십시오.) 이것은 또한 실제 코드를 운용하는 것으로서 FOSS의 미래와 동등한 위치로 다루어질 문제입니다.

여기 이 기사에서 다룰 주제들의 목록이 있습니다.
  • 시스템 관리와 관련된 도구들을 다시 생각하는 것으로 배포판을 모두가 함께 유지하는 "연대감"
  • 단일 UI 아래에서 지역과 원격 응용프로그램을 붙이기
  • 자유 웹 OS의 통합
  • FOSS 프로젝트의 관리 모델과 일반적인 온라인 협업
추가적으로 두가지 부록은 리눅스 배포판 개발자들과 서비스로서의 소프트웨어(SaaS) 개발자들에게 중요한 추가 주제들을 다룹니다. 첫번째는 패키징과 호스팅, 리눅스 배포판의 전달에 관하여 다룹니다. 두번째는 대단위 서버팜으로부터 비용적인(환경적으로 피해를 주는) 낭비를 줄이는 방법을 제안합니다.

이제 리눅스 배포판에 대한 재탐험을 시작해봅시다

Cleaning Up (과거를 정리하기)

새로운 미래를 구성하기 이전에 과거를 돌아봐야 합니다. 수년 전, 유닉스에서 좋은 도구들이 진화했습니다. awk, sed, find, 그리고 다른 여러 프로그램들은 쉘 스크립트와 같이 사용되었고, 아주 빠르게 수많은 작업을 처리하는데 구성할 수 있었습니다. C만으로 모든 것을 작성하는 것과 비교해보십시오.

하지만 오늘날 예술의 경지는 꽤 많이 진보했습니다. (가장 대중적인 펄, 파이썬 그리고 루비와 같은) 고차원 언어들은 쉘 스크립트와 사용되었던 작은 도구들을 이용한 오래된 패치작업보다 더 많은 일을 할 수 있습니다. 그들은 멋진 프로그래밍 구조들을 통합하고, 포괄적인 표준 라이브러리를 공급하며 빠르게 발젼하는 확장 프로젝트들의 커뮤니티들을 지원합니다.

아직까지 시스템 관리는 현대적인 고차원 언어로 이동함으로써 얻을 수 있는 놀라운 이점에도 불구하고, 쉘과 오래된 도구모음에 묶여있습니다. 고차원 언어들로 프로그래밍하는 것은 더 빠르며, 에러를 줄일 수 있습니다. 코드는 더 재사용이 가능하며, 기종과 상관없이 호환가능하고, 더 쉽게 업그레이드 가능합니다. 개발자들은 바로 읽을 수 있는 프로그램들을 제작할 수 있습니다. 이것은 협업을 더 쉽게 만들어 줍니다. 같은 맥락으로 개발자들을 찾고 훈련하는 것도 더 쉬워질 수 있습니다. 서버팜들, 클러스터들, 기업 데스크탑 롤아웃과 심지어 초보자의 간단한 수정 모두에 대해서도 이익입니다.

펄, 파이썬, 루비 (등 적은 것으로 알려진 것)중 어느 것이라도 쉘을 대체하는 우선적인 시스템 관리 도구가 될 수 있었습니다. 제 경험으로 파이썬의 가독성 높고, 작으며, 모순이 없는 문법은 이 일련의 작업에 대한 이상적인 선택으로 만들어줍니다.

많이 알려진 리눅스 배포판들은 그들의 핵심 도구들에서 이미 파이썬을 사용합니다. 레드햇의 아나콘다 설치기나 젠투의 Portage 패키지 관리자가 2가지 예입니다. (DistroWatch에 따라 지난 12월에 최고의 배포판으로 뽑힌) 우분투는 파이썬으로 작업을 공헌하기 위한 커뮤니티에 적합합니다.

다음 논리적인 단계는 높은 수준의 언어를 사용하여 완벽한 시스템 관리 환경을 만드는 것입니다. 큰 기준으로 이 프로젝트는 이미 암약하고 있습니다. 최근 상대적으로 높은 지지를 얻고 있는 배포판인 Pardus는 파이썬을 중요 도구들 이상으로 중요하게 사용하고 있습니다. Pardus팀은 "수준 높은 사고는 수준 높은 언어를 갖고 있다"는 점을 인식하고, 파이썬으로 새로운 초기 프레임워크를 작성했습니다. 여기 그들이 어떤 선택을 했는지 설명이 있습니다.

고수준의 언어들 사이에서, 파이썬은 가장 좋은 선택으로 보입니다. 우리는 이미 그것을 패키지 빌드 스크립트, 패키지 관리자, 제어판 모듈, 설치기 프로그램 YALI 등에서 사용하고 있습니다. 파이썬은 작고 깨끗한 소스 코드를 가지고 있습니다. 표준 라이브러리는 유용한 모듈들로 가득합니다. curve를 배우는 것은 쉽고, 개발자들의 대부분이 우리의 팀에서 특별한 경험없이 그 언어를 선택했습니다.

확실히 오래된 쉘 기반의 코드들과 하위 호환을 할 필요는 있습니다. 하지만, 이러한 일반적인 도구를 추가적인 패키지들로 만들어서 새로운 시스템으로 전환하도록 하는 것은 어렵지 않습니다. 심지어 고수준 언어의 추가는 눈에 띄는 편의를 제공하기도 합니다. IPython 프로젝트는 상호작동하는 파이썬 쉘입니다. 이것은 전통적인 쉘보다 더 많은 기능을 포함하고 있습니다. 추가적으로 IPython은 Matplotlib 그래프 패키지를 지원합니다.

[그림 1]은 IPython과 Matplotlib가 주석을 제외한 9줄의 명령어 안에서 할 수 있는 일의 예를 보여줍니다. 각 원은 그래프상에서 단일 프로세스를 표현하며 원의 크기는 가상 메모리 크기를 의미합니다. (ps 명령어의 vsz 형식 지정자 결과를 의미합니다.) CPU 수치는 수직축을 사용하여 100분율로 나타냅니다. 여러분은 적은 CPU 사용을 하는 대부분의 프로세스를 볼 수 있을것이다. 더 빨간 부분은 기기의 메모리(%mem) 백분율보다 더 큰 메모리를 상주하는 프로세스를 의미합니다.


[그림1] IPython과 Matplotlib이 보여주는 CPU와 메모리 사용 그래프

시스템 상에서 [그림 1]과 동일한 그래프를 생성하기 위해서 IPython 로그를 다운로드하고 ipython -pylab -p pysh-logplay <파일이름> 으로 실행하십시오. 이 기사는 IPython과 관련된 도구 설치를 다루지 않습니다만, 이것은 어려운 것이 아닙니다. 여러분의 배포판은 사용가능한 패키지를 가지고 있을 것입니다.

고전적인 간단한 명령어를 사용하는 기본적인 시스템 관리 작업에 고수준의 언어를 추가하는 것으로도 도움이 됩니다.

브라우저는 데스크탑이다

만약 네트워크가 컴퓨터라면 브라우저는 여러분의 데스크탑이 될 것입니다.

플랫폼으로서 파이어폭스에 열광하는 사람들이 있습니다. 웹은 이미 필수적인 도구로서 모든 사람들이 사용하고 있습니다. 브라우저는 탐색, 이메일 확인, 항공티켓 예매, 은행 업무등의 일을 하기 위한 인터페이스입니다. 이 기사의 처음에서도 언급했다시피, 많은 SaaS 응용프로그램들은 이제 성숙했으며, 시간이 갈수록 더 할 것입니다. 온라인 도구들은 심지어 사진까지도 편집할 수 있습니다. 사실, SaaS는 이미 몇몇 사용자들의 모든 요구를 완벽하게 충족하고 있습니다.

물론 아직까지 해결하기 위한 보안 문제가 있고, SaaS만으로는 이메일 같은 영역과 함께 여러 사용가능한 분야에 대해서 회의적으로 보는 시각이 있습니다. 데스크탑 응용프로그램은 아직 사장되지 않습니다.

하지만, 파이어폭스는 탭 방식의 인터페이스와 오랫동안 막강한 여러 확장기능들과 함께, 웹의 황무지를 집과 같이 느끼게 만들어 주었습니다. 이것이 일반 응용프로그램과 같은 역할을 하지 못했을까요? 만약 파이어폭스가 순수한 웹사이트들과 각각의 원격 SaaS 응용프로그램과 각각의 지역 응용프로그램들을 섞어둔 응용프로그램이었다면 무엇이 되어 있었을까요? 이것이 실제 웹 OS의 미래일까요?

이 기사를 쓰는 동안 모질라 기반 OS 레이어 제작과 관련된 토론이 mozilla.dev.planning 목록에 떠올랐습니다. 토론은 비슷한 목적을 가진 이전 (Symphony OS나 Penzilla Desktop과 같은) 프로젝트들을 포함하여 그래픽 환경을 만들기 위한 XUL(모질라의 XML기반 사용자 인터페이스 언어)의 사용, Ajax 응용프로그램들을 오프라인에서 실행하는 것 등 많은 대체안들이 언급되었습니다. 물론 이 몇몇 아이디어들은 이미 실현가능성이 높아지고 있습니다. 파이어폭스 3.0은 오프라인 상태에서의 Ajax 실행과 DOM 저장을 지원할 것입니다.

놀랍게도, 현재 성숙한 기술들만으로도 파이어폭스를 사용자 최우선 인터페이스로 만들기에 충분하다는 것입니다. 브라우저는 그것 자체로 X 윈도우 매니저의 규칙에 따라 수행할 수 있습니다. 브라우저의 탭은 전통적인 윈도우 창을 대체할 우아한 모습을 제공합니다. 이렇게 된 후에, 사용자들이 웹에서 더 많은 시간을 보내게 된다면, 지역 응용프로그램을 실행할 때 다른 탭에서 열어두는 것보다 더 자연스러운 일이 있을까요? 사실 MAC OS X도 "탐색한 내용을 데스크탑에 확장하기" 도구가 있습니다. Ion X 윈도우 관리자 또한 이러한 접근을 사용합니다.

[그림 2]는 파이어폭스가 윈도우즈 관리자 없이 실행되는 것을 보여주고 있습니다. 탭들은 기대한 것처럼 작동하며, 심지어 대화상자는 아주 쓸만합니다. 현재, (블랙박스나 ratposion과 같은) 제일 가장 작은 윈도우 매니저는 대화 상자들과 같은 몇몇 기능들을 개선할 것입니다.


[그림 2] 창 관리자가 없는 파이어폭스. "설정" 대화상자는 기능적으로 윈도우 프레임의 랙과 구별된다.

다음 단계는 브라우저와 컴퓨터 내의 응용프로그램들을 통합하는 것입니다. 가상 네트워크 컴퓨팅(Virtual Network Computing:VNC)는 가장 성숙한 부분입니다. [그림 3]은 TightVNC 자바 응용프로그램을 사용하여 파이어폭스 내에서 구동되는.기본 우분투 6.06 LTS (Dapper Drake) 데스크탑입니다.


[그림 3] TightVNC 자바 응용프로그램을 사용하여 표준 GNOME 데스크탑을 나타내고 있는 파이어폭스

물론 파이어폭스 탭은 한 응용프로그램에 맞춰지는 것이 이상적입니다. [그림 4]는 ratpoison 윈도우 관리자로 실행하는 오픈오피스의 모습입니다. 파이어폭스에 VNC 기반 통합 환경은 [그림 3]에서와 같이 아주 특이합니다. 만약 파이어폭스가 어느 창 관리자의 요소를 포함하고 있었다면, 이것은 응용프로그램을 직접 제어할 수 있었을 것입니다.


[그림 4] TightVNC 자바 응용프로그램을 사용하여 오픈오피스를 보여주는 파이어폭스

여러분은 위의 파이어폭스 예제들에 대한 (짧은 쉘 스크립트)소스코드를 다운로드 받을 수 있습니다. 주석들은 더욱 실제적인 설명을 제공합니다. 설치는 이 기사의 관점에서 벗어나지만, 여러분의 리눅스 배포판은 실험을 할 수 있도록 충분한 패키지를 제공할 것입니다. 보통 X 윈도우는 여러개의 데스크탑을 연결하도록 많은 기능을 제공하고 있습니다.

여기에서 설명한 VNC 기반의 통합 환경에 대해 특별히 디자인 된 창 관리자는 파이어폭스에 바로 설치할 수 있는 어느 창 관리 요소들을 대체하거나 추가할 수 있습니다. 여러개의 탭은 같은 데스크탑에 열어둘 수 있으며, 그러한 창 관리자는 자동으로 사용자가 선택한 파이어폭스 탭에 의해 필요한 응용프로그램을 실행하고 최대화합니다.

이 방법은 필요한 명령 수행 결로를 완성하는데 있어서 상대적으로 직접적인 방법입니다. 이후에, 탭 안에서 실행되는 모든 VNC 응용프로그램은 VNC 서버를 통해 이미 윈도우 관리자를 다룰 수 있습니다. 이러한 설계는 브라우저가 지역 프로그램들로 알려진 여러 원격 응용프로그램들을 제어하도록 합니다.

특별한 윈도우 매니저는 (그림 3에서 보여준) 전통적인 데스크탑 관점을 지원하도록 관리할 수 있거나 Skippy와 비슷한 도구를 이 기능으로 제공할 수 있습니다. 추가적으로 구성 요소는 (비행기에서 사용되는 것과 같은) 투명한 HUD 스타일 오버레이의 형태로 창 컨트롤들을 생성할 수 있습니다. 이 아이디어는 비주얼 측면에서 Compiz나 베릴과 경쟁하는 것이 아닐 뿐더러 단순히 단일 작업으로 사용자들의 주의를 초점에 둔 간단한 인터페이스를 제공하기 위한 것입니다. 파이어폭스 그 자체는 여러 작업들을 제어하는 데스크탑 환경이 될 것입니다.

또한 VNC의 대체물로서 (여러 개발 단계에 있는) 파이어폭스의 X 기반 응용프로그램을 집적하는 방법이 있습니다. WeiredX 자바 기반 X 서버는 그 중 하나입니다. WeirdMind 프로젝트는 WeirdX를 암호화된 쉘과 브라우저를 통한 X 접속을 제공하는 MindTerm SSH 클라이언트(이 또한 자바에서 구현한 것)를 통합했습니다. 불운하게도 이 프로젝트는 SSH1 프로토콜만을 지원하고 있으며 최근 업데이트가 없습니다.

NoMachine NX 서버(최고의 통합 솔루션 부분 리눅스 저널/리눅스월드 2006 수상)는 빠른 원격 X 접속을 제공합니다. FOSS 버전의 제품(FreeNX)이 있지만, 브라우저를 적절히 통합하기 위해서는 자바응용프로그램이 필요합니다. Univ-RX 프로젝트는 FreeNX에서 동작할 FOSS 자바 애플릿을 개발중입니다.

요약하면, 완벽한 파이어폭스 데스크탑은 준비되어 있으며, 몇몇 작업을 이미 내포하고 있습니다. 이러한 요소가 빠른 생산을 가능하게 해줍니다. 이것은 웹 응용프로그램과 전통적인 지역 프로그램간에 서로 일치하는 인터페이스를 향한 중요한 단계입니다. 이 인터페이스는 또한 미래의 소형 기기들로 이식되며, 탭 방식의 인터페이스로 탐색이 쉬워질 것이며, 작은 스크린 공간을 효율적으로 사용할 수 있도록 만들어줄 것입니다. 웹 브라우저가 소형 기기의 중요한 요소가 된 이후로 사용자 환경을 극복하도록 구현하는 것이 좋은 선택입니다.

전체적으로 파이어폭스 데스크탑은 온라인의 혼합된 도구들을 향한 움직임에 힘을 실어주고 이전의 단일 방식 소프트웨어를 대체하는 코드를 설치했습니다. 이제는 지역 응용프로그램과 원격 응용프로그램의 구분이 점점 사라지기 시작하고 있습니다.


역자 조성재님은 현재 오픈소스 데스크탑 환경인 Kool Desktop Environment (KDE) 프로젝트의 한국어 번역 코디네이터와 한국팀의 대표로 활동하고 있습니다.
TAG :
댓글 입력
자료실

최근 본 상품0