In the .NET world, if you were to create a web application historically, you’d be developing the full stack: web pages, an API (of sorts), business logic and database.
Often in presentations, articles and blog posts, the reasoning for using a No Backend service is often outlined as:
- As a frontend developer, I know HTML, CSS & JS inside and out, I enjoy working with that stack.
- Although I can write server side code, I don’t enjoy it and it's not my main focus.
- So why not let somebody who is focused on server side dev create that code which I can then consume through an API
Why Should I Use This?
Putting myself in the shoes of a purely frontend developer, this sounds like a really good idea, it offers me the benefit of being able to host my content using a static web server in something like Harp.js, simplifying my hosting needs and allowing me to focus on creating the application/site rather than having to deal with “infrastructure”.
A downside is the fact it may cost me more than if I were to host everything myself, but since most of the services are cloud based if my application took off, I shouldn’t have any problems scaling.
Isn’t This What Mobile App Devs Already Use?
In the mobile sphere, these services are known as Mobile Backend as a Service or MBaaS and have been around a couple of years so there are lots of companies that are offering this type of functionality. The services grew out of the need for mobile apps to store information, manage user accounts, push notifications, etc. without the app developer needing to purchase/rent/host the infrastructure themselves.
What’s In A Name
Although I came across this under the name noBackend, I’ve seen other names for the same thing, recently Cody Lindley was tweeting about this subject and had this to say:
But it doesn’t stop there, one of the better resources around this type of app is A Field Guide To Static Apps where, unsurprisingly, this type of app is called a static app.
With the various different names out there for this type of application, I wonder if there will ever be a single name, leaving people in the situation of having to understand that the various names are in reality all the same thing.
Is There Anything to Worry About With this Approach?
Looking at this, there are two things I would be concerned about: security & lack of control over the platform.
My main concern is around security, in this respect mobile apps using the same/similar service are in the main no different, and couple of things that stand out for me:
- Is the communication between your site and the service using Https or is it all Http? How can you tell? Can you force it to be Htttps?
- Most of the services use an api key to identify my site to the service. This api key needs to be in my code but what is to stop somebody taking the api key for my app and creating a bot to sign up thousands of users either costing me, potentially, a lot of money or impacting my existing users?
If a 3rd party is handling all your server side functionality, then you aren’t fully in control of your application, consider:
- You are reliant on that 3rd party to be available if it's unavailable, there is nothing you can personally do to try and resolve the situation.
- As you don’t necessarily have direct access to the data you use (is it really your data anymore?) is it being backed up? Who at the service can access your data?
- What happens if the service you use happens to shut down?
On that last point, recently PayPal brought StackMob and gave users 1 month notice that they were closing it down leaving anyone using the platform to find alternative arrangements and migrate any existing data whilst of course trying to support their existing customers.
Is This the Future of Front End Development?
Just as the use of MBaaS has grown over the last few years, I wouldn’t be surprised to see noBackend to increase with more sites making use of these services especially where speed to market is a factor.
NoBackend frees the developer from the need to worry about creation of the whole server side of the application, and for some this will be the best way to get their app out there and in front of potential/paying customers. It doesn’t remove the backend entirely but changes it from a “build from scratch” exercise to “configuration only” task.
You can also tell that a subject is gaining traction when conferences devote significant time to it and the QCon conference in San Francisco (Nov 2014) is devoting an entire day to noBackend
I think any dev should keep an eye on this area to see how it evolves, the services that are offered and the companies that are in, or come into, the market.
It is just possible we are seeing the future of front end development.