club venit
2012/01/23(주)플라이팬의 CTO/웹서비스 본부장을 맡은지 8개월이 되어 갑니다. 2011년 5월 중순에 합류해 2개월 만에 프라이빗 쇼핑 클럽, 클럽베닛(http://clubvenit.com)을 만들고 7월에 오픈, 티몬/쿠팡/그루폰 등 다양한 프로모션 진행, 12월에는 회원 10만, 매출 15억 달성, VC로부터 20억 투자 유치 후 지금까지 달려오고 있습니다. 서비스 구축부터 운영 효율성 개선, 시스템 안정화, 기능 개선 및 디자인 개편, 데이터 분석 도구, 플랫폼 확장에 이르기까지 어떤 과정을 거쳐왔는지 경험을 공유하려고 합니다.
서비스 구축
7월 15일에 티져 오픈, 7월 25일 베타 오픈하기로 결정되어 6월부터 개발에 들어가 1개월 반 만에 티져, 2개월만에 베타 버젼을 개발해야 하는 상황이었습니다. 생산성이 뛰어난 레일스로 구축하였기 때문에 복잡한 상거래 플랫폼을 짧은 기간에 만들어낼 수 있었습니다. 더불어 영업과 운영, 컨텐츠, 마케팅이 유기적으로 맞물려야 하는 플레시 세일 특성상 오픈 일정이 지켜지는 것이 중요했기 때문에 핵심 기능에 집중하였고, 개발 효율성을 살릴 수 있는 방향으로 디자인도 조정되었습니다.
어느 정도로 긴박했는가 하면, 베타 오픈 전날에 상품 페이지가 완료되고 오픈일 새벽까지 결제와 쿠폰 시스템을 구현했을 정도입니다. 핵심 기능 중 하나였던 줌 기능도 오픈 후 당일에 구현되었습니다. 상품관리, 컬렉션관리, 업체관리, 주문관리, 배송관리, 사용자관리, 쿠폰 시스템, 초대 기능 등 기본적인 상거래 플랫폼에 다양한 프로모션 기능이 가미된 서비스가 짧은 시간에 구축되었습니다.
운영 효율성 개선
상품 관리, 컨텐츠 등록, C/S, 물류, 마케팅 등 오퍼레이션이 필요한 파트가 많을 수밖에 없는 비즈니스이니 플랫폼의 프론트보다도 백엔드가 더 복잡하고 풍부한 관리 기능을 가지고 있습니다. 오픈 초기에는 각 운영 인력이 충분한 상황이 아니었기 때문에 소수의 운영인력이 수많은 상품과 주문, 마케팅 데이터를 관리할 수 있도록 개발단에서 지원해야 했습니다. 그리고 운영 인력이 넉넉하다 할지라도 백엔드 효율화 과정을 거치지 않고 눈에 보이는 프론트에만 치중하면 전반적인 운영 코스트가 증가하고 프로세스상 병목이 생겨 비즈니스 확장시에 문제가 됩니다.
위의 서비스 구축의 단계가 프론트의 신속한 개발이었다면 그 이후 일정 기간 동안은 운영의 각 파트의 병목이 무엇이고 니즈가 무엇인지 발굴하여 이를 백엔드에 반영하는 과정을 충분히 거쳐야 합니다. 여러 개의 상품 정보와 이미지, 리뷰, 배송 정보를 한번에 등록할 수 있는 벌크 시스템을 비롯해서 플랫폼 스트럭쳐를 운영 스트럭쳐에 맞추어 개편하고 마케팅과 프로모션을 지원하기 위한 굵직한 기능들도 빠르게 추가되었습니다. 운영자 10명이 해야했던 일을 1명이 할 수 있게 만드는 것이 개발단에서의 운영 효율성 개선 과정입니다.
시스템 안정화
접속자가 늘고 서비스가 확장되면서 스케일 업과 스케일 아웃, 그리고 서버 기능의 분산이 필요하게 됩니다. 하드웨어 코어를 올리거나 램을 추가하거나 HDD를 SSD로 교체하는 등의 스케일 업, 하드웨어를 추가하고 로드를 분산시키는 스케일 아웃, 이미지 서버, 캐시 서버, 세션 서버, 운영 서버, 메일 서버를 분리하는 등 서버 기능의 분산을 거치게 됩니다. 더불어 캐싱과 모니터링을 강화하고 DB 인덱스 및 쿼리를 개선하는 과정은 지속적으로 이루어져야 합니다.
클럽베닛의 경우 4 Core SSD 애플리케이션 서버를 필요할 때마다 스케일 아웃 해 나가고 DB 서버는 지난 주에 24 Core로 스케일 업 하였습니다. 페이지뷰가 많은 핵심 페이지는 캐싱하여 중앙 Memcached 서버에서 저장 및 전송하고, 주요 포트의 응답 상황을 모니터링하여 SMS 노티를 받습니다. MongoDB Logging을 적용하여 여러 대의 서버에 분산되어 있는 애플리케이션 로그를 한 곳의 중앙 로그서버에서 수집하고 언제든 쿼리로 통계를 가져올 수 있습니다. 프론트쪽은 복잡한 쿼리를 넣지 않지만 백엔드의 통계 페이지에는 무거운 쿼리가 많기 때문에 데이터가 늘어남에 따라 지속적으로 쿼리 개선을 해주고 있습니다.
기능 개선 및 디자인 개편
서비스가 성장함에 따라 사용자 및 운영자, 판매업체, 제휴업체 등 서비스와 맞물린 이해당사자들의 기능에 대한, 디자인에 대한 다양한 니즈가 지속적으로 발생하게 됩니다. 판매업체, 제휴업체를 위한 파트너 관리자가 구현되고, 쿠폰 시스템과 구분되는 적립금 시스템, 위시리스트 및 조르기 기능, 프로모션과 연결되는 핀번호 관리와 베너 관리, 결제 모듈의 다양화, 다양한 마케팅 플랫폼과의 기술적 연동이 이루어졌고 사이트 메인 디자인은 1개월에 한 번 정도 씩 개편되었습니다. 디자인 개편은 디자인 개선 보다는 인터페이스 개선이었기 때문에 CSS/HTML 중심으로 빠르게 변경될 수 있었습니다.
데이터 분석 도구
데이터는 어떤 서비스에서든 중요하지만 상거래에서는 특히 중요합니다. 최대한 많은 데이터를 수집하고 다양한 방법으로 활용하고 타겟을 최적화하고 매출을 증대시키는데 데이터를 활용하게 됩니다. 다양한 층위의 다양한 기준의 다양한 대상의 통계 데이터를 쌓고 다양한 방식으로 모델링하고 디스플레이하고, 이를 바탕으로 이전 전략의 성과를 측정하고 다음 전략을 세울 수 있습니다. 자바스크립트 기반의 통계도구, 데이터베이스에 남기는 사용자 경험 데이터, 로깅 서버에 남기는 모든 로그 데이터를 활용하고 있습니다. 데이터 기반의 상거래 플랫폼으로 가기 위해서는 상거래 도메인에 대한 이해와 더불어 데이터 로깅 및 모델링에 대한 기술적인 인사이트도 필요합니다.
플랫폼 확장
오픈 초기에 접속자 데이터를 모니터링하니 모바일 접속자가 기대했던 것보다 훨씬 높았습니다. 모바일 전용 페이지를 구축하기로 하고 jQuery Mobile 기반으로 빠르게 구축하여 상품 페이지 및 마이 페이지를 모바일 버젼으로 오픈했습니다. 웹과 동일한 URL로 접속하면 레일스 상에서 뷰만 모바일 버젼으로 렌더링하는 구조인데 구축과 유지보수 모두 효율적입니다. 며칠만에 만들었는데 모바일 접속자수가 지속적으로 늘어 2월 중에는 모바일에서 결제까지 가능하게 하고 3월중에는 스마트폰 애플리케이션으로도 출시할 계획입니다.
올해의 역할
작년까지는 위의 과업들을 혼자서 해야했지만 개발팀이 꾸려진 올해부터는 제가 책임지고 있는 웹서비스 본부의 개발팀/디자인팀 내 가이드와 교육, 채용, 메니지먼트에 집중하고 있습니다. 코딩을 점차 줄이고 거시적인 시스템/플랫폼 전략, 팀 내 업무 분배와 피드백, 팀 간 조율의 비중을 높이고 있습니다. 분야도 다르고 경험도 다르고 성향도 다른 사람들을 독려하고 조율하고 결과물을 만들어내는 과정 속에서 새로운 즐거움을 찾고 있습니다. 또 다른 목표가 있다면 제 스스로가 해왔던 통합적인 프로세스를 개발팀 내에 전파시키는 것입니다 :)