Starters Guide to Developing SaaS Apps in the Cloud
There is a fantastic business opportunity building Cloud SaaS Apps, which developers like my company, are using to grow their software business. This guide provides the basic outline needed to start producing web based applications, known as SaaS Apps, running in the Cloud.
Why Do You Need to Know This?
Building software based products often have a large return on investment (ROI) making it a very lucrative business especially if you can minimize development risk. One way to reduce risk is by picking the right platform to build and standardize your products on. Consider these types of applications, and think which one you would prefer to develop for:
- Desktop Apps. There are Windows, Mac and Linux platforms which are potential deployment models, but which operating system s do you want to support? How many different flavors of operating systems will your customer base have and how do you test all those configurations?
- Mobile Apps. Basically all you need to develop for is the Android or iOS marketplace. However, customers expect free Android Apps and low-priced iOS Apps. The profit margin is razor thin. Often your app needs to be in the top 100 list for it to become profitable. This is becoming increasingly difficult due to the millions of apps already published.
- SaaS Apps. You control the platform which runs on a hosted cloud-based server. Revenue model is often monthly or on an annual subscription basis. A small customer base is usually all that is needed for a profitable product so you can develop for a narrow market niche.
What Do You Do?
If you never developed a web based application before, using a model-view-controller (MVC) architecture is recommended for your product. It is fairly easy to understand and partitions your software into components used to manage backend database (M) and the frontend/edge user interface (V). The business logic or controller (C) integrates the two together into a seamless application.
To grasp these architectural terms, first know that:
- For the Model, you will need to understand SQL and how to interface with databases such as MySQL.
- For the View, you will need to understand HTML, CSS and the template language used by the MVC framework.
- For the Controller, you will need to understand the RESTful HTTP architecture to parse the URL and perform the necessary queries to the model to extract data for the view.
Your application is going to run on a LAMP server Linux-Apache-MySQL-PHP server where the implementation language could be PHP, Python or any other script language the Apache web server supports.
How to Make an App
I'll assume you have researched a great idea and have potential paying customers which will lease your SaaS App on a recurring basis, so what you want to do next is to build it. I recommend using a web application frame work to reduce your development time.
While we wrote our own framework many years ago, there are many open source platforms to choose from today. The important requirement in your selection is that you probably want to run your server using an encrypted interface (HTTPS) so any framework supporting this with user authorization needs to be included.
Some frameworks which we have used and meet these criteria are:
- CakePHP (cakephp.org) a PHP framework.
- Django (www.djangoproject.com) a Python framework.
- Web2py (www.web2py.com) a Python framework.
There are numerous other frameworks, so don't get too bogged down in researching the "right" one, just pick one if it looks like it has a great user community and great documentation. But keep in mind that some developers who write code for frameworks such as Ruby on Rails come at a premium and will stress your budget if you decide to outsource the project.
The best thing you can do to start SaaS App is to simply do it. Most developers have a tendency to over analyze things, think about scaling the product, fixating on every little requirement, and even the product name. Just skip the analysis step and start building a prototype. Here's how:
- Buy a domain name. The name is not important because you simply want to access your app via the domain instead of an IP address.
- Get a SHARED hosting plan with unlimited domains. Just about every host provider gives you all the necessary resources to get your app up and running. HostGator supports PHP5, Python and even Ruby on Rails apps. Don't be tempted to use a more expensive hosting plan such as a VPS or dedicated server. You can scale your app to one of these plans once you have enough paying customers.
- Install a Framework. Write a quick "hello world" program to see how easy it is for you to develop the code.
- Repeat step 3. Experiment with a second and third framework to see which one you think is better. Remember that you will need to support the app for many years to come and you want to be able to apply and reuse what you learned on your first app for future apps.
- Build a login system. Create a quick user login system. Here you will have to model storing and retrieving the user's account information such as user name and password. Some frameworks may provide this capability for you so it may be just a process of enabling the capability.
- Implement your functionality. Whatever you are building, just keep adding new functions to your app and repeat.
Eventually you will have a working prototype and hopefully a product name which you can get a domain name for. Take the prototype code and install it on the new domain. For the new domain, you will need a SSL certificate for the domain so customers can access your app securely using HTTPS. A free shared SSL may be all that is needed, but browsers may issues warnings. For a better user experience install a private certificate.
After reading this guide, you should have a basic understanding of what it takes to develop a SaaS App. The MVC architecture is easy to understand and implement; open source frameworks are readily available to expedite your development time; and apps are typically subscription based which can provide significant revenue to your business if you build a solution for a paying customer.