그래서 CMS가 뭔데?
1900년대 말, 2000년 초 컴퓨터가 한창 보급되기 시작할 무렵 기업, 기관, 개인 할 것 없이 웹사이트 운영이 필요한 곳이 증가하고, 이에 따라 관리해야 할 텍스트, 이미지, 동영상 등의 디지털 콘텐츠가 급증함에 따라 이를 관리하는 것이 점점 복잡해져 비전문가들도 쉽고 간편하게 디지털 콘텐츠를 생성, 관리, 배포할 수 있는 시스템에 대한 필요는 CMS를 탄생시켰다.
CMS(Contents Management System)란?
CMS는 콘텐츠 관리 시스템(Contents Management System)이라는 굉장히 포괄적이고 두루뭉술한 표현의 약자로, 현재 굉장히 많은 종류의 CMS가 존재하고, 가장 대표적으로 WordPress를 꼽긴 하지만, 정작 정확하게 무엇을 의미하는지는 제대로 설명하지 못하는 경우가 많다. 그래서 이들의 공통적인 특징을 통해 CMS가 어떤 것인지 알아보려고 한다.
CMS의 종류가 많은만큼 각각의 차별점을 통해 마케팅을 하고, 대부분의 CMS가 템플릿 기반 디자인을 제공, 권한 관리가 가능하다는 등의 공통적 특징을 갖곤하지만, 그 중에서도 가장 큰 특징은 비전문가라도 웹 상에서 콘텐츠를 쉽게 생성, 수정, 삭제할 수 있는 대시보드를 제공한다는 점이다,
여기에서 콘텐츠는 규칙에 맞게 정리되어 데이터베이스에 저장되는 것들을 일컫는 말으로, 단순히 텍스트나 이미지로 이루어진 것 뿐만 아니라 웹사이트 전반적인 레이아웃, 기능을 포함하는 것을 말한다.
따라서, 어떤 개인 개발자가 관리자 페이지를 통해 누구나 콘텐츠를 관리하고 통제할 수 있게 만들었다면 이것도 CMS라고 볼 수 있고, 기업에 하나쯤은 있는 관리자 페이지가 함께 있는 홈페이지도 관리할 수 있는 정도의 차이가 있을 뿐, CMS기반의 웹사이트라 볼 수 있다.
CMS의 구조
CMS는 일반적으로 콘텐츠를 생성하고 편집하는 CMA와 콘텐츠를 최종 사용자에게 전달하는 CDA, 그리고 사용자에게 노출되는 UI, 데이터를 저장하고 구성하는 데이터베이스로 이루어져 있다.
콘텐츠 관리 어플리케이션(CMA: Contents Management Application)
CMA는 작성자와 관리자가 콘텐츠를 업로드하고 편집할 수 있는 관리자용 어플리케이션으로, 비전문가도 손쉽게 콘텐츠를 생성하고 관리할 수 있도록 사용자 친화적인 인터페이스를 제공한다.
콘텐츠 전송 어플리케이션(CDA: Contents Delivery Application)
CDA는 콘텐츠를 저장하고 최종 사용자에게 전달하는 백엔드 프로세스를 담당하며, 콘텐츠 작성자와 관리자에게는 노출되지 않는다.
사용자 인터페이스(UI: User Interface)
블로그와 웹페이지 등 콘텐츠가 노출되는 디스플레이 화면, 키보드, 마우스 등 최종 사용자와 상호작용을 하도록 설계된 시각적 요소. 우리가 웹사이트에 접속했을 때 볼 수 있는 화면으로, 사용자가 콘텐츠를 편안하고 직관적으로 이용할 수 있도록 지원해야 한다.
데이터베이스(DB: Database)
데이터베이스는 업로드한 콘텐츠를 여러 사람이 공유해 사용할 수 있도록 체계화한 데이터의 집합체로, 중복된 데이터를 삭제, 구조화하며 더욱 효율적으로 처리할 수 있도록 관리한다.
CMS와 웹사이트 빌더
여기까지가 CMS의 개념 전부라면 좋을 텐데, 더욱 간편한 시스템에 대한 필요성 등 여러 가지 이유로 웹사이트 빌더 또는 블로그 플랫폼이라 불리는 CMS의 갈래들이 생겨나면서, 누구는 이들까지 묶어 CMS라고 하기도 하고, 누구는 별개라고 하기도 하는 구분이 난잡해지는 상황이 생기게 되었다.
그러나 이런 웹 서비스들은 전형적인 CMS와 결정적인 차이점을 갖는데, 콘텐츠가 실제로 위치한 서버, 즉 호스팅의 영역을 서비스 업체가 관리하고 접근할 수 없도록 하기 때문에, 사용자는 대시보드를 통해서 서비스 업체가 정해 놓은 굉장히 제한된 형태의 극히 일부 콘텐츠와 기능만을 관리할 수 있다는 점이다.
호스팅 영역에 접근할 수 있는지에 따라 관리할 수 있는 콘텐츠의 범위가 달라지게 되므로, 넓게는 CMS라고 불릴 수 있는 서비스들도 자가 호스팅 사용 유/무에 따라 Self-Hosted CMS와 Hosted CMS로 구분할 수 있고, 이 중 통상적인 CMS는 Self-Hosted CMS에 속한다.
그래서 CMS랑 웹사이트 빌더 중에 뭘 쓰라고?
CMS와 웹사이트 빌더는 앞서 설명했듯 언뜻 비슷해 보이면서도 차이가 있다고 볼 수 있는데, 그럼 일반 사용자 입장에서 어떤 경우 어떤 서비스를 사용해야 하는지 알아보는 것을 통해 CMS의 장점과 단점에 대해서도 한 번 알아보자.
우선 CMS는 콘텐츠를 체계적으로 관리할 수 있다. 즉, 타겟은 체계적 관리가 필요한 규모가 큰 서비스를 운용해야 하는 기업이다. 게시글, 카테고리, 태그, 사용자 권한 등 많은 영역에서 세세하게 나누고 관리할 수 있어 뉴스 사이트나 블로그, 기업 홈페이지처럼 콘텐츠가 많은 사이트에 적합하다.
또한 확장성과 유연성이 뛰어나 검색 엔진 최적화를 개선하고, 다국어 지원을 통해 여러 언어로 콘텐츠를 제공할 수도 있으며 커머스 기능, 예약 시스템, API 연동 등 많은 기능을 필요로 하는 경우 사용할 수 있다.
다음으로 코드를 직접 다루는 것으로 프론트 디자인이나 로직을 마음대로 수정할 수 있다. 개발에 대한 지식이 있다면 복잡하거나 독특한 기능이 필요해도 원하는 대로 구현할 수 있다.
마지막으로 권한 설정을 통해 여러명이 함께 운영할 수 있다. 즉 조직 내 여러 관계자가 각각의 접속 권한을 가지고 콘텐츠를 생성, 관리할 수 있다. 필요에 따라 팀원의 콘텐츠 접근 권한을 지정할 수 있고, 하나의 콘텐츠에 여러 팀원이 접근해 편집, 피드백 등의 여러 작업을 할 수 있다. 이런 기능을 적극적으로 활용하면 작업파일을 일일이 주고받을 필요 없이 가장 최신 버전의 작업을 실시간으로 업데이트 할 수 있다.
다만 위와 같은 장점 외에 단점도 존재한다..
우선 설치부터 테마 설정, 플러그인 관리까지 초기 설정이 복잡해 학습이 필요하므로 초보자에게는 다소 진입장벽이 있을 수 있다.
또한 서버에 직접 설치하는 방식으로 호스팅하게 되므로, 보안, 속도, 업데이트 등의 유지관리가 필요하다. 일반적으로 제공하는 CMS는 표준화된 코드를 이용하므로 보안에 취약할 수 있으며 데이터에 대한 백업 역시 주기적으로 이루어져야 한다.
그리고 아무리 비전문가를 위해 만들어진 시스템이라 하더라도 기본적인 기능 외에 원하는 대로 웹사이트를 만들기 위해서는 개발지식이 필요하다는 것도 CMS를 도입하는 데 고려해야할 사항이 된다.
그렇기 때문에 개발에 대한 지식이 전무한 상태로 가벼운 기본적인 웹사이트를 운영하고자 하는 사람에게는 적합하지 않다.
이에 반해 웹사이트 빌더는 웹개발에 대한 지식이 전무한 사람도 문제없이 사용할 수 있다는 큰 장점이 있다.
디자인 템플릿이 존재하며 드래그 & 드롭 형태로 웹사이트를 만들 수도 있어 쉽고 빠르게 결과물을 만들 수 있다.
또한 호스팅이 포함되어 있어 서버 설정, 도메인 열결, 보안 등에 관한 부분을 웹사이트 빌더가 처리해주므로 서버 임대나 관리를 할 필요 없이 가입하는 것만으로 바로 웹사이트를 만들고 운영할 수 있다는 장점이 있다.
업데이트나 보안 패치도 플랫폼에서 관리하기 때문에 콘텐츠에 대한 부분만 관리하면 돼 부담도 적다.
다만 사용할 수 있는 기능이 제한적이기 때문에 제공된 기능 안에서 조립해서 써야하고 복잡한 구조로 만들거나 API 연동이 거의 불가능하다는 단점이 존재한다.
원하는대로 커스터마이징 하는 것도 제한적이기 때문에 각각의 개성을 드러내야하는 회사의 페이지나 많은 기능과 복잡한 구조를 필요로 하는 페이지를 제작하는 데는 적합하지 않다.
정리하자면,
CMS는 복잡한 구조의 웹사이트, 콘텐츠 중심의 사이트를 만들 때 적합하고 기능 확장이나 커스터마이징이 필요할 때 사용해야한다. 다만 초보자에겐 어려울 수 있고, 관리나 추가적인 확장을 위해서는 개발지식이 어느정도는 필요하기 때문에 개발지식 없이 기본적인 웹사이트만 필요한 경우는 적합하지 않다.
웹사이트 빌더는 빠르고 쉽게 웹사이트를 만들 수 있다. 개발지식이 없어도 되고, 설치 및 유지보수도 편하지만 기능 및 확장성 면에는 한계가 있기 때문에 이를 필요로 하는 경우에는 적합하지 않다.
우리 기업에 CMS를 도입하기 전에
CMS 솔루션을 선택할 때는 아래 사항을 고려해야한다.
✔ 비전문가가 사용하기에도 쉽고 편리한가?
✔ 향후에 필요한 기능을 쉽게 추가하고 확장할 수 있는가?
✔ 보안과 데이터 이전에 대비할 수 있는가?
✔ 문제가 발생했을 때 전문가의 기술 지원을 받을 수 있는가?
✔ 비용이 우리 기업의 규모와 사용에 합리적인가?
하지만 앞서 이야기 한 것처럼 보급형 CMS 플랫폼이 기본으로 제공하는 템플릿이 우리 기업의 필요와 정확히 일치하지 않을 때가 있다. 그렇다면 우리 기업의 필요에 맞는 맞춤형 CMS를 구축하는 것도 좋은 방법이 될 수 있다.
현재 CMS는 기존의 PHP 외에 Node, Python, Java 등 다양한 언어를 기반으로 제작되고 있으며 기업의 목표와 비즈니스 모델에 맞는 제품을 만들어 보는 것도 좋은 경험이 될 것이라 생각하기에 앞으로 Java를 이용해 목적에 적합한 CMS를 만들어 보려고 한다.