2. Backend

Almost every modern technology system needs some sort of backend software.   The notable exception is a mobile, stand-alone application that runs only on the device.  Even then, most mobile only software has backends that enable updates at a bare minimum.

If we look again at our original graphic of a modern application, you will see that there are backend services that are consumed by our front end.  

These services could be any number of things, from remote storage to data for the user to extra processing to ad or video streams.   Backends are also used to gather data about usage, primarily for the purpose of evolving the app.   This data is often used to provide more targeted advertising to the user.

Hosting

Backends are typically hosted on servers of some kind that sit in a datacenter.  While it is tempting to run your own servers and datacenter, these days you are much better off using one of the major cloud providers such has Google, AWS or Azure.   The reason for this is that the overhead of maintaining infrastructure can be high and the security risks of not keeping up are very real.  These providers are all able to provide any backend systems you require for a fraction of what it would cost to do it yourself.

Choosing a backend provider seems fairly straight forward, but you will need to identify who will build your product before making such a decision.   The fundamental reason for this is that large cloud providers have a huge number of services which can significantly speed up development and reduce cost significantly.   However, taking advantage of all these services requires knowledge of how they work and their limitations.   Your development team will often have a preference and deeper familiarity to a particular service, so they will drive this decision.

Backend Stack

Your backend stack should be well matched to your hosting provider.   In general, Javascript and Node.js is the current favorite of a lot of developers.  Because Javascript is used for front-ends as well, it has a distinct advantage as it can reduce your overall team size by combining responsibilities.    Some other popular languages include Python, Ruby, Go and PHP.  PHP is the most common language used to build web apps, but it has a bad reputation. This reputation is so pervasive that some companies even feel the need to apologize for using it!  As a general rule, you should not use PHP for new development as you are likely to incur a lot of technical debt* which will be costly to fix in the future.

* See our whitepaper on Technical Debt if this is an issue you are already facing