가령 A = 게시판, B = 알림 관리, C = 관리자 패널... 이라고 할때, ABC를 모두 포함한 모듈을 제작하고 있습니다.
확실히 모듈화 측면에서 보면 말도 안되는 개발이지만 개발 시일이 촉박해서 그렇게 만들고 있습니다.
제가 궁금한 것은 이렇게 큰 모듈을 만드는게 성능상 불이익을 받을 수 있는가 입니다.
가령 A = 게시판, B = 알림 관리, C = 관리자 패널... 이라고 할때, ABC를 모두 포함한 모듈을 제작하고 있습니다.
확실히 모듈화 측면에서 보면 말도 안되는 개발이지만 개발 시일이 촉박해서 그렇게 만들고 있습니다.
제가 궁금한 것은 이렇게 큰 모듈을 만드는게 성능상 불이익을 받을 수 있는가 입니다.
XE에서는 controller, model, view (+admin, mobile, api) 정도밖에 구분하지 않기 때문에 이 구조 안에서 많은 기능을 넣으면 파일 하나에 몇천 줄씩 들어가게 됩니다. 파일이 커질수록 현재 페이지와 무관한 코드를 많이 로딩하게 되니 성능이 안 좋아지는 건 당연하고요. 특히 트리거가 들어가는 파일이 커지면 전혀 상관없는 페이지에서도 부담이 커집니다.
코드 복붙을 최소화하고 공통 기능을 별도의 함수로 빼내면 많이 절약이 되지만 이것도 한계가 있고, 결국 어느 시점에선가 파일을 쪼개야 합니다. 그러나 여러 모듈로 쪼갤 필요는 없다고 생각해요. 한 모듈 안에서도 XE에서 기본으로 제공하는 구조 외에 얼마든지 파일을 만들 수 있고, 꼭 필요한 곳에서만 include_once를 사용하거나 spl_autoload_register로 끌어다 쓸 수 있으니까요.
이런 방법으로 많은 파일을 그때그때 불러다 쓰는 예로는 고급 메일 발송 모듈이 있습니다. 트리거가 들어가는 파일은 몇 줄 없지만, 메일을 보내려고 하면 어마어마하게 많은 파일이 쓱~ 인클루드되지요.
https://github.com/kijin/xe-advanced-mailer
네, 트리거 실행시 상당히 많은 것이 로딩됩니다. 만약 모듈을 분리하신다면 트리거만 따로 모으는 것도 성능을 개선하는 한 방법이 될 수 있습니다.
아... 그럴 수도 있겠네요. 근데 지금 생각해보니까 아예 트리거 전용 클래스로 가령 document.trigger.php를 만들어놓으면 트리거 불러오는데에 getModuleInstance까지 쓸 필요도 없을 것 같은데...
아니면 그냥 trigger 디렉토리를 따로 파서 그 안에 trigger_name.php 이런 식으로 트리거를 모아놓거나요.
한 사이트에서 쓸꺼면 그냥 합치는게 낫지 않을까요?
저라면 합칠듯 합니다.