Backend Database for iOS Production Applications - ios

I'm fairly new to app development, and have no apps in the app store. However, the app that I have been working on is really progressing along.
The backend database that I have been using is Firebase, because it is so user friendly, easy to use, and easy to roll out an MVP. However, in the last couple of days I've really started hitting barriers with Firebase and how limited its querying functionality is, and how the code will become a "spaghetti" mess after a while. I'm looking for advice from some experienced programmers/developers.
Is Firebase viable for an app that depends heavily on searching? Can I couple Firebase with another service like Algolia and ElasticSearch to fix this problem? I'm concerned that if I press forward with Firebase and I eventually need to swap over to my own database that it will be pretty much impossible if I had 100,000 users. Especially factoring in the cost of such services after the app scales.
Or should I start my own backend (even though I have no experience with this at all) and move forward from there? I can learn, and don't have a problem putting forth effort in this area, but its a whole new journey for me. If this is the absolute right thing to do in order for me to have the ability to turn my app into a success story like your Uber's and AirBNB's, then I want to start out in this area and not get screwed on a transition from Firebase.
In summary, my question: If you were to start a company that could be the next Uber, where would you start your MVP? Firebase w/Elastic Search, your own custom backend, MongoDB, node.js, etc?
Thanks so much for the help and insight in advance!

Related

Doubts about technology for ios development

I want to develop a native application to ios.
I want to build an app that is a mix of Instagram and YouTube,generally.
I need to persist and get data to and from the database,store user data(images,videos,audio etc.), Allow user to edit his uploaded media ( images,videos,audio etc.).Also things such as drag and drop, GPS and image edition are added.
So far I think these are the most demanding features that app will contain.
I think about using swift for the front end, but I am still considering what language and database to go with to develop this application.
I though I should maybe go with php laravel framework RESTful api(since I know it already), combined with firebase.
Any better suggestion you might think about, and why?
Will appreciate your honest thoughts about this.
I was really putting the last hours in order to determine the right language for developing the back-end and the database. And I reckon that really node.js and mongoDB , along with Swift will make the perfect match!
node.js seems to be good for my app, as it does not really require very complex computing, and MongoDB is ideal for social networking features. These are the main reasons I am going with this stack :)
Also,about scalability, it's easier in MongoDB,rather than MySQL.

Questions regarding ios back-end programming (concept)

thank you all for reading my question~
Before asking some (2~3) questions, I will briefly explain what I am trying to do. I am trying to build a turn based multiplayer (1 vs 1) game. I have a little knowledge of Swift/IOS development, mysql, html, and jsp. I am planning to learn php since many people say combination of mysql and php is good for ios back-end programming.
Here are actual questions:
Do I need to get a droplet from places like Digital Ocean and deploy my own server? Or is it possible to use web hosting such as bluehost for this purpose?
This is the part which I have no clue about... How do I actually develop a multiplayer game? I can guess that this has something to do with tcp/ip socket programming. My experience with tcp/ip programming did not require mysql or something similar if I remember it correctly. In that vein, what's the role of some database like mysql when it comes to developing a multiplayer game? Of course it becomes handy when saving scores and achievement; however, I do not know why it is required for finding a match and establishing a connection. Wouldn't a private server needed instead for receiving and sending sockets? Does this mean I have to lease a dedicated server and setup everything by myself?
It seems like there are more than three questions... sorry for asking too many questions. I am a noob programmer and needs many advice from experts!
Is is necessary for me to deploy a web application for handling all backend stuffs? By the way, I am trying to avoid having users make an account. As a result, if I have to manage each user, maybe keeping each user's unique phone id can help me distinguish each user?
I have looked into both Google's and Apple's free game match system... It is very tempting to use them, but my friends designed game match screen and separate ranking systems. As so, I need to come up with a way to solve this conundrum. Please help me!!! Thank you all for reading my question again and help a poor soul here...

Scaling from Firebase to Firebase on private server

I'm developing an iOS app that will contain sensitive health-data. AWS seems to have several health-focused clients that work with them (and probably have a VPS with them). The learning curve seems to be pretty steep for this.
I've familiarised myself with Firebase, which I really like. My plan is to use Firebase's Google cloud option for testing the app while I'm developing it, when the preliminary mock data I gather isn't sensitive. Then, I was going to set-up a VPS or private server with a company like Rackspace (UK-based), and then use this documentation to set-up Firebase on that server.
Does that seem stupid? I'm new to this, so any suggestions would be appreciated -- I'm looking for recommendations on how to set this up, bearing in mind that I'd like to quickly test things now and then scale up (and eventually keep the data as secure as possible).

App with different portions

I am hoping that someone could help answer my question.
Problem
I am looking at developing an iOS application that compromises of smaller portions/functionalities (lets call it mini apps just for understanding better). I am looking for guidance on how I should approach this problem to ensure that there are no potential errors in the future. Just to give you a background of my problem, I will run through some of my approach.
First Approach
My initial approach was to develop and release a bunch of apps that can talk to one another. But since iOS apps can only inter-communicate with URLScheme, and which is not sufficient enough for me, I decided to revisit later and look for better solutions.
Second Approach
I also looked at making the apps have a common local database, but since iOS apps are restricted only to their sandbox, this again won't work.
Third Approach
The third approach was to have an app talk to a webService and back again to the other app.
Current Approach
So instead of having a bunch of apps installed on a device that can talk to one another, I am now looking at going with the approach of having only one master app that has different portions/functionalities.
My problem is figuring out how to properly manage my files that are specific to the different portions/functionalities/mini Apps, so that I could independently push a portion updated files to the app and not have it corrupt the other portions.
Would it be a good idea to create a subfolder in the app Document directory for the different portions of the app? Are the other approaches feasible?
I am looking for your help, approach and feedback in tackling the problem.
Thanks

Figuring out what Heroku resources I need for a give site

What is the best way to get a ballpark idea of what kind of resources an application needs if it is running on Heroku (how many dynos and what db plan you should be running)?
My non-technical friend had his site built in rails and it is currently being hosted on Linode by the shop that built the app. They aren't providing the support he was hoping for, and is interested in having me move it over to Heroku, but we are trying to get an idea of how much more that is going to cost him. I tried contacting the dev shop directly to find out what the current instance is running on, but they aren't getting back to me.
I have access to their analytics, and the current repo, so from this can I glean what kind of initial setup we are probably going to need, and if so what should I be looking for? I realize that this is very situation dependent and not an easy question to answer, but any insight would be greatly appreciated.
dyno-blitzer will help you find out how many dynos you'll need to support 1,000 users, but there are a lot of questions you need to answer in order to try and ballpark what you'll need with Heroku:
How big is the database right now? How fast is it growing?
How many users do you need to support? If you only need 5, the numbers dyno-blitzer gives you probably won't be anywhere near what you need.
How much delayed processing work is being done?
What sort of things does the app need that have to be provided through add-ons with Heroku?
Once you know these, you should be able to get a rough ballpark, but it won't be laser accurate - this will heavily depend on the app and exactly what it's doing.

Resources