By Sibers Mobile Team Leader
Igor Chertnekov
When we speak of “mobile apps”, we visualize little bundles of awesomeness with which we love to play, fiddle and interact with. It’s hard to believe then that behind these apps is a complex server-side architecture developed by an experienced team of mobile developers, .NET specialists, PHP or Java coders. By the end of this article, we hope you’ll be more informed about the reasons why certain mobile applications cannot exist without a server‐side component.
There’s a lot of ground to cover on this topic, but for the purpose of this article we’ll limit ourselves to answering the most important questions, such as:
- What does “server‐side” mean when it comes to mobile applications?
- When is server‐side needed, and what apps require it?
- What server types are available, and which one is the “programming language of choice” for each situation?
- How long does it take to build the server‐side part of an application?
- Server‐side as a 3rd‐party service?
- What are the limitations of mobile apps, and what are the differences between iOS and Android-based devices?
Let’s begin by imagining mobile apps like islands: they often appear completely isolated, but most of them have an underwater connection with the mainland — allowing, for example, a constant supply of fresh water. In a similar way, mobile applications need to communicate with a server in order to return complex results to the screen of your (limited — no offense) mobile device.
The server-side of a mobile application
The server‐side of a mobile app is, in short, a software program running on a remote server. The main reasons why a mobile app may need server‐side are:
- To store and ensure users’ access to common data
- To ensure interaction between devices
Generally speaking, the server‐side part of an app performs operations that require access to services, information and functionalities not available in your mobile device. Such data includes, for example, data and image processing, storage, complex calculations, parsing and synchronizing. Server‐side also enables developers to backup data, make an application more secure, and function as the central unit in a network of a number of devices with the same app installed.
Let’s say you want to share a picture with another user. Wifi networks only work within a range of about 100m; Bluetooth devices can be separated by no more than 10 meters; and direct interaction is often impossible due to internet providers’ policies. However, all of these limitations can be bypassed by an application with server‐side backend.
Server-side prevents mobile device overload
When we use server‐side technology, we can improve the performance of a mobile app by moving the most intensive calculations to the server. We’re talking memory and pure processing power: consider, for example, an application that displays a list of restaurants and cafés in your surroundings. A comprehensive database of such places could weigh up to 1500Gb — an amount of space no current mobile device can handle. However, if we move the database to the server, we can shrink the mobile application size to something around 40Mb, which is definitely more acceptable.
Updating
Imagine now a stand‐alone mobile application that enables users to discover nearby gas stations. If a new gas station becomes available, the developer has two options: either release an update for each operative system, or simply add the new information to a shared database. After synching with the server, all users will receive info about the new gas station, regardless of their app version.
Research indicates that users update their apps every six months on average — and so with information needing to be refreshed frequently, using server‐side is a no‐brainer.
When do you need server-side?
Server‐side is compulsory for the following application types:
- Apps exchanging data between devices
- Search, booking and reservation systems
- Blogging apps
- Financial tools, organizers, news and information applications, shopping, productivity, social applications
- Coupon and discount apps
- Voice‐recognition apps or apps with other advanced media functionalities
Now, what apps don’t require server‐side? Any of the following, for example:
- Single‐player games
- Editors (audio, video, text or photo)
- Calculators, converters
- eReaders
Server‐side is also recommended when you need to keep data secure, or share it/sync it across multiple devices. Typical examples are fitness, dietary or blood pressure-logging apps.
Choosing the right programming language
Before choosing a language for the server‐side, you should have a clear idea of your app’s functionalities. Each language (PHP, Java, ASP.NET, etc.) has an already‐developed set of components that can make your choice easier: for example, if you’re building an application with CMS functionalities, then server‐side should use PHP because there’s a ready-made range of solutions related to handling CMS with PHP. When dealing with big databases or serious mathematical calculations, it would be better to choose Java or ASP.NET, as these perform better when addressing these types of needs.
How long does it take to deploy server‐side?
Depending on the project, creating server‐side can be a time‐consuming task. If we’re talking about a game that stores simple leaderboards, deployment can be done rather quickly. Conversely, the server‐side for multiplayer experiences often requires many man‐hours. Banking apps are even more taxing; their server‐side might take years to build due to the various measures required for implementation in order to grant secure access.
The fundamental question you need to ask yourself is this: what is my application’s purpose? The more advanced the data operations involved, the longer server‐side deployment will usually take.
Ready‐to‐use 3rd‐party server solutions
Let’s examine the practice of 3rd‐party server‐side providers for mobile apps. The idea behind a 3rd‐party’s “universal solutions” is for you to avoid the pain of building a customized app from scratch. However, there are serious downsides: these solutions only work well if you use them as remote data storage, and flexibility is generally poor. This means no customized design and a bunch of limitations — not to mention non-requested (and potentially annoying) advertisements.
On the other hand, custom servers allow you to build anything your heart desires, with hardly any limitations except for your own app’s innovativeness.
Servers for iOS and Android: what’s the difference?
Are there different requirements for the server‐side of iOS and Android? The short answer is “yes”. For example, one of Apple’s requirements relates to video streaming bit-rate: when streaming any video from a server, a low‐def 64 Kb/s video stream for slow internet connections must be provided. However, Google does not have a similar requirement for Android. Bear in mind that each platform — including Windows Phone and Blackberry — has its own specificities, and these must be accounted for when designing an app.
***
We hope this article has broadened your understanding of why developers insist on server‐side deployment. Getting it perfect is often essential for world‐class applications: hidden from view, servers perform most of the “dirty work” on behalf of your application, promptly returning the updated results requested by the user. And at the end of the day, that’s the difference between a happy, engaged user and a frustrated (ex) customer.
Mobile Applications can be exciting and challenging and may small business owners don´t have the time to learn how to build their own App, but can see the financial advantages of developing an app for their business.
Very good information….thanks buddy
I need to build an android app for parents to log vaccine information of their child. once the vaccines are due notifications and some related reports will be send via email. can i implement that functionality without a server?
Dear Dusha, thanks for asking.
Server-side would be vital for your application in case you needed to keep significant amount of information (which isn’t your case, unless you’re planning on tracking thousands of vaccines) or to share that information between users.
One-user-app of such kind needs a server only to create backups or synchronize application’s data across several devices (i.e. smartphone and tablet). While synchronization is hardly an essential feature for your app, backups are necessary to ensure preservation of the data. The best way to do it for an Android app without implementing a server-side is probably to add a feature allowing an application to generate its custom backup files and then to upload them to a cloud-service of your choice: Dropbox, Google Drive, etc. That way user at any moment will be able to simply open that “myvaccines.backup” file in the application and restore lost data.
Email notifications are also possible without server-side, the only thing you would have to do is to adjust settings of a mail server, but that doesn’t require any development whatsoever.
You might consider not only getting notifications on email, but also on the mobile phone. It seems like you won’t even need to use push-notifications – local ones will do the job just fine, since you have all the needed info for a notification on the user’s device. Though if you decide to use push-notifications, third-party services like Pushwoosh (https://www.pushwoosh.com/) or Urban Airship (https://www.urbanairship.com/) will provide you with needed functionality and, once again, won’t require server-side.
Thank you so much. Great help for my project (Y)
hi igor, I am building an app which has to get user credentials which gets updated in a server by either my app or some other online means. How do I get these data , keeping in mind no api of server is available ,it is me who has to decide the data which I need to send or get and that would be implemented by server side team and me. can you refer me some document.
I’m not sure I fully understand your question, but if we talk about communication between client and server app in general, you’re about to write your own API.
In fact, any server endpoint exposed for communication from outside can be called an API. And if you want to get some advice on API design best practices, you may start with jsonapi.org as reference. If it seems to complex for you to begin with, I can advise you some more simple tutorials, but in this case I need to know which languages and platforms are you using for client and server apps.
— Igor
Thanks HireRussians!, your article was very informative but I have a question about what to do for two apps that will be doing the same thing on the clientside but need to connect to the same Serverside API.
I would like to build both an android and an iOS app (client side) that access a server or server side API, the apps (client side) will be retrieving updated files of specified documents and on occassion these documents will include photos or jpeg, png, bmp files. Since they are on different platforms do I need to build two different Server side API’s that access the same database of info (although my intentions are to have individual folders for each client that has downloaded the clientside app and each has their own password to access their personal folder). Or can they both access the same server side API?
Hello, James! We are glad that our blogpost was helpful to you!
Regarding your question, there is no need for creating two APIs. One would be enough for both applications. Even if you need to provide slightly different data to your iPhone and Android apps (for example, different media stream formats or photos with different resolutions) it can be handled by a single server API anyway, distinguishing device types by, for example, different request headers or even plain request parameters.
hi, i want to build an IM app like whatsapp, do i need server-side? and please can you explain to me as layman, is server-side a device that has huge memory? and what capacity is needed for an IM app? i shall be very glad to see your reply soon. thank you for the article.
Hello, Moses! Thanks for your question!
Indeed, you can say, that “device that has memory” is a necessary part of server-side (it can be an actual machine standing in your room or a virtual server you rent from, for example, Amazon), but the main part of it is a software program that works on the server and interacts with the mobile application.
Capacity of the needed server depends on the number of the users and the type of content users exchange in your IM.
If you are going to operate with text messages only and stay within the range of thousands of users, then a basic server with characteristics along the lines of 2GB Memory, 2 Core Processor, 40GB SSD Disk, 3TB Transfer will do. For the start, you can even use ready-to-go solutions like Quickblox or TokBox.
If you intend to create a functionality of exchanging “heavy” content like video, then, of course, your server should have a much bigger capacity.
Thanks for your reply, HireRussians,
Is there a website or particular material that you would recommend? …I intend on using a windows server and putting the server side app on it. I am somewhat of a novice at developing an app like this but want to know the best resources for me to use. Your recommendations would be greatly appreciated!.
Regards,
James
Hello, James!
Considering that you intend to use Windows Server and create two applications for different platforms, we can assume that you’re planning to use Microsoft-owned Xamarin technology. If our assumption is wrong and you’re not familiar with it, then we strongly recommend you to check it out! You can read a brief overview of pros and cons of using Xamarin vs native development in our article here.
Speaking of resources, according to our developers there is nothing better than official guides and manuals, where questions about server-side development are covered pretty well. Also the forums have answers to the most frequent questions and community there is extremely helpful.
Here are some links for you to start:
http://www.asp.net/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute-routing — Microsoft guide on creating REST API
https://developer.xamarin.com/guides/xamarin-forms/web-services/consuming/rest/ — Xamarin guide on communication between the app and web service
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/URLLoadingSystem/Articles/UsingNSURLSession.html — Apple guide on data exchange via HTTP
https://developer.android.com/training/basics/network-ops/index.html — Android guide on performing network operations
Creating mobile applications with server-side is a bit trickier than usual ones, but there is nothing that self-education and some practice can’t beat. We wish you the best of luck!
[…] What is The “Server‐side” of Mobile Applications, and Why Do I Need … […]
thank you very much. please i want to know if an IM app (texts and videos) can work without cloud server. thank u.