Category Archives: 나혼자만의독설

중국 북경에서 택시앱 ‘콰이디다처’ 이용 후기

사실 저는 중국 시장에 이해도 별로 없었고 첫 중국 출장 전날에도 기대보다는 알수없는 두려움(?)속에 출국 했던 기억이 납니다. 중국의 IT 시장은 한국보다 뒤쳐져 있고 이런 IT 발전의 결과물을 누리는 사람들도 별로 없을것이라고 생각했습니다. 하지만 멍청하게도 중국에서 제가 경험한것들은 한국이 중국보다 낫다고 당연히 여기고 있는 수많은것들이 실제로는 아닌것이 많을지도 모른다는 경험을 하였습니다.

가령 중국 출장가면 많이 이용하는 택시도 의례 디디다처(嘀嘀打车)라는 앱을 이용하게 되는데 이 이름은 차동차/택시를 타다라는 의미의 다처(打车) 자동차 경적 소리 띠띠빵빵(?)을 나타내는 디디(嘀嘀)의 합성어입니다. 중국 베이징의 경우 차가 굉장히 많지만 한국에 비하면 택시의 수는 굉장히 적은 편입니다.

중국의 이태원이라 불리는 싼리툰(三里屯)에서 새벽에 택시를 잡으려고 기다리다가 한국과 비슷하면서 다른 광경을 목격했는데. 길거리에서 택시를 타려고 수많은 사람들이 서있고 택시들이 하나둘 도착합니다. 한국의 경우에는 승객들이 목적지를 외치고 택시는 그냥 지나치는 것을 많이 볼 수 있는데 중국에서도 비슷한듯 하지만 승객들이 휴대폰을 흔들면서 택시에 타는것을 볼 수 있었습니다.

나중에 알게 된것이지만 중국의 콜택시앱을 이용해서 택시를 호출하고 자신의 택시가 도착하면 그것을 타고 가는것이었죠. 중국어를 할 수 없어 택시앱을 이용할 수 없었던 저희 일행은 결국 흑차(黑茶 : 불법택시, 한국의 과거 나라시라고 불리던 그것)와 흥정하여 집에갔던적이 있습니다.

快的打车_title

중국에서는 이 콜택시앱이 너무나도 당연스럽게 사용되고 있고 (아마) 모든 택시는 이 콜을 받게 됩니다. 새벽 유흥가의 택시를 잡는 승객들은 승차거부를 경험할것 없이 콜택시앱을 이용하여 택시를 불러 타고 떠나는것을 보며 한국보다 IT가 실생활에 잘 융합이 되어있는게 아닌가 하는 생각이 들었습니다.

최근의 중국 출장에서는 디디다처보다 콰이디다처(快的打车)가 더 보편적으로 이용되는것 같았습니다. 실제로 중국지인에게 물어봤는데 요즘은 디디다처보다 콰이디다처가 더 많이 이용된다고 합니다. 콰이디(快的)는 “빠른/영민한”이라는 뜻을 가지고 있으며 디디다처가 “띠띠빵빵을 탄다” 정도의 귀여운 네이밍이라면 콰이디다처는 “빨리 탄다”정도의 공격적(?)인 이름이라고 생각됩니다.

이런 택시앱이 얼마나 편리한지 와닫지 않을 수 있으니 기왕 블로깅을 하는김에 콰이디다처를 이용하여 택시를 이용하는 방법에 대해 정리를 해보았습니다.

experience_china_taxi_app_01

먼저 앱을 실행하고 하단의 콜 버튼을 누르고 목적지를 말합니다. 그러면 승객의 현재위치(출발지)와 목적지가 택시들에게 전달이됩니다. 여기서 재밌는점은 목적지를 타이핑 하지 않고 직접 말한다는것인데요. 중국의 언어가 한자이기 때문에 스마트폰에서 빠른 문자 입력에 어려움이 있어서인지 모바일앱들이 직접 음성 입력을 받는 경우가 흔합니다. 심지의 중국인이 위챗(微信 : 웨이신)을 이용하는 모습을 보고 있으면 직접 타이핑 하는 경우는 거의 없고 단문 음성 메시지를 주고 받는것을 주로 사용합니다. 마치 워키토키 처럼요.

여기서 또 재미있는건 목적지를 말하면 정확하게 택시기사에게 목적지가 전달되는데 택시에서 드라이버용 앱을 보고 있으면 출발지와 목적지가 정확하게 텍스트와 음성(TTS)로 표시됩니다. 즉 승객이 말하는게 텍스트로 바뀌어 드라이버에게 전달이 되었다는것인데 실제로 반대쪽에서 음성을 듣는 콜센터(?) 스러운것이 있다고 하는군요. 앱을 시작하면 누군가가 직접 듣고 그걸 텍스트로 전환하여 택시에 전달해 줍니다.

홍콩에서 경험했던건데 택시 이용자가 너무 사투리가 심해서(같은 광둥어인데도 못알아들을정도의 말들이 있나보더군요) 청취자가 텍스트 전환이 어려운 경우 택시앱에서 직접 해당 음성을 플레이를 해주더군요. 제가 광둥어를 알지는 못하지만 대충 이런 느낌이었습니다. “침사추이에서 고객 호출 : (고객 요청 음성 플레이~)”

experience_china_taxi_app_02

음성인식이 제대로 되었다면 이제 주변의 택시가 지도상에 보여지면서 몇대의 택시에게 콜이 전달되었는지 보여줍니다.

experience_china_taxi_app_03

점점 전달되는 택시의 숫자가 올라갑니다. 저 숫자 올라가는것을 쳐다보고 있는 묘미가 있더군요. 실제일지 아닐지는 모르겠지만 내 콜요청이 전달되고 있음을 느낄 수 있게 해줍니다.

experience_china_taxi_app_04

320대(!?)까지 전달되었습니다. 이렇게 수많은 택시에 전달되었다는것을 느낄수 있었지만 이때까지 가겠다는 택시가 없다는 슬픈 결과물이기도 합니다. 실제로 중국의 콜택시앱은 출발지와 목적지가 택시 드라이버에게 전달되는 구조를 가지고 있어 가까운 거리를 이동할 경우 콜을 받는 택시가 없는 경우가 발생합니다. 스크린샷을 보시면 주변에 택시들이 꽤 있음에도 아무도 우릴 태워주려 하지 않는걸 볼 수 있습니다.

experience_china_taxi_app_05

하지만 결국 택시가 잡혔고 우리를 태우려는 택시의 위치가 나타납니다. 그리고 택시와의 거리와 도착까지 남은 시간이 표시됩니다. 여기서 바로 택시와 통화를 하거나 메시지를 주고 받는것도 가능합니다. 택시가 도착하게 되면 전화가 오게 되며 전화를 통해 호출한 승객을 직접 확인하여 택시를 태우게 됩니다.

experience_china_taxi_app_07

드디어 무사히 택시를 탔습니다. 잘 보이지는 않지만 드라이버용 앱의 UI는 승객용 앱과 당연하지만 다릅니다. 주변의 콜들이 끊임없이 보여지고 음성으로 읽어줍니다. 제가 내리지도 않았지만;; 내릴때가 다 되어가면 계속 저걸 주시하며 다음에 또 누굴태울지 확인하시더군요.

experience_china_taxi_app_08

추가로 디디다처의 택시 호출 뷰는 다음과 같습니다. 마찬가지로 몇대의 택시에게 호출이 전달되었는지 표시가 되고 숫자가 계속 올라가며 멋진 연출을 보여주지만 왠지 콰이디다처에 비하면 답답해보이는 느낌이 있습니다. 단순 숫자 표기보다는 내 위치와 주변 택시가 보여지는게 좀 더 내가 택시를 탈 수 있을것만 같은 느낌을 주지 않나 생각됩니다.

하지만 디디다처의 경우 제생각엔 굉장히 멋진 시스템이 있는데 하단에 보면 0, 3, 5가 보여지는데요. 내가 얼마를 팁으로 더 주겠다는 설정을 하는 부분입니다. 3 또는 5위안을 팁으로 줄 수 있네요. 택시가 잘 잡히지 않는다면 내가 임의로 팁을 설정하여 택시들을 유혹(?) 할 수 있습니다.

이제 곧 한국에서도 카카오택시가 나올것 같습니다. 중국의 콜택시앱들이 이정도까지 오기까지 수많은 출혈경쟁과 유저들(드라이버/승객)에게 큰 규모의 투자를 해왔던것 같습니다. 중국과는 달리 한국의 경우 택시들이 부족하지 않기 때문에 유저입장에서는 택시앱을 이용해야 할 인센티브를 분명히 해야 할 것 같고 택시들의 경우 왜 승객을 태우지 않는지를 분석하여 태우지 않을 경우에 대한 인센티브를 분명히 준비해야 할것 같습니다.

가령 다음과 같은 방식의 인센티브는 어떨까 상상해 봅니다.

  • 지금 내 눈앞에 택시가 많은데 굳이 콜을 호출할 필요를 못느낄 승객를 위해 – 콜을 호출하면 500원 지급, 콜을 10번 이용하면 콜1번 무료, 안전을 위해 내 택시 이동경로를 남자친구에게 실시간 전송
  • 택시들이 싫어할 위치/거리를 이동하기에 콜이 안잡히는 승객을 위해 – 최대 두배(더블)까지 팁 설정 가능. 팁의 50%는 콜택시앱이 부담(?)
  • 단거리 승객을 싫어하는 택시기사를 위해 – 5키로 미만 500원 지급, 10키로 미만 300원 지급, 20키로 미만 100원 지급
  • 시/도를 넘어가는 이동을 싫어하는 택시기사를 위해 – 시도를 넘어가서 손님을 내려준 직 후 반대로 돌아오는 택시 콜 이용자의 우선 연결, 연결 해줄 승객이 없어 빈차로 시도를 다시 넘어올 경우 GPS 기준으로 3000원 지급
  • 콜을 받아 원하는 위치에 도착했는데 승객이 바로 승차하지 않고 그제서야 건물(술집등)에서 밍기적 거리면서 나오는걸 손해로 여길 택시기사를 위해 – 승객과 GPS상 100미터이내일때 승차가 5분이상 연기되면 5분당 500원 지급

하지만 역시 우선순위를 생각하면 승객이 앱을 이용할 니즈를 강화하는게 우선이겠네요. 도로에 나가면 널린게 택시인데 왜 앱을 사용해야 할까. 고민해봐야겠네요.

2009년에 Zynga에서 발표한 대형 소셜 게임 만들기 발표 내용

굉장히 오래전 이야기입니다만 징가에서 이런 자료를 발표했더군요, 기술적인 부분에 있어서는 현재 더 많은 발전을 이룩했을것이라 봅니다만 여기서 나오는 개념이나 컨셉은 아직도 유효하다 생각되어 한번 제 생각을 정리해 봅니다. 혹시나 해서 미리 말해두자면 이것은 번역이 아니라 그냥 제 코멘트를 붙여보는 것입니다. 제가 이해를 잘못한게 있다면 꼬집어 주시기 바랍니다^^

사용자 삽입 이미지

사용자 삽입 이미지징가에서 2009년 12월에 발표한 자료입니다. 1년도 더 된 자료입니다. 지금 봐도 손색 없을 정도의 멋진 내용이 이제 시작됩니다.

사용자 삽입 이미지당시에 엄청나게 인기가 있었던 팜빌(FarmVille)의 Retention에 대한 언급입니다. 여기서 말하는 Retention이란 유지력 정도로 보시면 되겠습니다. 하루 플레이 하는 사람의 숫자(DAU:Daily Active User)가 2800만??명이나 된다고 하는군요. 한달에 한번이상 접속하는 플레이어의 총합(MAU:Monthly Active User)는 8천만명이나 되는군요.

사용자 삽입 이미지징가는 어떤식으로 게임을 디자인 했길래(여기서 말하는 디자인은 게임의 기획/설계를 말합니다) 많은 사람들에게 어필할 수 있었고 끊임없이 사용률을 유지할 수 있었을까요?

사용자 삽입 이미지이번 페이지의 주제는 사용자의 흥미를 잃게 만들지마라 정도가 되겠습니다. 게임의 테마나 컨셉을 정할때 사람들이 이해할만한 주제를 선택하여야 한다고 합니다. 식물이 어떻게 자라는가에 대한 룰을 정할때는 누구아 알만한 일반적인 상식선의 룰을 가져야 한다고 합니다. 사용자를 불쾌하게 만들만한 그러니깐 이해하기 어려운 테마를 선택하면 게임이 어렵게 될 수 있습니다.

사용자 삽입 이미지이번 페이지의 주제는 소셜한 값어치를 만드는 것에 대한 이야기입니다. 게임을 즐기는 동안은 항상 사용자는 관계를 형성해 나가야 합니다.  혼자서 게임을 플레이 하다가 어떤식으로든지 게임을 그만두게 만들 요소를 다른 사용자와 지속적인 관계를 맺고 함께 플레이 하는 식으로 대체하도록 게임을 구성해야 합니다. 사진의 이미지는 Joel이라는 사용자가 나의 작물을 비옥하게 만들어 주었는데 고맙다고 전할꺼냐 물어보는 화면이네요. Premium Crops! 라는 커다한 메시지는 친구로 인하여 내가 큰 은혜를 입은것만 같아 보이게 만들어 결국 게임에 다시 참여할 수 밖에 없도록 만들고 있군요.

사용자 삽입 이미지여기서 보여주는것은 매우 당연한 이야기가 될 비쥬얼적인 어플에 대한 이야기입니다. 밝은 그래픽을 언급한 이유는 아무래도 디자인을 밝고 화사하게 만드는것이 다양한 사용자들에게 어필할 수 있다는 뜻이 아닐까 싶네요. 어두 컴컴하고 매니악한 디자인은 좋은 선택이 아닐것입니다.

사용자 삽입 이미지업데이트와 이벤트의 순서 혹은 주기에 대한 이야기입니다. 우선 플레이어를 가둬두기(?)위한 중요한 점은 계속해서 게임을 업데이트 하는 것이라고 합니다. 전에 게임기획자 후배를 만나 이야기 할때도 게임이 정점에 달했을때 가장 쉽게 할 수 있는 방법을 컨텐츠 추가로 말하더군요.

또 중요한것은 게임의 업데이트가 필요하다고 해서 게임을 복잡하게 만들 필요가 없다는 것입니다. 심지어는 새로운 아이템을 만드는 간단한 방법도 있습니다. 게임을 운영중일때는 사용할 수 있는 통계자료나 여러 데이터가 있을것입니다. 이제 무언가를 측정할 수 있을테니 이런 데이터와 사용자의 피드백을 활용하면 게임의 방향성을 설정할 수 있습니다. 여기서 마케팅을 굉장히 중요하다고 언급하고 있네요.

여기서 말하는 마케팅은 게임 내부의 마케팅을 말합니다. 새로운것이 추가되었다면 그것을 사용자에게 홍보하는것이 매우 중요하다고 하는군요. 위의 사진에서는 크리스마스 이벤트로 축제분위기의 전구로 집을 꾸미거나 정원이 눈으로 가득차게 바꾼다거나 할수 있게 되었음을 알려주는 군요.

사용자 삽입 이미지자, 이제 어떤식으로 게임을 만들것인지 정하였습니다. 이제 이것을 어떻게 구현할 수 있을까요?

사용자 삽입 이미지여기서부터 개발 이야기입니다. 설계에 대한 이야기인데요. 여기서 언급한 중요한 것들은 일명 DDD(Data Driven Design)인데요. 개발자들이 익숙한 말로는 Domain-Driven Design이라는 말이 있겠습니다. 데이터를 중심으로 하는 설계인데요. 저도 이번에 간단한 SNG개발을 경험해 보니 이것이 중요한것 같습니다. 왜냐하면 게임은 계속해서 변화하고 규모가 확장되는데 평범하게 생각없이 개발했다가 문제가 많이 생기더군요. 로컬라이징도 중요한 요소라고 시간을 투자해야 할 요소로 언급되었군요. 글로벌 서비스 기업다운 접근 방법입니다.

두번째로는 사실 정확히 무슨 말인지 잘 모르겠는데 플랫폼의 호출에 종속적으로 개발하지 말고 추상적으로 개발하라는 말인것 같습니다. [이곳]에 추상팩토리 패턴에 대한 언급이 있습니다. 이런식으로 개발하게 되면 새로운 아이템이나 컨셉을 넣었다 뺐다 하기 편리할 것으로 예상됩니다.

세번째로는 징가가 페이스북 플랫폼에 많이 의존적이기 때문에 페이스북과의 통신 채널을 단순화 하라는 것입니다. 확실히 여러 이종 시스템들 간의 통신이 복잡해 질수록 잦은 오류도 발생하고 문제가 발생할 소지가 많아지는것 같습니다.

네번째는 클라이언트와 서버가 한가지 접점만을 가지고 통신을 하도록 구성을 해야 한다는 언급입니다. 예를 들면 모든 통신에 대해 일괄적으로 서버에서 유효한 접근인지를 체크하는데 서버 개발자가 뒷구멍을 만들어 놓았다면 이런 일괄적인 개발이 어려워 지고 버그나 해킹의 위험을 가지게 됩니다.

사용자 삽입 이미지그렇다면 클라이언트상에서 느껴지는 퍼포먼스는 어때야 할까요? 로딩 시간이 오래 걸리고 프레임의 움직임이(플래시 게임이라 이런 언급이 나오는듯) 느릿느릿하다면 사용자의 유지력을 KILL한다고 하네요. 무언가가 눈에 보이는데는 가능한한 빠르게 보여져야 하고요. 데이터를 주고 받을때 로딩중이 뜨는 등의 사용자의 액션이 블록되는 경우는 무엇을 필요로 하는 경우에만 하도록 합니다.

예를 들면 HUD(Head-Up Display: SNG에서는 게임에 필요한 상태 정보를 말합니다.) 또는 사용자 데이터를 불러오는 경우 등을 말합니다. 사용자가 다른 사용자의 정보를 보겠다고 프로필을 눌렀을때 로딩이 뜨는 경우와 가만히 게임화면을 지켜보고 있는데 로딩이 갑자기 자기 혼자 뜨는것과는 기분이 많이 다르겠죠.

마지막도 플래시에 대한 언급입니다만 프레임레이트에 맞게 화면을 그리라는 것입니다. 개발은 슈퍼 컴퓨터에 해서 잘 돌아가고 애니메이션에도 아무문제가 없었는데 고물 PC에서 돌렸는데 엄청나게 버벅인다면 큰일이겠죠. 위의 언급은 가변적으로 상태에 맞는 렌더링을 할 수 있도록 하라는 말입니다.

사용자 삽입 이미지서버의 확장에 대한 페이지 입니다. 클라우드의 자동 스케일링을 언급하는군요. 실제로 아마존EC등에서는 이 자동 스케일링을 지원하고 있습니다. 사용량에 따라 자동으로 클라우드 시스템도 추가되는 것인데요. 저도 경험해 보진 않았습니다.

모든것을 비동기로 처리하고 캐시처리 하라고 하는군요. 동기로 처리하면 네트워크 상황에 따라 블록킹 되는 경우가 많고 많은 문제를 일을킬 수 있습니다. 캐시의 경우에는 메인 DB로의 직접적인 부하를 피하기 위한 방법이고요.

또한 모든 시스템의 아키텍쳐의 부분들을 병렬로 구성하라는 말이 있는데요. 보통 요즘의 시스템이 일명 Vertical 확장을 기본 모델로 하고 있습니다.(NoSQL등) 이런것들은 쉽게 말하자면 기존의 시스템이 1대에서 2대로 확장하고 또 3대로 확장되는데 있어 다른 서버들과 동등한 레벨에 손쉽게 추가하여 시스템 자체의 규모를 키울 수 있는 방법을 말합니다. 음…맞을까요?;;

DB에는 예비 저장소를 가져야만 한다…일까요…MySQL등에서 리플리케이션을 구성하는것처럼 예비 시스템을 갖추어야 한다는 말인것 같은데 제가 영어 실력이 짧아서 저게 정확히 무엇을 뜻하는지 잘 모르겠군요…흠..

사용자 삽입 이미지캐싱에 대한 이야기입니다. 여기서 보면 꽤 놀라운 이야기가 나옵니다. 페이스북의 API나 심지어 운영중인 DB가 없이도 게임이 동작할 수 있어야 한다고 합니다. 이렇게 되면 시스템에 장애가 생겨도 게임상에 아무런 낌새를 눈치챌수 없게 됩니다.

사용자 정보를 캐시하게 되면 서버로의 요청이나 DB요청을 심지어 0까지 낮출수 있습니다. 페이스북 API중 SQL형태로 데이터를 꺼낼 수 있는 FQL의 호출도 iframe을 이용하여 캐시할 수 있다는데 이것은 정확히 어떻게 한다는것인지 모르겠습니다.^^a

아래에 나온 예시는 페이지를 로드함에 있어 DB 연결 한번도 없이 캐시만을 이용하여 페이지를 로드한 결과를 보여줍니다.

사용자 삽입 이미지정말 멋지게 시작했지만 무슨 말인지도 모르겠는게 많아서 어려움을 겪은 이야기였습니다. 어찌보면 당연하지만 중요한 이야기들도 많았고요, 길지 않은 PPT라서 다행이었습니다;