application migration to work in the cloud
September 5, 2012 5:46 AM   Subscribe

I am looking for guidance on migrating an application to the cloud, from both a practical perspective as well as a theoretical perspective for a project.

On the theory side, could anyone suggest any sources of information or guidance in the area of application migration to the cloud.

As a test, I am trying to convert a basic image manipulation program that I have previously written in python to work on Google App engine. As it stands, the program takes an image, applies filters e.g. sepia and negative and so on, and saves the resulting image to disk. I am looking to convert this to work on Google App Engine. I think that programs need to be substantially rewritten to use App engine as it uses its own supported APIs. Any advice or suggestions would be welcome.

Amazon EC2 seems somewhat easier to work with as you don't need to adapt much code to work in the EC2 cloud. I was considering setting up some kind of LAMP server on it. Is their any differences from setting up such a server on a local machine. Any advice or suggestions in terms of using LAMP in the EC2 cloud would also be welcome.

Many thanks
posted by conrad101 to Computers & Internet (2 answers total) 1 user marked this as a favorite
Best answer: It depends on what you want to get out of "the cloud." If you just want to get rid of physical hardware or reduce its costs, grab some EC2 instances and a EBS disks and you're done. They'll act just like any other server. Or go with a VPS provider like Linode or RackSpace: again, completely standard servers, just virtualized on someone else's hardware. That's Infrastructure as a Service (IaaS) -- it's familiar and flexible, but you have to take care of all the gory admin details yourself.

The other option, Platform as a Service (PaaS) focuses on handling deployment, scaling, and availability for you, so long as you conform to conventions about how your application functions. PaaS services are often built on top of IaaS services: Heroku is built on EC2, for instance.

The nice thing about PaaS offerings like Heroku and Google App Engine is that they give you the ability to dynamically throw more hardware are a problem, on a whim, and on an as-needed basis. However, to reap those benefits, you do need to design for them. The founder of Heroku wrote up some interesting "rules" for successful, scalable development over at The Twelve-Factor App. It's the gospel, but it's great food for thought.

For example, your "saves the resulting image to disk" step should probably be replaced with "saves the resulting image to a datastore," since you shouldn't count on the same local disk being there on two different requests.

The big downside to GAE is that the adaptations you make to your code won't necessarily be portable to other services. PaaS offerings like Heroku will give you a much more straightforward migration path if you want to move to another PaaS provider or to your own hardware.
posted by SemiSophos at 8:08 AM on September 5, 2012 [1 favorite]

Response by poster: Thanks Semisophos!
posted by conrad101 at 3:54 AM on September 19, 2012

« Older How do I stop letting the fact that I have fair...   |   Dog Nibbles Sheets Newer »
This thread is closed to new comments.