XE 코어 관리와 업그레이드 10계명

1. XpressEngine 공식홈페이지 관심 가지기

XE 공식 홈페이지에 자주 방문하여 코어가 진화, 발전하는 과정을 유심히 살펴보십시오. 코어는 버전별로 껑충껑충 뛰어 다니는 토끼가 아닙니다. 하루에 1개 이상씩 소스코드가 변경되며 매일매일 조금씩 성장하는 나무(Tree)를 닮았습니다. 무관심과 부주의로 무심코 업데이트 한 후에 내 홈페이지가 다죽게 생겼으니 너의 간을 내 놓으라고 떼쓰는 거북이 유저(Turtle Users)가 되어서는 않됩니다. 공홈의 공지사항과 자유게시판, 사용자 포럼 등에 지속적으로 참여하여 제안과 개선안의 내용을 공유하고 이슈에 등록된 패치 내용에 대하여 관심을 가지십시오. 개발에 직접적으로 참여하는 것만이 공헌자가 아니며 유저의 이야기를 주의깊게 살펴보는 것도 가장 훌륭한 의사소통의 방법입니다. 또한 유저간 참여의 가장 큰 덕목은 배려이며 커뮤니티 운영의 원동력입니다.


2. 별도의 테스트 계정(서버) 활용하기

개인적인 웹사이트와 블로그 및 사업용 웹사이트를 개발하고 운영하는 계정과는 별도로 코어를 위한 소규모 테스트 계정을 운영하십시오. XpressEngine은 상업용 CMS와는 달리 무료 공개되는 오픈소스 소프트웨어입니다. 하위버전에서 상위버전으로 올라갈수록 추가되는 기능 구현과 옵션을 위한 수정코드를 포함하게 되고 경우에 따라서는 하위 버전의 모듈 호환성을 유지하지 못하는 경우도 있습니다. 따라서 오픈소스를 이용하여 중요한 웹사이트를 개발하고 운영한다면 별도의 테스트 계정을 활용하여 개선된 코어의 버전별 변경사항을 테스트하고 확인하는 개인적인 노력이 반드시 필요합니다. 테스트 계정은 실운영중인 서버환경과 가능하면 같은 환경을 구축하고 운영중인 웹사이트의 백업파일을 활용하여 코어 업그레이드를 위한 사전 모의 테스트를 거친 후 도출된 문제점은 충분한 시간을 갖고 해결한 후에 실적용하는 것이 가장 바람직합니다. 모의 테스트 과정에서 오류가 제거되면 버전별로 지속적인 백업파일을 재생성하고 추후 배포 버전에서도 재활용(테스트) 할 수 있도록 관리하는 것도 요령입니다.


3. 웹사이트 백업과 복원에 대한 사전 지식 익히기

코어를 업그레이드 하기 이전에 반드시 계정의 백업 파일을 생성하십시오. 만약 업그레이드 과정에서 예기치 못한 오류가 발생하는 경우 복원 작업을 통해 업그레이드 이전으로 되돌릴 수 있습니다. 백업 파일의 생성 및 복원하는 방법에 대해서는 XE 메뉴얼(XE팁 참고)의 기술자료를 충분히 학습하도록 합니다. 계정을 백업하는 과정은 코어 파일을 포함하는 디렉터리 및 파일의 전체 백업과 DB 백업 파일의 생성(sql 파일), 즉 2가지 과정으로 이루어집니다. 만약 유료 호스팅 계정을 이용한다면 서버 관리자에게 백업 파일의 생성 및 복원을 사전에 요청해 두는 것도 좋은 방법입니다. 이렇게 생성된 백업 파일은 테스트 계정에서 복원해 보고 코어 업그레이드를 위한 사전 모의 테스트 작업을 진행해 보는 것이 가장 중요한 오픈소스 관리 요령입니다. 이러한 노력을 게을리한다면 오픈소스를 다룬다는 의미를 떠나서 웹사이트를 개발하고 관리하는 노력이 부족한 것입니다.


4. 기본 모듈과 확장 모듈의 호환성 검토하기

코어 구동을 위해 기본적으로 포함된 모듈 파일은 기본 모듈이라 말하며, 코어와 더불어 추가적인 기능을 구현하는 모듈은 확장(extensions) 모듈이라 말합니다.(애드온과 위젯 프로그램도 코어의 확장입니다.) 확장 모듈에는 개발팀이 공식(Official) 배포하는 모듈과, 외부 모듈 개발자에 의해서 확장 배포하는 사용자(Custom) 모듈로 나뉘게 됩니다. 대표적인 공식 모듈에는 게시판, 카페XE, 위키XE, 자료실 모듈 등이 있고 사용자 모듈에는 게시판EX(BoardEX), 소셜XE(SocialXE) 모듈 등이 이에 속하는데 XE개발팀이 아닌 외부 개발자가 제작 배포한다는 의미에서 커스텀(Custom)이라는 의미를 갖게 됩니다.

코어를 업그레이드 한다는 것은 코어 파일 전체 또는 변경된 일부 파일을 서버에 업로드하여 기존 파일 위에 덮어쓰는 작업이며 따라서 이때 새로 추가된 파일은 기존 파일과 함께 추가 되고 더이상 불필요한 파일은 제거되지 않고 서버에 그대로 남게 되지만 코어 구동에는 아무런 지장이 없습니다. 이때 사용자 필요에 의해서 추가된 확장 모듈은 업그레이드 되지 않습니다. 따라서 확장 모듈이 새로운 코어에서 변경된 쿼리 방법과 MVC 구조를 따르지 않는다면 오류가 발생하게 됩니다. XE개발팀은 하위버전을 위한 호환성을 최대한 유지하려고 노력하지만 추가된 모듈의 기능 구현과 효율적인 쿼리 방법의 개선, 오류에 따른 버그패치를 포함하기 위해 부득이하게 변경할 수 있습니다. 이러한 경우 확장 모듈은 사용자가 직접 수정하거나 또는 모듈 개발자가 호환성을 검토하여 소스코드를 개선하고 재배포할 때까지 기다린 후 적용해야 합니다. 즉 사용자가 추가한 확장 모듈의 경우 새로운 버전의 코어와 호환성을 유지할 수 있는 충분한 시간적 여유가 필요합니다.(단순 디자인 변경은 사용자의 몫입니다.)

코어를 업그레이드 한다는 것은 이렇게 개선된 기본 모듈 외에도 사용자 모듈을 포함한 확장 모듈과의 호환성 여부를 테스트 계정을 이용하여 사전에 충분히 검토하고 오류가 없는 경우에 진행해야 합니다. 코어는 요청에 따른 응답 오류가 발행하면 백지화면을 보여주거나 웹페이지의 일부조차 불러오지 못하는 치명적인 오류가 발생할 수 있습니다. 호환성이 검증되지 않은 확장 모듈(커스텀)에서 발생되는 오류사항은 개발팀이 그 어떠한 보증이나 호환성을 담보할 수 없고 지원대상이 될 수도 없습니다. 따라서 새로운 버전의 코어로 업그레이드 하기 위해서는 반드시 테스트 계정에서 코어와 기본 모듈, 확장 모듈의 호환성을 다양한 방법으로 충분히 검토한 후에 오류가 없는 경우 진행해야 합니다. 테스트 과정에서 모듈을 한꺼번에 설치하기 보다는 순차적으로 설치, 확인해 보면서 점검해 보는 것도 좋은 방법입니다. 확장 모듈에서 오류가 발생하는 경우 충분한 시간적 여유를 갖고 해당 모듈 제작자에게 문의하여 패치 방법 및 호환성 검토를 요청하도록 합니다. 이때 기본 모듈 또는 공식 모듈이라고 해도 사용자의 필요에 의해서 일부를 수정하거나 함수의 메소드가 변경되면 커스텀(Custom)의 의미를 갖게 되고, 스킨의 경우에는 변경된 맴버 변수와 메소드에 대응하지 못하면 오류가 발생할 수 있음을 유념해야 합니다.


5. 사용자 애드온/레이아웃/위젯 스킨의 호환성 검토하기

애드온과 레이아웃, 위젯 프로그램과 위젯 스킨 등도 코어에 기본적으로 포함된 프로그램 이외의 사용자 필요에 따라 작성된 소스를 포함하는 경우 커스텀(Custom)으로 분류되고 변경된 템플릿 문법 또는 쿼리 방법에 대응하지 못하는 경우 코어 업그레이드 이후에 예기치 못한 오류가 발생할 수 있습니다. 이러한 경우 모의 테스트 과정에서 기본 애드온 또는 위젯으로 설정을 변경하여 테스트해 보고 사용중인 소스코드와 비교하여 직접 수정하거나 제작자에게 문의 또는 지원을 요청하도록 합니다.


6. 관리자 로그인 유지하기(1)

새로운 코어 파일을 업로드하기 직전에는 반드시 계정에 접속하여 최고관리자 권한으로 로그인을 하고 제어판을 열어둡니다. XE코어는 항상 index.php를 통해 요청과 응답을 실행하기 때문에 만약 요청과 응답에 따른 오류가 발행할 경우 사이트에 접근하는 것이 어려울 수 있습니다. 따라서 관리자 로그인 후에 제어판을 열어두고 모듈 업데이트 실행과 캐시파일을 재생성 할 준비를 미리 해 두는 것이 중요합니다. 만약 예기치 못한 오류가 발생하는 경우 /xe/?module=admin 을 URL에 붙여 관리자 모듈을 실행해 보고 세부적인 옵션설정을 다시한번 꼼꼼히 확인해 보도록 합니다. 만약 같은 문제가 지속된다면 해당하는 오류사항을 공홈에 문의하여 도움을 요청하는 것이 좋습니다. 오류 또는 버그의 내용은 나만 겪게 되는 문제가 아니라 같은 프로그램을 사용하는 모든 유저가 한번쯤 직면하게 되는 공통된 주제이기도 합니다.


7. 안정적으로 파일 업로드하기(2)

웹사이트를 만들고 운영한다는 것은 월드와이드웹(WWW)이라는 거미줄(Web)에서 여러분이 지정한 특별한 컴퓨터(서버)에 공유를 원하는 목적 파일을 올려두고 필요한 사람들과 함께 공유하는 방법을 제공하는 정보 공간을 만드는 작업입니다. 따라서 서버에 목적 파일을 업로드하는 작업은 파일전송 프로토콜(File Transfer Protocol, FTP)을 이용하게 되는데 이러한 작업을 유용하게 도와주는 프로그램을 FTP 유틸리티라고 말하며 텔넷(Telnet)/SSH(Secure Shell, SSH) 은 코어 압축파일을 서버에서 직접 풀어 덮어쓰기 때문에 가장 안정적인 방법입니다. FTP 유틸리리티를 이용하게 되면 상대적으로 텔넷/SSH보다 사용하기에는 쉽지만 방법면에서 파일을 낱개로 하나하나 업로드해야 하기 때문에 파일 누락의 오류가 발생할 수 있는 단점이 있습니다. 따라서 경험상 가장 안정적인 응용 프로그램으로 파일질라(FileZilla)를 추천하는 것입니다.

코어 관리에서 가장 쉬운 방법은 [쉬운 설치]를 이용하는 것이지만 다운로드 서버와 안전하지 못한 네트워크로 직접 연결된다는 점에서 편리성 이외의 안정성은 가장 낮을 수 있습니다. 파일전송에 완벽한 유틸리티는 없습니다. 다만 가장 안정적인 방법을 위해 꾸준히 학습하고 작업 후 파일 누락의 오류가 없는지를 꼼꼼히 확인하는 습관을 갖어야 합니다. XE코어는 위 3가지 방법 모두를 지원하고 있으므로 어느 것을 사용하든지 파일 누락의 오류를 반드시 체크해 보아야 하고 문제가 발생한 경우 재업로드(재인스톨) 과정을 거쳐 누락된 파일이 없도록 충분히 준비를 해야 합니다.


8. 모듈 업데이트 실행하기(3)

CMS(Content management system)란 데이터베이스(Database)에 생성된 자원과 정보를 통합적으로 관리하기 위한 입출력 도구입니다. 따라서 코어를 업그레이드한다는 것은 이전보다 더욱 효율적인 방법으로 데이터의 조각들을 입력하고 원하는 결과값의 출력을 위해 개선된 방법론을 포함합니다. 그러므로 업그레이드 된 코어를 덮어쓰게 되면 가장 먼저 데이터베이스 테이블의 컬럼 변동사항을 확인해 보고 수정된 내용으로 적용해 주어야 하는데 이것이 모듈의 업데이트 상황입니다. 모듈 업데이트가 적용되지 않으면 개선된 방법론을 지원하지 못하게 되고 결과적으로 잘못된 쿼리의 내용으로 인해 코어는 오류에 빠지게 됩니다. 따라서 반드시 모듈의 업데이트 항목을 확인하고 수정된 DB 테이블의 업데이트 작업을 가장 먼저 실행해 주어야 합니다. 모듈 설치의 경우 DB에 모듈이 필요로하는 새로운 테이블 생성을 의미합니다.


9. 캐시파일 재생성하기(4)

모듈 업데이트가 완료되면 반드시 캐시파일을 재생성 해야 합니다. 파일 덮어쓰기로 코어의 개선된 MVC 구조(폴더와 파일)가 적용되고 DB 테이블이 변경되면 사용자 요청에 따른 개선된 쿼리를 수행하기 위해 코어는 캐시파일을 참조하게 됩니다. 이때 이전 버전의 캐시파일을 불러온다는 것은 코어를 큰 혼란에 빠뜨리게 됩니다. 예를들어 이전에는 변수가 6개면 충분했지만 변경된 쿼리는 8개가 필요할 수 있고 변수명과 값의 형태가 변경되었을 수 있기 때문입니다. 따라서 코어는 요청에 대한 응답을 완료할 수 없는 경우가 발생합니다. 이러한 이유로 모듈 업데이트가 완료되면 반드시 캐시파일을 재생성하여 업그레이드 된 쿼리를 정상적으로 수행할 수 있는 변경된 캐시파일을 가장 먼저 생성하도록 해야 합니다. 캐시파일은 서버측에서 코어가 임의로 files 폴더를 생성하고 코어 구동에 필요한 초기설정값을 모듈의 종류별로 생성하여 저장합니다. 따라서 캐시파일에 문제가 발생하면 파일 권한 문제로 수정 또는 변경이 용이하지 않을 수 있습니다. 이러한 문제가 발생하면 공식 홈페이지의 묻고 답하기 게시판을 활용하여 문제점을 해결할 수 있는 약간의 학습이 필요할 수 있으며 서버 루트(root) 권한이 필요할 수 있습니다.(호스팅 사용자의 경우 루트권한을 가지고 있는 서버관리자에게 도움을 요청합니다.)


10. XE코어의 이해와 개선/버그 문의하기

XpressEngine은 MVC 구조로 이루어진 CMS 도구라는 것을 충분히 이해할 필요가 있습니다. XE코어는 모델-뷰-컨트롤러(Model-View-Controller) 개발 패턴에 기반합니다. 이것을 줄여서 MVC 구조라고 말하며 소프트웨어 공학에서 프로그램의 설계는 건축(architecture)과 같기 때문에 시스템의 운영 구조를 목적과 명세에 따라 유기적 관계로 설계하고 업그레이드를 통제하는 지침과 원칙, 이것을 아키텍처 패턴이라고 하며 그 가운데서 MVC 패턴은 연산과 처리를 담당하는 프로그램의 논리(logic) 구조에서 사용자에게 제공하는 프리젠테이션(표현부분)을 분리하는 가장 진보된 소프트웨어 접근 방법론입니다. 이 패턴을 성공적으로 사용하면 사용자 인터페이스와 비즈니스 로직(프로그램의 논리 구조)을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있습니다.

MVC 구조로 이루어진 XE코어는 기타 언어를 포함하여 HTML과 PHP를 활용하는 방법면에서 가장 확장성이 높은 개발구조입니다. 다만 MVC 구조의 모듈을 개발하는 과정이 타 CMS보다 조금 복잡하고 응용 및 확장을 위한 수고와 노력이 더욱 필요하며 요청과 응답에 따른 반응속도가 타 CMS보다 느리다고 느낄 수 있는 구조적 한계를 가지고 있는 것도 사실입니다. 하지만 현재 상태에 최적화 되고 고착된 CMS가 아닌 미래 지향적인 개발환경을 꾸준히 제공한다는 의미에서 서버측 OS에 버금가는 CMS의 탄생도 기대해 볼만 합니다.

오픈소스의 가장 큰 목적은 자유 소프트웨어 정신입니다. 이 프로젝트의 핵심 작업은 여러 사람들의 손을 거쳐 더욱 완성도 높은 소프트웨어를 만드는 것이고 직접적으로 개발에 참여하는 것 뿐만아니라 사용하기에 편리한 개선안 또는 버그 내용을 등록하고 문의함으로써 이전보다 더욱 확장된 코어를 만들 수 있는 원동력이 됩니다. 오픈소스를 활용하는 가장 기본적인 자세는 소스코드에 대한 기초적인 이해와 최소한의 기술을 적용, 유지하기 위해서라도 유저 스스로 꾸준히 학습하는 노력을 게을리하지 말아야 합니다.