Stitching Together A Saas Of SaaS (And Never Owning A Single Server)
In the late 90’s and early 2000’s, I spent a lot of time working with IT / operations departments to get servers procured, setup, configured and running the web apps that I was building. This was a large part of my job, honestly. There were network configurations to consider, firewalls and DMZs, mail services to set up, database servers, web servers, middle-tier app services, and so many other things that had to be in place. It took a lot of coordination and effort and I typically spent several weeks per project to get everything working correctly, with constant maintenance and support throughout the life of the system. I had to know about server configurations. I had to know about server hardware. I had to know about network topologies. I had to know a lot of things that were not directly related to writing code because these were things that directly affected my teams’ ability to write and deploy apps.
Somewhere in the last 5 or 10 years, though, the world of software development IT related services has shifted. We as software developers seem to have moved from a tight integration with the IT and operations world, to viewing them as a service to consume.
The Explosion Of *aaS
In many cases – as with small startups and side projects, and even in growing apps and services – we have moved almost entirely to a service based world. This is a world where nearly anyone that can write code can also publish a live app that consumes as many or more services than I had ever touched, all without owning or caring about a single server setup or network configuration.
There are more Software-as-a-Service (SaaS), Platform-as-a-Service (PaaS), Back-end-as-a-Service (BaaS), and You-Name-It-as-a-Service (WAT?) than I had ever imagined possible. This new world of services is quite amazing, really. With all of these services available, I’m able to take a process that used to consume weeks and months of my life, every year, and boil it down to minutes for signing up, creating an instance of whatever service, and configuring my code to use that service. And it seems that at least once a month, I hear about a new type of *aaS service – a new letter in front of that acronym allowing me to reduce the amount of code that I need to write and the amount of hardware I need to understand, even further.
From web servers, email services and database services, to file storage, content delivery networks and and user management, building a SaaS for your job or your side project has never been easier. I’ve spent a few months of part time, after-hours working on SignalLeaf, for example, and have been able to stitch together a service of services that boggles my 2006 era mind. There is simply no way I would have been able to pull off this system with the reliability, capabilities and simplicity in setup, code and deployment, only a few years ago.
A List Of *aaS To Stitch Your SaaS Together
Having spent so much time building SignalLeaf as well as other apps and services (such as WatchMeCode) in the last few years, I have a go-to list of resources and services that I use. I’m always looking for new services, of course, and trading out services that no longer fit my needs for those that do. But with a handful of services from this list (and some others, depending on your needs), you can stitch together a SaaS in next to no time and never have to think about owning or configuring a server, again.
Every SaaS, website, blog, etc. needs DNS – it’s how you get your name set up so the world can find you. I spent near 20 years with one particular company that has turned in to a spam-house of shady business practices in the last 5 or so years. Enter DNSimple – the most awesome DNS service ever, with no spammy garbage. I love the way DNSimple has various one-click service configurations. Things like Google Apps, Heroku, Github Pages, Amazon AWS, and so many more services are no longer a pain to configure. One click and you’re done. I highly recommend DNSimple for your DNS needs, and I’m migrating all of my domain names over here.
Heroku is my web server / platform of choice for most apps. What started as a simple way to deploy Ruby on Rails apps with git, has turned in to an easy way to deploy a lot of different web frameworks and service types. I deploy ruby apps and nodejs apps to Heroku quite regularly, and I’ve been using Heroku for around 4 years, I think. It hasn’t let me down yet. I know there are alternatives such as Azure and I do need to check it out some time, but at this point, I don’t have a good reason to switch from Heroku.
GitHub / Github Pages
GitHub is the defacto-standard in distributed source control and issue management for open source projects. I host all of my private repositories here for all of my business and personal things, as well. I love working with a distribute source control system and using GitHub as an online repository makes me feel all warm and fuzzy, not having to set up and host my own source control services and create backup services for it, etc.
In addition to awesome source control, I’ve built many-a-blog on top of Github’s Pages feature, including AlbacoreBuild.net and Blog.SignalLeaf.com. If you’re a paying customer, you can’t beat adding a static website built with Jekyll / Octopress, for no extra charge. Once again, DNSimple comes to the rescue here when configuring the DNS/URL for the site, too.
Amazon offers far more services than I could list, at this point. If you haven’t checked in to AWS, you need to. Chances are, they offer something that you need. For my current projects, I’m using S3 (Simple Storage Services) to host podcast audio files on SignalLeaf. The ability to store file securely, and have them distributed via Amazon’s infrastructure ensure SignalLeaf is never the bottleneck for downloads. Even better, I’ll be able to silently switch downloads over to use Amazon CloudFront when I need to get a CDN in place for the files. Having a cloud service like AWS available makes it a no-brainer to get a lot services up and running quickly, and many of the *aaS services that I rely on are hosted via AWS.
Love them or hate them, Google provides some great services when you get in to the ones that let you pay. I use Google Apps to host all my email for all of my domain names, and do a few other related things. Once again, DNSimple makes this a one-click configuration.
MongoLab provides hosted MongoDB database services. This is what I’m using for SignalLeaf. It was easy to set up via Heroku AddOns, but once I did that I realized that it would have been just as easy to create my own account directly through MongoLab.com. If you’re using MongoDB and need a host, this is a good choice.
Telerik’s Everlive is a backend as a service, providing document based data storage and retrieval, email services, file storage, and more, through a RESTful API or through SDKs for various languages (which talk to the REST API). I’ve used Everlive in a handful of projects and I really like it. It provides all the core services that smaller apps need, including user management and permissions. It’s an all-in-one stop for back-end services that are typically written in to NodeJS / Ruby apps. If you’re looking at building a mobile app or a web app that doesn’t need a ton of custom logic and handling for services, you should check out Everlive. It’s one of the easiest services I’ve used to get up and running, to create a new application back-end.
Error handling and logging is a tremendously important thing in software these days. You want to be on top of any issues that your users are running in to. Using a service like RayGun or Telerik Analytics is necessary so that you can be – log your errors and get notified of them as they happen, so you can be proactive in fixing things before you start losing customers.
I’m currently using RayGun for SignalLeaf, but am keeping my eye on Telerik Analytics as it provides more than just error reporting.
There’s a high likelihood that you’re not in the business of designing and running analytics on business data and feature usage. You’re probably building an service or app that does something unrelated to this, but needs these services anyways.
In my case, I need to deliver a series of analytics reports to my SignalLeaf customers – things like RSS Subscriber count, downloads and listens for podcast episodes, etc. Keen.io fits this need perfectly for me. I ship off event data to Keen.io, and use their API to run analytics and get data back that I can display to the podcasters using SignalLeaf.
When it comes to understanding which parts of your application are being used and how often, though, Telerik Analytics is pretty darn amazing. While Keen.io and Telerik Analytics do have a very similar overview in capturing event data and reporting analytics, Telerik’s setup is meant to be a back-end admin feature. A the time of writing this, it doesn’t provide report data that you can show to your users through an API. Instead, it is focused on capturing usage information for your apps so that you can decide which features need to go, which need to stay, which need to be modified or streamlined, etc.
Running all of your app in-process and synchronously is a great way to destroy application performance and usability, not to mention creating a giant monolithic beast of code to deal with. Using a message queue and service bus infrastructure within your code is needed when you have processes that take more time than the user needs to be aware of. I chose RabbitMQ for my service bus and queue needs, and am using CloudAMQP for my online hosting. It gives me a simple way to stand up new RabbitMQ servers, set the features and scale of those services, and run my processes out of band by publishing messages and subscribing to them, to handle them later. SignalLeaf takes advantage of this to track and report usage, RSS subscribers, and more. Like a lot of other services I use, it is hosted through Amazon AWS – I have more confidence in services hosted on AWS, honestly, because I know how easy it is to do amazing things with AWS.
MailChimp is an amazing service for maintaining a mailing list. I use it for all my mailing lists at this point. If you’re building a service, blogging, or trying to build an audience of any kind, you should have a mailing list. It will be your most valuable asset as you release new products and services.
From the same company that built MailChimp, Mandrill is an email sending service. No more worries about your email server turning in to a relay for spam. No more blacklists, whitelists and fear of being blacklisted. No more configuring arcane mail services on a linux box. Mail services were my nightmare in apps that I built and deployed way back when. Mandrill makes my life easy. I can set up an email service and send mail from my apps with ease, now. All of the email that comes from SignalLeaf goes through Mandrill.
The easiest way to set up payments of any kind, IMO. I created subscription services for SignalLeaf and had them up and running in only a few hours. I also accept individual payments for screencast episodes at WatchMeCode using Stripe. Stripe will transfer money directly in to your bank account when you receive payment from customers.
For sales of digital goods, I found GetDPD to be extremely useful and easy to set up. It currently runs WatchMeCode’s shopping cart and handles all of the delivery of digital goods, billing, coupons and more. I’ve been using this for WatchMeCode for some time now. Honestly, I might use Amazon S3 + Stripe for this if I were to rebuild, but I have everything running so smoothly with GetDPD that I don’t want to change it. It was easy to set up and required no knowledge of writing code to get things sold. If you’re starting out with digital sales, definitely look at DPD.
If you want to self-publish an ebook, you won’t do better than Leanpub. I buy a lot of books through Leanpub and I’ve written 2 books through Leanpub and thoroughly enjoy the experience. Similar to DPD, Leanpub will handle everything for you, except writing the book. They’ll produce the PDF/mobi/epub files, handle sales, deliver the content to customers and deposit money in to your account. You can’t make ebook writing and sales any easier than this.
My go-to for comments on any blog or website that I run, including this one! Drop me a line below and see just how easy it is to work within the Disqus comment system.
But Wait! There’s More!
The ability to build and deploy a SaaS has never been easier. You don’t need to worry about building and configuring infrastructure anymore. You don’t need to have a handful of network certifications to get your services online. You don’t need to be both a developer and an IT / operations expert. You can build your service, your app, your product, your whatever, and get it online and available for others to use without having to own or configure a single server.
I’ve only touched on the tip of the iceberg for services that are available, these days. These are the services I’m using, though, and the ones that I highly recommend. What other services are you using to build your apps, products and SaaS? Drop a comment below and let me know!