모바일 애플리케이션 개발 및 데이터 관리와 관련하여 인터넷에는 많은 이야기가 떠돌고 있습니다. 모바일 앱용 서비스 또는 소프트웨어를 사용해야 할까요? 오늘날 거의 모든 괜찮은 앱은 사용하기 쉽고 다른 모바일 플랫폼과 기기 간에 동기화되는 빠르게 변화하는 데이터를 필요로 합니다. 저는 앱 스토어에 여러 앱을 출시한 모바일 앱 개발자로서, 이 글의 목표는 이 영역에 존재하는 다른 앱과 카우치베이스 모바일의 차이점에 대한 몇 가지 관점을 제공하는 것입니다.
카우치베이스 모바일이란?
간단히 말해, Couchbase Mobile은 다음과 같이 구성된 소프트웨어 모음입니다. 임베디드 NoSQL 데이터베이스 Android 및 iOS 모바일 애플리케이션과 함께 배포되며 로컬에 저장된 데이터를 Couchbase Server 및 기타 장치와 안전하게 동기화하는 데 사용되는 미들웨어 서비스입니다. 이 두 가지 소프트웨어는 Couchbase Lite와 Couchbase Sync Gateway라고 하며, 함께 사용하면 강력한 성능을 발휘합니다.
Couchbase Lite는 임베디드 NoSQL 데이터베이스입니다. 설치 공간이 매우 작으며 애플리케이션이 실행되는 동안(또는 백그라운드에 있는 동안) 프로세스 중에 실행됩니다. 이 처리 중인 데이터베이스는 Couchbase Lite API를 통해 또는 원하는 경우 자체 HTTP 요청을 통해 액세스할 수 있는 RESTful 웹 서비스를 노출합니다. 미들웨어인 Couchbase 동기화 게이트웨이는 장치와 서버 사이의 데이터 오케스트레이터 역할을 합니다. 데이터를 전달하고 충돌을 처리하며 개발자와 최종 사용자 모두에게 최상의 경험을 제공합니다.
카우치베이스 모바일을 사용해야 하는 이유
카우치베이스 모바일은 모바일 개발자의 삶을 매우 쉽고 스트레스 없이 만들 수 있도록 설계되었습니다. Android와 iOS에 이미 구워진 것을 사용하는 것은 훌륭하고 효과적이지만 확실히 쉽지는 않습니다. 이제 몇 가지를 비교해 보겠습니다.
카우치베이스 라이트와 SQLite 비교
SQLite로 작업해 본 사람이라면 누구나 특정 작업이 고통스러울 수 있다는 것을 알고 있습니다. SQLite 데이터베이스를 쿼리하는 것은 특별히 어렵지 않지만 애플리케이션에 새로운 데이터 요구 사항이 있어 스키마를 업그레이드해야 하는 경우, 이는 악몽으로 바뀔 수 있습니다. 고객의 디바이스에서 데이터 손실이나 손상을 일으키지 않도록 깔끔한 업그레이드 스크립트를 작성해야 할 것입니다. 절대 변경할 필요가 없는 방탄 데이터베이스 스키마를 만들었다고 생각할 수도 있지만, 노련한 개발자는 데이터가 항상 변한다는 것을 알고 있습니다.
카우치베이스 라이트는 NoSQL이며 스키마가 없는 문서를 사용하여 데이터를 저장합니다. 즉, 끊임없이 변화하는 데이터를 저장할 수 있으며 모바일 데이터베이스 업그레이드 계획에 대해 고민할 필요가 없습니다. Couchbase Lite는 ORM을 사용하지 않지만 데이터가 실제로 사용되는 방식과 가장 유사한 형태로 데이터를 저장합니다. 따라서 일반적으로 SQL 데이터를 쿼리하고, 사용하려는 객체로 구문 분석하여 사용하는 데 소요되는 시간을 절약할 수 있습니다.
그렇다면 다른 플랫폼 및 디바이스와의 데이터 동기화는 어떨까요?
카우치베이스 동기화 게이트웨이와 수동 접근 방식 비교
다른 기기 및 플랫폼과 데이터를 동기화해야 하는 경우, 처음부터 솔루션을 구축해야 하는 것이 까다로운 일이라는 것은 누구나 알고 있습니다. 충돌을 처리하고 사용자의 배터리를 소모하지 않으면서 효율적이고 안전하게 동기화하는 것은 복잡한 문제이지만, Couchbase Mobile을 사용하면 쉽게 피할 수 있습니다.
이것이 바로 Couchbase 동기화 게이트웨이의 역할입니다.
동기화 게이트웨이는 장치 또는 다른 애플리케이션 간의 데이터 복제 또는 동기화의 번거로움을 덜어줍니다. 카우치베이스 라이트의 리플리케이터를 사용하면 동기화 게이트웨이에서 데이터를 푸시하고 가져올 수 있어 진정한 오프라인 우선 환경을 제공합니다. 데이터 인증이 걱정되시나요? 동기화 게이트웨이를 사용하면 Facebook과 같은 서비스를 통해 인증하고 사용자 또는 역할에 데이터 액세스 권한을 부여하여 허용된 항목에만 액세스할 수 있습니다.
원격 MySQL 데이터베이스와 동기화해야 하는 SQLite 데이터베이스가 장치에 있다고 상상해 보세요. 푸시해야 하는 로컬 데이터나 끌어와야 하는 원격 데이터를 어떻게 확인하나요? 해당 데이터에 충돌이 발생하면 어떻게 되나요? 여러분은 어떻게 하시겠습니까? 어떤 방법을 선택하든 쉽지 않을 것입니다. Couchbase Mobile이 제공하는 몇 줄의 코드만 있으면 됩니다. Couchbase Mobile을 사용하면 최소한의 노력으로 오프라인 우선 개발을 할 수 있습니다.
오프라인 우선 경험
카우치베이스 모바일은 인터넷을 사용할 생각이 없는 것처럼 개발했다가 원활한 오프라인 사용자 경험을 확보한 후에 네트워크 기능을 추가하는 오프라인 우선 접근 방식의 모바일 애플리케이션 개발을 장려합니다. 여기서 비결은 코드가 직접 인터페이스하는 오프라인 로컬 데이터베이스를 보유함으로써 가능하다는 것입니다. 원격 데이터베이스에 요청을 보내고 느릴 수 있는 응답을 기다리지 않아도 됩니다. 대신 로컬 데이터베이스만 읽고 쓰면 됩니다. Couchbase Lite API는 가능한 경우 데이터를 가져오고 푸시하는 것에 대해 걱정하지 않습니다. 인터넷에서 읽는 것이 아니라 로컬 장치에서 읽는 것이므로 인터넷이 없어도 문제 없습니다.
카우치베이스 모바일과 데이터 서비스의 차이점
카우치베이스 모바일은 서비스가 아닙니다. 다음과 같은 서비스와 달리 Facebook의 파싱, Dropbox의 데이터스토어 API및 페이팔의 스택몹를 통해 데이터를 소유하게 됩니다. 이것이 왜 중요한가요? 방금 언급한 세 가지 데이터 서비스가 모두 서비스를 종료한다고 발표했기 때문입니다. 즉, 이러한 서비스에 시간과 리소스를 투자한 사람은 누구나 다른 서비스를 찾아야 한다는 뜻입니다. 여기에는 전체 애플리케이션 소스 코드를 변경하고, 새로운 소프트웨어나 서비스에 맞게 데이터를 조작해야 하며, 많은 비용이 소요될 수 있습니다.
데이터를 소유하면 통제권을 갖게 됩니다.
Couchbase와 같은 소프트웨어가 설치된 서버를 관리하는 것이 불편하다고 말할 수 있습니다. 실제로는 불편함이 전혀 없습니다. 아마존 웹 서비스(AWS), 마이크로소프트 애저, 그리고 다른 많은 것들를 클릭하면 Couchbase 이미지를 사용할 수 있고 바로 사용할 수 있습니다. 이미지를 배포하기만 하면 바로 사용할 수 있습니다. 데이터 안정성, 로드 밸런싱, 가동 시간이 걱정되시나요? Couchbase 노드는 몇 분 안에 클러스터링할 수 있고 클러스터링 시 데이터 복제 및 로드 밸런싱을 제공하므로 이 역시 불편하다고 생각할 필요가 없습니다. 개발자가 실제로 시스템 운영의 역할을 수행하기 위해 끝없이 시간을 소비할 필요가 없습니다.
결론
모바일용 데이터 옵션이 너무 많아서 선택하기가 어렵습니다. 그러나 서비스로서의 데이터에 대해 알고 이러한 서비스가 언제든지 종료될 수 있다는 것을 알고 있다면, 분명한 선택은 소유하고 있는 데이터여야 합니다. Couchbase Lite 및 Couchbase Sync Gateway가 포함된 Couchbase Mobile은 이 영역에서 확실한 선택입니다. 앱에서 오프라인 우선 환경을 제공하므로 사용자가 제어할 수 있는 데이터로 항상 빠르고 가용성 있는 애플리케이션을 사용할 수 있습니다.