Hi hackers,
I am currently building a new product for developers, bootstrapped, solopreneurs and indie hackers. I am working on reducing the time, pain, complexity and cost of getting a SaaS solution out of the door. And I am looking for some insights here. (will be announcing soon in IH)
I am asking two questions in one here.
Where do you deploy your Saas projects (Backend + Frontend)?
Ex: AWS, Heroku, Azure, Digital Ocean,... Etc.
How do you deploy your saas projects?
Here I am more interested in knowing about the DevOps part.
Do you use CI/CD or do you push manually?
Do you use Docker. Kubernetes, Serverless, AWS Beanstalk, GCP App Engin... Simple server, own load balencers... Etc
Thank you very much in advance for all your feedback.
Gitlab is where I host my repository and use CI/CD. I have also used Bitbucket in the past and it has worked well for me.
For hosting, I used to use Google, but switched to Digital Ocean. For indie hackers, I really think Digital Ocean hits a sweet spot by providing the right set of options without an overly complex UI. I've used AWS in the past but I find it overly complex and has way too many choices. Also, you can get started with a $5/mo droplet on Digital Ocean to test your idea and then scale to a more expensive option as needed.
I think you can start your idea simply, but once you start getting some traffic, really think about containerizing it. It will make it much easier to do repeatable deployments. Kubernetes is great if you can get over the initial learning curve.
Lastly, I've had my eye out on this company: https://render.com/. They seems like a nice alternative for indie hackers as well.
Thanks for the Render mention (I'm the founder). Our cloud is built for indie hackers who don't want to manage servers/VMs/droplets/SSL/CD and all the other cruft that goes into hosting even the simplest of apps.
This site is also running on Render!
It seems really nice. How much time do you reckon it would take to build a simple multi-tenant SaaS on the platform in terms of managing infrastructure? And is it easy to move my app to another provider without vendor lock-in in case it is not right for me? Another thing, will I be able to run .NET core API in docker as a Linux container? The last thing, can I have multiple environments easily and what does it cost, for example, dev, prod, and so on?
Indeed Do seems to be the most popular solution so far
SocialTracker.io runs fully on Digital Ocean. All microservices are containerized using Docker.
For the deployment, I've written a script that does everything for me (fetch the latest code, restart the services, ...) which I manually trigger to deploy. It's nothing fancy, but it does the job well for now and was easy to set up.
Thank you very much for your answers. It seems that Digital Ocean is quite popular among the community.
For your project do you use Kubernetes or any other container orchestration tool?
I like the fact that DO has straight-forward, predictable pricing. And as @xerxes mentioned, their droplets start at $5/mo which is very reasonable when beginning a new project.
I'm currently not using any orchestration tools. Kubernetes is nice when it's fully set up, but I don't really need the extra features right now (autoscaling, rolling updates, ...). But if SocialTracker continues to grow, it's the next logical step for me to take.
Apart from the services already mentioned here, I guess the following can be good choices depending upon an indiehacker's needs.
https://render.com
https://unubo.com
https://backendless.com
Because I "lost" a whole weekend trying figure out how I can containerize my project with Docker, I've decided to stay with the stack I used before.
https://abrocket.io runs on heroku. For the mongoDB database I am using MongoDB Atlas, which is also super easy and fast to setup and manage.
For the website I am using Netlify for the same reasons – super easy to setup, fast and reliable deploying.
Imo its always better to have everything under control and to manage the hosting stuff by yourself, but as a solopreneur your time is the most valuable thing you can spent . I don't want waste it.
I use Netlify for serverless websites and Firebase for DB and serverless API. Zero server maintenance.
Me too! Netlify Auto deploy from github, and firebase Firestore for the backend! (And some firebase cloud functions as needed)
This comment was deleted 3 years ago.
https://www.bankpayments.net runs on Heroku but thinking of trying out Render - We need some private services (i.e. only visible to our internal services without an internet facing http endpoint) but Heroku only offers that on their enterprise tier. Render offers than on their normal tiers. So we'll try that out the in a few weeks. Database is MongoDb Atlas.
I am mostly using Digital Ocean with Dokku for all my frontend and backend apps.
Just published an article how I deploy my static SPAs: https://medium.com/@jascha.burmeister/build-and-deploy-static-vue-react-spa-on-dokku-bafc3d36301f
thank you very much for the link will look into it:)
It's the best/easiest (once up and running) stack I've used so far and is cost effective based on current usage.
100% AWS I see. And no servers to manage.
I would have a follow up question regarding your setup and how do you handle some of the SaaS most common functionality if that is ok to ask?
Ask away! Do you have an example specifically?
so my questions are:
How do call Cognito for authentication and authorization on every call?
How do you handle tenancy in your serverless setup?
We use Cognito as an authorizer for API Gateway: https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-integrate-with-cognito.html
We separate the different user roles into user pools, and generally only one user role will access specific APIs.
It's multi-tenant so we make sure data is assigned to a particular user, and we put extra authorisation logic into the Lambdas to ensure the requesting user is authorised to this specific data set. It works well so far.
Netlify for the front end, Digital Ocean droplet for the backend.
After the great interest shown by the IH community, I created a proper Typeform to collect all your answers and present them in IH as an article
Please fill out the survey and share it around
https://zakardo.typeform.com/to/Gp82Uz
Thnx to everyone who has been active in this post. I see that there is quite some interest in sharing the tech we use to get our products out to the customer. I am currently preparing a survey that I will post in a new post to collect as much info from the IH community as I can and will be sharing my findings ofc
git pushdeploysThese community exchanges are gold and save everyone hours/days of independent research. Thanks all!
I use Laravel for most, if not all of my projects, so here's what I use.
I have a Digital Ocean droplet (just the $5 one) that I put all my things on. I provision and deploy my code using Laravel Forge.
As I kind of mentioned in my last answer above, I let Laravel Forge manage all of the deployments. Any commit on my
masterbranch on Github automatically gets deployed to production.I do use Travis CI for testing my code, I run those tests for every commit and for every pull request.
I use GitLab CI to deploy various Node apps with Docker on Google Kubernetes Engine. I also have a variety of small serverless functions deployed to GCP.
Kubernetes is EXTREMELY overkill though. I use it because Google gave me $20k of credit (and I kinda wanted to learn it). When that expires, I'll almost certainly move to Heroku for most things because of their awesome DX.
I've had an eye on Render.com too. It looks nice. But they don't seem to have a GitLab on-prem integration or CLI deploy.
I'm using the Azure Stack from StaticForms.
Deployment uses several Azure components:
I'm utilising Azure Devops for source code management, build and deployment. Fully automated check in to master triggers the build and deployment process.
Not currently using Docker as I'm using the Windows-based Azure App Service, but I'm looking in to it as it's required to use the Linux-based App Service, which could potentially reduce my costs substantially.
Nice. I am using Azure stack as well, however, I think it takes a lot of time to develop a SaaS with Azure. How did you implement tenancy isolation and database modeling and which authentication provider did you use?
I used ASP.NET Identity with username/password storage in a Azure SQL database. I'd prefer something more flexible, but it would probably be overkill for my use-case.
I have a shared tenant schema with a tenant id on every table and use EFCore interceptors to inject the tenant id on every query to ensure tenant isolation.
Backend: Firebase (Firestore, Auth, Storage, Hosting). APIs are super simple yet powerful and incredibly well documented. Firebase is fantastic for simplicity.
Front end: React SPA using create-react-app scripts for development and build.
Manual push. Firebase has a great CLI, it’s a simple as “firebase deploy” ... I’m trying to keep things as simple as possible for now.
Google Cloud Platform + Kubernetes. Helm is like a package manager for cluster applications. The first time I saw EventStore installed completely automatically, and my own application deployed and automatically scaled due to usage, I was enthralled.
Love this question. I'm working on 1secret.app, as well as a few other projects.
My stack of choice is Laravel (PHP) + Vue + TailwindCSS. For provisioning and deployment, the best choice for a Laravel app of this size is Laravel Forge. As far as hosting/VPS, I use Linode, but Forge works very well with DigitalOcean, AWS, Vultr, etc.
Forge is amazing for me because, first of all, it takes care of all the complexities of provisioning a server. Just point it to your Linode instance and it does all the rest, including SSL via LetsEncrypt.
My code is hosted on Gitlab or Github. The extent of my CI/CD is simply creating a hook in Forge that watches for new tags. So if I want automatic deployment, I'll just tag a commit and push the tag(s) to the repo. Forge will deploy the code automatically. And there's also the manual option whereby you click Deploy Now in Forge.
Being a solo developer on my own projects precludes the need for complex CI/CD.
For static sites I take a different approach. My philosophy of keeping costs at a bare minimum while I'm not making any money (yet) led me to host all my static sites on Netlify. Those include my blog (chasingcode.dev) which is a Jigsaw site (static-built Laravel), as well as a couple others that are built in Vue. With Netlify, deployment happens on each commit, because that's how I have it set up.
And that's about it.
My setup seems to differ from most here, as I am using Microsoft Azure for all my hosting needs. I use the managed services there as much as possible (no VM maintenance), and .NET Core is my main backend programming language (React & Vue for the frontend), so Azure is a great fit for that. The Azure portal is great and easy to use, pricing is transparent and easy to understand.
The website for #calmerge (https://www.calmerge.app/) runs on Azure Storage where it's easy to deploy a static website (one HTML file with some css/js) and use Azure CDN to have it available in datacenters around the world.
Services I am using:
+1 for Azure! I think a lot of people in the IH world ignore it because it's Microsoft. But I've found Azure to be one of the most friendly platforms for startups. I'm not sure if they still do it but BizSpark really helped us out, they gave us $150 worth of credits every month for 3 years. That really helped us out!
What do you think makes it friendly for startups? I think there are a lot of limitations and complex topics even though I am well versed in them. I wonder if it is faster to use something like render or digital ocean.
BizSpark isn't quite as generous as it used to be, but you still get a $150 credit for the first month and a number of services free for either 12 months or forever.
Nice. I am using Azure stack as well, however, I think it takes a lot of time to develop a SaaS with Azure. How did you implement tenancy isolation and database modeling and which authentication provider did you use?
I have actually moved to GCP for my application, Itsy. But am using Azure for a whole lot of other stuff. Regarding auth, I am a big fan of Auth0, and try to implement that into all my applications.
It sure is indeed. I am actually surprised by the fact that most answers went towards Digital Ocean where you do not have lots of managed services.
Correct me if I am wrong, but in your case the BE technology was quite an influence in your choice of provider?
Most of us just want to build a business. DO is simple, the price is right and it gets the job done.
Why waste time and money on Kubernetes and a labyrinth of AWS or competing services that are largely designed to lock you in when you don't even have 100k users and are very far from needing more than a single server?
Yes, I have been developing on the .NET platform for most of my working life (which spans over 20 years), so Azure is the logical choice for me. I have worked with the Google Cloud Platform a bit, and it has some very compelling services (Firebase being one of them).
When you are working on small projects in a team of one, managed services is a great way of minimizing time spent on infrastructure, therefore getting more time to work on your project. A no-brainer for me ...
I deploy to Digital Ocean, using Gitlab CI/CD. Every time I push code to the server, the tests are run. If the tests pass and it was a push (or merge) to master, it automatically deploys the front and back-end to DO and runs any needed database migrations.
The CI/CD runs in docker, but the server does not.
I use CircleCI and have it listen to the master branch of my GitHub repo.
As soon as any pull requests are merged in, it'll trigger a build and deploy it to AWS Lambda (Serverless).
Frontend I use Netlify which also listens on the master branch for changes.
This comment was deleted 6 years ago.
This comment was deleted 3 years ago.