Hi,
I've been building out a mobile app over the last few years, where the app and the user data all lives on the device (or on the user's iCloud account). Now I want to build a backend component for that some of the data can be saved off-device as well, and then build in some components that will be useful for the app on top of that. The basic requirements are:
I haven't really built any backends before, so the tools that are required are all new to me. I've started looking into AWS services, but I'm finding AWS and their own documentation quite overwhelming, considering the number of acronyms and options they throw at you. Everything from AWS EC2, Lightsail, Amplify, AppSync, AWS Mobile Hub, Elastic Beanstalk, etc. It's hard to parse out what you really need amongst the many offerings.
What's the best way to get started with this, and what are the best resources to read / watch? Is there a clear-cut answer to what kind of solution I might need (and can get started with), or should I dig into each option, weighing tradeoffs etc? Are there other options that would fulfill these requirements and will also be easier to understand compared to AWS?
Would love some tips and/or guides that walk you through setting this up for the first time. I've been looking and haven't found anything that matches what I need.
Firebase. You’re looking for Firebase :)
I knew some of them early on and one of my friends even joined in 2014 and stayed through the acquisition. I even considered taking a job there myself!
I can't agree with this advice though. Firebase is a regularly changing tool. It can be useful for certain kinds of back-ends (though expensive to scale). You're much better off learning a bit about back-end dev. Then you'll have no fear of vendor lock-in, you'll have very cost-efficient options and if necessary, you can build your own Firebase-like tooling.
I’d venture that you know much more about this than I do but I do want to mention that vendor lock-in is important if you hit a certain scale. There’s a $500 credit for firebase through YC’s Startup school. I’d surmise that if you are spending more than $500 on firebase resources, you’ve created a product or service that can afford firebase. Coming from the perspective as having novice backend dev skills, I find it’s easier to learn to work and quickly iterate and set up dev environments in firebase functions than with docker + MongoDB + DigitalOcean.
I probably wouldn't really advise doing a deep dive into Docker if you're not familiar with it, either.
Even as a back-end novice, you can iterate very quickly after just going through an introductory book on Rails or Laravel. You'll also have the added benefit of being able to host pretty much anywhere and build whatever kind service you want. The two big plusses for Firebase were its reactivity (which used to be harder to do with popular back-end frameworks) and its integration with Google Cloud (which is a mistake for most indies IMO).
I think this thread has been helpful so I’ll just throw one last comment in :)
One of the advantages for firebase that I think is low-key huge is that every time I run into an issue, I post my problem on Stackoverflow and Doug Stevenson responds with the answer in less than ten minutes. It’s absolutely unmatched service - that dude is so helpful.
Yeah, that kind of thing can make a world of difference!
I've sometimes picked more expensive services just because the support was so great.
Thanks! I've heard about Firebase, though I was hesitant to add a major dependancy into the client app. But it might make sense. Is it easy to add services that can talk to other services using Firebase?
Yes it is easy, you just use the “serverless” functions rather than direct firestore calls. I find it easier to implement than heroku given the prebuilt “oncall” functions which allow you to check the “context” of the call automatically. So authorized routes become super super easy. I’m not an expert developer and didn’t have any issues. I have to say it’s not the fastest I’ve ever seen; but that might be due to stuff I just haven’t looked into (for example, cold starts?).
I thought blitz + next https://blitzjs.com/ looks very promising, and also Strapi https://strapi.io/
I choose things like this over Firebase cos they're open source. Despite all the benefits, I don't really like the idea of getting locked into Google
There is no clear cut way to do something. Each service has its pros and cons.
If money is your concern, I would recommend taking a look at Dokku, a self-hosted Heroku, to host your database and server apps. Digital Ocean allows you to run a VPS with Dokku in few clicks.
I am not an expert in push notifications and emails, but as far as I know there are excellent services run by AWS or other providers. You can integrate these services in your workflow to avoid managing a common use case and focus on value-added apps.
Best,
Andrew
Starting off you don't need that. Just learn how to use Digital Ocean or Linode VPSes or AWS Lightsail (which is a clone of them). Worry about everything else much later, if ever.
The problem is, you're looking at services marketed at you, much like dozens of different design shops might have their own specific front-end tooling, you're seeing back-end/infra marketed to you. But you're much better off just learning how the web, JS, CSS, Unix and relational databases work. Then you'll be in good shape to work anywhere.
I would recommend Heroku as well. I'm currently hosting my app on it with the database on Amazon RDS, the costs are not that high but I have only around 20 to 30 users a day.
I would be worried about misconfiguring something on AWS since it's very complex. I haven't ran into any problems with it yet and I've been using it for more than one year.
I hope I don't run into any big problems since I'm not an expert on any of this...
You can use Heroku's database but it's very limited on the free tier and as other said, it gets expensive as your app scales but it should be enough for testing and learning.
Also, try Firebase. I've never used but it seems very cool!
Thanks. I just looked at the estimator on Heroku, it seems like any basic business app would be $80/month or more? Does that seem right? I would guesstimate that there would be a few thousands users / month.
The first thing you need to do is figure out how to build and use the backend on your computer.
Don't bother with AWS if you're new to it. If you don't know what you're doing, you could end up with a very expensive bill and a lot of wasted time. To save face go with something simple to deploy to, like Heroku or Render.
Thank you! I've heard that Heroku gets expensive pretty quickly as well. Would that be an issue if it's a low-traffic app?
Heroku is really cheap if you don't have a lot of traffic. I'd definitely recommend it as a quick win to get up and going. Use PostgreSQL for your DB and you'll be able to move/scale/whatever easily later.
Aside: Firebase (or any PaaS) can quickly get expensive too.
This comment was deleted 6 years ago