Porting Applications to the Cloud: 10 Key Data Points IT Pros Need to Know
Read the Fine Print
The resources cloud providers are promising appear to be infinite, or certainly more than most applications would ever need. But that doesn't mean they are all available when your customers need them. There's simply no way around it; you have to read the fine print of the Service-Level Agreements the providers offer in order to understand just how much processing power in that server farm in the sky is yours and how much it will cost if you need more. Further, there are vast differences in the SLAs offered by different cloud providers. So be prepared to choose the cloud provider that meets your application deployment and customer needs.
Know Your Usage
Pay-as-you-go, utility pricing is a boon for cloud customers and the resources at your ultimate disposal are indeed vast. The downside is the difficulty in predicting what your customers will need and then picking the payment plan up front that makes the best financial sense. Some providers, for example, will let you reserve instances up front for a lower flat fee. But beware: You need to make sure that's a better deal than the hourly rate you'll pay based on usage.Â
Be an Early Follower
Most IT managers don't want to be the first to do something; they'd rather wait and see how others fare first. Investing in the development and marketing of a product dependent on a relatively immature platform is a huge risk, no question about it. Not all cloud platforms are created equal. You could end up wasting valuable time coding around issues that stem from the underlying infrastructure. Look about in the marketplace for the presence of a smart and dedicated developer community that can offer advice and expand upon your in-house troubleshooting skills.
Ghosts in the Cloud
It's important to check back on your running instances and terminate the ones you're not using. It happens all the time, but in the cloud, it can get expensive fast.Â
Choose Your Database Wisely
Not all cloud databases are the same, and your choice could end up costing you more in setup and the long-term managementboth in usage and in managing ongoing manual tasks. Make sure what you choose has been designed specifically for a cloud environment. It needs to have provisions for elasticity and scalability and the ability to integrate with other cloud services. These are key in setting apart the true cloud database from the mere hosted solutions.
Keep Your Options Open
Cloud vendors don't make it easy to switch. This is where open-source options like OpenStack or CloudStack become more appealing. By leveraging these compute platforms, cloud vendors can offer greater flexibility and control. This means you have the freedom to move your applications and data to the cloud provider of your choice and the ability to utilize all of the tools and applications you've developed. Open source also represents significant cost savings in the cloud and on the ground.
The Joy of Jclouds
Programming against cloud environments is tough. Using a portable API, such as JClouds, lets you focus on your application development and not worry about the idiosyncrasies of the underlying platform. Just make sure your cloud provider has a fully supported JClouds adapter, because there is some variation among cloud platforms.
The Devils in the Database
There are many different databases available in the cloud, and they are not fully compatible with their on-premise versions. For example, MySQL is not the same as Amazon RDS and Microsoft SQL Server is not the same as Microsoft Azure. PostgreSQL is one of the few that has version compatibility in the cloud and on premise. Not paying attention to this detail could mean your application doesn't work the way you had anticipated, costing you hours of debugging time.
Scale Up and Scale Out
The cloud promises access to vast resources, but make sure your application can take advantage when your customers need them. The mechanisms for scaling out and up across the various hardware empires amassed by cloud providers vary widely, and your development must take into account these variables.Â
Cloud providers make high availability easier for companies, however you still have to build it into your application. After learning from Amazon's experience, cloud providers built into their platforms multiple backup pathways. These availability zones supply multiple redundancies but your application has to be built to take advantage of them, and make sure your redundancy paths don't all go to the same zone.