So it's time to move to the cloud, but where do you start? What do you need to think about? What questions should you ask and what are your options?

Note: Most of this is my response to a question posed by Suman Chaudhuri in the Cloud Computing Group. My intent is to provide a general overview of the topic of moving to the cloud. If you are new to cloud computing or want to begin to think about how, why, and what you may want to move to the cloud, this series of posts is for you.

The first question you have to ask when moving an app to the cloud, or using, or building an application in the cloud is, "What kind of application is it?" This is important, because the type of application will help us determine if it is suitable for the cloud at all. For example, a large enterprise system that uses many legacy systems, extremely large databases, and/or ultra secure information is on the most expensive end of the migration cost spectrum. A phone book application is on the cheaper end and may be more appropriate for the cloud. The phone book end of the spectrum is where you want to start, maybe even something less confidential that you actually want the world to see, like a product catalog.

When you are deciding on your first application for the cloud, try to pick something where you need to get the information outside your network. You may have systems like this now that your employees access remotely via VPN or a terminal service like VNC or Citrix, or perhaps customers often call to ask you the status of an order or something like that. Are there any situations where your employees could work from home or client sites if they could easily access the information they need to do so? What are the risks and consequences of data security compromise? Are they low like with a public product catalog or high like a list of customers' credit cards? On the cheap/easy end of the spectrum, are small applications that are easy to build, already web enabled or running on a platform that is natively supported by a cloud provider with minimal security concerns.

To wade into the cloud, you might want to start with a suitable packaged application currently offered as SaaS. In this case, you merely need to subscribe to the service and get your data into it. How do you do that? A lot of SaaS products have import capabilities. You can upload data in spreadsheets, tab or comma delimited files, XML and other formats that are supported by the vendor. You'll have to get your data, if you have any already, into one of the supported formats first, which may or may not be a trivial process. If you don't have data, just pay the fees or fill out the account request form and start using the application. The next step would be to consider training the part of your organization that will be using this system -- just like any other application.

So what if there is no packaged SaaS available to suit your needs? In this scenario you are going to need to do some customization of an existing system. There are lots of web-based platforms that will let you completely customize a web application to meet your needs. I'll plug my company's platform as a service called the Qrimp Platform.

What are platforms as a service? If you look at the application development trend over time, the tools used to build applications eventually move into the target application environment itself. For example, when we started solving programs with computers, we used punch cards to tell computers to print out code words that were the answers to our questions. Then we used code words (Assembly Language) to tell computers how to make long words. When C and Fortran arrived, we could use longer words to build systems and then C++ modelled the objects in the real world and allowed us to build graphical window based event driven programs. Next came the IDE's like PowerBuilder, Visual Studio, and Eclipse that were themselves graphical window based systems. Today, for the most part, those IDE's are used to build web applications and the very latest development in this trend are the platforms which have moved web application development itself into that target web environment. You could consider these platforms the next step in the evolution of application development.

To get started using a Platform as a Service, think of it as a traditional custom development project, except instead of using tools that exist on your local computer to build the application and then move it into the cloud, you use your web browser to go to a website that lets you build and customize your application in the cloud already. I would suggest using a PaaS is the easiest way to get started with custom apps in the cloud because you don't have to think about the underlying infrastructure, which I will get to in the next post that begins with some questions you should ask when selecting a platform vendor.