Monday, September 28, 2009

All the bad things in Amazon Web Service

Hi folks.... This article is going to list all what i experience the shit stuff from Amazon Web Service...

I admit that AWS is very powerful, but you have to be convinced that nothing is perfect, they will have their down side...

1) You can`t delete an instance from your list after you terminate it.
Your instance list will keep growing, depending on the "garbage clean up" of AWS. AWS say they will delete your termination instance at later certain period of time. But when??? Only God will know.

2) You can`t restart a terminated instance
Amazon will keep billing you if you do not terminate the instance. This is painful, coz sometime we just want to do some test setup, not really launch the server for real. Let say i want to install five piece of software into my machine, today i do two, and want to do another three tomorrow. In EC2, I cannot say turn off the computer and restart it again tomorrow. I have to pay for the extra idle time.

3) It is hard to do Authentication programatically
Either Query Approach or SOAP Approach, Amazon do not provide detail in-depth tutorial or document to guild us developer to do the authentication.
All we got is a simple page, to show us, we need to do URL Encoding when using Query API, we have to attache the X509 certificate with every request we make when usning SOAP API.
That is all....
No wonder the opensource project Typica and Netflexity-amazonws-ec2 is so popular in Amazon support forum....

I was trying to use native Query API and SOAP API at the begining...but give up after a few hour try...i give up..coz there is no documentation..i end up reading source code from Typica and i just us frustrated...

But on the other hand..Microsoft Windows Azure management API is so easy to use.
I learn and play straight away...

4) Amazon-EC2-AMI-Tools Linux only
This tool set, there is no support for Windows.
Have to use third-party tools such as ElastixFox (Firefox plugin)

5) Disk limitation when bundle Windows Instance (create custom windows AMI)
The basic template we can get from Amazon is a windows 2003 server with C drive only 10G.
And we cannot chance the size of the C drive.
Why i keep mention the C drive, coz all custom stuff, if you do not put into C drive, when you perform bundle, only C drive will be bundle, all other data in other drivers will be ignnore.
(Linux instance also has similar problem, all custom stuff have to put under /mnt, otherwise your own data won`t be bundled)
Coz the work i am doing is that, i need to raise multiple instance which running the same application.
So my solution is that, i create my own AMI, which has been config everything, when i what more, i just raise a instance from that AMI.
But with 10G limitation, i just cannot feel satisfaction, lucky everything i need after installing into the C driver, there still 3 to 4 G space left...but i just cannot about my application become larger?...dose it mean i have to give up using Amazon EC2???
Anyway, i haven`t totally confirm that there is no way to walk around this limitation.
I saw one of the post in the Amazon support forum, they say we can plug-in volumn for extra space...hmm..i am thinking, whether when create a custom AMI, we can bundle the volumn as well.
Further investigation is needed... and i will keep update after if anything is found...

To be continue ...

Monday, September 21, 2009

Time to build a version control app for Azure

Introducing the Windows Azure Service Management API

Azure has release its management API.

Now azure has most of the stuff, but there is one thing Azure do not have.

Deployment version control....

If you want to down-grade your deployment, and if your stageing deployement is not the down grade version.

there is no way for you to down grade.

Since the management API has been is time for version control now....


1) Do not store any user information
2) Store data in user`s storage

Howto Implement:
1) The Version Control App(VCA) is a web portal
3) When user come to VCA, user need to provide keys, subscritionID etc,
for VCA to access SQL Azure or Table Stroage, in order to store version info, to access Blob storage, in order to storage deployment files.
4) VCA is only a graphical interface. But behind the scene, some logic were applied to organize those data, in order to provide version control. And for sure, VCA will invoke Azure Service Management API, to help user swap deployement doing upgrade or downgrade.