진짜 안드로이드는 바로 설 수 있을까?

Nexus 5, 5X, 6, 6P 등 최신 폰에서 안드로이드 OS를 실행한 분이라면 얼마나 안드로이드가 부드럽고 유연해졌는지 느꼈을 겁니다. 표준 안드로이드 OS는 iOS를 마치 90년대 구닥다리 폰처럼 느껴지게 하는 많은 부가 기능을 가지고 있습니다. 문제는 90년대에는 안드로이드 역시 구닥다리였고, 아직도 그 부분을 배제할 수 없다는 점입니다.

이미 개발된 iOS 앱을 안드로이드로 이식할 수 있는 개발자를 찾는 친구를 최근 도와준 적이 있습니다. 해당 앱은 메모리 집약적인 멀티미디어 기반의 애플리케이션이었고, 검증된 실력과 의욕을 갖춘 개발자를 찾는데 많은 어려움을 겪고 있었습니다.

그 이유는 꽤 간단했습니다. 복잡한 메모리 관리가 필요한데 안드로이드는 이 작업이 정말 어렵기 때문입니다. 문제의 본질은 안드로이드 기기 숫자와 하드웨어 구현 방법, 그리고 이 두 요소의 조합에서 생기는 문제들이 정말 다양하다는 것입니다. 즉 그 악명높은 단편화 문제죠.

단일한 iOS 기기의 단순성

메모리 관리는 새로운 이슈가 아니지만, 많은 기기가 계속 출시되는 상황에서는 현존하는 메모리 문제만 고려하기도 어렵습니다. 페이스북은 이미지와 관련된 메모리 문제를 관리하기 위해 Fresco를 출시했습니다. 그러나 문제는 메모리만이 아니죠, 이는 빙산의 일각에 불과합니다.

안드로이드에는 iOS 기기들과 같은 작은 부분 집합이 없습니다. iOS 개발자들은 ‘잘 알려진’ 하드웨어 스펙 부분 집합과 그 위에서 돌아가는 ‘잘 알려진’ 운영 체제만을 다루면 됩니다. 모든 기기가 대부분 같은 하드웨어 컴퍼넌트들로 이뤄지므로 어떤 것을 사용할지 알 수 있죠. 따라서 안드로이드 개발보다 iOS 개발이 훨씬 쉽습니다.

iOS Devs be Like

그러나 안드로이드 기기는 정말 다양한 하드웨어 컴퍼넌트로 이뤄진 수천 가지 다른 기기들로 이뤄져 있습니다. 안드로이드 기기가 Android Compatibility Definition Document에 기재된 Android Compatibility Definition (Android CD)을 맞추는 것이 요구되긴 하지만, 이것으로 제조사나 통신사가 벌이는 단편화 증대를 막지는 못합니다.

이런 개발 뉴스를 더 만나보세요

보통 이 대목쯤 되면 누군가 이런 질문을 하죠.

“...그렇지만 그게 안드로이드의 성공 요인 아닌가요?…”

물론 맞는 말입니다. 그 덕분에 안드로이드는 제한 없이 성장할 수 있었죠. 제가 Kaushik와 안드로이드 개발자 팟캐스트를 시작했을 때 이름을 “Fragmented Podcast” 라고 붙인 이유이기도 합니다.

저는 안드로이드를 사랑하지만 안드로이드가 모바일 혁명의 Windows라고 생각합니다. 즉 안드로이드 개발을 괴롭게 하는 너무 많은 기기와 하드웨어 제조 판매사가 존재합니다.

독과점 통신사

단편화된 환경에서의 개발이 힘들다는 점을 다들 아실 테죠. 그런데 애초에 왜 단편화가 발생한 걸까요? 다양한 주장과 확실한 실례들이 있지만 예전부터 저는 이렇게 생각하고 있습니다.

통신사는 운영 체제를 업그레이드하기 보다 폰을 팔고 사용 요금을 업그레이드시켜서 돈을 번다.

애플의 경우 통신사는 모바일 네트워크를 바꾸는 데 필요한 몇몇 설정을 제외하고는 OS를 수정할 권한이 없습니다. 여기서 iOS의 힘이 생기죠. 애플이 iOS 출시 사이클을 결정합니다. iOS 기기들에는 장기간 지원이 제공되기 때문에 통신사는 iOS 사용자로부터 안드로이드 사용자보다 거시적으로 적은 이익을 얻을 것입니다. (iOS Support Matrix를 참고하세요.) 실제로 작년에 제 부인이 아이폰 6로 업그레이드했는데 2011년에 산 예전 아이폰4S 기기가 여전히 업데이트되고 있었습니다. 무려 4년이 지났는데도 말이죠. 1~2년이 지났는데 여전히 업그레이드되는 안드로이드 기기가 있으면 말해주세요. 없다시피 할 겁니다.

기존 안드로이드 사용자에게 업그레이드를 제공해봤자 통신사에게는 전혀 이득이 없습니다. 최신 폰이 제일 나은 법이죠, 실제로 사용자들이 돈을 더 내니까요. 사용자들이 간과하기 쉬운 점은 소프트웨어 업그레이드에는 큰 비용이 든다는 것입니다. 결점 없고 튼튼한 코드를 가진 사용자 기반 층에 굳이 커스텀화된 운영 체제의 업데이트를 발빠르게 제공할 이유가 없습니다.

업데이트가 느리거나 제공되지 않는 이유

통신사와 제조사의 전통적인 폰은 그들이 만든 커스텀 운영 체제를 내장하고 있습니다. 커스텀 전화 앱, 커스텀 문자 앱, 커스텀 음성메일 앱, 커스텀 달력, 커스텀 계산기 등 커스텀화된 테마와 애플리케이션이 포함됩니다. 새 안드로이드 버전이 배포되면 대부분 UI 변화가 동반됩니다. 통신사에서 업그레이드한 후 OEM 테스트를 거쳐 OTA를 통해 배포됩니다.

여기에서 마찰이 생깁니다. 통신사가 자신의 소프트웨어를 업데이트해야 합니다. 귀띔해 드리자면 통신사 대부분은 고객과 암묵적으로 협의가 이뤄진 일종의 배포 사이클을 가지고 있습니다. 예를 들어 “이 폰은 2년 간 업데이트가 보장됩니다.” 같은 문구에서 암시되듯, 2년 후에 출시가 예정된다면 그때 출시한다는 것입니다. 만약 2년간 업데이트가 보장되는 기간이 12월 31에 끝나는데 새 안드로이드 버전이 8월에 출시된다면 어떨까요? 통신사들이 소프트웨어 업데이트를 제 시간에 해내지 못할 테니 영영 새 안드로이드 버전으로 업데이트 받을 수 없을 테고, 결국 그 폰을 포기하겠죠.

통신사들은 긴 시간을 들여 이 같은 행위를 유도합니다. 업데이트로 당신을 묶어두고 폰이 더는 지원되지 않으면 결국 새 폰을 사게 만듭니다. 매년, 아니면 적어도 2년 마다 새 폰을 사리라 기대합니다. 이때마다 약정 기간은 연장되고 원래 통신사에 계속 머무르게 됩니다. 비즈니스 관점에서 본다면 통신사로서야 좋겠지만 소비자들에겐 불리합니다.

Nexus Program

그래도 넥서스 프로그램 등의 방법이 있어 안드로이드에게는 아직 희망이 남아 있습니다. 넥서스 기기는 통신사나 제조사의 커스터마이제이션이 없고 통신사 약정도 없습니다. 예를 들어 저는 넥서스 5를 갖고 있는데 T-Mobile, AT&T 등 여러 통신사에서 이 기기를 사용할 수 있습니다. 최근 저는 미국을 가로질러 뉴저지로 이사했는데 T-Mobile 통신사가 지원되지 않는 지역이라서 AT&T에 가서 월간 계약을 하고 SIM 카드를 받아올 수 있었습니다. 같은 폰이지만 20분 만에 다른 네트워크로 갈아탄 거죠. 이게 훨씬 올바른 방법이지 않나요?

넥서스 프로그램의 장점은 OTA 코어 안드로이드 OS 업데이트를 통신사 폰보다 빠르게 제공한다는 점입니다. 이미 저는 몇 주 전부터 안드로이드 마시멜로를 사용하고 있는데 트위터 이력을 보니 10월 14일이었네요. 마시멜로가 공식 배포되기 9일이나 전입니다.

저는 OTA 업데이트를 배포 9일 전에 받았습니다. 애플의 iOS 업데이트 방식이 떠오르네요, 정말 빠르죠. 소비자로서 저는 이런 방식의 잦은 업데이트를 사랑합니다. 저뿐만이 아니겠죠, 모두 이런 경험을 원할 겁니다.

넥서스 = 진정한 안드로이드 기기

사람들이 제게 어떤 안드로이드 폰을 사야 할지 물을 때마다 저는 넥서스를 추천합니다. 다른 폰들은 모두 쓰레기나 마찬가지라고요. 개발 테스트를 위해 통신사 폰을 한해 3~5개 정도 사는데, 각 기기를 사용할 때마다 통신사/제조사의 커스텀 폰을 사용하는 것이 정말 괴로워서 고속도로 밖으로 이 망할 폰을 던져버리고 싶습니다.

Google Fi

넥서스 프로그램은 또한 Google FiAndroid One 프로젝트를 통해 새로운 삶의 방식을 제공합니다. Google Fi에서 구글은 소비자의 모바일 서비스 소비 패턴을 개선하려고 시도하고 있습니다. 특히 최신 넥서스 폰에서만 가능하다는 것이 장점입니다. 넥서스 폰이 없다면 가입할 수 없다는 점이 단점이라고 생각될지도 모르지만, 안드로이드의 기기 단편화가 줄어든다는 점에서 큰 장점이라고 할 수 있습니다. Android One은 조금 다르긴 하지만 안드로이드 최신 버전에서 돌아간다는 장점은 같습니다.

왜 통신사의 판매점에서 넥서스 폰을 살 수 없을까요?

좋은 질문입니다.

제 생각에 그 이유는 방금 말씀드린 것과 일맥상통합니다. 통신사는 기기 판매와 업그레이드 교체로 이익을 얻습니다. 지속적인 업그레이드가 이뤄지는 긴 수명의 폰에서는 수익이 나지 않죠. 그렇다면 통신사가 아이폰을 제공하는 이유는 무엇일까요? 시장 요구에 따른 것입니다. 소비자는 아이폰을 원하고, 통신사들은 AT&T의 사업 부문에서 아이폰의 역할이 큰 것을 깨닫고 너도나도 공급하는 겁니다. 간단한 시장원리죠.

아쉽지만 광활한 안드로이드 시장에서 넥서스 프로그램의 존재감은 아직 작은 편이고 대부분 신경조차 쓰지 않는 수준입니다. 앞서가는 사용자층에서는 알고 있지만, 우리 아버지는 넥서스가 뭔지 왜 좋다는 건지 전혀 모르고 계시죠. 단지 아버지는 친구분의 아이폰이 매번 업그레이드되는데 본인의 안드로이드 폰은 낡고 구식이라는 정도만 알고 계십니다.

그래서 안드로이드가 별로라고요?

안타깝게도 많은 이들이 그렇게 여기지만 그래서는 안 됩니다.

보통 대화 중에 “구글 때문에 우리가 매번 새 폰을 사야 하잖아. 구글이 만든 문제니까 구글이 나빠!”라고 누군가 말하게 되는 포인트죠.

Ahhhhhhhhh!!!!

제 생각에 이는 온전히 구글만의 잘못은 아닙니다. 아마 구글도 처음에는 모바일 시장이 이렇게까지 커질 것을 예상하지 못했을 테고, 단편화 문제가 이렇게 심각해지고 또한 통신사가 이런 문제의 원인으로 대두하리란걸 알 수 없었을 겁니다. 통신사가 소비자의 폰을 보다 자주 업데이트해 주는 것을 구글이 좋아할는지 가늠하기는 어렵지만, 아무튼 지금 현실에서는 불가능한 일이죠.

문제 해결을 위해 시장이 어떻게 변해야 할까요?

하나의 해결책으로 이 문제를 풀 수 있을는지는 모르겠습니다. 그러나 구글이 통신사들을 유도하기 위해서 사용할 만한 몇 가지 방법이 있습니다. 이상적인 세상이라면 넥서스 스타일의 기기를 사고 Project Fi에 가입할 수 있겠죠. 그러나 현실적으로는 불가능합니다.

  • 옵션 1: OS 커스터마이제이션 제거 새 폰을 사는 주기를 좌우하므로 통신사 수익에 영향을 미칠 테니 어려운 방법입니다. 이런 요구사항은 출시 사이클을 길게 하고 통신사 수익은 대폭 감소할 겁니다.

  • 옵션 2: 플러그인 모델을 통한 OS 커스터마이제이션 구현 만약 통신사/제조사가 정 커스터마이제이션을 하고 싶다면 플러그인 스타일의 모델에서 제공해야 합니다. 즉 코어 OS에는 손대지 않고 OS에 플러그인 후크를 제공해서 커스터마이제이션이 되게 하는 것입니다. 이 방식으로 코어 안드로이드 OS가 최소한의 노력으로 업데이트될 수 있고 사용자들에게 선택의 유연성도 제공할 수 있습니다. 그러나 이 방식도 실현하기 어렵긴 마찬가지며, OS 업데이트와 관련 앱들에 관련한 이슈들도 존재합니다. 예를 들어 OTA를 하다가 통신사 테마가 충돌 나는 경우, 안드로이드 OS가 제어권을 받아 기본 런쳐와 테마를 사용해서 사용자들이 새 OS로 계속 기기를 사용할 수 있도록 할 것입니다. 완벽하지는 않지만 올바른 방향으로 한 발짝 나아가는 셈입니다.

  • 옵션 3: 엄격한 업데이트 정책 수립 무엇이 얼마나 자주 업데이트해야 하는지에 관한 요구사항을 구글이 더욱 강화하는 방법도 있습니다. 기기는 1~2개월에 한 번 이상 최신 ASOP 배포를 업데이트해야 한다는 조항을 추가할 수도 있습니다. 통신사들은 이 조항을 따를지 아니면 순수 안드로이드 체제로 갈지(stock Android) 결정해야 합니다. 만약 구글이 이를 강제한다면 아마 몇몇 통신사는 순수 안드로이드 체제를 따를 테고 많은 사용자가 긴 생명 주기와 신뢰성을 지닌 이 체제를 사용하려 할 겁니다. 이 경우에도 코어 OS 소프트웨어가 하드웨어에서 기대대로 작동할 수 있겠죠.

하드웨어 호환성 문제

소프트웨어 업데이트의 영향을 받는 것은 하드웨어이므로 하드웨어 요구사항이 엄격해져야 합니다. 코어에서 발생하는 모든 말단 문제를 통과하기 위해서는 방대한 테스트 세트가 필요합니다. 안드로이드 OS가 변경된 이후에도 같은 테스트가 다시 이뤄져야 합니다.

몇몇 제조사와 통신사는 안드로이드 OS를 그들 하드웨어에서 동작하도록 하도록 변경시키므로 문제가 생깁니다. 이는 우리 애플리케이션 개발자들에게도 문제가 되죠. 안드로이드 CCD가 우리를 이 문제에서 보호해주긴 하지만 썩 만족스럽지는 않습니다. 그래서 테스트가 필요합니다.

커뮤니티에 이 테스트 세트가 공개된다면 커뮤니티 공헌자들이 테스트 세트 완성에 도움을 줄 수 있습니다. 커뮤니티의 많은 개발자가 어떤 부분을 테스트해야 하는지 찾는 데 도움을 줄 것이고, 제조사의 기기 성능에 대한 피드백도 줄 수 있을 겁니다. 안드로이드 하드웨어 이슈를 고치기 위해 하루에도 수많은 해킹 소프트웨어가 만들어지고 있으므로 이제부터라도 개선을 해야합니다.

안드로이드의 발전

사람들은 안드로이드가 낡고 버그가 많은 시시한 OS라고 생각하지만, 사실 최신 버전의 안드로이드는 잘 작동하고 있습니다. 그러나 예전 버전 OS와 기기를 사용하는 사용자가 많은 이상 안드로이드 생태계의 단편화는 계속 심화될 수밖에 없습니다. 이는 사용자, 개발자, 통신사, 심지어 구글에게도 복잡한 문제죠. 따라서 새 OS와 신뢰할 만한 기기를 지원하는 체제로 제조사와 개발사가 개편돼야 합니다. 이로 인해 플랫폼이 안정화되고 안드로이드의 브랜드 로열티가 증대되며, 개발자의 삶을 편하게 해서 더 나은 앱을 개발하도록 할 수 있습니다. 이렇게 된다면 제가 앞서 말한 멋진 멀티미디어 앱을 실제로 구현할 수 있겠죠. :)


컨텐츠에 대하여

이 컨텐츠는 저자의 허가 하에 이곳에서 공유합니다.


Donn Felker

Donn Felker is the co-host of the Fragmented Podcast and the founder of Caster.IO, a bite-sized Android developer video training site. He’s the curator of the #AndroidDev Digest, a best selling mobile author, international speaker, and consultant on all things Android. He also loves Chipotle.

4 design patterns for a RESTless mobile integration »

close