Realm Blog

Realm 모바일 플랫폼을 소개합니다: 실시간으로 동기화하는 오픈소스 데이터베이스

Realm을 처음 런칭한 2014년도 당시의 저희 목표는 SQLite와 Core data 대신 사용할 수 있는 강력한 기능의 데이터베이스를 제공하여 모바일 개발자들이 더 나은 앱을 보다 빠르게 개발하도록 돕는 것이었습니다. 2년 반이 지난 지금, 수십만 명 이상의 개발자가 실제로 Realm을 사용하고 있으며, Realm을 사용하는 앱은 전세계적으로 수백만명 이상의 개발자가 실제 사용하고 있습니다. Realm이 이처럼 성공할 수 있었던 것은 많은 개발자 커뮤니티에서 저희 제품을 채택하고 지원하며 피드백을 준 덕분입니다. 저희는 이에 깊이 감사하는 마음으로 더 나은 제품을 개발하고자 노력하고 있습니다.

오늘, 저희는 iOS와 안드로이드 클라이언트 부분의 데이터베이스 오픈소스인 Realm 데이터베이스을 서버 부분의 신기술과 통합한 Realm 모바일 플랫폼(RMP)을 공개합니다. Realm 모바일 플랫폼은 실시간 동기화와 충돌 해소, 리액티브 이벤트 핸들링 등 다양한 서버사이드 기능을 지원합니다. RMP를 사용하면 실시간 협업이나 메시지, 오프라인 중심의 기능 등 모바일 개발자들이 앱을 개발할 때 어려움을 겪는 기능을 훨씬 쉽게 개발할 수 있습니다.

 

오늘 선보이는 새로운 플랫폼은 베타 버전으로, 두 가지 에디션으로 제공됩니다. 개발자 에디션은 취미로의 개발부터 작은 상용 규모의 앱까지의 유스 케이스에 사용할 수 있으며 평생 무료로 제공됩니다. 기업 에디션은 시간 제한이 있는 트라이얼 사용이 가능하며, 개발 규모가 큰 유스 케이스에 필요한 모든 것을 지원합니다. 현재 RMP는 Java, Objective-C, Swift를 지원하며, React Native와 Xamarin은 아직 준비 중입니다.

또 다른 소식도 있습니다. 바로 Realm Core의 오픈 소스 공개입니다. 이로써 저희 Realm 모바일 데이터베이스는 완전히 오픈 소스화 됩니다. 소스 저장소는 이곳에서 확인하실 수 있습니다. 앞서 소개한 새 플랫폼을 구성하는 요소이자 모바일 개발자를 위한 독립적인 데이터베이스 옵션을 제공하는 Realm 모바일 데이터베이스는 저희의 핵심 제품입니다. 따라서 Realm Java, Realm Objective-C, Realm React Native, Realm Swift, Realm Xamarin의 전담 개발 팀이 지속적으로 제품을 유지 보수하고 개선해나갈 예정입니다.

The Realm Mobile Platform

다양한 플랫폼 어디서나 같은 객체를 사용

Realm을 오래 사용한 개발자도 Realm의 핵심적인 차별 포인트가 core 레벨의 내장 오브젝트 데이터베이스라는 점을 아직 모를 수 있습니다. 사실 개발자들이 Realm의 장점으로 꼽는 사용의 간편함과 속도는 이러한 특징에서 나옵니다. Realm을 사용하면 객체 관계를 복잡하게 매핑하려고 씨름하지 않아도 됩니다. 오직 오브젝트만을 사용하므로, 데이터베이스 자체를 데이터 모델로 활용할 수 있습니다.

저희는 이러한 관점의 디자인 철학을 새 오브젝트 서버에 담았습니다. Realm 플랫폼의 마법 같은 기능은 저희가 “라이브 오브젝트”라고 명명한 오브젝트에서부터 시작됩니다. 라이브 오브젝트란 서버의 데이터 오브젝트와 온전히 동기화되는 것이 보장되는 기기의 데이터 오브젝트를 뜻합니다. RMP에서는 단 한 줄의 네트워크 연결 코드 없이도 동기화가 자동적이며 연속적으로 이뤄집니다. 또한 전체 오브젝트가 아닌 변경 내용만을 전송하므로 매우 효율적이기까지 합니다. Realm 플랫폼은 충돌 해소 기능 역시 제공하므로, 두 군데 이상에서 라이브 오브젝트를 경쟁적으로 변화하더라도 미리 정해둔 기본 규칙에 따라 자동적으로 충돌 해결이 가능합니다. 대부분의 유스 케이스를 이 기본 규칙으로 커버할 수 있지만, 필요한 경우 충돌 해소 규칙을 직접 원하는 규칙으로 구현 할 수도 있습니다.

Realm을 사용하면 네트워크에 대한 고민을 시작할 필요조차 없습니다. 단지 라이브 오브젝트를 사용해서 앱을 개발하기만 하면 됩니다. 즉, 개발하기 까다로운 실시간 협업이나 메시징 등의 기능을 정말 쉽게 개발할 수 있습니다. 예를 들어 각각 다른 기기를 사용하는 사용자들이 한 화이트보드에서 협업하는 기능을 생각해 보겠습니다. 해당 기능 구현 중 가장 어려운 부분은 변화가 일어날 때 각각의 사용자 UI에 즉각적으로 반영되도록 하는 것입니다. 또한 사용자들이 동시에 같은 영역을 그리거나 지움으로써 생기는 충돌을 잘 해결하는 것도 어렵습니다. Realm 플랫폼을 사용하면 이런 문제를 쉽게 해결할 수 있습니다.

Realm 모바일 플랫폼으로 오프라인 중심 UX 구현하기

Realm 모바일 플랫폼은 인터넷 연결이 끊기더라도 매끄러운 사용자 경험을 제공해야 하는 오프라인 중심 앱을 개발할 때도 유용합니다. 기본적으로는 효율적인 기기 내장 데이터베이스인 Realm 모바일 데이터베이스를 사용하는 것만으로도 인터넷 연결이 끊겼을 때 좋은 사용자 경험을 유지하는데 도움이 됩니다.

그러나 Realm 데이터베이스와 오브젝트 서버를 아우르는 전체 Realm 플랫폼을 사용할 경우 효과가 극대화됩니다. 먼저 백그라운드에서 구동되는 양방향 자동 동기화 기능이 있으므로, 연결이 끊기기 직전까지 기기의 데이터 오브젝트는 최신 상태가 보장됩니다. 연결이 복구되면 다시 자동 동기화가 시작되며, 중간에 발생할 수 있는 충돌 역시 자동적으로 해결되므로 라이브 오브젝트는 다시 최신 상태가 보장됩니다. 따라서 사용자는 아무 일도 없던 것처럼 작업을 계속할 수 있습니다.

이벤트 핸들링

Realm 플랫폼의 기업 버전은 또 다른 핵심 기능인 서버 부분 이벤트 핸들링 프레임워크를 제공합니다. 이는 오브젝트가 바뀔 때마다 서버 부분 로직을 쉽게 발동하도록 하는 기능입니다. 이 프레임워크가 기기 쪽에서 발생한 오브젝트의 변화를 감지하도록 설정하고 이에 반응하는 서버 부분의 코드를 즉각적으로 실행할 수 있습니다. 만약 사용자가 주문 양식을 작성하는 도중에 쿠폰 코드를 입력한다면, 기기 부분의 쿠폰 오브젝트에 변화가 발생하고, 이는 바로 서버에 동기화됩니다. 이런 특정 변화가 이벤트 핸들링 프레임워크로 작용해서 유효한 코드인지 서버 부분 쿠폰 오브젝트에서 확인하는 코드의 트리거가 될 수 있습니다. 이 응답으로 다시 기기 부분의 쿠폰 오브젝트가 동기화되면서 UI를 갱신하는 알림이 작동할 수 있습니다.

Event handling

기존 API와 인프라스트럭쳐를 통합하는 용도로 이벤트 핸들링을 사용할 수도 있습니다. 즉, Realm 오브젝트 서버를 API 브릿지나 모바일화를 위한 미들웨어로 사용할 수 있습니다. 또한 각 특정 트리거마다 독립적인 기능을 구현해서 서버리스 원칙에 맞는 앱을 디자인할 수도 있습니다.

오늘 바로 써보실 수 있습니다

Realm 모바일 플랫폼은 두 가지 버전으로 제공됩니다. 개발자 에디션은 무료이며 베타 버전 사용이 가능합니다. 시작하기 페이지에서 쉽게 사용을 시작해 보세요. 피드백은 언제든 환영입니다. 기업 에디션은 이벤트 핸들링 프레임워크와 쉬운 통합 등 여러 핵심 기능을 포함합니다. 현재 클로즈 베타 프로그램 중이며, 간단한 양식을 입력하시면 대기 목록에 추가하여 준비가 되면 알려드리겠습니다.


Realm Team

Realm의 미션은 더 나은 앱을 빠르게 개발할 수 있도록 돕는 것입니다. 이를 위해 저희는 개발자들이 실시간 협업, 가상 현실, 라이브 데이터 동기화, 오프라인 경험, 메시징 등 정교하고 강력한 기능을 쉽게 개발할 수 있도록 하는 개발 도구와 플랫폼을 제공하고 있습니다.

저희는 모바일 인터넷이 수많은 사용자와 보다 많은 디바이스가 속한 개방형 네트워크와 이들 간의 실시간 상호 작용으로 진화할 것이라고 믿으며, 개발자가 이같은 방향으로 발전할 수 있도록 돕기 위해 저희 제품들을 개발하고 있습니다.

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