Get your Azure ideas out (and vote for Mini-Azure)

The Azure team launched a new product feedback site, and I’m lobbying for one idea on it: Give me mini-sites at a mini-price.

www.mygreatwindowsazureidea.com

A few days ago the director of Windows Azure Planning, Mike Wickstrand, posted about the launch of a new feedback site with a slightly odd name but with quite a decent purpose: www.mygreatwindowsazureidea.com. If you have ideas on improving the Azure experience, go check the site out!

Mini-Azure wanted for small web properties

One aspect that makes me particularly happy: The most voted suggestion so far is making Azure cheaper for very small web applications. I have been talking about this to various people at Microsoft, with varying response. The site now confirms what I was expecting all along: The current $0.12/hour pricing model (~$86/month) is too expensive for small sites. Hosted LAMP stack offerings are available at a few bucks a month, and that’s a hard price tag to beat.

While I already did post some of my points in the original thread, I want to reiterate my views on (and arguments for) the mini-Azure concept here. If you don’t care, stop reading; this is a long one (even on my scale).

Site owner oriented:

  • Currently the Azure allocation goes by the processor core. A core represents a huge amount of processing power: for a reasonably performant web application, a single core on the web tier can serve up to a million page views per day. Only a very small fraction of sites have that sort of traffic.
  • Most web servers lay idle much of the time. The cloud model can be used to avoid this by reducing the amount of cores for hours of low usage, but you can’t reduce it to zero and still be responsive. Most small business web sites have zero traffic at night apart from search engine hits every now and then. The current Azure model causes the site owners to pay for idle computer power (and forces Microsoft to waste all that capacity).

Web hoster oriented:

  • Currently it is possible to run a single server box on-premise and use it to power quite a few web sites. This way, pushing the basic hosting cost of a smallish web site down to, say, $50/month is reasonably possible.
  • However, nobody wants to maintain the boxes with 20-30 disparate ASP.NET applications. Even with all the management improvements available these days, making sure all the database backups are running and that all the IIS sites are properly configured is a hassle.
  • Building decent high availability for this sort of hosting is rather difficult. By the very nature of this effort to constrain costs, clustering is often out of the question. The separate applications and databases are easy to transfer, but there are really, really many of them. So any cold spare solution will still take quite a long time to get running.
  • What is clearly called for here is a way to model the applications consistently, and then make it easy to deploy and maintain those applications on a model/rule based framework. I know how to build one, it’s just that it’s not really at the core competence of web developers – and Microsoft already did invent the wheel with Windows Azure…

Web developer oriented:

  • Visual Web Developer Express is still a joke. The tool is great but the lack of decent ASP.NET hosting makes it still inapplicable for hobbyists unless you’re creating an intranet for yourself. See my blog post in July 2005; nothing has really changed since. Disclaimer: This is a Finnish perspective. Cheap ASP.NET hosting is better available abroad. The principle still applies.
  • Writing web apps has become easy. ASP.NET rocks both in Web Forms and MVC flavors. Connecting the web apps with their environment (databases, disk resources, email servers etc.) is still somewhat painful. VS2010’s debug/release configuration enhancements help, but I still want the application model. AppFabric, I welcome thee! (and no, its first version doesn’t really solve these problems, but it’s going in the right direction)
  • I have some opportunities to write and speak about developing web applications in the public. When talking to an audience with no Microsoft preference, it is really hard to argue credibly for the Microsoft stack when talking about non-critical web development.
  • Case in point: I currently work full-time with Microsoft technologies and even evangelize them publicly, yet my web site is powered by Perl and PHP. And while I have used both languages professionally, I’d really rather develop in ASP.NET. It’s the hosting that keeps me on the LAMP stack.
  • And no, I’m not claiming the web developer world would spin around 180° simply by making Azure more accessible. But if you read my blog post back in 2005, you’ll notice that Microsoft was aware of the problem even back then but unable to help. From the point I see it, Windows Azure is Microsoft’s best attack vector to this problem.

Microsoft’s perspective:

  • Hosting providers are getting reasonably easy money for running small ASP.NET sites. Not bad per se, but being one browsing through lots of web development RFPs, I’m seeing an increasing tendency to measure TCO for 36 or 48 months. That easy money is usually weighing against the Microsoft stack.
  • As already stated, hobbyists have little incentive to learn Microsoft web technologies. The collateral damagees are the open source scene for Microsoft web technology as well as small startups (and ok, perhaps anyone who would benefit from a stream of competitive Microsoft programmers).
  • Microsoft’s strategy usually is about gaining market share by being a cost-effective alternative. Grabbing the sites while they are small is a good way to get at least a partner-driven chance to discuss further technology advances.
  • Of course, it would also be an income transfer from SPLA licensing to the online services (but then again, isn’t sort of what the “new Microsoft” wants and needs?)

So… What I really want?

I believe the cloud is the best enabler for not just infinite scaling and resiliency for big applications, but also for millions and millions of small applications. Practical examples: Email accounts. Flickr accounts. YouTube. Facebook pages. The scalability and deployment model really lend themselves to multiplication.

So yeah, I think scaling and resiliency are doing reasonably well with Azure. Now I want to see the small apps conquer the world, so let me outline my product vision. And no, I don’t expect Microsoft to implement this as is, but I’m laying out the ideas to provide background to my suggestions.

Windows Azure Express

  • Fixed price offering at $10 / month
  • A shared slice of processing power for a web role (see below)
  • Access to email sending functionality (hopefully coming!)
  • Windows Azure storage, capacity of 20 gigs
  • Full ASP.NET programmability
  • Data transfer and storage transactions limited to some reasonable values
  • If you go beyond the limits, service is denied for the rest of the month (preferably with the option to pay for more)

The point here is that consumers/hobbyists do not want to carry the risk of pay-per-use pricing, as they are unlikely to reap sufficient benefits from the extra traffic. Also, if somebody wants to spice it up with SQL Azure, it is appropriately priced already.

Windows Azure Compute Small Business Edition

  • Like the current Windows Azure Compute offering, but:
  • A shared slice of processing power for a web role (see below)
  • Priced at $0.03 / hour
  • You can’t buy several slices; the upgrade path goes directly to a full core.

What’s a shared slice of processing power?

The essence here is that you don’t need a full core to run your sites, so you can share a core with several other sites – in practice, you can probably share a whole 8-core (or whatever) box with them. My point is that the two small editions with shared cores should sacrifice peak-load response time for cost efficiency.

How many sites to deploy? As much as the system can squeeze in without unreasonable slowdowns.

What is unreasonable? Determinable through an SLA, but really, it’s not usually defined even in a normal shared hosting scenario. I’m sure this isn’t very hard to gauge in practice. Of course, heavier pages will be slower, but I think the key measurement should be the time it takes to get an IIS request handled.

How to prevent a single site from hogging the whole CPU? If a site starts consuming too much CPU time vs. clock time, throttle its requests. Notify the author automatically of the throttling. It sucks, but it’s the cost of being cheap. Most of the time this is just due to a programming error.

What about measuring by CPU time used instead of wall clock time? It’s a logical suggestion, although I’m not sure on how easy it is to implement. But despite its natural appeal, I’m inclined to vote for fixed prices and varying performance, because at the small end of the scale, fixing price is generally more preferable than fixing performance – it’s not like performance usually ever was a factor for really small applications anyway.

Additionally:

The usability of said features is dependent on three other changes:

  • Support Microsoft WebPI deployments directly to the cloud. I want to see Web App Gallery with “Install on Windows Azure” links within. The idea here is to make it ridiculously trivial to push stuff onto the cloud and get going. That way the Express offering would really make sense to non-professionals (or professionals on their spare time).
  • Support an easy way to fire up periodical tasks (“Task Scheduler for Windows Azure”) so that I don’t have to pay for a worker role to import a CSV file once a day. This is a natural extension to the things described above.
  • Make it easy to see how the site is doing. I can use Google Analytics to track site usage, but if I want to see the trends on resource usage and/or response times, I need something more technical.

Thanks for reading this far :-) Comments welcome.

November 27, 2009 · Jouni Heikniemi · 5 Comments
Tags: ,  · Posted in: Cloud, Web

5 Responses

  1. Mark Rendle - December 28, 2009

    Great post; very sensible suggestions. Cheap access to a full .NET stack is the best way to attract a new generation of developers to Microsoft's awesome platform, frameworks and tools.

  2. No. 1 Azure request: Make it cheaper for smaller apps and services | All about Microsoft | ZDNet.com - January 26, 2010

    […] Microsoft add some new pricing tiers and offerings to its line-up. Jouni Heikneiemi offered a detailed proposal for a "Mini-Azure" that would offer developers fewer capabilities for a lower price. Heikneimi explained in a blog […]

  3. Will Windows Azure succeed? | Mind-driven development - March 6, 2010

    […] the no. 1 request of developers who voted on the My Great Windows Azure Idea website. Several blog posts and discussions run into the same direction. When people realized that Azure computation costs are […]

  4. Jeff McClintock - May 19, 2010

    Totally Agree!
    I want to develop an Azure Application, I'm quite happy to pay….but I'm on a huge leaning curve here (like everyone else) *initialy* it's only going to be a 'toy' app with limited users and limited functions. Microsoft, don't put a huge hurdle in front of me, let me start small ($10 / month) and build my userbase from there. Once i've a serious solution I'll happily jump to paying for full core/s

  5. Heikniemi Hardcoded » PDC10 keynote summary - October 28, 2010

    […] Small Instance with pricing of $0.05/h (see my Mini-Azure post for some background on […]

Leave a Reply