Web, Mobile and API Development Guide
Web, Mobile and API development is a crazy maze of technological choices. While discussing technologies and various options, Non-Technical people struggle to make any sense out of these terms because these are mere words for them. This Web, Mobile and API Development Guide was first published internally and was originally intended for our budding BizDev team, so that non technical people can make some sense out of it. I think it’s about time, it is opened up for a larger audience.
Please note that this article:
- Is intentionally simplified and hence you would not find mentions of Caching, Queuing solutions or other cloud infrastructure that we so frequently use.
- Does not explain classic MVC and it focuses on API driven development
- Skips a few technological stacks and CMSes completely
First thing to note is, picking up the right set of technologies is one of the key decisions in a successful project execution. First question that we ask is, are we developing a web application, a mobile application or both web and mobile application? Our options for these platforms are listed below. Note that if we are developing both web and mobile application, our API structure remains same. While picking the technologies, we iterate over the following steps. Please note that API is also known as RESTful APIs, Backend OR API platform.
Our options for developing web applications are:
- API = (Database + End to end framework (suppressed UI) + ORM) + Front end technologies
- API = (Database + ONLY Server side technologies + ORM) + Front end technologies
- Database + ORM + End to end framework + Front End Technologies
Our options for developing mobile applications are:
- API = (Database + End to end framework (suppressed UI) + ORM) + Any Hybrid OR Native mobile technology
- API = (Database + Server side technologies + ORM) + Any Hybrid OR Native mobile technology
Front End Web Technologies
We have to pick following components.
- HTML5 is a MUST
- CSS3 is a MUST. We almost always use Bootstrap
- ReactJS with Redux
- Local Storage is optional. Our options here depend upon the platform where we are going to use it.
- SQLite (Can be used on both iOS and Android hybrid/native and can NOT be used on web)
- HTML5 Local Storage (can be used ONLY on web or hybrid applications)
- CoreData (Can be used ONLY on iOS can NOT be used on web and Android)
- HTML5 Local Storage (can be used ONLY on web or hybrid applications and NOT on native applications)
Server End Technologies
We have to pick one of these technologies.
- Java (JSP/Servlets)
End to End Frameworks
End to end framework essentially means that you have server side as well as front end view available in 1 technology. If you have to pick an end to end framework, following are your options.
- MEAN stack
- CMS (Content Management Systems)
- Magento (It is an out of the box Ecommerce Platform)
- WordPress (WooCommerce is a plugin that makes a WordPress instance act as an Ecommerce platform)
- Jersey/Dropwizard if we are developing JUST APIs in this technology
- DotNet (NOT Open Source)
- MVC 6
- MVC6 with WebAPI2 if we are developing JUST APIs in this technology
- DotNet 3.5, 4.0, 4.5
Front End Mobile Hybrid Technologies
- Ionic (with ReactJS OR AngularJS)
- Phonegap (with ReactJS or AngularJS)
- + All Front End Web Technologies
Front End Mobile Native Technologies
- Both iOS and Android
- ReactNative with Redux
- Android ONLY
- iOS ONLY
- Swift 3
- Objective C
- Cloud (supports all OS)
- Amazon (AWS includes EC2, RDS, SQS, DynamoDB, S3) (Free tiers available)
- Google Cloud (Free tiers available)
- Heroku (Free tiers are NOT available. Used MOSTLY for Rails and at times for Python)
- Microsoft Azure (Free tiers are available)
- RDBMS (Relational Database)
- SQLServer (NOT Open Source, although a tiny version called SQLExpress is available for free)
- Oracle (NOT Open Source, Need to be paid)
- NoSQL (Not Only SQL OR Non Relational Database)
- DynamoDB (NOT Open Source, Need to be paid)
ORM (Object Relationship Mapping)
Used to connect server side piece with DB. Picking up the ORM is based on the server side technology that you pick.
- Rails has Active Records
- Every PHP framework has it’s own ORM Layer
- It has its own ORM
- Entity Framework
Choice of web server is dependent on the backend technologies that you are picking.
- NodeJS has it’s own web server
- Ruby is usually deployed on Fusion Passenger with Apache OR Nginx
- PHP is usually deployed on Apache OR Nginx servers
- Python is usually deployed on Apache OR Nginx
- Java is usually deployed on Tomcat with Apache OR Jetty OR WebSphere OR JBoss
- DotNet applications are deployed ONLY on IIS
Barring IIS, all other web servers work on both Windows and Linux. IIS works ONLY on Windows.