Realm Blog

Realm 모바일 플랫폼을 소개합니다.

 

소개 (0:00)

Realm에 관심을 가진 분이라면 Realm 모바일 플랫폼이 등장할 것이라는 생각을 하셨을지도 모릅니다. Realm 모바일 플랫폼은 이 년 이상 진행돼온 프로젝트로, 상용화하기 위해 많은 연구를 거쳐 왔습니다.

Realm의 한결같은 목표는 보다 나은 앱을 개발하도록 돕는데 있습니다. 즉, 구현하기 까다로운 멋진 라이브 기능과 상호작용 기능을 가진 앱을 보다 쉽고 빠르게 구현할 수 있도록 하는 것입니다.

introducing-RMP-introduction

Realm 모바일 데이터베이스 (0:58)

Realm의 역사는 꽤 길고, 현재까지 좋은 성과를 거두고 있습니다. 샌프란시스코와 코펜하겐에 오피스가 있고, 현재 60명 정도의 직원을 보유하고 있습니다. 하지만 시작 시점에는 지금과 달랐습니다. 사실 Realm은 저와 제 공동 창립자가 덴마크에 앉아서 모바일 데이터베이스를 만들어보고 싶다는 생각을 한 것에서부터 시작됐습니다.

그래서 Y Combinator에 지원했습니다. 누군가는 Y Combinator에 지원하려면 주요 인물들과 인맥이 닿아 있어야 하고 특정 조건에 맞아야한다는 식의 말을 하지만, 사실 저희는 저 멀리 덴마크에 있던 단지 두 사람이었을 뿐이었죠. 인맥도 없었고, 우리의 기술과 Nokia에서 모바일 관련 일을 했다는 이력을 빼고는 아무런 자격도 없었습니다. 정말 아무 것도 아닌 순진한 사람들이었죠.

어쨌거나 우리는 지원 동영상을 보냈고, 놀랍게도 잘 받아들여졌습니다. 오늘날까지 이르는데는 많은 이야기가 있지만, 열심히 노력했고 모든 것을 준비해서 운영했습니다. 우리가 하고자한 일의 핵심이 되는 모바일 데이터베이스의 개발을 시작했고 결국 완성해냈습니다.

개발을 시작하면서 이 작업이 얼마나 걸릴지 생각해봤는데, 이 분야에서 많은 경험이 있었으므로 팔 수 있을만한 제품을 만드는데 한 반 년 정도 걸릴 거라고 예상했습니다. 그러나 몇 년이 흐른 후에야 드디어 좋은 제품을 만들어낼 수 있었습니다. 회사 설립 후 거의 3년이 지난 2014년에 처음 제품을 런칭했죠. 내장형 데이터베이스를 좋은 퀄리티로 만드는 것은 오랜 시간이 걸리더군요. 사실 이 기간을 예측 못했기 때문에 용감하게 시작할 수 있었던 것 같습니다. 결과물은 보시다시피 아주 멋집니다.

이제 우리는 이 기술을 흡족하게 개발해서 온전히 오픈소스로 공개했습니다. 처음 개발을 시작할 때 약속했던 바대로의 오픈소스인 이 제품을 가지고 여러분이 원하는 것은 무엇이든 할 수 있습니다. 세상에 기여를 하는 것은 언제나 즐거운 일입니다.

제게 가장 만족하는 것은 사람들의 애정어린 반응입니다. Realm이 얼마나 멋진지 경험한 사람들이 수많은 트윗과 피드백으로 우리 제품에 대해 말하고 있습니다. 거의 모든 곳에서 사용되고 있으며, 행복하게도 많은 앱을 개선하는데 도움이 됐습니다.

introducing-RMP-apps

Realm 모바일 플랫폼 (5:04)

Realm 모바일 데이터베이스를 배포한 후 다음 단계로 들어설 필요가 생겼습니다. 멋진 데이터베이스를 만들고 모두에게 무료로 나눠주는 것은 좋은 일이지만 이것만으로 지속 가능한 회사를 만들기는 어렵죠. 그래서 Realm 모바일 플랫폼을 만들었습니다.

많은 사람들이 잘 알지 못하지만, 사실 원래 Realm은 제 회사에서 텍스트 에디터를 만들었던 경험에서 영감을 얻었습니다. 아직 git이 개발되지 않은 때였지만 git이 빌트인된 협업 가능한 텍스트 에디터였고, 여기 실시간 협업 기능을 넣고 싶었습니다. 하지만 어떤 데이터베이스도 제가 원하는 실시간 협업 기능을 지원할만큼 빠르지 않았고, 결국 스스로 만들기로 마음먹었습니다. 사람들이 실시간으로 데이터를 공유할 수 있는 이상적인 데이터베이스를 만들자는 아이디어로 개발을 시작했죠. 실제로 개발이 상당히 오래 걸렸는데, 이런 데이터베이스를 최초로 만들어내야했기 때문입니다.

동기화에 대한 요청을 상당히 많이 받았고 언제 이 기능이 가능한지 궁금해하는 사람들이 많았습니다. 최근의 사용자는 업데이트가 가능하고 모든 것이 반응형으로 잘 동작하는 실시간 기능에 대한 요구가 높습니다. 하지만 앱에서 실시간 동기화 기능을 구현하는 것은 쉬운 일이 아닙니다. UI를 직접 데이터에 연결할 수 있어야 하고 업데이트도 돼야 하죠. 우리 플랫폼을 사용한다면 거의 코드를 적지 않고도 이런 기능을 아주 쉽게 사용할 수 있습니다.

모든 객체를 만들고 UI에 연결하면 작동하는 반응형 설정을 원하시나요? 제 원래 비전에 따르면 여기에 협업 기능도 더해집니다. 모든 사람들이 스마트기기를 갖고 있으니, 같이 협업할 수 있도록 돕고 싶습니다. 모든 앱은 협업이 가능해야 합니다. 사람들이 단순히 고양이 사진만을 공유할 수 있도록 하는 것만이 아니라, 사람들이 뭔가 만들고 할 수 있도록 돕고 싶습니다. 온라인과 오프라인에 관계없이 유연하고 매끄러운 경험을 할 수 있길 바랍니다. 이것이 저희의 비전이자, 사용자들이 바라는 것입니다.

Realm 모바일 플랫폼은 데이터베이스와 대응관계에 있습니다. 왜냐면 실제 데이터베이스가 기기에 있으면 실제로 오프라인으로만 사용할 수 있기 때문입니다. 아니면 데이터베이스 로딩에 실패하고 사용자 경험이 저하되겠죠. 데이터베이스가 단지 웹페이지라면 이 문제가 해결됩니다. 디스크에 있는 파일 경로로 데이터베이스를 여는 대신 URL로 열면 되죠. shared Realm을 하나, 혹은 열개, 몇 백개라도 열 수 있습니다. 같은 URL을 연 사람이라면 같은 시간에 같은 데이터를 실시간으로 얻게 되죠. 간단한 컨셉이지만 실제로 작업해보면 놀라운 효과를 냅니다.

핵심 아이디어는 Realm 데이터베이스가 실제 오브젝트 데이터베이스이므로 본래 오프라인 퍼스트라는데서 나옵니다. 즉, 일관성없는 데이터를 앞 뒤로 복사하는 OM 레이어를 가진 SQL 데이터베이스가 아닙니다. Realm 모바일 데이터베이스는 관계형의 실제 데이터베이스이므로 모든 것에 대한 링크를 가질 수 있습니다. 또 반응형 작업을 할 수 있는 체인 노티피케이션도 있습니다. 이제 네트워크 처리를 완전히 추상화 할 수 있습니다. 네트워킹을 고려하지 않고도 URL의 Realm을 열 수 있으며, 같은 Realm을 연 사람들에게 자연스럽게 동기화됩니다.

introducing-RMP-object-server

데이터베이스와 네트워크 양 측에서 여러분이 정말 필요로 하는 다른 멋진 기능으로는 암호화가 있습니다. 실시간 동기화를 수행하고 이벤트 핸들링 기능이 있으므로 서버에서 코드를 실행한 후 변경 사항을 바로 확인할 수 있습니다.

물론 진정한 핵심은 자동 충돌 해소에 있습니다. 즉, 변경 사항을 조정할 수 있다는 점입니다. 수동으로 충돌 해소를 하지 않고 자동으로 해야 하는 이유는 뭘까요? 수동으로 처리할 경우 작업이 멈출 수밖에 없으므로 절대로 실시간이 될 수 없기 때문입니다. 실시간 속도로 작업을 하고 싶다면 자동이어야 합니다.

실제로 사용 중에도 스키마를 변경할 수 있고, 디바이스에 데이터를 넣을 수 있으며, 이벤트 프레임을 사용해서 현존하는 인프라스트럭처에 도입할 수도 있습니다. 이 디바이스들이 모두 서버에 연결돼 있다고 가정해 볼까요?

서버는 자동 충돌 해소가 동작하도록 하는 동기화 엔진을 갖고 있습니다. 또한 서버에서 코드를 돌릴 수 있는 이벤트 프레임워크도 있죠. 당연히 대시보드가 있어서 모든 상황을 확인할 수 있습니다. 인증, 엑세스 컨트롤과 Realm도 있습니다. 각각의 디바이스는 고유한 Realm을 갖고 있으며, 모든 기기간에 공유되는 Realm도 있습니다. 원하는 수만큼 Realm을 가질 수 있죠. 스케일 업이 가능하므로 백만 개 넘게도 만들 수 있어서 단지 이들 사이에 데이터를 퍼뜨리기만 하면 됩니다. 또한 다른 서버에 연결할 수도 있으므로 백엔드 데이터베이스나 API가 있다면 이들에 연결하는 커넥터를 만들어서 사용하는 인프라스트럭쳐에 통합할 수도 있습니다.

introducing-RMP-how-it-works

라이브 오브젝트 (11:09)

이 모든 것을 가능하게 하는 핵심 아이디어는 모든 것이 객체라는 것입니다. 또한 이들 객체는 라이브 오브젝트이죠. Realm을 이미 사용하는 분이라면 멀티 스레드를 생각하면 이해가 쉬울 겁니다. 다수의 스레드에서 Realm을 변경하더라도 안전하게 사용할 수 있고, 다른 스레드에서도 그 변화 상황이 반영됩니다. 여기서 한 걸음 더 나아가서 네트워크에서도 마찬가지로 동작하게 했습니다. 다수의 디바이스에서 객체를 업데이트하더라도 항상 같은 객체일 수 있죠. 이런 변화하는 객체를 라이브 오브젝트라고 합니다. 객체가 바로 데이터 모델이므로 이를 통해 사람이 쉽게 생각할 수 있는 모델이 됩니다. 따라서 앱을 개발하거나 유지하는게 훨씬 쉬워지죠. 즉 평소에 사용하는 것과 정확히 동일한 문법으로 객체를 정의할 수 있습니다.

이런 객체는 다른 일반 객체들처럼 만들어지지만 갑자기 많은 힘을 갖게 됩니다. 트랜잭션을 하거나 쿼리를 할 수 있고 저장도 할 수 있는 이 모든 기능들이 무료로 제공됩니다. 원할히 작동하는 기능들을 가지며, 데이터베이스이자 옵저버블입니다. 앱을 개발하면서 원하는 것은 무엇이든 만들 수 있습니다!

introducing-RMP-features

Realm 모바일 플랫폼이 드디어 사용 가능합니다. 여기서 다운로드할 수 있습니다. 개발자들에게는 완전히 무료고, 고객의 하드웨어에서 운영할 수 있으며, 원하는 것은 무엇이든 개발할 수 있습니다.

상업용 제품도 있습니다. 기업의 요구에 맞춰 고객 백엔드에 보다 통합적이고 서버 사이드를 더 많이 핸들링할 수 있는 기능이 추가되며 인증을 커스터마이즈할 수 있습니다. 하지만 무료 버전도 여전히 강력합니다. 아무 제약 없이 전체 앱을 개발할 수 있으며, 어떤 개발에도, 원하는 만큼 많이, 오랫동안 사용할 수 있습니다.


Alexander Stigsen

Nokia의 시스템 엔지니어 출신인 Alexander Stigsen은 Realm의 CEO이자 공동 창립자입니다. Realm 모바일 데이터베이스는 iOS와 안드로이드를 위한 데이터베이스로, 앱 개발자들이 빠르고 멋진 앱을 단시간 내에 개발할 수 있도록 합니다. Realm은 샌프란시스코에 위치한 YCombinator 스타트업으로 Khosla Ventures, Scale VP, Andreessen Horowitz, Greylock 등의 투자를 받았습니다.

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