다가오는 IoT 시대를 위해 준비되고 있는 새로운 IoT 플랫폼
지난 2016년 8월, 구글의 그 어떠한 발표도 없이 조용하게 Github에 게시된 코드를 통해서 대중들에게 알려진 OS가 있습니다. 바로 퓨시아(Fuchsia) 입니다. 이후 픽셀북이나 넥서스 5X 등 다양한 구글 제품에서 구동된 것이 유출된 소식이 간간이 들려왔지만, 최근 Kirin970 프로세서를 사용하고 있는 Honor Play 기기를 통해서 테스트 베드로 사용되고 있는 것이, 지난 11월 22일 9to5Google의 기사를 통해서 확인되었습니다.
아무런 소리 소문 없이 조용히 뒤에서 개발이 진행되고 가끔씩 새로운 소식이 들려오고 있는 퓨시아를 보게 되면 우리는 한 가지 의문점이 생깁니다. 바로, 전 세계 모바일 OS 시장에서 약 80% 이상의 점유율을 차지하고 있으며, 삼성 · LG · 소니 · 화웨이 등 전 세계 많은 스마트폰 제조사에서 사용하고 있는 안드로이드에 대해서 개발 주도권을 쥐고 있음에도 불구하고 왜 새로운 OS를 만들고 있는 것일까요?
이 의문점을 해소하기 위해서, 왜 안정적인 생태계가 구축되어있는 안드로이드가 있음에도 불구하고 새로운 OS를 만드는지, 그리고 이 OS는 어떠한 플랫폼을 가지고 있는지 한 번 알아보는 시간을 가져볼까 합니다.
퓨시아 OS란?
퓨시아는 리눅스 커널을 기반으로 하고 C · C++ · Java · Kotlin을 이용하여 개발된 네이티브 라이브러리와 LLVM(Low-Level Virtual Machine)을 바탕으로 자바 API 기반의 프레임워크와 시스템 애플리케이션을 구동하는 안드로이드와 달리,
C · C++ · Dart · Go · Python · Rust · Shell · TypeScript을 이용하여 핵심 플랫폼인 Zircon, 데이터 분석 툴인 Cobalt, Rust 패키지 관리 툴인 Fargo, 그래픽 및 입력장치 관련 작업 수행 서비스인 Garnet, 암호화 라이브러리인 Mundane, 다트 가상 머신과 연동에 사용되는 Tonic, 애플리케이션 모듈 구동 레이어인 Peridot, 모바일 앱 개발 SDK인 Flutter 지원 레이어 Topaz 등 다양한 요소들로 구성되어있는 OS입니다.
핵심 플랫폼 Zircon.
그게 머야?
Zircon은 퓨시아의 핵심 플랫폼으로 시스템을 부팅하고 하드웨어와 통신하며, 사용하는데 필요로 하고 있는 사용자 공간 서비스(User space Services), 드라이버 및 라이브러리와 함께 구글 독자적으로 만든 마이크로커널(Microkernel)로 구성되어 있으며, 프로세스 · 스레드 · 가상 메모리 · 프로세스 간 통신 · 객체 상태 변경 대기 및 잠금을 관리하는 시스템 콜(syscall)을 제공하고 있습니다.
보다 자세한 내용은 Zircon의 Git을 통해서 알아볼 수 있습니다.
Zircon을 설명하면서 이야기한 마이크로커널.
리눅스 커널과 어떤 차이점이 있어?
안드로이드에서 사용하고 있는 리눅스 커널은 대표적인 모놀리식 커널로 일명 단일형 커널이라고 많이 합니다. IO(입출력) · 네트워크 · 장치 지원 등 운영체제의 일반적인 기능을 커널과 동일한 메모리 공간에 적재하여 실행하는 형태를 하고 있는 형태입니다.
이와 달리 Zircon에서 사용하고 있는 마이크로 커널은 커널단에서는 핵심 기능만 유지하고, 애플리케이션 · UNIX 서버 · 디바이스 드라이버 · 파일서버 등 기능을 사용자 영역으로 옮겨서 모듈 형태로 개발하여 덧붙여서 사용하는 구조로 디자인되어있습니다.
커널의 크기가 작기 때문에 상당히 유지하기 쉬우며, 모놀리식 커널에 비해서 견고하게 개발할 수 있다는 장점이 있지만, 메시지 패싱으로 인한 성능 저하가 있다는 단점이 있습니다.
마이크로 커널 사용하고 있는데,
어떠한 형태의 OS야?
퓨시아는 모듈형 시스템을 활용하고 있는 마이크로커널을 바탕으로, 아르마딜로(Armadillo) 인터페이스라는 상하 스크롤 기반의 카드 뷰 형 인터페이스를 사용하여, 사용자가 필요로 하는 정보나 앱, 기능 등 오브젝트들을 모듈 형태로 제공하는 형태의 사용자 경험을 가지고 있습니다.
원하는 모듈을 탭 하여 전체 화면으로 나타내거나 필요에 맞추어서 화면 내 다양하게 배치하여 멀티태스킹을 할 수 있으며, 모듈화를 통해서 애플리케이션과 기능을 축소한 형태이기 때문에 상당히 빠른 동작 속도를 보여주고 있습니다.
퓨시아가 제공해줄 인터페이스 및 사용자 경험에 대해서는 아래의 링크를 통해서 스마트폰에 앱 데모를 설치하거나 웹 데모로 간접적으로 경험해볼 수 있으니, 기존 우리가 사용하는 것과는 어떻게 다른지 한 번 체험해보시는 것을 추천드립니다.
안드로이드 앱 데모
웹 데모
어떠한 형태인지는 대략적으로 파악했다.
근데 왜 개발하고 있는 거야?
이미 모바일 OS 시장에서 점유율 80% 이상을 차지하고 있고, 꾸준하게 생태계가 구성되어 확장되어가고 있는 안드로이드가 있는데 왜 퓨시아를 개발하는지 의문이 생길 수밖에 없습니다.
기존 생태계가 구성되어있는 상태에서 이를 뒤엎고 새로운 OS를 준비하는 것은 상당히 큰 도박이고 실패할 가능성이 매우 높은데 이런 위험을 왜 감수하면서 개발하고 있는 것일까요? 이에 대해서는 다양한 추측이 있습니다.
먼저, 안드로이드의 태생적 한계를 이야기합니다.
안드로이드 같은 경우 터치 디스플레이를 통하여 제어하고 출력하는 것을 바탕으로, 다양한 역할을 수행하는 것을 목적으로 만들어진 모바일 기기용 운영체제입니다.
상당히 편리한 인터페이스 및 사용자 경험을 가지고 있지만, 앞으로 다가올 IoT 시대의 제품들은 AI 스피커를 포함하여 디스플레이가 없는 스마트 기기 역시 상당히 많이 늘어나게 될 것입니다. 이런 기기들을 제어하는 데 있어서 가장 적합한 것은 음성 명령이나, 안드로이드 같은 경우 터치 디스플레이가 없는 경우에 대해서 설계 단계에서부터 상정되어 있지 않습니다. 이러한 부분에 대해서는 IoT 보드용 안드로이드인 Android Things에서 확실하게 확인할 수 있습니다. 안드로이드 환경으로 IoT 보드를 개발하기 위해 나왔음에도 불구하고, 개발을 진행하기 위해서 최소 한 번 이상 IoT 보드에 디스플레이에 연결하여 IP 등의 상태 정보를 확인해야 되는 불편함을 가지고 있습니다.
이에 따라서 안드로이드 같은 경우 음성 명령을 내리기 위해서는 별도의 애플리케이션을 구동한 뒤에 특정한 기능 실행을 지시할 수 있습니다. 이러한 형태이다 보니, 터치 디스플레이가 없는 기기들을 제어하는 데 있어서 안드로이드를 가지고는 최적화가 힘들다 판단했을 가능성이 높으며, 퓨시아에서는 모듈단에서 별도의 애플리케이션을 실행하지 않고 동작할 수 있도록 설계하여, 어떠한 환경이더라도 음성 명령을 즉각적으로 수행할 수 있도록 준비되어있습니다.
두 번째로, 외신들이 가장 많이 이야기하는 자바 특허 문제입니다.
안드로이드 같은 경우 리눅스 커널 위에 자바 기반 API 프레임워크와 애플리케이션을 사용하고 있습니다. 문제는 이 자바의 저작권을 오라클에서 들고 있으며, 자바 API 사용을 가지고 오라클에서 구글에게 소송을 걸어서 엎치락뒤치락하면서 8년간의 법정 싸움이 진행되어왔었고, 지난 3월 오라클의 승소로 구글은 라이선스 비용을 지불해야 되는 상황이 되었습니다.
이러한 상황이 구글이 구축 중인 생태계의 확장에 비용 부담으로 걸림돌이 될 수 있다고 판단하여 오래전부터 자바를 사용하고 있는 안드로이드를 대체할 대비책으로 준비하고 있는 것일 수도 있습니다.
마지막으로 업데이트 프로세스 문제입니다.
안드로이드 트레블이 적용되었다고 하더라도 아직까지 안드로이드 기기의 업데이트 주도권은 구글이 쥐고 있는 것이 아니라 각 단말기 제조사들이 쥐고 있는 상태입니다.
아무리 빨리 구글이 안드로이드 업데이트를 빠르게 진행한다고 하더라도 안드로이드를 사용하고 있는 단말기들에 대한 업데이트를 제조사에서 반영하지 않으면 의미가 없습니다. 이는 안드로이드 파편화의 가장 큰 원인으로도 손꼽히고 있는 부분으로, 자체적인 생태계를 구성하지 않은 하드웨어 제조사 같은 경우 업데이트를 꾸준하게 해주는 것보다 신규 제품을 자주 만들어서 출시하는 것이 더 큰 이득으로 돌아오기 때문에 상대적으로 업데이트에 있어서 소홀해질 수밖에 없습니다.
반면, 퓨시아 같은 경우 IoT 기기를 지원하고 있기 때문에 보안을 위해서 항상 최신 버전을 제공하고 있는 크롬 OS와 마찬가지로 항상 최신 버전 업데이트를 제공할 가능성이 높으며, 이를 유지하기 위해서 OS 업데이트 주도권 역시 구글이 쥐고 있을 가능성이 상당히 높습니다. 즉 제조사가 할 수 있는 커스터마이징은 자체적인 기능을 지원하는 모듈을 추가해주는 정도 끝날 수 있습니다.
이미 기존 생태계가 있는 데 성공할 가능성이 있어?
퓨시아가 성공할 수 있을지에 대해서는 상당히 의문이 많을 수밖에 없습니다.
이미 구글의 안드로이드는 성공적으로 자리 잡혀있는 모바일 OS이며, 퓨시아 같은 경우 이런 안드로이드 플랫폼과는 완전히 다른 인터페이스와 사용자 경험을 제공하고 있습니다.
이전에 마이크로소프트의 Window 7에서 Window 8로 넘어갈 때 발생했었던 사용자들의 반발과 Ubuntu에서 GNOME에서 Unity로 마이그레이션 했을 때 발생한 사용자들의 반응을 지켜보았을 때 많은 사용자들이 이미 익숙해진 생태계를 벗어나서 새로워진 생태계로 넘어가는 것을 상당히 두려워하고 있습니다.
더군다나 안드로이드 초기를 생각하면, 상당히 느리고 반응이 없거나 많은 버그들이 나타났고, 이를 참아가면서 사용했어야 되었던 것을 생각하면 더욱더 끔찍할 수밖에 없습니다.
그리고 특정한 생태계를 쉽게 벗어날 수 없는 이유 중 가장 크게 자리 잡고 있는 것은 해당 생태계에서 동작하고 있는 많은 애플리케이션과 이를 쉽게 만나볼 수 있는 앱 스토어입니다. 퓨시아 같은 경우 자바를 기반으로 하고 있는 안드로이드와는 완전히 다른 기반의 OS임에 따라서 애플리케이션이 호환되지 않을 가능성이 높습니다. 왜 마이크로소프트의 윈도우폰과 삼성의 타이젠폰이 실패했는지 생각해보면 애플리케이션이 없는 것이 얼마나 큰 벽인지는 더욱더 명확하게 알 수 있습니다.
마지막으로 퓨시아는 안드로이드나 크롬 OS 대신 새로운 IoT 플랫폼에 돌아가기 적합한 OS라 볼 수 있습니다. 하지만, 아직까지 개발 단계라서 향후 어떠한 위치에 포지션에서 어떻게 브랜딩 되어 있을지 알 수가 없습니다.
이렇게 많은 이유로 퓨시아가 성공하기에는 상당히 많이 힘들 것이라 생각되지만, 다른 한편으로는 성공할 수도 있을 가능성도 볼 수 있습니다.
이미 구글은 안드로이드와 크롬 OS를 통해서 다양한 성공과 실패를 진행했었으며, 이를 바탕으로 보다 유용성이 높으며 리소스 효율성이 향상된 새로운 OS가 준비되고 있음은 의심의 여지를 가질 수가 없습니다.
그리고 퓨시아가 지원하는 언어를 보게 되면, 코어 영역은 C와 C++로 이루어져 있지만, 그 위에서 돌아가는 사용자 인터페이스 및 애플리케이션 영역은 플러터(Flutter)를 사용하고 있습니다.
플러터는 구글에서 만든 크로스 플랫폼 애플리케이션 개발 프레임워크로, 다트(Dart)로 프로그래밍 가능하며, 안드로이드 및 iOS 애플리케이션을 개발할 수 있습니다.
가장 큰 특징은, 보통 네이티브 앱 개발을 할 경우 각 OS에 맞추어서 인터페이스가 재구성되어 OS마다 조금씩 다른 인터페이스와 사용자 경험을 제공하는 경우가 많은데, 플러터는 OS의 인터페이스를 무시하고 자체적으로 인터페이스 렌더링을 하고 있어, iOS에서 Material 디자인을 보거나, 안드로이드에서 Cupertino 디자인을 볼 수 있는 등 인터페이스 구성에 있어서 플랫폼의 제약이 없습니다.
이렇게 플러터를 이용해서 만든 안드로이드 애플리케이션은 수정 없이 그대로 퓨시아에서 동작합니다. 즉 안드로이드와 iOS를 나누어서 개발할 필요 없이 플러터 하나로 동시에 지원할 수 있으며, 이렇게 만들어진 애플리케이션을 퓨시아에서 바로 사용할 수 있습니다.
차이점이 있다면 기존의 애플리케이션 같은 경우 모듈화와 거리가 멀지만, 구글 같은 경우 이번 Google I/O 2018에서 안드로이드 앱 번들(Android App Bundles)이라는 새로운 개발자 도구를 발표했습니다. 어떠한 것이냐면, 많은 기능을 제공하고 있는 애플리케이션을 개별적인 모듈로 구성하여, 사용자들이 필요로 하는 기능만 제공하는 것입니다.
모듈화를 진행하게 되면, 애플리케이션에서 일부 기능이 빠진 상태가 되기 때문에 초기 다운로드 용량이 획기적으로 감소하며, 동시에 모듈화를 통해서 앱 안에 기능 하나하나가 작은 애플리케이션으로 간주됩니다. 이러한 모듈형 구성은 퓨시아의 구성과 직접적으로 이어집니다.
플러터를 제외하고 난 다음에도 애플리케이션을 개발하는데 지원하는 언어의 폭은 더욱더 다양합니다.
Java와 Kotlin을 지원하고 있던 안드로이드와 달리 Go · Rust · Python · TypeScript뿐만 아니라, 애플의 Swift까지 지원하고 있으며, Swift 컴파일러에 퓨시아 지원이 추가된 코드를 작년 11월 16일에 Pull request 요청까지 진행되었습니다.
이러한 행보는 플랫폼 참여를 원하는 개발자들에 대해서 원하는 언어와 개발 툴을 선택할 수 있는 자유를 보장하기 위한 움직임으로 유추할 수 있으며, 다양한 개발자들이 자주 사용하는 언어들을 바탕으로 손쉽게 접근할 수 있도록 하는 배려라 볼 수 있습니다.
즉, 기존 생태계에 모듈화 개념을 추가하여 점진적으로 사용자들에게 모듈화 개념을 이해시켜 새로운 생태계에 대해서 간접적으로 경험시키며, 크로스 플랫폼 개발 툴인 플러터와 다양한 언어의 지원으로 빠른 속도로 생태계를 구성하고 많은 애플리케이션이 만들어질 수 있도록 준비가 되어가고 있는 상황입니다.
하지만, 이렇게 준비한다고 한 들 앱 스토어가 없을 경우 이전에 애플리케이션 관리 및 배포에 있어서 상당히 불리한 것을 충분히 이전에 많이 나온 OS들을 통해서 알 수 있습니다. 이에 대해서는 크롬 OS(Chrome OS)를 통해서 해답을 찾아볼 수 있습니다.
기존 크롬 OS 같은 경우 크롬 웹 스토어를 통해서 애플리케이션을 배포하고 있었으나, 생태계가 구성이 되지 않자, 안드로이드 애플리케이션을 지원하면서 플레이스토어(Play Store)가 지원되기 시작하였습니다.
플레이스토어 같은 경우 이미 성공한 안정적인 앱스토어이고, 이전의 크롬 OS의 사례가 있었기 때문에 퓨시아 역시 별도의 스토어를 구성하기보다는 플레이스토어를 통해서 애플리케이션을 제공하여 안정적으로 모바일 OS 시장에 진입할 가능성이 상당히 높습니다.
개발 단계이기 때문에 어떠한 포지션에서 어떻게 브랜딩 될지 알 수 없는데..
어떠한 경우의 수들을 추측해볼 수 있어?
아직까지 개발 단계에 있기 때문에 어떻게 될지에 대해서 추측하는 것은 상당히 조심스럽습니다. 하지만, 지금까지 나온 정보들을 바탕으로 몇 가지 경우의 수에 대해서는 어림짐작해볼 수 있습니다.
아래의 추측에 관련된 부분은 제가 퓨시아에 관한 정보들을 접하면서 추측해본 내용입니다.
앞으로 퓨시아가 우리에게 어떻게 다가올지 모르니..
"아 이런 추측도 있구나"하고 재미로 봐주시길 부탁드리겠습니다.
첫 번째, 구글이 안드로이드를 버리고 새로운 OS인 퓨시아로 넘어가는 경우입니다. 사용자 입장에서는 기존 안드로이드 인터페이스와 사용자 경험을 버리고 새롭게 적응해야 되는 이슈가 있어서 두 가지 경우의 수를 생각해볼 수 있습니다.
먼저, 구글에서 사전에 모듈화 애플리케이션 등을 통해서 기존 안드로이드 사용자들에게 모듈화 된 인터페이스 및 사용자 경험에 대해서 직간접적으로 경험을 시켜서 익숙하게 하여, 사용자들은 무리 없이 퓨시아에 적응하여 안정적으로 넘어가는 경우의 수가 있습니다.
이 경우의 수에 대한 준비는 안드로이드 앱 번들을 통해서 애플리케이션의 모듈화 하여 기본 베이스의 크기는 줄이고, 사용자가 사용하고자 하는 기능에 대해서만 제공하도록 하고 있습니다.
즉, 이미 바뀌는 OS에 대해서 경험하도록 구성하여 준비를 하고 있기 때문에 가능성이 상당히 높으며, 구글이 가질 수 있는 가장 최상의 경우의 수로 볼 수 있습니다.
그다음으로 유추해볼 수 있는 경우의 수는, 넘어가는 과정에서 사용자들의 이탈 또는 반발이 발생하는 경우입니다. 이 경우 안드로이드와 퓨시아 두 가지 체제로 진행을 해도 문제가 없지만, IoT와 통합된 OS와는 다소 거리가 발생되게 됩니다.
그리고 이 과정에서 안드로이드가 크게 한 번 흔들릴 가능성이 매우 높기 때문에, 일전에 모바일 OS 시장에서 실패하고 후퇴한 OS들이 다시 한번 더 진입을 시도할 가능성도 매우 높습니다.
특히, IoT 플랫폼으로 전향하여 폰과 태블릿 같은 모바일 단말기를 제외하고 많은 삼성전자 가전제품에서 사용되고 있는 삼성의 타이젠(Tizen)이나, IoT Core 등으로 IoT 환경에 대해서 준비하고 개발을 진행 중인 마이크로소프트의 윈도우즈(Windows)가 더욱더 가능성이 높다고 생각합니다.
이 두 OS 같은 경우 이미 한 번 후퇴한 상황이라고 하더라도, 모바일 OS에 대해서 실 제품을 출시할 정도로 많은 개발이 이루어져 있고, 언제든지 다시 진입할 수 있는 여력을 가지고 있는 곳이기 때문에, IoT 통합 플랫폼이 대세가 될 가능성이 높은 상황에서 가능성이 매우 높다고 생각합니다.
두 번째, 안드로이드는 그대로 모바일 OS의 포지션에 유지하고 있으면서, Android Things · Android Auto · Android TV · Wear OS 등 IoT 플랫폼과 관련된 제품들의 OS를 퓨시아로 통합하는 경우입니다.
퓨시아의 모듈화 된 구조와 인터페이스 같은 경우 IoT 플랫폼에 최적화되어있으며, 이미 출시되어있는 Things · TV · Wear OS에 충분히 무리 없이 반영할 수 있는 상태라 큰 문제없이 안정적으로 넘어올 수 있다 생각됩니다.
특히, 첫 번째 전략이 실패했을 경우 진행해도 문제가 없지만, 기존 안드로이드를 유지하고 있는 상태에서 나머지들의 통합을 진행할 경우 모바일 OS 시장에서의 안드로이드 점유율을 그대로 유지하고 있는 상태에서 무리 없이 퓨시아를 시장에 진입시킬 수 있다는 장점이 있습니다.
단 이 경우, 현재 삼성전자가 갤럭시(Galaxy) 제품군은 삼성 익스피리언스(Samsung Experience)란 이름으로 안드로이드 OS의 자체 배포판을 만들고, 타이젠으로 나머지 제품들에 대해서 OS 통합을 진행한 것과 크게 다르지 않기 때문에, 아직까지 많은 안드로이드 스마트폰을 공급하고 있는 삼성전자와의 마찰이 더욱더 거칠어질 수밖에 없습니다.
마지막 경우의 수는 퓨시아는 실험적 프로젝트였고, 이때 나온 결과물들에 대해서만 안드로이드에 병합하는 형태로 넘어가는 경우입니다. 이 경우에 대해서는 안드로이드 앱 번들을 통해서 안드로이드 애플리케이션이 모듈화에 대한 아이디어를 채용한 것으로부터 추측이 가능합니다.
장기적으로 퓨시아를 고려하고, 모듈화를 통해서 두 플랫폼 간 자유롭게 생태계를 공유할 수 있도록 준비한 것일 수도 있지만, 반대로 퓨시아를 통해서 모듈화와 관련된 부분에 대해서 실험해보고 사용자가 필요로 하는 기능만 사용할 수 있도록 하는데 괜찮다 판단하여 안드로이드에 반영한 것일 수도 있습니다.
앞으로 어떠한 형태로든 다가올 변화, 퓨시아(Fuchsia)
마이크로 커널을 기반으로 모듈을 활용한 형태의 OS를 제공해주고 있는 퓨시아, 아직까지 개발 단계에 있어서 앞으로 어떻게 될지 모르지만, 정보를 수집하고 공부하면서 느끼는 것은..
안드로이드 그다음 세대의 OS가 되던가, 안드로이드와 별개로 IoT 플랫폼이 되던가, 실험적인 프로젝트로 모듈화 등의 사항에 대해서 장단점을 다양하게 테스트해보고 괜찮은 결과가 안드로이드에 병합되는 경우 등 어떠한 형태로든 우리가 모바일 기기와 IoT 제품을 구글 플랫폼을 이용하고 있다면 다가올 수밖에 없는 변화라는 점입니다.
앞으로 몇 년이 더 지나고 난 뒤에 우리 앞에 당당하게 모습을 드러내면서 새로운 변화를 보여줄지 모르겠지만, 현시점에서는 플로터와 안드로이드 앱 번들을 통해서 어떠한 변화가 있을지에 단편적으로 엿볼 수 있는 것 같습니다.
당당하게 우리 앞에 모습을 드러낼 시점의 모바일 OS와 IoT 플랫폼 시장이 어떻게 되어있을지, 어떠한 변화를 바탕으로 우리에게 더 좋은 편리함을 가져다줄지 많은 기대와 상상의 나래를 펼쳐보며 이만 글을 마칩니다.