Coding for the cloud part 2 – Are you a good fit?

Coding for the cloud part 2 – Are you a good fit?

This article is a follow up to my original called “Coding for the Cloud” which focused on a broad range of topics and provided a high level overview of how to use the cloud by scaling your application in a linear fashion rather than relying on heavy duty hardware to power your servers. This article is going to focus on figuring out if your application is a good fit for the cloud or if it should remain on a dedicated hardware solution such as Co-location, Managed Dedicated Servers, or Unmanaged Dedicated Server.

So.. Is your application a good fit for the cloud? Here are a few questions you should ask yourself before considering deploying to a cloud offering.

1. Do I need PCI Compliance?
2. Do I need dedicated devices such as firewalls, load balancers, or upstream DDoS protection?
3. What am I trying to solve for by moving my application to the cloud?
4. How am I currently utilizing my existing hardware, and will that model fit in the cloud?
5. What kind of support will I need? No support because I am a seasoned administrator? Lots of support because I need someone with cloud expertise?
6. Can I design, or re-design my application to fit the scaling ability of the cloud?

With these questions in mind you can now start to get an idea of what you are going to have to not only consider when moving to the cloud, but also help narrow down a cloud provider. The two main Cloud providers as of this writing are Amazon and Rackspace. Amazon offers a large feature set which in some area’s is a step up from what Rackspace currently offer’s, however Rackspace makes up in service level’s and fanatical support where Amazon provides bleeding edge technology. So to elaborate on each of the questions listed above I will go over them, and provide a brief explanation as to why they are important.

1. Do I need PCI Compliance?
As I briefly mentioned in the first article PCI compliance in the cloud is currently something that is not applicable because of its multi-tenant infrastructure. This may be possible with some private cloud solutions, however you would need to review the PCI compliance documentation and consult with your provider. This is not to say that you cannot host a PCI compliant website in the cloud, but portions of the site which store or process credit card information cannot be hosted in the cloud and must be on dedicated hardware which is PCI compliant.

2. Do I need dedicated devices such as firewalls, load balancers, or upstream DDoS protection?
Currently not all cloud providers offer dedicated network devices. There are alternatives depending on your needs such as HAProxy, iptables, Rackspace Preventier and so on however each of these have specific uses, and also limitations. HAProxy for example is a software based load balancer which can run on and linux based server if setup properly. This for the most part is a pretty solid solution, however it does have limitations due to bandwidth constraints. Some of these problems can be mitigated by utilizing multiple load balancers, but this can provide more complexity than most users can handle and over a long period of time this doesn’t exactly scale well.

3. What am I trying to solve for by moving my application to the cloud?
Why are you thinking about moving to the cloud? Reducing cost? Exploring new technology? Utilizing the scalability? Whatever the reason might be you should decide if it lines up with your long term objectives, budgeting, and if you have the technical know how to utilize the services the cloud has to offer.

4. How am I currently utilizing my existing hardware, and will that model fit in the cloud?
How is your application utilizing your existing dedicated hardware? Are you using lots of bandwidth, disk I/O, CPU utilization? How can you change the way your application works to adapt to the new environment and utilize its technologies such as “on demand” servers, and CDN? Bandwidth and CPU utilization are generally not an issue like disk I/O which makes cloud servers great for application servers, but not always a good fit for heavily utilized database servers, or servers that require lots of redundancy such as RAID5 or dedicated storage devices.

5. What kind of support will I need? No support because I am a seasoned administrator? Lots of support because I need someone with cloud expertise?
This is a very important question to ask yourself. If you are a seasoned administrator you can easily see the advantages of going to a cloud service offering and may not need additional levels of support, or you may have not have the experience and simply need someone who is familiar with cloud technologies. Either way this can be a pretty daunting choice as there are lots of cloud providers out there which do provide varying levels of support with price points that coincide.

6. Can I design, or re-design my application to fit the scaling ability of the cloud?
Virtualization presents new challenges and opportunities at the same time. Some good examples of this are bandwidth constraints, or CPU utilization. Using CDN, caching, and compression you can reduce bandwidth usage, cost, page load times, and provide your users with a much more enjoyable experience by geographically distributing your content by utilizing CDN’s to distribute certain parts of your website such as css, images, javascript, and videos. Fortunately cloud offerings are starting to bring CDN technology to end users which is a very cost effective solution for small to medium sized businesses as in house CDN’s are very costly.

As for flexibility, you can deploy software or custom code to detect increasing load, page views or failure to provide high availability, and automated provisioning of new servers on the fly by utilizing the public API’s which are just some of the things that the cloud allows you to do.

With that said I hope this article is valuable for you and your organization and provides you a guide to getting started in the cloud. Keep an eye out for more articles soon. Thanks for reading.