블로그 이미지
JEEN

서울에 사는 꽃청년의 IT찌질모험기

Rss feed Tistory
IT/Perl 2009.02.10 00:31

[ Perl ] CPAN 모듈에 의존한 프로젝트에서의 주의점



 누군가에게 있어 Perl 은 CPAN 을 사용하는 툴이라고 불릴 정도로 Perl 에서의 CPAN 의존은 빼놓을 수 없습니다. 하지만 어떤 프로젝트라도 그냥 대놓고 superuser 로 CPAN 모듈 깔고 그대로 사용하는 경우는 위험합니다. 어떤 하나의 CPAN 모듈이라도 다른 CPAN 모듈에 의존하고 있기 때문에, 의존성 있는 모듈이 해당 메소드 이름을 바꿔버렸거나 하는 경우가 발생하곤 합니다.

  저 같은 경우에는 예전에 CPAN 모듈을 업그레이드 하고, 오늘 FastCGI 를 재기동했을 때, 기존에 잘 돌아가던 웹사이트가 갑자기 500 Internal Error 를 뱉어내기 시작하거나 하는 일이 있었습니다. JSON::Converter 모듈이 JSON 모듈의 업데이트에 따라가지 못하고 관련 메소드가 없다고 에러가 난 것이었죠. 결국은 라이브러리 폴더에서 직접 JSON::Converter 모듈을 수정하는 방법 밖에는 없었습니다. --  뭐 두 모듈 다 CPAN 에서 이전 버젼의 모듈을 받으면 된다는 것도 있겠지만...

  사실은 회사의 중규모이상의 프로젝트에서는 프로젝트에서 사용되는 CPAN 모듈은 별도의 library 폴더로 지정해줍니다. CPAN 의 설정을 바꿔서 별도의 라이브러리 폴더로 바꿔주는 것이죠. 거기다가 버젼관리도 해줍니다.
기존에 잘 움직이고 있는 라이브러리는 특별한 버그나 큰 퍼포먼스 향상이 기대되지 않는다면 업데이트도 잘 하지 않습니다. 최신경향에 맞춰서 바꿔나갈 경우도 있겠지만, 그렇게 우선도는 높지 않습니다.
  물론 Perl 의 대표적인 Product 인 MovableType 같은 경우에는 CPAN 모듈을 그대로 사용하지 않고 전부 MovableType 용으로 따로 최적화시켜두기도 합니다. 딱 필요한 기능만을 빼낸 것이죠.

  이전에 소개한 경량웹프레임워크인 MENTA 에서는 extlib 디렉토리 아래에 필요하고, 저자 나름대로 추천하고 자주쓰이는 모듈들을 모아놓기도 했죠. 거기에 MENTA 에는 MENTA 로 만드는 프로젝트에 새로 추가되는 CPAN 모듈을 간단하게 extlib 에 추가할 수 있는 스크립트도 제공하고 있습니다.

더보기



  위에서 밝힌 그런 버젼차이에 따른 문제뿐만 아니라 MENTA 같은 경량 웹프레임워크가 지향하는 배포의 용이성을 위해서도 중요한 팁이기도 합니다. 사실 php 같은 경우도 PEAR 모듈같은 것들도 프로젝트 디렉토리에 따로 담아두기도 하니... 굳이 언어와 상관없이 중요하다고 말할 수 있겠네요.

신고
TOTAL 464,413 TODAY 20

티스토리 툴바