서울파인트리클럽 홈페이지 운영 개편
서울파인트리클럽의 부회장으로 홈페이지 관리 권한을 넘겨받았을 때, 사이트는 약 10년 전에 배포된 XpressEngine 1.8과 PHP 5.3에서 운영되고 있었다. SSL이 적용되지 않았고 Cafe24 웹호스팅에는 635MB의 저장 공간만 남아 있었다.
당장 문제가 있는 것은 아니었고, 누구도 내게 개편을 요청하지 않았다. 하지만 보안과 저장 공간 문제를 그대로 두면 결국 다음 운영진에게 부담을 넘기게 된다고 판단했다. 나는 먼저 개편을 제안하고 기존 회원과 게시글, 사용 방식을 유지하면서 비용과 인수인계 부담을 함께 낮추는 방안을 찾았다.
최종적으로 CMS를 Rhymix로 이전하고 첨부파일을 Cloudflare R2에 분리해 고정 웹호스팅비를 연 118,800원에서 5,400원으로 줄였다.
내가 맡은 일
개편 제안과 관계자 조율부터 시스템 이전, 테스트와 운영 절차 정리까지 전체 과정을 맡았다.
- 도메인·호스팅·계정·소스 코드의 관리 주체 확인
- 비용·운영 난이도·인수인계 위험을 기준으로 이전 방안 비교
- XpressEngine에서 Rhymix로 회원·게시글·권한 이전
- Cafe24 웹호스팅과 Cloudflare R2를 결합한 저장 구조 구축
- 회원 그룹에 따른 이미지 블러와 서명 URL 적용
- 테스트 환경 구성과 배포·백업·복구·파일 동기화 절차 문서화
- 소스 코드를 서울파인트리클럽 GitHub 조직으로 이전
레이아웃은 공개된 Rhymix 테마를 사용했다. 운영 중 발견한 사이드바 위젯 중복과 표시 설정, 랭킹 위젯 조건은 직접 수정했다.
담당자가 바뀌어도 유지되는 구조
홈페이지를 사용하는 사람, 운영비를 부담하는 사람, 기존 시스템을 관리해 온 사람이 서로 달랐다. 대학생 회원이 사이트를 주로 사용했고, 시니어 회장이 운영비를 부담했으며, 과거 시스템을 구축한 선배들이 기존 구조를 알고 있었다. 개편 논의에서 가장 먼저 나온 질문도 새 기능에 관한 것이 아니었다.
강후배가 없어도 돌아가게 할 계획인가요?
내가 떠난 뒤에도 운영을 이어갈 수 있는지를 묻는 말이었다. 이 질문을 기준으로 기존 Cafe24 상품 유지, 연 66만 원의 대용량 웹호스팅 이전, 저가형 Cafe24와 R2 결합, 기존 사이트와 네이버 카페 병행을 비교했다.
기존 관리자들은 비용이 들더라도 Cafe24에 관리를 맡기는 편이 후임자에게 안전하다고 보았다. 반면 운영비를 부담하는 쪽에서는 매년 66만 원을 지출하기 어려웠다. 나는 저가형 Cafe24와 R2를 결합하는 방안을 제안하되, 저장소 장애 시 사진이 보이지 않을 수 있고 비개발자가 직접 복구하기 어렵다는 위험도 함께 설명했다.
이 위험을 줄이기 위해 배포와 복구 절차를 문서화하고 운영 데이터와 분리된 테스트 환경을 마련했다. 장기간 해결하지 못하는 장애가 생기면 네이버 카페처럼 관리하기 쉬운 서비스로 옮긴다는 종료 조건도 정했다. 유지 가능성을 과장하는 대신 실패했을 때의 대응까지 계획에 포함한 뒤 개편 승인을 받았다.
사용 방식은 남기고 저장 구조는 분리
기존 홈페이지에는 오랫동안 쌓인 회원 정보와 게시글, 첨부파일이 있었다. 전혀 다른 CMS를 도입하면 데이터 이전이 어려워지고 회원들도 새로운 사용 방식을 익혀야 했다. 따라서 XpressEngine의 데이터와 사용 방식을 이어받을 수 있는 Rhymix를 선택했다.
회원과 게시글, 권한은 기존과 유사하게 유지하고 저장 공간을 많이 차지하는 첨부파일만 R2로 분리했다. 데이터베이스에는 Rhymix가 내부 첨부파일로 인식하는 경로를 남기고, 다운로드는 기존 권한 검사를 통과한 뒤에만 R2의 임시 URL로 연결했다. 사용자는 이전처럼 홈페이지에서 글과 사진을 올릴 수 있다. 자세한 구현과 검증은 Rhymix 첨부파일의 R2 분리와 권한 보존에 정리했다.
이 구조로 기존 자료와 사용 경험을 유지하면서 Cafe24 상품을 월 450원의 절약형으로 낮췄다. 도메인 비용을 제외한 고정 웹호스팅비를 연 118,800원에서 5,400원으로 낮춰 약 95.5% 절감했다. R2 비용은 기존 자료와 예상 사용량이 월 10GB 무료 범위 안에 머문다는 전제로 계산했다.
회원이 아닌 방문자에게는 사진을 블러 처리
동아리 행사 사진의 노출을 줄이기 위해 게시판별로 허용한 회원 그룹만 원본에 가까운 이미지를 볼 수 있게 했다. 그 밖의 방문자에게는 서버에서 블러 처리한 파생 이미지를 보내고, URL의 블러 강도를 임의로 낮추면 서명 검증에 실패하도록 구성했다. 회원 판정부터 이미지 변환과 캐시 분리까지의 과정은 Rhymix 회원 그룹별 이미지 블러와 서명 URL에 정리했다.
결과
개편 후에도 기존 회원과 게시글은 유지하면서 실행 환경과 운영 방식을 함께 바꿨다.
| 항목 | 개편 전 | 개편 후 |
|---|---|---|
| CMS | XpressEngine 1.8.24 | Rhymix 2.1.35 |
| PHP | 5.3.13p1 | 8.4.21p1, 64비트 |
| 데이터베이스 | MySQL | MariaDB 10.6.17 |
| 접속 | HTTP, SSL 미사용 | HTTPS 상시 적용 |
| 고정 웹호스팅비 | 연 118,800원 | 연 5,400원 |
| 소스 관리 | 개인과 기존 관리자에게 분산 | 클럽 GitHub 조직으로 통합 |
| 운영 방식 | 개인의 기억과 수동 작업에 의존 | 배포·백업·복구 절차 문서화 |
이 작업에서 내가 맡은 일은 오래된 CMS를 교체하는 데서 끝나지 않았다. 문제를 먼저 발견해 개편을 제안했고, 서로 다른 책임과 우려를 가진 관계자들을 조율해 실행 승인을 얻었다. 구현 뒤에는 내가 떠나는 상황까지 고려해 운영 절차와 종료 조건을 남겼다. 여러 세대가 함께 사용하는 홈페이지를 특정 개인의 기억이 아니라 문서와 변경 이력으로 이어받을 수 있는 운영 구조로 바꿨다.