About Perl‎ > ‎

관리자와 Perl

전종필

팀을 이끌고 회사 또는 조직의 목표를 달성하기 위하여 팀 내의 다양한 요소들과 팀원의 능력등을 고려하며 업무를 지휘해야 하는 팀장으로서 귀하는 제반 비용과 효율에 대해 생각하고 있을 것입니다. 아마 귀하는 전산시스템을 관리하고 유지 및 보수하는 팀의 매니저일 수도 있고, 많은 데이터를 다루는 팀의 수장일 수도 있겠고, 혹은 웹사이트를 구축해야하는 웹 에이전시의 대표일 수도 있습니다.
아마도, 귀하는 오늘 아침에 지금 진행하고 있는 일을 금주내로 마치지 않으면 밥그릇에 거미줄을 칠지도 모를 거라고 협박하는 사장님의 핏대오른 얼굴 앞에서 침착한 척하는 모습으로 서 있었을지도 모릅니다. 아니면, 이번 달 안으로 데이터 공급을 시작해 주지 않으면 다른 회사로 거래를 바꾸겠다고 윽박지르는 고객의 전화를 받고나서 '시바새...'라고 중얼거리며 회사 건물 밖까지 나가서 담배 한대를 꼬시르고 올라왔는지도 모르겠지요. 어떤 사정이 되었건, 귀하는 매일매일 말만 떨어지면 즉시 이루어지는, 엔터키 하나면 뭐든지 되는 ``컴퓨터 같은'' 업무 완성을 기대하는 사람들에 둘러싸여 있을 것입니다. 매번 그들에게 세상에 ``컴퓨터 같은'' 것은 없다고 말하지만, 스스로는 그런 일이 팀내에서 한 두번 쯤은 있었으면 좋겠다고 생각해 보았을 것입니다.
물론 알고 계시는 것처럼 컴퓨터 세계에 ``컴퓨터 같이 슉슉되는'' 그런 일은 없습니다. 다만, 어떤 일을 하는데 있어서, 다른 것 보다 조금 쉽거나, 빠른 길은 있기 마련이지요.

관리자로서 시스템 관리를 위해서 어떤 도구를 사용해야 하는지 결정할 필요가 있을 것입니다. 시스템 관리를 하다보면 정말로 뜻하지 않은 일이 생기곤 합니다. 간혹 새로 들어온 야심찬 신입사원이 네트웍 설정을 잘 못해서 전체 네트웍 속도를 굼벵이 꾸물거리는 속도로 만들지만, 원인은 쉽게 찾아지지 않는 경우도 생깁니다. 또는 네트웍 내의 여러 호스트들의 다양한 상태를 정기적으로 점검하여 매번 레포트로 만들어 내야하는 프로그램을 만들어야 하는 경우도 있을 수 있습니다. 만일 귀하의 팀원중에 Perl을 사용하는 사람이 있다면, 장담하건대, 귀하는 운이 좋은 팀장입니다. 어떤 언어를 선택하느냐에 따라서 시스템의 TCO가 현저하게 달라질 수 있고, 느려터진 네트웍 때문에 메일을 보내지 못해 씩씩거리는 임원에게 좀 더 빨리 평온을 찾아 드릴 수 있습니다.

만일 귀하가 네트웍이나 시스템 관리를 하는 팀의 매니저라면, 꼭 팀원들에게 Perl을 자신의 여러 도구목록의 상위에 둘 것을 권하십시오. 시스템관리자들이라면 대개는 sh, C, awk, sed 등의 언어에 어느정도 알고 있을 것입니다. 그렇다면 Perl을 배우는 것은 의지만 있으면 어렵지 않을 것입니다. 만일 그런 언어를 잘 모른다면, 그를 잘라버리지 말고 Perl을 배우도록 하십시오. 그리고 CPAN 사이트에 가시면 다양한 시스템관리와 관련된 다양한 확장모듈을 발견할 수 있으니, 그 것들을 이용하게 하십시오. 반드시 관리 효율을 엄청나게 증대시킬 것입니다.

데이터, 특히 텍스트 데이터를 많이 다루어야 하는 팀이라면, 반드시 Perl을 사용해야 할 것입니다. 물론 다른 언어로 할 수도 있습니다. 그러나, 다른 언어로 할 경우에는 같은 일을 열 배 이상의 시간을 들여야 할 수도 있습니다. 텍스트 데이터를 다루는 데 있어서 Perl의 능력은 가히 환상이라고 말할 수 있습니다. 만일 팀원이 새로운 언어를 배우는 것을 꺼려 하거나, 자신이 좋아하는 언어를 사용하지 않는 것 때문에 Perl을 멀리하려 한다면, 그에게 귀하가 가진 넓은 안목을 조금 나누어 주셔야 할 것입니다. 그 팀원은 일을 멋지게 하고는 싶지만, 효율적으로 하는 것에 대해 잘 모르기 때문에 Perl을 스크립트 언어라서 뭐가 대수로울까라고 말할 지도 모릅니다. 그에게 Perl의 장점들에 대해서 설명해 주시고 팀의 업무 효율을 위해 그 팀원이 많은 기여를 할 기회가 왔다는 점을 상기시켜 주시길 바랍니다. 처음에는 별 흥미를 보이지 않았던 팀원이라도, Perl을 배우고 나면 많은 일을 쉽게 할 수 있다는 것과, 자신에게 강력한 도구가 하나 더 추가되었다는 것에 대해 기뻐할 것입니다.

웹에 있어서 Perl의 역할은 이제 끝났다고 생각하는 사람들도 있습니다. 그러나 그것은 잘못된 생각입니다. Perl이 웹에 기여하는 것은 CGI뿐이라고 생각하기 때문에 그런 오해가 있습니다. 그러나 Perl은 CGI를 위해 만들어진 언어도 아닐 뿐더러, 웹과 관련한 업무는 단지 CGI뿐은 아니라는 것입니다. 웹서비스를 하려면 반드시 설정파일(*.conf 파일들)을 다루어야 하고, 방문자에 대한 기록인 로그파일에 대해서 분석하는 일이 필요합니다. 설정의 자동화는 말하지 않더라도, 로그파일에 대한 분석은 전형적인 텍스트 분석이기 때문에, Perl이 훌륭한 역할을 할 것입니다. 반드시 팀원중의 누군가는 Perl을 할 수 있도록 팀을 구성하는 것이 좋습니다. 또, 기존의 좋은 CGI들 중에는 Perl로 만들어진 것들이 많습니다. 이러한 프로그램을 분석해서 현재 CGI에 사용하는 언어로 포팅하려면 어느 정도 Perl에 대한 지식이 필요할 것입니다. HTML 페이지를 자동으로 생성하는 것이 필요한 경우도 있습니다.
동적인 화면생성이 무조건 좋은 것은 아닙니다. 그 것을 php로 하건, JSP로 하건 프로그램이 호출될 때마다 상당한 시스템 자원을 사용하게 되고, 많은 접속이 있을 때는 이러한 자원이 매우 아깝게 느껴질 것입니다. 만일 매번 새로운 내용을 출력하기 보다는 대체적으로 몇 시간, 혹은 그 이상의 시간 간격으로 데이터가 갱신되는 정도라면, 데이터가 갱신될 때마다 HTML 페이지를 생성해 두고 그 HTML 페이지를 게시하는 것이 웹서버나 네트웍의 부하를 혁신적으로 줄이는 방법이 될 것입니다. 이때는 다른 언어를 이용하는 것 보다는 Perl을 이용하는 것이 좋습니다. 이런 상황이라면 팀장은 팀원으로 하여금 Perl을 이용하여 페이지를 생성, 갱신하도록 하는 것이 서비스의 효율을 높이도록 하는 길입니다. 또, 수백, 수천의 HTML 페이지에서 특정한 내용을 바꾸려 한다면 어떤 방법을 취하시겠습니까? 편집기를 사용하면 똑같은 문장은 바꿀 수 있겠지만, 비슷한 패턴이나, 여러개의 패턴에 대해서는 별로 효율이 좋지 않을 것입니다. C언어로 프로그램을 만들어서 할 수도 있겠지만, 그걸 만드는 동안에 Perl을 배워서 Perl로 하는 것이 훨씬 빠를 것입니다. 마지막으로, mod_perl은 Perl과 Apache 웹서버를 일체화시킨 것으로 CGI의 효율을 극대화 시킨 것입니다. 만일 Perl로 만든 CGI가 꼭 필요한 경우가 있다면 mod_perl을 고려하는 것이 좋을 것입니다. 이 정도면, 웹에이전시 팀에 왜 Perl이 필요한지는 충분히 설명되었을 것입니다.

Perl의 텍스트 처리능력을 사용하여 "프로그램을 생성"할 수도 있습니다.
웹이건 Client-server건 대부분의 데이터 처리는 CRUD(Create, Read, Update, Delete) 범위에 있기 마련입니다. 데이터 스키마를 parsing한 후 다양한 언어로 프로그램 소스를 생성하는 Tool을 만들어 쓰면 시간을 20배, 30배 정도 단축시킬 수 있습니다.

어떤 팀이든지, 전산업무와 관련이 있다면, 업무와 직접적인 연관은 없더라도, 업무의 효율을 위해서 다양한 툴을 만들어 사용할 필요를 자주 느낄 것입니다. 이러한 툴의 제작에는 별도로 많은 시간을 내기는 어렵습니다. 이런 상황에서는 Perl과 같은 언어가 큰 힘이 되어줄 것입니다. 팀원 수명이 있어야 C로 며칠동안 만들 수 있는 툴도 팀원 혼자서 Perl로 하루정도만에 만들 수 있는 상황은 많이 있습니다. 팀에 엄청난 순발력이 생기는 순간이지요.

팀원중에 단 한 사람만이라도 Perl을 습득하게 해 두십시오. 그러면, 다른 사람들은 곧, 스스로 Perl을 터득하게 됩니다. 아마도, 그 것은 전염이라고 말할 수도 있을 것입니다. 귀하의 팀에 Perl이 전염되기 시작하면 그 팀의 효율은 높아지기 시작할 것입니다.
단, 주의할 것은, Perl과 다른 언어를 경쟁시키지 말라는 것입니다. Perl의 주창자인 래리아자씨는 Perl을 ``Humble Language''라고 표현합니다. 그 것은 Perl이 다른 언어를 누르고 최고의 언어로 군림하려는 것이 아닌, 다른 언어의 부족한 부분을 채우거나, 다른 도구들이 하기 어려운 것을 대체하여 ``일이 되도록'' 하는데 촛점을 맞추고 있기 때문입니다. 귀하 역시 팀장으로서 ``일이 되도록''하고 싶을 것입니다. Perl(혹은 다른 언어라도)을 다른 언어와 비교하여 경쟁하려고 하는 순간부터 원래의 의도인 효율 제고는 물을 건너가기 시작하는 것입니다.

마지막으로 CPAN에 대해 말씀 드리겠습니다. CPAN은 어쩌면 Perl이 훌륭하고 실용적인 언어이도록 한 언어 바깥의 특성이라고 볼 수 있습니다. CPAN은 여러 사람이 각종 문제를 해결하고자 Perl의 기능을 이용하여 만든 라이브러리 집합입니다. CPAN의 모듈들을 잘 활용하면 제반 비용을 더욱 더 줄일 수 있습니다.

Perl은 효율을 위한, 실용적인 언어입니다. 귀하의 팀의 효율을 높여야 하한다면, 또, 그 일에 Perl이 적절할 것이라 생각된다면, 꼭 귀하와 함께 일하는 도전적인(사실 큰 도전의식이 필요하지는 않습니다) 팀원과 함께 Perl을 도구로 챙기는 것에 대해 생각해 보시기 바랍니다.

Comments