Good point, when I was looking into Azure about 18 mths ago, you could have a Windows VM but the idea was that it was instantiated and port 80 was called and then it might get thrown away again afterwards. The same may be true for Linux instances, but its an important distinction between this service and AWS/Linode where you can have an instance running long term which has it's own state.
I'm really hoping they break out of that model. It's great if you want to run single apps on an instance but it falls down once you look at running a series of clients on the same instance. You need to do some hacking to get the IIS setup for many sites which is how we operate.
Our current proposed structure would be to use AWS for front end and Azure for the DB which isn't ideal but I find AWS far more flexible for our purposes.
Isn't it going to affect performance to have your server talking to your DB over the internet (as opposed to a local network which I presume is the case when running EC2 instances in the same availability zone)?
I thought this but after doing some tests the results are pretty negligible.
A windows 2008 server license on 2 machines for fall back comes in at around £700 - £800 a month per instance. The same redundancy on Azure is around £80 - £100 a month. If it doesn't work then we go back to the drawing board, if it does work then we have saved ourselves an almighty chunk of money.
We cache a lot of data in our application too which we are putting into elasticache, which is local to EC2.
We haven't used it in great stress yet but initial tests were very good
A majority of our writes are product updates but they are done directly into azure from a local box. These can't be done from AWS as they go into gbs but that is the only situation we need worry about.
If azure opened it's model up then we wouldn't need to do all this!
Just got out of the first half of the Meet Azure prezo. Pretty slick integration of PaaS and IaaS. Git, Linux, Node.js, MongoDB, but also .Net, Team Foundation Server (ok, I had to look up TFS) and RDC. Has SQL Server as a managed service. Website hosting also: Wordpress, Drupal, etc. Caching (memcache-compliant) and Blob storage. Lots o' data centers. Identity management.... yeah Active Directory. They have multi-tentant (lower $) and reserved VMs (more $ and perf, tho not clear if everything runs exactly like on reserved VMs). Sounds like they've been hard at work. It'll be interesting to see how it works outside of a scripted demo. http://meetnodejs.azurewebsites.net/ is the node.js and mongodb demo they ran. Still seems to be up.
I tried running Java (well, actually Scala) on it. Java is officially supported... the support is: Pack your JVM into a .zip, a .cmd script will call a .vbs script to unpack your JVM and then start it.
I kept thinking that this must be a quick and dirty hack and there was a proper PaaS-like solution. Nope, that is the official support for the JVM. Pretty much the opposite of Heroku.
To be fair, they probably offer proper PaaS for their technologies. But for other things, it is basically (windows) infrastructure and you have to configure/update/etc your software on your own. I wouldn't expect any bells and whistles for the Linux support. Then again, it doesn't hurt if we have a choice.
Actually, this is the approach you need to take to install any software onto an Azure VM that is not part of the Windows Server-based installation. But you really only need to figure out how to do it one time; after that, it should be part of the build process for your .cspkg and something you don't need to think about again.
> But you really only need to figure out how to do it one time; after that, it should be part of the build process for your .cspkg and something you don't need to think about again.
It didn't take long to figure out (Microsoft is one of the few companies that really puts a lot of effort into documentation, and I appreciate that).
I have two other problems with that:
- I need to think about it again whenever a (security) update is released for the software (not only including the jvm, but also the web server and, for me, scala and akka)
- I have to upload that whole mess each and every time when I update my software. For my slowish internet connection, it took at least 30 mins to upload the whole stack (JRE, netty, scala, akka). [Fixed that by putting the .zips into the storage (whatever their S3 is called) and let the .cmd script download these]
Oh wait, I just remember one more detail about the webserver (taken from the .cmd):
:: 3) Place a Jetty 7.x distribution as jetty7.zip under approot in your project
:: 3.1) If you want to download the server into Azure directly from a URL instead, then
:: uncomment the next line and modify the URL as appropriate:
That is just wrong. If the eclipse server is down or changes its URL... my servers won't start. And, if I load balance my servers, I everytime use server resources of eclipse?
I really do not understand why Microsoft doesn't simply provide VM images with Java and the common webservers pre-installed. Or, at least a repository inside azure where I can download common Java versions and other common Java software. They spent big marketing dollar on their website and documentation on Java, yet when I actually used it, it felt like the engineer spent 2 hours on the Java support.
All of this is fine IF I want 100% configurable IaaS. But I'd rather have PaaS (which is what the parent comment was about), and Heroku, CloudBees etc. have so much more to offer, at least for Java.