2. 기술역량 및 개발환경
상용 소프트웨어로서 자동화된 품질 관리와 생산성 향상을 목표로한다.
䡬 Node.js 생태계
개발팀 역량 제품 요소기술
2009년부터 자라와 국내외에 많은 인력풀이 있고, 수 많은 오픈소스 프로젝트
가 참여하여 업계 표준을 완성하고 있다.
䡬 Github 소스 저장소
모든 변경에 대한 버전을 남긴다. 새로운 패치가 테스트를 통과하고 코드리뷰에
합격해야 릴리즈 버전에 통합된다.
䡬 단위 테스트 자동화
14개의 데이터 모델에 대한 CRUD를 109개 단위로 테스트를 진행한다. 여러
명이 만드는 소프트웨어 품질을 높히는 핵심 부분이다.
䡬 데이터베이스 마이그레이션
Production에 있는 데이터베이스에게 안전하게 evolution을 실행한다.
䡬 Grunt 빌드 시스템
매일 반복하는 작은 일들을 하나씩 자동화하여, 개발시간 단축과 버그 예방을 가
능하게 했고, 팀 효율성이 상승했다. 현재 8개의 빌드 라인이 있다.
䡬 Continuous Integration
TravisCI를 통해 모든 소스코드 변경에 대해 테스트를 진행하고 결과를 모두에
게 통보한다.
䡬 클라우드 서버 관리
Forever를 통해 HTTP 서버 데몬을 안전하게 재시작한다. Papertailer을 통
해 로그를 실시간으로 분석 및 감시하며, Nodetime을 통해 성능을 모니터링한
다. Parallel deployment를 진행하여 신규 업데이트로 인한 장애를 사전에 예
방한다.
䡬 수평적으로 확장 가능한 서버 구조(client-side session)
Client-side session을 이용하여 언제든지 서버를 증축할 수 있다. 멀티
코어에 대한 지원을 준비중이다.
䡬 Bower를 통해 resolve external dependencies
䡬 i18n(다국어), i10(지역화) 지원
2014년 9월 기준으로 한국어, 영어를 지원하며 시간화폐 단위는 한국, 홍
콩, 중국, 대만, 일본, 미국, 영국을 지원한다.
䡬 하드웨어 가속을 이용하는 차트 렌더링
2개월 차트에 2000ms 걸리는 경쟁사와 달리, Zari는 평상시700ms이
내, 1년치 차트를 2500ms 이내에 렌더링한다.
䡬 외부 예약업체 서버 연동을 위한 XML-RPC 모듈
예약 변경사항을 실시간으로 전세계에 업데이트한다. 여러 대의 서버를 별
도로 나누지 않고 부분별(UI, 채널업데이트) 부하에 따라 역할을 분배한다.
䡬 Windows, Linux, MacOS 지원
구글크롬 브라우저 엔진(Chromium)을 이용한 H Labs 전용 브라우저를
배포하는 방식으로 여러 플랫폼에 대한 품질관리 프로세스를 하나로 통일한
다. 웹서비스이지만 USB, 영수증프린터, 바코드, POS와 연동 가능하다.
3. 아키텍처 다이어그램
일반적인 웹 서비스 구조와 비슷하나, 실시간 예약 생성과 외부 서버 연동, 판매가능한 API 서비스를 하는 차이점이 있다.
User
Native
Application
http://zari.me
Node.js Server
!
!
!
!
!
API version 1.0
Internal
Software
Logic
Background
jobs
w/
event
queue
(libev)
Realtime
Reservation
Module
(5~10
transactions,
rollback)
MariaDB H/A Cluster
Node.js Server
Node.js Server
Job
Queue
(xml-‐rpc,
screen
scrapping)
Administration
(account
setting,
billing,
sign
in
behalf)
Static/Dynamic Web Pages
Callbacks/alerts
from
other
agencies
Load Balancer
Push Notification
24/365
Reservation
from
other
staff
300ms
External
Infrastructure
Backend
on
Naver
NCloud
User
Interface