I will have native iPhone and Android apps, and later a mobile web site (for other mobile platforms) all talking to a back-end that manages users, settings, video, social graphs, etc. I will also have a dynamic web site with a lot of video, pictures, and social graph administration. The web site will basically be a more featureful version of the apps on the phones. The back-end consists of video storage, transcoding, a video recommendation engine, options to share the video with your network.
My thought is that I should build a common applications services layer that exposes a RESTful api that returns JSON, and have both the apps and the web site talk to this api.
My question is should I keep the web site and the services layer both in one technology or use Java for the services layer, and Rails or Python for the web site to take advantage of their purported faster dev time. The site will have a lot of JavaScript and AJAX to support dynamic behavior. If I use Rails or Python, should they also talk REST/JSON to the services layer? In terms of deployment and scaling management, it would seem like sticking with one technology like Java for all back-end pieces might be better; but on the other hand Rails and Python promise faster development and maintenance times for the web layer. If I use Rails for the web tier, would it make sense to deploy it in JRuby within the same JVM as the services layer to have fewer moving parts to manage on the web/app server?
The site may grow to millions of users and videos. The development team are experienced at Java, with some Python, but are smart and can quickly learn other technologies.
Feel free to suggest the technology stack of your choice.
Xamarin is generally considered the best framework for developing mobile applications and is the closest to being native. Xamarin uses C# and the . Net framework to compile native code into various mobile binaries, making Xamarin apps feel like their native counterparts.
A technology stack comprises all the technologies, tools, and frameworks you will use during mobile app development. This will include programming languages, development platforms (e.g., Android), data storage, security management, and user interface design tool, among other web services.
Here are some advice based on my experience:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With