SAAS companies seem to fulfil almost every need lately; from VCS to mailing, from authentication to screen sharing, from image and video processing to caching and app hosting. Interestingly enough, a lot of these companies offer basic tiers for free, so it is becoming increasingly possible to launch a web application where most of the work is done by 3rd parties, with a minimal budget.
I started wondering recently if it would be possible to launch such an app, using as many 3rd party services as possible to fulfil the necessary functions (such as authentication and storage), with a budget of $5 to $10 USD per month.
The following is a graph representing my idea for the architecture of such an app, describing the interaction with these services. Most of these are free (except for the purchase of a domain name, Google Apps, and DigitalOcean, which have very accessible plans):
The goal of my small research was to verify if it would be possible to:
Build an SSL-enabled web application with monitoring + CDN + hosting + authentication using OpenID, striving for minimal cost while offloading as much back-end, data, and functionality to cheap or free 3rd party services.
Every 3rd party service mentioned in this graph had to fulfil the following criteria:
- Free (or very cheap)
- Longevity (has been thoroughly adopted by the market, or major companies)
- Reliable (at least 99% SLA)
This is a list of tools & services to get your new product up and running for dirt cheap:
- Domain, DNS, hosting, and caching
- Databases & Storage
- Mailbox hosting
- Pawnmail – Email hosting for free! (tried it for a year and so far it seems to work great)
- Google Apps – Mailbox functionality for your domain ($5/mailbox) in case you don’t want to set up a server
- Postfix mail server – You can host it yourself (using Postfix), but be prepared to spend a lot of time setting it up
- Mass-mailing systems
- Mailbox hosting
- Graphics and icons
- Monitoring, logging and analytics
- Google Analytics offers free tracking for website users and their actions on your site/application
Pingdom be alerted when your site goes down with a free account
- Pingdom no longer has a free account, but statuscake does!
- NewRelic offers application/server monitoring with a free plan
- AirBrake helps with error logging / notifications, it costs $35/mo so I’d say this is optional in early stages
Finally, the application itself could be built in this way:
- Back-end: Python + Flask + Tornado. Flask is a framework which allows you to generate APIs in a simple/scalable way, and it is very easy to get started. Add Tornado to handle concurrent requests. You could use the PyOIDC wrapper to handle authentication, and the rest could rely on a simple architecture (Entity – DAL – BLL – API).
- Front-end: Built with HTML5 + Bootstrap (easy way to get up and running fast), AngularJS (with controllers and services to communicate with the back-end), SASS (or LESS), and Gulp to compile/merge everything.
- Source & deployments: You could use Bitbucket with two private repositories (front-end / back-end) for free, and Capistrano to deploy to your server.
- Testing: Protractor and/or Jasmine
As easy as that!
If you have any suggestions to how I could improve this chart, or any services that would improve (or further delegate core functionality to free/cheap 3rd party solutions), please let me know in the comments!
* Note: You could use Heroku (which has a free tier) instead of DigitalOcean or Rackspace, but who doesn’t love full control over his/her server?