Is AppEngine better than Node.js/MongoDB for developing mobile app backend?
-
I'm developing a mobile app with a cloud backend. basically, the API is storing and reading data from a db (including file uploads), doing geospatial searches and posting stuff to Facebook. I have most of it built and running on a micro AWS instance with Node.js/Express.js, MongoDB (free usage tier from http://mongolab.com), Google Cloud Storage for storing uploaded files and ElasticSearch for geospatial searches (free usage tier from http://searchbox.io). I got to experiment with AppEngine before while learning a bit of Go and built a mobile backend with it so I know the concepts and about vendor lock-in. Lately I experimented a bit with Cloud Endpoints and it seems that building an API can be very easy and fast, also, using AppEngine as a all-in-one solution for db, search and file storage is very appealing (and ofcourse not having to manage servers or use 3rd party services). Also, the generated client code is very easy to use and it saves a lot of trouble to build a proper API communication layer. At the moment, both Cloud Endpoints and full text search aren't supported in the Go runtime (and honestly, its too low level for building an API) so I'll have to use Python which I know very little, but I believe that I won't have hard time with my pretty simple requirements, following the tutorials for db access, etc... Would you recommend to do the switch to AppEngine/Python for my requirements (quick API development, all-in-one solution, simple client code, PaaS, no 3rd party services), ignoring the time and language parameters (I don't believe building what I already have with AppEngine will take much time and I don't see Python as a barrier..) ?
-
Answer:
In general, Stack Overflow is a better place for this kind of question (http://stackoverflow.com/). However, I will give you my opinion here: Google AppEngine is very easy to get set up and build on since there are so many vertically integrated services. It is very common for start ups, especially ex-Google founders, to launch on AppEngine because of that ease. However, every single company that I've known who was based on AppEngine has run into scale problems using them. Once you run into problems, you are trapped on the Google platform. Running your own backend (as you describe is common - Node.js on AWS) can take longer to get running and require more maintenance but can be ported to many platforms. For example, you could run the same system on your own servers if you decided to buy them or use managed hosting. However, there are scale problems here as well since you are now on the hook for managing your systems. MongoDB, for example, has well known issues with data corruption at high volume (http://pastebin.com/FD3xe6Jt). A simple summary of the pros and cons: Google AppEngine PRO Fast to get set up PRO Scaling is handled for you (in theory) PRO Rich set of integrated features CON Scale issues are common CON Locked into the Google platform CON Cost will get high if you scale DIY (Node.js on hosted servers) PRO Flexibility in choosing technologies PRO No platform lock in PRO Ability to change and evolve CON You have to manage the services yourself CON Scale issues are common CON Cost will get high if you scale You'll notice that in both cases the cost will get high if you scale. This is true for all Cloud platforms - if you get big enough the cost become prohibitive. If speed and maintenance cost are your biggest concerns I would go with AppEngine. If you know how to manage these systems already and want flexibility I would go with DIY. If you've already built something (it sounds like you have) just go with what you have and don't rebuild it somewhere else.
Sean Byrnes at Quora Visit the source
Other answers
You can have Google API and own hosting with help of http://www.appscale.com/, so you have best of both worlds. And higher cost while you scale. ;) AppScale now support only Python and Java, but next version should have both Go and PHP.
MichaÅ Pena
You can also try apiOmat (http://www.apiomat.com) . This service generates SDKs for different programming languages like Java, Python, PHP etc. and is really easy to use. You can also find different modules there for e.g. to connect with Facebook for posting, etc. With BaaS you don't need think about speed, scaling and maintenance because they do this for you.
Robert Meissner
Related Q & A:
- What can Node.js do that ASP.NET cannot?Best solution by Stack Overflow
- How can I install node.js module using phantom, instead of npm?Best solution by Stack Overflow
- how to browserify a node-js module?Best solution by Stack Overflow
- How do you install a specific version of Node.js?Best solution by Ask Ubuntu
- How to delete a line from a .txt file in node.js?Best solution by c-sharpcorner.com
Just Added Q & A:
- How many active mobile subscribers are there in China?Best solution by Quora
- How to find the right vacation?Best solution by bookit.com
- How To Make Your Own Primer?Best solution by thekrazycouponlady.com
- How do you get the domain & range?Best solution by ChaCha
- How do you open pop up blockers?Best solution by Yahoo! Answers
For every problem there is a solution! Proved by Solucija.
-
Got an issue and looking for advice?
-
Ask Solucija to search every corner of the Web for help.
-
Get workable solutions and helpful tips in a moment.
Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.