Slashdot Mirror


Microsoft Azure vs. Amazon Web Services, For Programmers

Nerval's Lobster writes "Tech writer and programmer Jeff Cogswell does a head-to-head comparison of Microsoft Azure and Amazon Web Services from a pure programming perspective, examining the respective sides' vendor lock-in and vendor-specific APIs (among other issues). 'If you're not using any vendor-specific APIs, then it's safe to say the experience you get on either Amazon or Microsoft will be roughly the same,' he writes. 'But that means you're also not developing an app that necessarily takes advantage of all possible cloud capabilities—not just add-ons, but scalability. Your app might need to expand and grow as your user base grows.' He suggests it's ultimately a tie between the two companies. 'From a strict programming perspective, both companies have their own RESTful API, and their own libraries for using the API.'" The problem with both of these services, though, that RMS could have told you about: "The moment you start using either, you're locked in for the most part."

64 comments

  1. This is a solved problem? by kwerle · · Score: 4, Informative

    Please google "Cloud Abstraction Layer".

    Here; I'll help you out:
    https://www.google.com/search?q=cloud+abstraction+layer

    1. Re:This is a solved problem? by dave562 · · Score: 4, Informative

      Now I know we don't actually READ the articles around here, but did you even skim the summary?

      "If you're not using any vendor-specific APIs, then it's safe to say the experience you get on either Amazon or Microsoft will be roughly the same,' he writes. 'But that means you're also not developing an app that necessarily takes advantage of all possible cloud capabilities—not just add-ons, but scalability"

    2. Re:This is a solved problem? by Anonymous Coward · · Score: 0

      I don't think you understand the "Cloud Abstraction Layer" concept.

      The programmer codes for the abstraction layer's API instead of the cloud vendor's API. The abstraction layer converts the API calls into the vendor specific API calls.

    3. Re:This is a solved problem? by 0123456 · · Score: 3, Insightful

      Which means either:

      1. You end up with a lowest-common-denominator API.
      2. You move most of the smarts into the 'abstraction layer', which then decides how to implement them on different 'cloud' providers, and then you're tied to it instead.
      3. You start using APIs wihch are only properly supported on one system so you're doubly screwed (your software only runs on the abstraction layer using features only supported by one 'cloud' provider).

    4. Re:This is a solved problem? by Anonymous Coward · · Score: 1

      2. You move most of the smarts into the 'abstraction layer', which then decides how to implement them on different 'cloud' providers, and then you're tied to it instead.
      p>

      It seems like you are listing that as a negative....why would you be worse off being tied to the abstraction layer instead of the cloud vendor?

    5. Re:This is a solved problem? by Anonymous Coward · · Score: 0

      Because unless you're writing that code yourself, you're still relying on a third party API which may disappear tomorrow?

    6. Re:This is a solved problem? by Canazza · · Score: 1

      This is why we write our own Abstraction layer and make sure none of our site code directly references any of the API calls directly.
      We just roll our own functions for whatever we need to do and while yes, if we need to switch cloud service it relies on, then we deal with when and if we come to it.

      If you write for both services - or use an abstraction that covers both - *now*, yet only use one of them, then you're giving yourself redundancy that may or may not still be compatible 1, 5, 10 years down the line when it comes to move. If you move to the other (or, indeed, if you choose a third option) then the time wasted on maintaining both, or switching your abstraction layer to one that supports all the new things, will probably take about as much time as if you'd just programmed it against the Native API, and created it to be replaceable in the first place.

      --
      It pays to be obvious, especially if you have a reputation for being subtle.
    7. Re:This is a solved problem? by kwerle · · Score: 1

      Now I know we don't actually READ the articles around here, but did you even skim the summary?

      "If you're not using any vendor-specific APIs, then it's safe to say the experience you get on either Amazon or Microsoft will be roughly the same,' he writes. 'But that means you're also not developing an app that necessarily takes advantage of all possible cloud capabilities—not just add-ons, but scalability"

      Not only that, but I have some experience with the amazon cloud. We're talking about virtual MACHINES, right? At some point it's just some [virtual] intel box that loads up some OS and fires up whatever software you've installed. One intel box is a whole lot like another - or it should be. Performance of various systems is gonna vary, but that's what you choose a vendor and a config for.

      The company I got the amazon experience with had no real intention of leaving, but we went to some effort to abstract out their particulars, anyway - it's just the right thing to do.

      Seems to me that if configuring your VMs and setting up your cloud are really complex and/or hard, then you have either:
      * Selected the wrong cloud provider
      * Failed to hire the right IT folks
      * Got some really boring custom software (because that's what you should probably be spending your time on)
      * More than one of those...

    8. Re:This is a solved problem? by CodeBuster · · Score: 1

      time wasted on maintaining both, or switching your abstraction layer to one that supports all the new things, will probably take about as much time as if you'd just programmed it against the Native API

      That's highly debatable. There's a reason why adapters or "abstraction layers" if you will are popular with software developers. It's not the right answer in every case, but the collective experience of millions of developers working over many decades has proven the concept to be useful. At the very least, it's something that ought to be considered whenever a third party service or library is introduced into your system. A good developer learns to keep their options open and adapters or abstraction layers help to preserve the flexibility necessary to achieve that. In software development, few things are worse than the case of "coincidental" coupling or "accidental" complexity. Instead, be deliberate in your decisions as a developer and understand the choices that you're making. It's alright to make a trade-off but make sure that you're getting more in return for whatever you're giving up in exchange. That's my advice anyway.

  2. Why just those two? by bennomatic · · Score: 4, Informative

    I wonder why Cogswell ignored Google's cloud services. They've got the Python- or Java-based AppEngine, and they've got a full virtual server service. There are a lot of other platforms, too, but as far as size and industry impact, I'd put Google on a similar level.

    Funny, though, that out of the three of them, if I were to choose the least "evil" one, it'd be Microsoft.

    Last, but not least, if you're using Azure, I'm pretty sure that New Relic has an agent that's compatible, for performance monitoring.

    --
    The CB App. What's your 20?
    1. Re:Why just those two? by bennomatic · · Score: 2

      (re: the New Relic stuff, I'm referring to .NET server-side monitoring. I'm pretty sure their client-side RUM system works regardless of the hosted platform.)

      --
      The CB App. What's your 20?
    2. Re:Why just those two? by Anonymous Coward · · Score: 0

      And then there's Ubuntu:

      http://www.ubuntu.com/cloud

    3. Re:Why just those two? by phantomfive · · Score: 2

      Funny, though, that out of the three of them, if I were to choose the least "evil" one, it'd be Microsoft.

      Why? That's a fascinating assertion, and yet you just left it there, alone, without any backup. Poor thing.

      --
      "First they came for the slanderers and i said nothing."
    4. Re:Why just those two? by chrb · · Score: 4, Informative

      Funny, though, that out of the three of them, if I were to choose the least "evil" one, it'd be Microsoft.

      Why? Serious question. App Engine doesn't even lock you in that hard - there are APIs for exporting all of your data, and you can run your own App Engine cloud with an open source implementation like AppScale or TyphoonAE. Google is not hostile to these projects - they actually sponsor AppScale development. Is Microsoft sponsoring any alternative implementations of their server-side cloud software?

    5. Re:Why just those two? by TheLink · · Score: 1

      Has anyone here tried AppHarbor? https://appharbor.com/

      For a while they were going on about being "Azure done right" ;).

      http://trycatchfail.com/blog/post/AppHarbor-Rocks-Seriously.aspx
      http://www.aaronstannard.com/post/2011/01/14/Getting-Started-with-AppHarbor-e28093-Heroku-for-NET.aspx

      Wondering how it compares with the latest Azure now...

      --
    6. Re:Why just those two? by Richard_at_work · · Score: 1

      I use AppHarbor, and they do a lot of things right, but they also don't have a lot of the flexibility of Azure or AWS - for most of the addons, it's either a free offering, a small offering for some money 10GB SQL DB for $10 a month) or a dedicated offering for a lot of money. Very little granularity.

    7. Re:Why just those two? by TheLink · · Score: 1

      I just noticed that they actually run on Amazon Web Services... Wonder if that affects their granularity.

      --
    8. Re:Why just those two? by DuckDodgers · · Score: 0

      Azure now offers the ability to rent Linux servers. Obviously that means you would be using Windows Azure as an "Infrastrustructure As A Service" instead of "Platform As A Service", but that would stop you from being locked in. Plus I like the idea of giving Microsoft money for offering free software virtual servers. I don't like it as much as the idea of Microsoft going out of business, but if that happens it won't be soon (even with Windows 8 on the horizon).

      I think the distaste for App Engine came when Google bumped the prices. Everyone knew it was coming, but they still expected their favorite tech company to let them have peace and butterflies forever.

      I'm not sure about the distaste for Amazon, though - I've heard from friends who work at their warehouses that they run you ragged and generally treat you poorly ( do a web search on all the hospitalizations for heat exhaustion at the Amazon warehouse in Allentown, Pennsylvania ). But to my knowledge, AWS customers are generally satisfied.

    9. Re:Why just those two? by Anonymous Coward · · Score: 0

      Google aren't offering IaaS. He did however ignore OpenStack (RackSpace, HP etc.).

    10. Re:Why just those two? by bennomatic · · Score: 2

      It's not so much AppEngine that I think is evil--I actually love it and use it for protoyping web app ideas because it's cheap and easy to use for that purpose. Rather, it's Google and Amazon the companies that I've soured on. Where Microsoft was once the evil empire, they're kind of beaten down and sad. I mean, they're still making bazillions of dollars, but I can't help but think that unless something crazy happens, they'll always be the company that was.

      Google has just extended their tendrils too far, and I'm a little creeped out by them. I used to be an avid defender, but I don't believe the "don't be evil" credo quite so much anymore.

      And Amazon, well again, I think their cloud service is awesome. Brilliant innovation to take their datacenter expertise and sell off those resources as a service. But their overall business model is, I think, predatory and shameful. They're like the Walmart of the on-line world. I've stopped shopping there, and I've asked my wife to do the same. If there's any way to support our local economy, even if it costs a bit more and requires driving and parking and going out of the house and stuff, I think it's important to do so. There's a high cost for convenience and low prices, and we just won't know what it is until it's too late.

      --
      The CB App. What's your 20?
    11. Re:Why just those two? by bennomatic · · Score: 1

      Yeah, I wasn't complaining about AWS or GAE, more the overall companies.

      There are, of course, other players, including some big ones. Oracle's got a Java-based cloud offering. SalesForce.com has a cloud platform offering as well, although I think it's based on their own proprietary technologies.

      --
      The CB App. What's your 20?
  3. McDonalds or Burger King? by Hazel+Bergeron · · Score: 3, Insightful

    If you have to ask the question, you've already lost.

    1. Re:McDonalds or Burger King? by _Stryker · · Score: 2

      Are we talking fries or burgers? Because the answer is different depending...

    2. Re:McDonalds or Burger King? by Anonymous Coward · · Score: 0

      Wendy's?

  4. Well by kelemvor4 · · Score: 4, Informative

    I've got an azure account with MSDN and TechNET subscription (I don't remember which of the two came with the azure). Processor time on their service is very expensive if you go beyond the allotment of free time given to you by those subs. The service works well, although getting your code to the servers is a little kludgy. Given the high cost, I think you'd be hard pressed to find value when weighed against leasing a full server or even multiple servers from a regular hosting provider. The exception to that would be if you had a simply massive load requirement and just couldn't muster enough horsepower out of a few traditional servers.

    For what I would am doing, the cost is unreasonable. I've never really looked at amazon; so I can't compare them.

    1. Re:Well by Eirenarch · · Score: 1

      So Azure only makes sense financially if you have sudden spikes in load. Isn't this the case with any cloud provider?

  5. After what happened to Wikileaks? by GodfatherofSoul · · Score: 1

    No thanks. Sure, 99% of us aren't going to be in the business of publishing military docs, but the point was made pretty clear that you don't own The Cloud and any time they have a problem with you, you're subject to having your entire infrastructure and all your data shut off like a light switch.

    --
    I swear to God...I swear to God! That is NOT how you treat your human!
    1. Re:After what happened to Wikileaks? by Anonymous Coward · · Score: 2, Insightful

      As if your ISP or colo wouldn't give you the boot "any time they have a problem with you" either. LOL

    2. Re:After what happened to Wikileaks? by medv4380 · · Score: 4, Insightful

      Really? You're hung-up on that little point? Your domain name could be seized by ICE and who knows what else, and you're concerned that the Amazon caved to pressure to pull Wikileaks? This kind of thing has been going on for a long time before Wikileaks and Amazon. It's apart of the risk of doing business in this world. There is no way around it.

    3. Re:After what happened to Wikileaks? by downhole · · Score: 1

      You'll have that same problem pretty much no matter what you do, unless you go whole-hog and set up a hidden server on Tor. Yeah, the Cloud will cut you off if somebody with enough pull leans on them. Switch to running your own leased server, and the leasing company will pull your plug. Run your own servers in your own home/office/lair, and either your ISP will pull the plug, or you'll get raided directly. Or both. Run or lease servers in some other country, and they'll pressure that country and try to take your domain name too.

      But then, why worry so much? Publishing top-secret info from major countries is always risky. Don't do that if you aren't prepared to take the heat. It's kinda like asking how to hide from the police after you've killed somebody - yeah it's hard, because it's supposed to be, so don't do that.

      --
      I don't reply to ACs
  6. Summary by hawguy · · Score: 4, Informative

    Briefer summary of linked article:

    Amazon and Azure use different API's, if you use one vendor's API, you're locked into that vendor. There might be libraries available that hide the vendor specific API's but that's outside the scope of the article.

  7. Techwriter != Developer by Anonymous Coward · · Score: 5, Informative

    You're never forced into using AWS APIs. They are there if you want to use them. If you don't want to use S3, you stand up a storage server as an instance. No vendor lock-in. If you don't want to use RDS, you build your own DB instance. No vendor lock-in. If you don't want to use ELB, you build your own load balancer instances. AWS offers shortcuts for those developers who want big features and don't want to build them. It doesn't force them on you.

    1. Re:Techwriter != Developer by casings · · Score: 1

      The difference being that you have to manually configure those instead of programmatically using their API.

      Someone manually configuring load balancers isn't being a developer. They are being a system administrator.

  8. Another comparison, from programmers by leonbloy · · Score: 5, Informative
    1. Re:Another comparison, from programmers by tgd · · Score: 1

      All That Cloud: Amazon, Google App Engine, Windows Azure, Heroku, Jelastic

      Unfortunately there's more missing in that article than info its actually providing. For example, it glosses over all the other services that Azure and Amazon's cloud services offer. It also mentions Google is a PaaS provider, without mentioning that Azure is both IaaS and PaaS.

      When it comes to cloud platforms, the capabilities surrounding them are more important than the "dumb" VM hosting and whatever management "polish" they may provide. Google, for example, does't play particularly well with a lot of infrastructure that isn't Google. It'd be a bizarre choice for 90% of cloud applications, but its dramatically better than any others if you happen to hit the sweet spot of services Google provides.

  9. I'm not sure ... by PPH · · Score: 0

    ... I'd use any Microsoft product with a name synonymous with 'Blue'.

    --
    Have gnu, will travel.
    1. Re:I'm not sure ... by courteaudotbiz · · Score: 1

      Yeah, instead of a blue SCREEN, you'd encounter a blue SKY, which means no more CLOUD.

  10. Niether! by Otter_79 · · Score: 2

    use Skytap! So Much Better ;)

  11. Choices? by Anonymous Coward · · Score: 0

    He want us to choose between two evil empires?

  12. Depends by Kupfernigk · · Score: 4, Interesting
    For what we are doing, the principal benefit of Azure is the scalable SQL Server.The ability to fap around with little 1Gbyte databases and then scale them all the way to 150Gbytes (and beyond with sharding) is what sold me on it. The cost of hosting your own SQL Server is much higher.

    I'm also not so convinced that the VM cost is that way out of line. The performance we get, both in and outbound, is high, and we pay considerably less than we used to for our hosting. I guess you have to compare like with like taking into account bandwidth, scalability and SLA, and the flexibility to dial cost up and down as the machines are scaled, which you do not have with a true hosted server and database.

    --
    From scarped cliff or quarried stone she cries "A thousand types are gone, I care for nothing, no not one."
    1. Re:Depends by Anonymous Coward · · Score: 0

      Doesn't the Azure SQL Server get throttled?
      http://stackoverflow.com/questions/10420721/sql-azure-throttling-the-effect-of-indexes
      http://social.technet.microsoft.com/wiki/contents/articles/3507.windows-azure-sql-database-performance-and-elasticity-guide.aspx#SQL_Azure_Engine_Throttling

      So basically it's nice till you really have to use it then you get throttled- the last I checked it didn't take that many rps to get throttled, has that changed already? If you could shard things so easily with federation you might as well use the azure table and blob stuff. Many people like to use SQL DBs for stuff that doesn't shard well, and "NOSQL" for the shard stuff.

      From what I see they are still playing catch up with Amazon. The service isn't that stable yet. Don't bet your job/project on it, unless Microsoft is paying you $$$$$$ for it. AND you don't mind spending hours publishing, redeploying your stuff and hoping for the best. Even Microsoft doesn't know why their stuff sometimes doesn't work.

      Maybe in 2 or 3 years time, they'd be a serious contender. They are trying very hard to add features and improve things.

      p.s. And Azure only works 365 days a year, so beware of leap years... I guess when they said 24 x 365 they weren't joking ;).

    2. Re:Depends by 0123456 · · Score: 1

      For what we are doing, the principal benefit of Azure is the scalable SQL Server.The ability to fap around with little 1Gbyte databases and then scale them all the way to 150Gbytes (and beyond with sharding) is what sold me on it.

      Is 150GB supposed to be a big database? Or do you mean 150TB?

  13. Rackspace by rwven · · Score: 2

    It's worth noting that rackspace's cloud system is pretty slick and easy to use now as well. Nowhere near as big as those two monsters, but it's a very well done system that is very easy to use, and pretty cheap on top of it.

    1. Re:Rackspace by Anonymous Coward · · Score: 0

      yet another Rackspace astroturfer

    2. Re:Rackspace by rwven · · Score: 1

      Huh? I've been using the RS cloud for a couple months. I like it. What's wrong with saying so?

  14. Get shitty performance developers by Anonymous Coward · · Score: 0

    Go "Cloud"! It's sure to run slow as frozen honey, and crash.

  15. Re:Deal with M$ and you're screwed by larry+bagina · · Score: 3, Funny

    Amazon will sell you the lube.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  16. Migating Platform Lock-in by ndykman · · Score: 3, Insightful

    The article seems to bemoan the lack of standards and APIs for relatively new technologies like blob storage, message queuing and the like.

    In short, it's the same situtation everyone deals with when choosing a platform. Take full advantage of the specific platform and lose portablity, or code to a portable subset and tradeoff ease of implementation for platform independence.

    You can minimize your dependency on a third-party API if you use an API of your own to code against. Creating a set of interfaces that provide the blob, queuing and other cloud features for your project not only isolates the cloud-specifc code to one place, but it makes it more testable (using test-doubles, fakes, etc).

    This is a problem, but it is a well understood one with a time tested solution.

  17. Re:Deal with M$ and you're screwed by Anonymous Coward · · Score: 0

    And if you have Prime membership, they were get it to you in just two days for no extra charge.

  18. Dismissing third-party API implementations by DragonWriter · · Score: 2

    Amazon and Azure use different API's, if you use one vendor's API, you're locked into that vendor.

    Of course, TFA acknowledges that there are several (both public cloud and open-source software for private-cloud implementations) alternatives that support Amazon APIs, but dismisses them as unlikely to actually work with real apps no substantive reasoning presented.

    It really looks like the author had a conclusion in mind before even beginning to look at the facts.

  19. Google Compute Engine: IaaS by DragonWriter · · Score: 1

    It also mentions Google is a PaaS provider, without mentioning that Azure is both IaaS and PaaS.

    Google is also both IaaS and PaaS: Compute Engine (currently in limited preview) is Google's IaaS offering.

  20. I love both but I think Azure has taken the lead by elabs · · Score: 2

    I've used both cloud platforms for the past few years and I really enjoy both of them. I do think that in the past few months the Azure tools have gotten a lot better and easier to use.

  21. Direct hardware access.. by HerculesMO · · Score: 2

    I like Azure for the SQL (as somebody else mentioned) but my biggest beef with them is no ability to talk to the hardware. We are doing some CUDA development, and with Amazon I have the ability to talk direct to the hardware in a VM... not so with Azure. It's a niche need but something I'd like to see.

    --
    The price is always right if someone else is paying.
  22. Re:Microsoft Azure vs. Amazon Web Services, For Pr by Anonymous Coward · · Score: 0

    I see from Cogswells article that he programmed on both platforms. However, I am not certain why he rates them as approximately equal. I was tasks to evaluate Azure and AWS for a 1bn revenue company with 100s of servers to migrate. And, I focused on PaaS as well as IaaS. My findings?: Azure is bug prone with usability issues. AWS on the other hand is a dream to work with. Now, pass the cool aid.

  23. It's time to give REST a rest. by WaffleMonster · · Score: 1

    The IDEA of REST is a laudable goal. Most implementations of it using HTTP as the vechicle for REST with a limited supply of verbs spits in the idea of RESTs face.

    You don't get to reuse crap or do anything cross domain with a "restful" API. I've implemented dozens of vendors restful APIs and each one is its own country.

    The multi-inheritance issues with the URL path alone are never ending and annoying. Everyone makes up paths adhoc which are not reusable, rarely consistant or coherent.

    Then we have a severly limited supply of verbs (HTTP) which are not particularly useful for anything non-trivial. This limitation ususally accompanies an "action" field hidden in the path or as a separate parameter to make up for the limited vocabulary.

    There are no templating, transactions, registries of fields or data to promote any reuse of any horizontally useful information or concepts.

    Next up is retardulous idea it is a good thing to collapse response layer so http response codes mean something to the API. I've lost track of the number of times this has ended in disaster. Systems that report a 500 error due to some issue way down in the stack get interpreted to mean the API command failed when no such thing has occured. The same results have occured due to fat-fingered URLs or middle boxes providing invalid responses while API only examines the fucking HTTP response codes.

    Viral propogation of nonsensical memes without comensurate technical merit are harmful to the industry.

  24. screw that! by Gravis+Zero · · Score: 1

    Cumulonimbus or GTFO.

    --
    Anons need not reply. Questions end with a question mark.
  25. Azure: 24/7, 365 days a year, but ... by dbIII · · Score: 1

    Azure: 24/7, 365 days a year, but leap years really suck.
    With a lack of attention to detail like that it really doesn't bode well for anything else on that system.

  26. Re:Deal with M$ and you're screwed by afgam28 · · Score: 1