Building a mobile application doesn’t have to be an uphill job that consumes loads of time and resources. There are many different mobile-oriented solutions which facilitate development. One particular toolkit has gained popularity really quickly. It provides a strictly mobile-oriented experience and comes from one of the most respected brands in the mobile development community. It’s called Realm Mobile Platform.
The Realm Mobile Platform is both a client-side and server-side toolkit which aims to simplify the process of mobile application development. On the client side it is based on one of the best known and most widely used data storage solutions in the industry - the Realm Mobile Database.
The Realm Mobile Database is a database engine based on realms, lightweight object containers stored in this case both on the client and server side. Such realms can be created, read, updated, deleted, but also filtered, interconnected and persisted. Realm Mobile Database extends its capabilities by adding a Realm Object Server, a server-side application bringing a real-time collaboration environment to the client side.
Requirements towards mobile applications have changed over past couple of years. With the rapid growth of the mobile market, modern applications must be not only beautiful, friendly and functional, but also offline oriented, real-time and reactive. But what does it mean exactly?
The Realm Mobile Platform helps users by providing an offline-first experience. It works on a local data store which is synchronized with a remote data store provided by the Realm Object Server. Since it targets the local data store first, all queries can be performed even if the application is not currently connected to the Internet. Same thing goes with user input, since all the data is written to the local data store first and later synchronized with the remote one.
Synchronization is performed automatically, periodically and frequently to make sure that the data is never lost. If the sync cannot be performed at a given time, it will be automatically performed at the first possible occasion with all the data being persisted on the local data store. And aside of that, it comes with a conflict solving algorithm which makes sure that the synchronized data and data displayed to the user always represents the desired state.
The Realm Mobile Platform also brings real time communication to the client. Thanks to the WebSocket-based technology any stack changes made by someone else to the remote data store are immediately transferred to user devices just to make sure that the content is always up to date. The whole process is rapid fast and aims to provide the best possible user experience.
It is also reactive, which means that the current state of data is always represented on the screen of the device. All the information presented by the user is no longer based on the current state of the UI, but on the current state of the data set itself. In pair with real time synchronization it works in a very convenient way - since the data is always up to date, it’s no longer necessary to refresh the user interface manually.
The Realm Mobile Platform takes the security matter very seriously. Thanks to various authentication mechanisms (Facebook, Google, login/password or third party) users identity is always verified and with the integrated access control mechanism it can be easily described which resources in your system can be accessed by the given user.
How does it help the business?
In order to build a mobile application successfully, it requires not only financial resources, but also other resources like manpower and time. The Realm Mobile Platform addresses many problems encountered daily by mobile application developers and solves them by providing an out-of-the-box development environment and a scheme-based data handling engine which can be a great fit for many use cases. It can be perceived as an alternative to dedicated backend solutions and allows to focus more on the mobile application development than on common problems with server-side logic, encryption, scalability or backing up your data.
The Realm Mobile Platform, unlike mobile backend as a service solutions, is meant to be hosted entirely on-premises. That allows companies and organizations using this solution to have more control over the data. It can also be a controllable, public-cloud based solution if necessary, since it gives you the ability to be deployed to such external hosting services like AWS and more flexibility in terms of scalability and replicability of your resources. The Realm Object Server also provides business with a dashboard, providing additional information regarding the currently used resources and server metrics, allowing to predict and monitor current expenses or to prepare for future system upscaling more easily.
The product comes with three different price tiers, two being meant for business purposes. Enterprise Edition, the most complete solution, brings continuous backups to the customers. It also introduces Event Framework, a tool allowing the system to quickly respond to the changes made to the data set and perform additional logic by running it directly on a server. The Event Framework is also a great tool to provide integration with existing backend solutions, access their data via the Realm Object Server and connect to already existing authentication mechanisms. More information about available price tiers can be found here.
The Realm Mobile Platform simplifies many repetitive tasks and solves major problems in the process of mobile application development. It allows developers to forget about writing networking code, offline synchronization mechanisms and remote conflict resolution. Since remote database is the exact copy of the local one, objects used by both data stores are identical and there’s no need to perform additional work on object-relation mapping and serialization.
It also introduces two tier application architecture, where application connects directly to the Realm Object Server via native SDK. The Realm Mobile Platform SDK is available not only for Android and iOS, but also for the most popular cross-platform native application development tools: React Native and Xamarin.
The Realm Mobile Platform allows mobile application developers to shift focus from all the problems related to the backend directly to the app development itself. There’s no need to worry about handling offline content availability, data synchronization, real-time communication, authentication, scaling a database structure or conflict resolution. These tasks can be easily configured with a few lines of code and are included in the native SDK.
There’s also a way to easily expand an existing product with more client-side applications. The remote data store can be accessed by Realm Browser and its data structure can be exported as a ready-to-use source code for all supported development tools. All the models representing structures of the specific realms can be easily interpreted and compiled by native development environment thanks to the SDK.
There’s no such thing as a perfect product and using the Realm Mobile Platform can possibly come with a couple of disadvantages as well. A well-designed and properly build Realm platform based mobile application should not differ much in its behaviour from a similar application running on dedicated backend, so all the downsides should not be noticeable from the user’s perspective, although they still exist in terms of business and development.
First of all, it is fully mobile oriented and not meant for other purposes, at least in its current state. Basically it means that it would be very challenging to expand your application running the Realm Mobile Platform with a web based client. A schema based design can be also too restrictive in some cases - for example when storing media content. In situations like these it’s worth to reach for a similar solution like Firebase or, most preferably, build a fully dedicated backend application.
Secondly, if your organization doesn’t allow third party services to access its data it can be also really difficult to fit the Realm Mobile Platform into your requirements. Of course thanks to it’s self-hosted nature you are in control of the environment where the server-side application is hosted, but you don’t have control of the entire infrastructure. What’s happening under the hood of the server side application is still mostly up to the creator of the product.
By using any out-of-the-box backend solution you can also experience problems in the future if you’d like to move your data to dedicated backend or a different provider, to the point that the process can be literally impossible. The mobile SDK is highly integrated with mobile application’s source code, to the point that relation between these two is nearly symbiotic. Making your application fully usable again after making such a switch would require the developers to write all the networking, synchronization or object mapping code - and being free from doing that in the first place is actually the greatest benefit for using external platform. It may sound like an unlikely option, and as we wish Realm all the best, nothing unfortunately lasts forever. Facebook’s decision to shut down their similar service, Parse, was also completely unexpected and came as a shock in the mobile development industry.
As always - it depends. The Realm Mobile Platform is a great, but generic product. It’s a great choice for many collaborative applications like small mobile games or instant messengers. It can work perfectly with many different use cases and provide a flawless experience as long as you’re in control of all the things you need to be in charge of.
Yet, nothing will match your expectations better than a well-developed, reliable and scalable dedicated backend environment. A dedicated software solution is like a custom made suit. It takes more time and resources to prepare, but if you will provide all the expectations and measurements correctly, there’s nothing better than to satisfy your needs - considering the product is well made. If you can go with a dedicated server-side solution - do it and you should not be disappointed. There are many application development tools for that and technologies like Ruby on Rails or Node.js can be a perfect fit for many cases.