안녕하세요. 린치핀소프트 한광희입니다.

 “워드프레스로 웹 서비스 제작을 고려하시나요?”

워드프레스에 대한 한계와 그 확장에 대해서는 아직도 의견이 분분합니다. 국내를 넘어 워드프레스 탄생지인 해외에서도 커뮤니티에서 워드프레스로 웹 서비스를 제작하는 이점과 그 한계가 무엇인가에 대해서는 계속 논의되고 있습니다.

오늘은 워드프레스로 웹 서비스 제작시 장/단점등을 소개해드리겠습니다. 워드프레스의 기술은 굉장히 빠르게 변합니다. 6개월마다 메인 버전이 릴리즈되고 그 외에도 워드프레스의 한계를 극복하고 확장해 주는 플러그인과 테마를 개발하기 위해 지금 이 시간에도 전 세계의 많은 개발자들이 땀을 쏟고 있습니다.

 

워드프레스 기반 웹 서비스 제작시의 장점

1.잘 설계된 워드프레스 기본 구조 

워드프레스의 기본 구조를 보면 확실히 구조가 잘 설계되어 있다고 생각합니다. 이는 다양한 시나리오에서도 원하는 구조에 맞게끔 워드프레스를 이용하여 구축할 수 있음을 의미하기도 합니다. 워드프레스에는 헤더/푸터/콘텐츠/사이드바의 영역의 구분과 템플릿의 계층구조, 훅(hook) 액션/필터 , 고유주소 설계, 콘텐츠와 레이아웃의 분리등등 이미 체계가 잡혀있는 구조가 갖춰져 있습니다.

이는 사실 처음 워드프레스 개발을 접하는 개발자입장에서는 굉장히 복잡해 보이고, 워드프레스를 개발하는데 있어 워드프레스 시스템에 대한 학습이 부담되기도 합니다. 하지만, 웹 서비스를 개발하는데 있어 개발자가 많은 부분을 커스터마이징 할수 있는 요소를 갖추고 있으며,  오픈소스(GPL) 라이센스 기반으로 권장되지는 않지만 워드프레스 코어 파일역시도 수정할 수 있을 정도로 시스템의 많은 부분을 조정 할 수 있다는 이점이 있습니다.

추가적으로 더 큰 장점은 워드프레스가 기본적으로 이용자에게 보여지는 일반적인 이용자 페이지와 관리자 페이지로 구분되어 구조화 되어 있기때문에 웹 서비스 개발시에 이는 큰 도움이 되기도 합니다. 서비스의 관리자가 서비스의 현황/데이터/설정등을 관리자 페이지에서 조정 할 수 있으며 이미 프로그래머 입장에서 많은 부분을 커스터마이징 할수 있게끔 지원되기 때문입니다.

워드프레스를 웹 서비스로 개발하려면 가장 중요한 요소 중에 하나가 CPT(Custom Post Type) 입니다. 어떤 웹 서비스라도 주요 콘텐츠가 있을 것이며 해당 콘텐츠가 워드프레스와 잘 호환되도록 개발되어야 합니다. 이런 면에서 워드프레스는 2.9 버전(현재 4.3)부터 이용자가 콘텐츠의 형태를 선언하고 성격을 규정할수 있는 함수를 구비해 놓았습니다.

많은 플러그인들이 이 CPT 와 Custom Taxonomy(분류 체계- 태그,카테고리 등)를 이용하여 제작되어 지고 있습니다.

 

2.테마와 플러그인

워드프레스의 기본 구조를 통해 전체 시스템 설계에 도움이 된다면 실제로 기능을 구현할때는 이미 전세계 개발자가 개발한 테마와 플러그인등을 이용하여 “바퀴를 다시 발명하지 않아도” 됩니다.

개발하고자하는 서비스의 기능이 이미 플러그인으로 기 개발되어 있다고 확언할수는 없지만, 이미 웹 서비스에 이용되는 많은 기능들이 플러그인으로 개발된 것이 사실입니다.

웹 서비스 개발시에 “구현 속도”가 중요하다면, 구현되어야 할 기능을 이미 개발되어 있는 플러그인을 얼마나 잘 활용하냐가 굉장히 중요한 사항으로 떠오릅니다. 워드프레스로 웹 서비스 개발을 권장하는 이유중 하나는 이 테마와 플러그인을 이용하여 많은 부분을 개발해야 하는 개발량을 줄이고 개발하고자 하는 서비스의 핵심 기능에 더 심력을 쏟을 수 있기 때문입니다.

보통 테마와 플러그인 역시도 라이센스를 확인해보아야 하지만 보통은 사용자의 요구에 따라 충분히 수정할 수 있습니다. 예를 들어 우커머스(Woocommerce)나 Ninja Contact Form 같이 전세계적으로 수백만명이 다운로드하여 이용한 플러그인등은 일반 이용자 뿐만 아니라 개발자들이 자신의 플러그인을 수정하거나 필요에 따라 로직을 변경할수 있게끔 구조화 시켜 놓았습니다. 이렇듯 사용될 수 있는 플러그인을 알아보고 해당 플러그인이 지원되지 않는 범위는 추가적으로 수정하여 개발할 수 도 있습니다.

여기서 떠오르는 문제는 개발되기전에 사용되어야할 플러그인의 기능과 그 한계를 정확히 알고 수정하고자 할때 수정에 필요한 학습비용과 수정시간을 잘 염두해 두어야 합니다. 또한 수정된 후에 해당 플러그인의 버전업(업데이트)에 의해 수정해 놓은 프로그래밍 코드가 영향을 받지 않도록 정책을 세워야 합니다.(테마의 경우 자식테마(Child Theme)를 이용하는 방안 등).

 

3.낮은 비용과 빠른 구현

저희도 스타트업을 위한 MVP(Minimun Viable Product)를 제작할때 워드프레스를 이용하여 구축해 준 사례가 있습니다. 보통 스타트업 입장에서는 핵심기능을 구현하여 일단 시장의 반응을 먼저 보고 싶어합니다. 보통 IT를 이용하여 서비스를 진행하는 사업들이 많아서 해당 사업의 빠른 시장반응을  평가하기 위해서 신속히 품질있는 웹 서비스 구현이 필요한 경우가 있습니다.

서비스와 기능에 따라 천차만별이지만 많은 부분에서 워드프레스는 힘을 발휘한다는 느낌을 받습니다. 앞서 설명드린 이미 기존에 잘 설계된 워드프레스 구조와 수만개의 테마와 플러그인 생태계를 이용하여 서로 시너지를 낼수 있죠.

보통의 경우 이미 기개발되어 있는 테마를 기준으로 제작에 들어가고 해당 서비스에 대해서 특정부분(핵심 기능)은 자체적으로 플러그인으로 제작하여 활용 할수 있도록 하거나 테마를 직접 제작하기도 합니다.

이때 워드프레스 개발사로서 중요한 점은 “고객의 요구사항”을 잘 판별하여 “워드프레스 시스템의 철학”에 맞게 개발되어야 한다는 점입니다. 일예로서 데이터베이스 설계시에는 이미 기개발되어 있는 워드프레스 데이터베이스 테이블 구조를 이용하는 것이 권장됩니다. 이는 초기에는 개발자에게 큰 제약사항이나 한계로 보여지지만 추후 워드프레스에서 데이터베이스를 관리하는 여러가지 함수들 (wpdb 객체 등) 을 이용할 수 있어 큰 편의와 안전성을 보장해줍니다. 이 점에서 독립적으로 데이터베이스에 추가로 테이블을 생성하는 등은 기존의 워드프레스 함수와 호환되지 않으므로 많은 프로그래밍 코드가 필요하게됩니다. 또한, 워드프레스의 권장 방향과 철학에 맞지 않는 개발은 추후 유지보수에 있어서도 문제를 야기할 수 있습니다.

( 물론, 특정 플러그인의 경우 추가로 테이블을 작성하는 경우가 꽤 많습니다. 이는 분명 장/단점이 있으며 성능과 별개로 보통 워드프레스 고유 데이터베이스 테이블을 이용하는 것보다 더 많은 프로그래밍 코드가 필요하니다)

전체적으로 프로그래밍 코드가 줄어 “공수기간”이 단축되면 그만큼 웹 서비스를 제작하는데 비용을 줄일수가 있습니다.

 

워드프레스기반 웹 서비스 제작시의 단점

1.워드프레스 기본 구조의 장벽

워드프레스는 설치형 CMS(Content Management System)으로서 PHP,MySQL 등의 시스템구조에서 동작합니다.  보통 프로젝트에 명시하거나 선호하는 시스템,프로그래밍 언어가 있을 수 있습니다. 예를 들어 서버사이드언어에서도 PHP,ASP,JSP 와 요즘은 JS(Javascript) 풀스택 개발등 다양한 언어환경이 존재합니다. 이때 워드프레스는 PHP를 기반으로, 데이터베이스는 MySQL을 이용하여 구축하여야만 합니다.

개발되어야 하는 서비스의 시스템환경이 워드프레스가 동작하는 환경의 시스템환경과 다르다면 워드프레스 이용을 재고해 보아야 합니다. 또한 기본적으로 워드프레스는 보통 웹 서비스에서 차용되는 MVC패턴을 정확하게 구현해주지 못하고 있습니다.

서버측의 Logic과 사용자 측에서 보는 html 코드가 뒤섞여서 개발되는 편입니다. 물론 개발자 노력여하에 따라 MVC 디자인패턴에 맞게 개발되어 질수 있겠지만 기본적으로 워드프레스 코어 함수 부분도 상대적으로 MVC 패턴으로 개발되어 있지 않습니다. 이는 워드프레스 커뮤니티 내에서도 서버측에서 처리하는 더 많은 부분을 Backbone.js , Underscore.js를 이용하여 클라이언트에서 처리하게끔 버전업을 논의중이라고 합니다. 그러나 하위 호환성등과 맞물려서도 이 부분에서는 조금 더 경과를 지켜보아야 할 것 같습니다.

워드프레스를 가장 잘 활용하려면 워드프레스가 지향하는 방향대로 서비스를 개발해야 합니다. 이는 서비스에 따라 큰 제약일수가 있으며, 워드프레스가 호환하는 방향으로 개발이 어렵다면 이 때에도 워드프레스 개발을 재고해보아야 합니다.

2.시스템 종속과 성능

시스템 종속에 대해서는 앞서 말씀드렸고 많이들 우려하는 것이 “성능”에 관한 부분입니다. 성능에 관해서는 확실히 단언 할 수 없는 것이 사실이기도 합니다. 앞서 테마와 플러그인으로 기 개발된 프로그래밍 소스를 활용하여 개발기간을 단축한다고 말씀드렸는데 특정한 플러그인의 경우는 다양한 기능을 구현해 놓는 경우도 있습니다. 이런 플러그인등은 자칫 메모리 낭비 또는 성능저하를 초래할 수 있습니다. 사실 워드프레스 플러그인의 이용은 양면성이 있는데, 플러그인 활용을 통해 개발기간과 비용을 크게 줄일 수 있지만 플러그인등이 다수 활성화되어 이용할 때는 시스템이 크게 느려 질 수도 있습니다. P3 (Plugin Performanc Profiler) 같은 현재 설치된 플러그인등의 성능을 검사해주는 플러그인이 나올정도로 이는 중요한 문제입니다.

가장 우려될수 있는 상황은 개별적인 플러그인 이용에는 문제가 없어 플러그인 사용에 합의하고 개발에 착수했다가 프로젝트 중/후반에 여러가지 플러그인등으로 이용한 시스템 성능저하 또는 충돌이 일어나면 정말 어려운 상황에 봉착하게 되는것입니다.

워드프레스 플러그인 생태계에서도 성능에 대한 보완 및 지원할 목적으로 위에 말씀드린 P3 플러그인, WP Super Cache 같은 플러그인이 있지만, 정말 중/대형 규모에 어울리는 웹 서비스라면 워드프레스 최적화가 큰 이슈가 떠오를 것이라고 생각합니다.

 

3.학습 비용과 국내에서의 흐름

국내에서는 워드프레스가 더 활성화 되어 개발자 커뮤니티에서도 워드프레스에 대한 이야기가 종종 이루어 집니다. 이때 이미 국내에 유명한 프레임워크를 쓰던 개발자가 워드프레스 프레임워크로 옮기기 꺼려하는 이유 중에 하나는 워드프레스 자체에 대한 학습비용이 적지 않아 보이기 때문입니다.

새로운 프로그래밍 언어이든 새로운 프레임워크이든 학습이 필요한 것은 맞지만, 워드프레스의 경우 국내에 알려져서 활성화된지 오래되지 않았고 빠른 릴리즈(Release) 주기로 업데이트 됩니다. 표준 문서라고 할 수 있는 wordpress codex는 위키 미디어 엔진 기반으로 위키문서라고 할 수 있는데 개발자가 참조하는 대부분의 문서는 영문입니다. 또한 많은 부분의 문서와 워드프레스 커뮤니티 기반을 이용하려면 해외 워드프레스 개발자 커뮤니티의 게시판과 포럼을 이용해야 합니다.

또한 국내에 번역된 개발자를 위한 워드프레스 책자도 아직 많은 형편이 아니며 더구나 웹 서비스 개발을 위한 워드프레스 구축에 대한 책자는 더더욱 보이지 않습니다.(워드프레스 개발에 대해 심도 있게 다룬 책자도 있지만 국내 번역된지 오래된 책자가 많습니다.)

또한, 쇼핑몰의 경우도 국내 PG사 연동이 필요한데 그런 부분은 국내 플러그인 개발사가 연동 플러그인을 개발하기 전까지는 쉽지 않았으며(현재는 다양한 업체에서 PG연동 플러그인이 무/유료로 개발되어 있습니다) 이뿐만 아니라  대부분의 플러그인과 테마가 영문으로 제작되어 실제로 이용자를 위해서 페이지를 구성할 때는 “번역”이 필요할 때도 있습니다.

 

결론

제 개인적인 경험으로 웹 기반의 많은 스타트업 또는 웹 서비스의 MVP 용도로 제작하기에는 워드프레스가 효과적일 수 있다고 생각합니다. 하지만 이 부분도 워드프레스 기반의 웹 어플리케이션을 제작하려면 PHP,MySQL 시스템에 대한 숙련과 별개로 워드프레스 시스템의 함수들과 훅,구조,템플릿 에 대한 학습도 같이 이루어 져야 합니다.

또한 성공적으로 MVP가 시험되어지고 추가적인 개발이 이루어질때도 워드프레스란 시스템을 계속 유지하여 서비스를 개발하는 것도 향 후 고민될 수 있는 사항이기도 합니다.

그래도 저는 워드프레스로 웹 서비스를 구축하는 데 긍정적으로 바라봅니다. 무엇보다 초기에 저비용으로 빠르게 서비스를 개발 할 수 있다는 점과 워드프레스 테마와 플러그인의 도움으로 서비스의 확장과 개편도 용이하기 때문입니다. 성능과 구조에 대한 한계 그리고 학습비용등은 워드프레스 개발자 커뮤니티와 국내 많은 개발자들의 노하우와 팁의 공유 중/고급 개발도서의 시의적절한 번역과 출판 등의 노력으로 많은 부분 극복되어지리라고 생각합니다.