AJ's blog

July 8, 2009

new CloudApp()

Filed under: Azure, SDX, Software Architecture — ajdotnet @ 7:46 pm

Microsoft hasn’t even released Azure yet, still they felt compelled to start a little developer competition. And SDX is participating… .

During the last 4 weeks a team of my colleagues has put together a working application, simulating an actual business scenario. Starting at point zero, coming up with a meaningful idea – in terms of a cloud solution, and putting together a working application, is quite some achievement. Congrats, guys.

Now business scenario sounds a little drab, and banking, especially related to credits, may not actually cause people to applaud hilariously these days. But frankly, since the winner is decided by a community voting and we never thought about that application as particularly “sexy”, we never aimed for that goal. Our aim was to demo the potential of the cloud. Nothing less.

And that’s what the application does. It takes big amounts of data (storage), runs advanced statistical calculations (Monte Carlo simulations) (compute), and delivers the results. Since these are peek time usages, we may use several worker roles to scale out the calculations, cutting back when they are not needed (dynamic provisioning). Exactly what the cloud is about.

And what I really do like is that it doesn’t stop there. Service Bus may be leveraged to integrate this application with “local” solutions, calling back when the calculation has finished. SQL Data Services (once they become available with reporting) may be used for longtime data mining and trend analysis. One can even think of producing information needed to calculate a single credit contract and using Live Mesh to distribute it among the sales people.

So, check it out: http://ratingsimulator.cloudapp.net/  

That’s all for now folks,
AJ.NET

December 20, 2008

Explaining Azure…

… is something I did explicitly not want to do!

Not that it is not necessary to do so. It’s just that I expected a lot of bloggers, especially from Microsoft itself, trying to spread the news and foster understanding of what is ahead of us. Well, the Microsoft folks became kind of hushed, as if ducking down and counting the shrapnels after having thrown the bomb at the PDC. So I changed my mind…

Preface…

Given what Microsoft unveiled at the PDC — A new vision, a new strategy, a new technology stack, and a mish mash of existing, sometimes overlapping, not yet consistent, much less complete applications and services — it’s no wonder that it took me some time to grasp the idea. And when I thought I might have understood the gist I was still, well, unsure of whether I had gotten it all right.
The breakthrough came at the ask-the-experts. More to the point I had the chance to talk to Ori Amiga (the guy that did the “BB04 Live Services: A Lap around the Live Framework and Mesh Services” talk). Other than joking about the various ways to pronounce “Azure” and the fact that Americans always manage to get it wrong (sorry guys 😉 — and sorry Ori, hope I didn’t give you away too badly :o) ), this little chat really turned “suspected functionality” into “understood technology” (at least I do hope so…).

Explaining Azure worked not on explaining the ever present Azure picture as is. It worked on developing the pieces of the picture, bit by bit, and relating it to other concepts. And since I worked for me, I thought I might share the gist of that conversation in much the same style, hoping I’m providing new insights rather than reiterating already available information. Actually I’m going to use the very sheet of paper we (mostly Ori) drew throughout said discussion. 

Enough of the preliminaries, here we go…

First of all, keep in mind that there’s two Azures: Windows Azure and the Azure Services Platform. They are not the same and neither presents the full picture. I’ll try to dissect that picture layer by layer, like a cream gateau…

It starts with the cake bottom: Windows Azure

Windows Azure is the basic “infrastructure” (to avoid the term “Operating System” for now) to run applications on, highlighted in the following picture in red:

azure.1.windows_azure

That includes computing capabilities, basic storage, management of applications (i.e. deployment, including upgrading), and operations (e.g. handling failures). These concepts are abstractions from the underlying OS (Windows 2008 actually), machines, and storage devices.

The terms to think of are service instances rather than processes or (virtual) machines. This is similar to the way virtual memory abstracts physical memory. While any memory access obviously has to happen on physical memory, the virtual memory manager is free to relocate it, even to swap it out to disk. This not only makes applications independent of the amount of physical memory, it also optimizes resource usage, allowing other applications to use the memory my application has claimed but does not access at the moment.

Yet, while Microsoft Azure is one level of abstraction above the machine’s OS, it has similar concepts (highlighted in the above picture in blue):

  • computing ~ job scheduling, etc. (NT Kernel);
  • storage ~ file system (NTFS);
  • management ~ application installer;
  • operations ~ task manager, event manager, etc..

Thus it is quite feasible to call Windows Azure an Operating System for the datacenter (or for the cloud if you’re a marketing guy), even if that may not match exactly what you learned in university about operating systems.

The implications of deploying an application to Windows Azure (i.e. how the application has to be built and how the fabric manages it) is actually quite interesting … but a whole new blog post, thus I will skip that for now.

Let’s move on to the second layer of the cake: The Azure Services Platform

A barebone OS like Windows Azure would be of limited use if it were not completed with other general purpose services. Which services exactly that includes may be debatable, yet, again, the similarity with our local environment may help depicting the features we as developers have come to expect from the platform we are developing on: database service, user accounts, IPC, etc..

Again, the following picture highlights the services in red and similarities in blue:

azure.2.azure_services_platform

Microsoft decided that the following services may be good ones to start with:

  • .NET Services: basic infrastructure services for application security (access control), application communication (Service Bus), and workflow (three guesses…?).
  • SQL Services: database related stuff; not exactly a SQL Server, but aspiring to be…
  • Live Services: All around social applications (community, devices, etc.)
  • Core application services: This is a set of higher level application services, such as SharePoint Services and CRM Services (explicitly not including the UI!). In my opinion they are there because they were readily available, not because they are particularly necessary.

Oh, and not to forget the reoccurring three dots in the PDC slides; those dots tell us that these are not closed and sealed sets. Actually Microsoft said that every major server application will eventually be made available on Azure.

Now for the chocolate and the cream: the applications running on the Azure Services Platform

While Ori included the application layer in the platform, any PDC slide puts it on top:

azure.3.applications

Where you put the label is of no consequence anyway, because this is no more than a logical hierarchy. However, please don’t misinterpret this hierarchy by assuming that those applications have to run on Azure and only applications running on Azure can leverage the Azure services! Au contraire!

If you have an application deployed on Azure it is (technically speaking) no different from other services. The difference only lies in the purpose, or the consumer if you wish. And still applications and services are free to call any services, not just those running on Azure. Likewise if your application is running on your local machine or network it can use services deployed on Azure to store data or integrate with whatever, that’s fine as well. Actually the best example for this flexibility is coming from Microsoft itself: Live Mesh.

The cherry on the cream: Live Mesh

Technically speaking the Live Mesh Desktop and Live Services are just another set of applications and services running on the Azure Services Platform, complemented with applications running somewhere else and using those services. This limited view however would miss much of the capabilities of Live Mesh, and the way it enhances the platform.

azure.4.live_mesh

Live Mesh aims no less than to connect people, devices, and applications. Live Services contains services for identity (LiveID), presence, etc., and Mesh Services to maintain users, devices, applications, and — a corner stone — synchronization. The resource model organizes mesh objects (data, news, etc.) in feeds and entries, which in turn are subject to synchronization among the applications being “deployed” to Live Mesh. “Deploying” an application means either actual deployment on Azure, or storing it for (seamless) installation on your local device, via Live Mesh Client, offline capable if built to be.

Still with me? Well, to make this mess, pardon mesh, a little more tangible, let’s recap the example of Ori’s talk (PPTX WMV, images taken from there):


livemesh_app


livemesh_mobile

He had his media center PC connected to the Live Mesh, advertising its meta data, like favorites, recordings, etc.. That information was synchronized to the Live Desktop (running in the browser), so he could pick a TV show there and “start” recording. (Actually that “start” was some little piece of data, synchronized back to the media center PC which in turn did, surprise!, start recording.) He then started a locally installed application that showed the TV guide and had the typical red recording sign right at the respective TV show. That application was offline capable, so he could have planed his TV recordings on the airplane and have it synchronized when he gets back online. Finally he also showed the same TV Guide on his mobile phone simulation.
The only thing missing was integration with other people, but I think it was in a key note where they showed an application that allowed sharing of film critics with some friends.
All in all, that’s what I call ubiquitous computing!

Spicing the cake: Developer tools

This part is actually not in the picture, but it’s no less essential: Where does your application or 3rd party code fit in? How does it get there? Those parts in red may be your application or service:

azure.5.development

It’s actually quite easy: You can write applications that run on Azure and provide services (just like the basic services Microsoft provides), or an UI (just like Microsoft’s applications). You can access any of those services from the cloud or your local application, no matter whether Microsoft provided it or someone else. And you can Mesh-enable any of these applications and services as you like. This is an open platform!

Also Microsoft provides a simulated local environment for Azure, called development fabric, along with Visual Studio integration. Thus it is possible to develop your application locally, test it locally, and only afterwards deploy it to the cloud.
Regarding Live Mesh Matthias has more information on developing with Live Framework.

Postscript…

That’s it. You can find the complete untampered drawing here. That scrawl at the bottom of the drawing is actually Ori’s signature, but you should attribute any error, misunderstanding and adverse opinion in this post to me.

Finally two links for some alternate explanations (already repeated a thousand times over, but what the heck, they’re good):

That’s all for now folks,
AJ.NET

kick it on DotNetKicks.com

November 16, 2008

About Azure…

Ray Ozzie, Keynote PDC 2008 This post (and probably some more) is about coming to grips with Microsoft’s latest announcement at the PDC: Windows Azure and the Azure Services Platform. Matter of fact, I’m constantly turning this thing over and over, trying to discuss it with various different people, trying to think different scenarios through, and I’m constantly adjusting my perception. Frankly, if anybody tells you he has understood what is ahead of us, who says he knows how all that stuff will evolve, you’ve met a fool.

Now for this fool’s current view…

I’ll not try to explain it in technical details (not this time anyway, start at here or here to come up to speed — anyway, there are probably books being written about it right now). And I’m certainly not going to join the debate, whether Azure is an operating system or not.

I was still at the PDC when I started a Google search to see what reactions Azure triggered. That particular question was a predominant topic — and utterly without any consequence. (I couldn’t find that again though, it’s buried under millions of near identical pages describing Azure.)

So let’s talk about what Azure is about. For me, for you, for the companies we work for, for the industry.

Hailstorm — or what Azure is not

When I first heard about some of the Azure stuff I immediate thought “Wait, didn’t they announce something very similar in 2001? Called Hailstorm a.k.a .NET Building Blocks a.k.a. My Services?”. It turns out that I was not the only one with this particular déjà-vu

Taking a closer look, however, there are some significant differences in strategy between Hailstorm and Azure: Hailstorm was about Microsoft providing services to manage your data. Azure is about providing a platform for your services. In other words: With Hailstorm Microsoft said “give us your data and identity, keep the apps”, with Azure they say “give us your apps, you may keep the data and the identity (or you may choose to let us handle that as well)”. This is certainly a noteworthy change in attitude.

There’s another thing that changed since 2001. In 2001 Hailstorm was a new approach. It was visionary. It was the first time that someone asked me to let him manage my identity, appointments, even my wallet! And it was the evil empire that asked this very question… .
Today, hosting providers are a common thing and trusting Google or online communities with personal information is quite normal. Going even further, Amazon already offers a service platform with AWS, based on virtual machines (EC2), storage (S3 and SimpleDB), and a queuing service (SQS) as messaging bus. Google App Engine provides scalable application hosting (Python apps) and complements that with their identity system (Google Accounts). So, the good news for Microsoft is that they are for once not the bad guys. Of course, Microsoft being Microsoft, that probably only means that they will be accused of being the copycat again… .

What Azure may eventually become…

Still, what’s the big deal about Azure? I mean, doesn’t my hosting provider offer virtual or dedicated servers? Aren’t there enough storage offerings, many of them for free? Aren’t there Internet communities, online applications, service providers, …?

Azure Services Platform Well, looking at Azure piece by piece, there’s nothing new, nothing especially exciting. But take a step back and look at the big picture, at the strategy. With Azure…

Microsoft becomes a service hoster and operator. Not just a server hoster. They don’t stop at booting a VM. They operate your applications, load balance them, restart them on failures, scale them, provision them, provide an upgrade mechanism that doesn’t disrupt 24/7.

Microsoft becomes an application service provider as well as a service provider. They do not stop at providing fully fledged business applications like CRM or other. They offer basic infrastructure services like SQL Data Services or Workflow Services. You could even build your own CRM System, run it on Azure, competing with Microsoft’s CRM — and Microsoft couldn’t do anything about it (for if they would, that would put them out of business at the speed of light).

Microsoft becomes a service integrator. They don’t stop at getting applications into the cloud. They offer bridges to your company’s private network. Using Access Control you can leverage your local AD to control security. Using Service Bus you can integrate with any application on premise or in the cloud, even let business partners integrate with you.

Life Mesh "ZEN" Microsoft becomes a device integrator. They don’t stop at central storage or some device specific app for synchronizing contacts and appointments. The let you sync any application data on any Live enabled device on the fly, including handling offline cases.

Microsoft becomes a people integrator. They don’t stop at providing some social application. They allow you to collaborate with other people within your own application. “People” being users authenticated by your AD, LiveID, OpenID, and probably any other well-known ID provider. All based on “claims” in order to build trust between app and user.

And most important: They do all this at once! Putting it all together Microsoft offers a far more complete, comprehensive, and concrete vision of what the hazy term “cloud computing” means than anybody else out there. It’s the vision of interconnected, intertwined applications, devices, networks, … the next level of ubiquitous computing.

OK, I may have been carried away. Currently Azure is rudimentary, not yet version 1 (and we know what version 1 usually means at Microsoft) and many questions remain unanswered. I cannot help but think that the mixture of various existing apps and services with hosting and a big bunch of announcements, all wrapped up in a nice name, is more like a stew, thrown together but not yet readily cooked.

But then I might not. After all, Ray Ozzie said it loud and clear:

“[…] the systems that we’re building right now for cloud-based computing are setting the stage for the next 50 years of systems, both outside and inside the enterprise.”

and

“[..] we’re betting on Azure ourselves, and as the system scales out, we’ll be bringing more and more of our own key apps and key services onto Windows Azure because it will be our highest scale, highest availability, most economical, and most environmentally sensitive way of hosting services in the cloud.”

That’s what I call an announcement.

Does Azure stand a chance?

Cloud computing and Software-as-a-Service is widely seen as a coming trend, Azure or not. Microsoft is entering this market with vision, data centers, and service offerings. And a huge developer community and tooling support. This will change the IT industry and not many companies will be able to compete with that.

But a small statistic may be funny:

Google search for „Windows 7“: about 35,000,000 hits
Google search for „Windows Azure“: about 1,830,000 hits
Google search for „Amazon AWS“: about 13,000,000 hits
(measured 12. Nov.´08; add one for this post 😉 )

That’s 20 times more hits for Windows 7 than for Azure. Quite a poor result for the thing that denotes a change in strategy for the worlds biggest software company, the thing that Microsoft is betting its future on.
On the other hand, 2 million hits is “not too shabby” just two weeks after its announcement on the PDC. And it starts to shine if compared to the mere 7 times more hits for Amazon’s AWS, the offering that’s probably the most similar to Azure and one that dates back to 2004(!).

My opinion? Don’t expect Azure to play a big role next year or the year after. But then, don’t expect it to play no role in 10 years.

That’s all for now folks,
AJ.NET

kick it on DotNetKicks.com

Create a free website or blog at WordPress.com.