2011년 4월 5일 화요일

통신사와 스마트폰 OS 그리고 카카오톡

카카오톡 트래픽 때문에 말이 많다. 트래픽 때문에 3G망에 과부화가 걸린다는 통신사측 주장. 특히 SKT가 심하게 딴지를 걸고 있는 상황이다.

사용자 입장에서는 통신사에 돈을 지불하고 통신망을 사용하는데 과부화 때문에 카카오톡에 딴지를 걸고있는 통신사측을 곱게 볼 수가 없다.

엔지니어 입장에서 기술적(?)으로 이 사태(?)에 대한 판단을 한번 휘갈겨본다.

통신사에 따른 차이는 왜 있는가

KT는 아이폰을 일찍 들여와서 안드로이드 보다 아이폰의 데이터 사용량이 월등히 높다고 생각된다.

반대로 SKT의 경우 안드로이드를 우선적으로 보급한터라 안드로이드의 데이터 사용량이 월등히 높다고 생각된다.

그리고 카카오톡에 대한 반감은 SKT가 더 높아 보인다는 것을 생각해 볼 때, 현재의 카카오톡 트래픽 문제는 안드로이드와 관련이 있지 않나 생각된다.

기사에 따른 정보

일단 SKT 측의 주장은 카카오톡 서버가 다운되었다 다시 살아나면서 그 동안 쌓인 데이터를 한번에 보내려고 시도하면서 망부하가 심하게 발생한다는 것이다.

말 자체는 틀린건 아니다. 문자메시지의 데이터량은 극히 미미하겠지만 몰려서 전송된다면 충분히 많은 양의 데이터임은 틀림없다.

전송을 접수 받는 서버와 전송을 하는 서버가 별도로 있다고 생각한다면, 전송서버가 다운되었다면 접수서버에 메시지 요청이 잔뜩 몰려있을 것이고, 전송서버가 살아난다면 접수서버에 쌓여있는 데이터를 한번에 처리하려 하면서 충분히 망 부하를 일으킬 수 있는 상황은 된다.

하지만 이건 추측에 의한 것일 뿐 진실인지 아닌지는 카카오톡 쪽에서만 알겠지.

무엇보다 SKT측의 저 주장은 항상 그런게 아니라 일시적으로만 발생할 수 있는 문제다. 다운이 하루에 수 차례씩 되는 것도 아니고 (만약 하루에 수 차례 다운된다면 서버상의 큰 결함이 있는 거지. 개발자 존내 닦일테고 -_-) 어쩌다 한번 다운될텐데 그걸 문제 삼기에는 좀 과한 듯 하다.

OS에 따른 차이

전통적으로 스마트폰으로 최적화를 잘 시킨 iOS(구 iPhoneOS)와 아직 한창 개발중인 (개인적으로는 아직 미완성의) 안드로이드는 분명 차이가 있다.

iOS의 경우 OS와 SDK 차원에서 앱에 굉장한 제약을 가하고 있다. 위젯은 뱃지만 지원, 백그라운드 서비스는 일부 API가 허용, 멀티테스킹이 제한적인 상황이라는 점만 봐도 얼마나 큰 제약을 주는지 알 수 있다. 결과적으로 백그라운드 서비스용 앱을 개발하는 건 거의 불가능하다.

이는 애플이 스마트폰OS, 현재의 iOS에 이르기까지의 노하우 혹은 UX철학에 따른 것이라고 생각하고 있다. 일부러 이렇게 만들었다는 것, 그리고 그 이유는 성능 및 배터리 수명 보장과 전화 기능의 원활한 사용에 큰 중점을 둔다고 보고 있다.

반면 안드로이드는 iOS에 비해 굉장히 자유로운 편이다. 앱 영역을 벗어나는 것 까지 써드파티 개발사에서 마음껏 개발할 수도 있다. 완벽에 가까운 멀티태스킹과 위젯, 런처 및 UI가 없는 서비스 까지 개발할 수 있는 것이다.

안드로이드가 능력이 많은 것 같지만 양날의 칼이다. 백그라운드 서비스가 많아지면 많아질 수록 사용자 모르게 배터리 소모도 심해지고, 앱 사용 시 혹은 필수 중요 기능(전화 등)에 지장을 초래할 수도 있다.

너무 길어지는 것 같아서 소개는 여기까지만 하고...

iOS는 이런 태생적(설계적) 한계로 인해 메시징 서비스 개발에 제한이 많다. 항상 서버와 연결되어 있는 상황을 만들 수 없는 만큼 애플 푸쉬 서비스로 메시지를 전송받았다는 것을 확인하고, 결국 카카오톡 앱을 띄워야 정상적으로 수발신이 가능하다.

반면, 안드로이드는 다르다. 완벽한 멀티태스킹 덕분에 백그라운드 상에서 앱이 항상 서버와 연결되어 있을 수 있다. iOS에 비해 굉장히 자유롭고 편리한 환경을 마음껏 구축할 수 있다.

하지만 이것이 사용자나 스마트폰 입장에서 무조건 좋으냐 하는 점은 호불호가 갈리는 부분이다.

iOS는 제한적인 애플의 푸쉬를 이용해서, 사용자가 앱을 사용하지 않는 상황에서도 메시지가 왔다는 것을 알 수 있다. 하지만 그것 뿐이다. 애플의 푸쉬는 다이얼로그 하나 띄울 정도의 기능 밖에 없는 것이다. 기능적으로 미약한 부분이다. 대신, 앱을 띄우지 않는 다면 트래픽이 발생할 여지가 없다.

안드로이드의 구글 푸쉬(C2DM)은 2.2대에 들어서서야 지원되기 시작했기 때문에 모든 사용자를 배려한다면 이용할 수 없는 기능이다. (더구나 상황에 따라 매우 느리게 전송된다) 그래서 카카오톡 앱이 직접 자체 개발 및 서비스하는 푸쉬서버에 항상 연결되는 구조를 가지고 있다고 본다. 물론 앱을 사용하지 않는 순간에도 백그라운드 서비스가 직접 서버와 연결되어 있을 것이다.

이로 인해 판단할 수 있는 건, 안드로이드용 카카오톡은 항상 서버에 연결되어 있고 연결 유지를 위해 지속적으로 데이터를 주고 받는 다는 것이다. 따라서 아이폰에 비해 데이터 전송량이 더 많을 수 밖에 없다. 물론 연결유지를 위한 패킷은 극미량일 것이다.

개인적인 생각

위 정보를 이용한 개인적인 판단이긴 하지만, SKT 측의 주장은 일리가 좀 부족하다고 본다. 이미 언급했다 싶이 서버 다운 후 복귀로 인한 일시적인 망부하는 말 그대로 일시적이라는 점이다. (한 순간에 정말 아주 많은 데이터가 쌓이지 않는 이상... 1000만명의 유저가 일시적으로 쏟아낸다면 말이지)

다만 푸쉬서버 연동을 통한 데이터 전송량의 차이는 분명 있을 것이고, 극미량이긴 하지만 사용자가 많기 때문에 그 만큼 트래픽에 영향을 줄 소지는 어느 정도 있다.

이 정도에 망부하가 심해진다는 주장은 곱게 넘어가기가 힘들다. 그러니 통신사 수익 감소가 주원인 거라는 이야기가 설득력을 얻고 있는 것이다.

다만, 안드로이드용 카카오톡이 정말 서버 연결유지를 위해 지속으로 트래픽을 과도하게 유발시키고 있다면 할 말은 없겠지만 말이다.

댓글 없음 :