문서번호 : 71-396491
Wag!는 "애완견들을 위한 우버(Uber)"라고 불려왔습니다. 이 서비스는 애완견 주인과 애완견을 산책시키는 사람을 매칭시키고 실시간으로 산책 시키는 사람(산책객)을 개별적으로 추적하고 시각화합니다. 이 서비스는 현재 미국 전역의 100개 이상의 도시에서 이용할 수 있습니다. 지금, Wag!는 급속한 비즈니스 성장의 요구를 충족시키기 위해 SingleStore를 사용하고 있습니다.
애완견 주인들은 그들 주위에 있는 애완견 산책객들의 라이브(live) 지도를 가지고 서비스를 시작합니다. 그들은 산책객과 연결을 하고 애완견을 위한 산책로를 설정하고, 지도에서 그것이 진행되는 것을 라이브로 지켜봅니다. 모든 산책이 활동 보고서로 나타납니다. 이 보고서에는 애완견 사진, 산책 시간과 거리 등이 포함 되어 있습니다.
Wag!의 응용 프로그램은 모든 단계에서 대화형이며 개인화되어 있습니다. 이에 따라 걸을 때마다 상당한 양의 실시간 데이터가 생성됩니다. Wag!은 트래픽을 원활하게 처리하고 트래픽의 급증과 미래의 성장에 대비할 필요가 있었습니다.
Wag!서비스에서 애플리케이션 성능은 비즈니스 성공의 열쇠가 되기 때문에 데이터 수집 확장의 기술적 어려움은 심각한 비즈니스적 의미를 갖습니다.
비즈니스와 기술의 결합
올해 초, Wag!의 핵심 데이터베이스는 최대 컴퓨팅 용량에 도달하고 있었습니다. 주요 원인 중 하나는 메인 데이터베이스가 처리해야 하는 대량의 쓰기(Writes)였습니다. 또한 이 쓰기는 데이터베이스 복제 지연을 초래하여 Wag!서비스의 읽기 쿼리 확장성을 제한시켰습니다.
"우리는 성장을 위한 충분한 여유가 없었습니다,"라고 Wag!의 데이터 서비스 기술 책임자인 Franck Levenger는 말했습니다. "저희의 목표는 MySQL에서 쓰고 있는 'log 기록'을 SingleStore로 옮겨 자원을 자유롭게 하는 것이었습니다. 이렇게 하면 복제 지연이 줄어들어 MySQL 데이터베이스가 읽기 전용 쿼리를 처리할 수 있게 될 것입니다."
Levenger는 SingleStore에 익숙했고, 다음과 같은 몇 가지 핵심 기능을 바탕으로 SingleStore가 Wag!에 가장 적합하다는 것을 알았습니다.
쉬운 솔루션: MySQL과 SingleStore 모두 표준 SQL을 지원함으로 학습 시간이 필요하지 않고 구현이 매우 빨랐습니다. “SingleStore는 MySQL를 사용하던 사용자가 다루기 매우 쉬운 데이터베이스를 만드는데 엄청 난 공을 들였습니다. 엔지니어들은 SingleStore를 사용하는 데 아무런 문제가 없었습니다. 그것은 매우 자연스러운 것이었습니다.”라고 Leveneur는 말했습니다.
인 메모리 Rowstore 및 디스크 기반 Columnstore 동시 지원: Wag!는 Rowstore 형식으로 메모리 내에서 초기 처리를 매우 높은 성능으로 수행을 합니다. 그런 다음 Columnstore 엔진을 사용하여 데이터를 최대 70 % 압축합니다. 그러면 SingleStore는 MySQL보다 훨씬 빠른 집계 쿼리를 실행할 수 있습니다. 이것은 엄청난 성과입니다.
파이프라인: SingleStore는 S3에 직접 연결하여 놀라운 속도로 데이터를 수집할 수 있습니다. Leveneur는 “운영시스템에서 라이브 SingleStore 데이터베이스에 20 분 이내에 7억건을 Column 테이블로 채울 수 있다고 생각해보세요. 저는 이전에 대규모 재적재(Backfilling) 문제를 처리해봤는데 매우 어려운 도전이었습니다. SingleStore는 이 과정을 쉽게 처리합니다.”고 말했습니다.
Support: 다른 SingleStore 고객과 마찬가지로 Wag!는 SingleStore의 Support가 뛰어나다는 것을 알게 되었습니다. "SingleStore 팀은 항상 질문에 대답하고 쿼리를 최적화하거나 변환을 구현하기 위해 Python 코드를 공유할 수 있습니다. 교육 자료와 문서도 훌륭합니다.”
전반적으로 결과는 훌륭했습니다. Leveneur는 “오늘날 필요한 모든 테이블을 MySQL에서 SingleStore로 마이그레이션 한 후 평균 CPU 사용률을 10% 대로 줄였습니다. 지리 공간 데이터 유형, Full Text Search 및 윈도우잉(windowing)와 같은 다른 훌륭한 SingleStore 기능을 아직 사용하지 않았지만 이를 확인할 예정입니다."
SingleStore를 이용한 Wag!의 다음 단계
Leveneur는 수집 성능 향상과 같은 어려운 문제를 해결하는 전문가입니다. 몇 년 전, 그는 로스 앤젤레스 MySQL Meetup 그룹에서 매우 큰 데이터 세트의 초고속 데이터에 대한 리포트에 대해 강연했습니다. 그는 UCLA에서 데이터 운영 과정을 이끌고 있으며, 그의 커리큘럼에 SingleStore를 포함시켰습니다.
기존 파이프라인은 ETL (Extract, Transform, and Load) 의 광범위한 수집문제 요소들을 갖고 있습니다. 새롭고 업그레이드된 파이프라인의 스토어드 프로시저 호출 기능을 이용하면 데이터 스트림을 여러 테이블로 분할하거나, 기존 데이터와 JOIN 하기, 그리고 보강(enrichment)된 데이터로 기존 행의 업데이트 작업 등을 높은 성능으로 할 수 있습니다.
November 6, 2018 (원문 작성일)