Silverlight and Windows 8

by Ciprian Jichici 16. September 2011 02:34

Another highly speculated subject in the past few months refers to the future of Silverlight in the context of Windows 8’s release. The reality is that there’s genuine concern out there, as there are significant investments in SL, especially for Line-of-Business applications. The reminder of this post focuses on the this particular scenario: moving forward in a Windows 8 world with SL-based LOB apps.

Now that we could get Windows 8 in our hands, some things are becoming more clear. First of all, Silverlight continues to be a first class citizen in Windows 8 desktop apps. The desktop version of IE 10 fully supports Silverlight and your apps will run the normal way. More than that, Microsoft continues to make significant efforts with Silverlight (version 5 has just reached the Release Candidate milestone). So, from this point of view, your SL investment is more than safe.

The story changes when it comes to Metro apps. Turns out that the Metro version of IE 10 does not currently support plug-ins (no SL, no Flash). So you won’t be able to run your SL app in Metro mode. At first sight, this sounds like a bummer. After a more detailed analysis, things start to make some sense.

First of all, I’m not sure you really want to run a SL app as-is, in the Metro browser. Mostly because you designed your SL app from the ground up to work in a keyboard-mouse environment. Which is great in a desktop environment. But sucks in a touch environment. Sucks to the point of being close to unusable.

Closely related to the above is productivity. I’m not sure the tablet environment will ever be extensively used for productivity apps. I just don’t buy into that. In a LOB app, there is nothing yet to replace the good old keyboard and the mouse. You don’t believe me, use only a tablet for a couple of months for productivity apps. It just gets on your nerves. So, most probably, you will want to provide just a portion of the user experience in a Metro app. Which means that you need to write code anyway.

Another point to take is that there are patters like MVVM that make o good work of making changes in the View less painful.

Finally, you must take into consideration that Windows 8 Metro apps have native support for XAML. The XAML syntax is virtually unchanged, so in theory you can port your SL XAML to Metro XAML. Again, I don’t see much value in it (due to usability issues in a touch environment), but it’s possible.

In a nutshell, the story goes like this:

  • You will run your SL LOB apps unchanged in Windows 8 in desktop mode
  • Should you need to provide a Metro version of your SL app, you will probably have to redesign anyway (because of design and productivity issues)
  • Patterns like MVVM and native XAML support in Windows 8 Metro apps can make the implementation of the Metro version of your SL app less painful

Tags: ,

Silverlight | Windows

.NET Gets a New Lease of Life

by Ciprian Jichici 16. September 2011 01:51

For the past few months, there has been a somewhat heated debate over the future of .NET on the new Windows 8 platform. Folks were concerned about the possibility of having to abandon their 10+ years of investment and being forced to move towards other things like C++ or JavaScript. Don’t get me wrong, both C++ and JavaScript are amazing technologies, but for a hardcore .NET developer, they represent alien worlds.

With the new release of Windows 8, the obvious was officially confirmed. Not only .NET is here to stay, but it gets even more important. On one hand, it gets tons of new features for server-side development. On the other hand, it remains a first class citizen on the client too. I’ll leave the server side for a future post and I’m going to focus in the reminder of this post on the client story.

The first thing you need to understand is that Windows 8 comes with the full version of .NET 4.5. Here’s the proof for that:

image

The version of clr.dll (located in C:\Windows\Microsoft.NET\Framework64\v4.0.30319) indicates 4.0.30319.17020 (as opposed to the latest .NET 4.0 version which is 4.0.30319.225 if my memory serves me well).

The second important thing to understand is the way in which apps are run on Windows 8. There are basically two major categories of apps: desktop apps and Metro apps. The following picture shows the high level architecture of this approach:

clip_image001

A desktop app is the type of app we’re all used to from previous versions of the OS. When it comes to .NET, this is a full .NET client application, with all the stuff in it. Obviously, old apps will run without a problem. Whether they are WPF apps (like Visual Studio for example Smile ), Silverlight, or any other type, they will just run. I want to be crystal clear on this: DESKTOP APPS ARE NOT SECOND CLASS CITIZENS IN WINDOWS 8. They continue to represent an extremely important part of the platform.

A Metro app is they new type of application that uses the new interface style introduced by Windows 8. In a nutshell, this type of interface is based on the Metro UI concepts, and it’s optimized to be used in both touch and keyboard-mouse scenarios. The important thing to understand here is that these apps are run in a protected environment. Which makes a lot of sense since this is the “tablet” world where you’re interested in providing an environment for secure and safe applications that can be downloaded and installed in a very easy way from an app store. The protected environment is provided by an AppContainer (a new concept introduced by Windows 8). In this protected environment, the app will be allowed to do only certain things. Simply put, it’s a locked down medium where you have to play by the rules.

As you can see in the picture above, among the types of Metro apps you have the C#/VB apps (aka the .NET apps). Now this is where things are becoming interesting. You might have noticed that they run on top of something called the WinRT (Windows RunTime). WinRT is basically a set of native APIs, highly optimized, that run on top of the OS kernel itself. Understanding the role of WinRT is key to understanding this whole new model of app development.

WinRT inherits a lot from .NET. To name just a few things:

  • Metadata (Because native code does not support metadata embedded into it, the metadata is stored in separate files with an WINMD extension. These files are located in C:\Windows\System32\WinMetadata. The cool thing is that the format used is the .NET format – with some minor additions. This means you can even ILDASM these files. Although it’s a .NET format, the metadata approach in WinRT is unversal, meaning that it is available across all languages)
  • .NET style namespaces
  • .NET compatible base types
  • Native support for XAML

So, as you can see, .NET had a fundamental influence on WinRT. BUT WINRT IS NOT .NET. It’s a set of native APIs available for all Metro languages (C#,VB, C++, JavaScript). To clarify even more:

  • WinRT is the API used for Metro apps – it is not available for desktop apps
  • Win 32 is the API used for desktop apps – it is not available for Metro apps

But WinRT also introduces some fundamental new approaches:

  • Asynchronous calls are used exclusively in lots of places (as opposed to previous approaches where the developer had a choice between synchronous and asynchronous – this just emphasizes the laser focus on performance in Windows 8)
  • No message loop (believe it or not, it’s not there Smile)
  • No GDI stuff, all graphics goes via Direct X (it’s not yet very clear what is the current position of XNA in this, we’ll have to wait and see)

Now that we are clear about the context, let’s get into the details of Metro apps developed in .NET. When you use the C# or VB Metro app template, you are basically developing against a .NET framework profile named .NET Framework Core 4.5. This means that there are only certain things from the full version of .NET 4.5 that you can use in your app (much like we had in previous versions with the Client Profile). In addition, there is only one AppDomain (the Default). But don’t worry, all the cool things are there: generics, LINQ, and so on. The new thing is that you can also use WinRT namespaces as first class citizens in your .NET app. This is possible because of the metadata model I described above.

What you get when you compile you code is plain old MSIL which runs inside the .NET CLR. The interesting part here is that when your code gets JIT-ed or NGEN-ed, based on the WinRT metadata that you refer to, the WinRT metadata references are transformed into v-table calls into the native libraries.

In a nutshell this is the story with C#/VB Metro apps:

  • They run in the CLR as all .NET apps do
  • You get the power of .NET 4.5 (except for constrains imposed by the Core profile)
  • You consume transparently WinRT libraries (via the new metadata model introduced by WinRT)
  • Your execution environment is further constrained by the OS (via the AppContainer)
  • Your UI is based on XAML which has native support in Windows 8 Metro apps

Well that’s about it. Obviously, all info in this post is based on information available right now, which might change. It could also be that I misinterpreted some of the info and had drawn some inaccurate conclusions. But the big picture is clear beyond any doubt: .NET is here to stay in Windows 8. You can use it either for desktop apps which benefit from the full power of the OS and the .NET Framework, or you can use it to develop Metro apps which benefit from the CLR and the native, high performance, layer of WinRT.

To paraphrase a classic: “the rumors of .NET’s death are greatly exaggerated”. Not only it’s present in Windows 8, but it’s even taken to a whole new level, and some of it’s key concepts have been broadened and made available throughout the entire OS, as native implementations.

Stay tuned for more great stuff coming from //BUILD.

Tags: , , ,

Windows

The Verdict Is Out: It's the Phoenix

by Ciprian Jichici 14. September 2011 09:39
Wow!!!!!

I have just attended what was perhaps one of the coolest keynotes ever at a Microsoft conference. And to tell you the truth, I have never been in my entire career as enthusiastic as I am right now! Those who know me personally know that it takes quite a lot to make me say wow and that I have a tendency to be critical rather than supportive. But the Windows 8 story I saw today is one of those rare things that felt like being the right thing from the very first moment. You know the feeling? Everything just clicks in and seems to be the right thing, at the right time, in the right place. I think I just fall in love with Windows 8 today.

As an overall note regarding the keynote, not only it was sharp and cool, but it benefited from one of the best deliveries I've seen for a long time. A relaxed and confident Sinofsky put up an excellent performance. I've been writing about this previously, and it seems to get better and better. I'm talking about a sense of coolness projected by Microsoft. Seeing the Windows big boss wearing snickers and jeans, talking about the bold decisions taken in order to re-invent the OS was very refreshing.

It's hard to decide where to start, so I'll just stick with my first love: the developer story. As you probably already know, a very heated debate is going on for quite some time regarding the Windows 8 developer story. Folks were concerned about the future of .NET, Silverlight, and XAML. It took Sinofsky one slide to clear things: XAML over C#, VB, and C++, and HTML + JavaScript. End of story. Windows 8 supports both. An amazing demo showed a Silverlight app taken from ScottGu's blog, recompiled, and run on Windows 8. It's what I've been expecting to hear and it was confirmed today.

The hardware story is equally amazing. First of all, Windows 8 will run on x86, x64, and ARM. It will run on every imaginable form factor out there. And the boot time, oh yes... We all know that boot times were one of the things which attracted lots of criticism. Well, that's history. We've seen today systems running Windows 8 booting faster than the time you need to open the lid. But that's just part of the story. Tremendous efforts have been put into optimizing the performance of the OS, and this really shows. Sinofsky showed one of his old netbooks with 1Gb of RAM and an Atom proc, running Windows 8 with impressive results. More than that, things like hardware acceleration are becoming standard in every aspect of the UI.

But perhaps the most amazing thing about Windows 8 its the UI. Simply put, it's just fantastic. Being based on the Metro concepts, it's fast, responsive, and just feels good. After what we've seen today, even the most skeptical attendees were convinced that Windows 8 is excellent for portable devices, especially for tablets. It was about time to have this change, and I believe Microsoft met and even exceeded expectations regarding the new Metro style UI.

It's been proven once again that under immense pressure, Microsoft is able to create amazing stuff. For me, it's beyond any doubt now that Microsoft is set on a course to dominate the consumer space once again. They basically re-imagined Windows from chipset to experience on all major areas: capabilities, scenarios, and form factors. What they got is an amazing OS which, at least for me, is everything I hoped for and a lot more. I just can't wait for the next months and years of developing great solutions!

Well, that's it for now. Time to get into the details. Stay tuned for lots of interesting things to come...

Tags:

Windows

Microsoft's Ground Zero

by Ciprian Jichici 13. September 2011 17:40

For years, Microsoft's dominance in the world of client operating systems was sort of undisputed and taken for granted. Windows, Office, and Internet Explorer were THE choices out there. Windows Mobile was THE choice when  it came to smart phones. Even more ahead of it's time, the Tablet PC made Star Trek look more science fact than science fiction. All in all, the dominance was obvious, strong, and, at times, crushing for the competition.

With the strong grip on the client side of things, Microsoft turned its attention to the enterprise, where at that time it was merely an underdog. Playing on the strengths of Windows and Office, the folks from Redmond paved the way for the spectacular rise of SQL Server, SharePoint, BizTalk and of course, .NET. After years of painstaking work and tremendous efforts from the product teams, it looked like Microsoft was finally on the course to become a major enterprise player.

But then something happened along the way. Something that, for me, represents the essence of information technology. It's the thing that makes me love this field, the thing that justifies the airports, the long flights, and all the other prices I have to pay to be an actor in it. That thing is innovation.

In a blink of an eye, the tide shifted. Windows Vista was an OS that even a Microsoft technology fan like me disliked profoundly. Windows Mobile was sent to oblivion by iOS and Android. Internet Explorer started to feel real heat from FireFox, Chrome, Safari, and Opera. Despite the rivers of digital ink flown in debates over what happened, the root cause of the shift was rather simple. Blinded by the enterprise wars and the relative warmth of the client world top dog position, Microsoft lost the consumer world. In this world, it moved from pedal-to-the-metal innovation mode into don't-need-to-do-anything-yet mode. It choose to fight the iPhone with Windows Mobile and the iPad with Windows 7 running on slates. To me, those were the times that qualify as a genuine Ground Zero for Microsoft. Not because of sales, those continued to be stellar. Not because of Windows and Office licenses, those went on and on in the hundreds of millions. But because of the apparent loosing of touch when it came to innovation in the consumer space.

Many were quick to announce the end of the Microsoft era, and there were even voices that went as far as predicting Microsoft's end as a software company. I think those persons and those voices were and still are very, very wrong.  Why? Because the same thing (innovation) happened again, this time, on Microsoft's side.  The signs quickly added up. The  phenomenal success of XBOX and it's Kinect sensor, the high quality of Windows 7, Windows Azure, and Windows Phone were just a few of them. Proving able to learn the new rules of the consumer game, Microsoft looks now to be set on a course to re-conquer the consumer space of the 21st century. It won't be as easy as the first time, but it's definitely possible.

I'm writing this post from 40000 feet above Europe, while flying to Anaheim, CA, for the BUILD conference. All signs indicate that this week will prove to be crucial for the long-term future of Microsoft's position in the consumer space. The bar is set vey high and expectations are skyrocketing. Everybody wants to see whether Microsoft is able to re-invent Windows and make it a player in the post-PC era. According to many, Windows 8 will prove to be either the Phoenix or the Nemesis of Microsoft. In my mind, there is absolutely no doubt on how things will go. I believe this will be the week when the game changes, the week when Windows will shine once again. It will mark a turning point defined by Microsoft adding the final and most important piece to the grand scheme of rebuilding its consumer Ground Zero.

Stay tuned for some fantastic news!

Tags:

Windows

Who Let The Dogs Out?

by Ciprian Jichici 24. June 2011 03:19

Seems to me the dogs are out in the wild when it comes to cloud wars. Microsoft’s latest announcement refers to a first (and significant) breach in Azure pricing. For the first time since Azure was launched, a significant component of its pricing scheme (inbound traffic) is reduced to zero. From this point of view, perhaps a better title for this post would be “Who Let The Dogs In?” Smile

It’s interesting to analyze a bit what’s behind this bold decision. First and foremost, it signals to me that Microsoft believes their cloud storage and communications infrastructures are mature enough to cope with the potential data surge resulting from their decision. Second, the decision underlines one key point in their cloud strategy: make cloud storage very attractive and tempt customers to use the cloud to store as much as possible of their data. Third, it eliminates part of the weird case of double taxation for the same service (a cloud customer pays two bills for the data traffic – one to the ISP and one to the cloud provider).

There are several scenarios that are boosted by the decision. Up until now, in US and Europe, the cost of storage was 15 cents/GB/month and the cost of inbound transfer was 10 cents/Gb/month (this is valid for pay-as-you-go offers, but you must be aware there are other offers too, tailored to specific needs). Outbound transfer was priced at 15 cents/Gb/month. All in all, the cost of moving 1 GB of data through the cloud (assuming you keep it there for one month) was 40 cents. With the new pricing scheme, this drops to 30 cents (a 25% decrease).

The reality is that there are scenarios where the real decrease in cost is much more significant. Think about using the cloud storage as a support for your backups. Suppose your backup is a modest (Smile) 1 TB/month and your incidents force you to retrieve from backup 1TB/year. Using today’s costs (assume a US or Europe datacenter, basic pay-as-you-go scheme), loading up the backups will cost 12 * 1024 * 0.10 = 1228.80 dollars/year. Keeping that data in the cloud costs you (1 + 2 + … + 12) * 1024 * 0.15 = 78 * 1024 * 0.15 = 11980.80 dollars/year. Finally, getting that 1TB out every year would cost 1024 * 0.15 = 153.60 dollars. This amounts to a grand total of 13263.20 dollars. Eliminating the 1228.80 dollars leads to a 9.2% decrease in cost. Not that much, some might say. True, but if you take a closer look, I assumed above that you will keep all 12 full backups in the cloud. What if you decide to keep only the last full backup? Well, the total cost will be 1228.80 + 12 * 1024 * 0.15 + 153.60 = 3225.60. In this case, the cost reduction is a significant 38%! That’s a big one, by any standard, you have to agree.

Backup is not the only scenario that gets important benefits from this decision. Basically, any scenario where a cloud customer supports the costs of putting data in the cloud while transferring the costs of getting data from the cloud to its own customers (either directly via invoices or indirectly via ads for example) benefits from zero inbound traffic price.

One other interesting thing to watch is what will be the reaction, if any, from Microsoft’s competitors in this game.

Tags:

Architecture | Azure | Microsoft Application Platform

A Sign For Things To Come

by Ciprian Jichici 22. June 2011 17:48

Nokia’s launch of the N9 phone looks to be a very interesting sign for things to come. At first sight, the design of the device is nothing short of impressive. It’s slick and elegant, and, I might add, cool. Seems to me it’s the kind of phone that has the capacity of creating a buzz. I did yesterday a flash quiz among some of my friends and about two thirds of them were so impressed about the looks of the phone that they admitted it looks better than an iPhone or any Android device. I know, this is not relevant from a statistical point of view. But, to me, it’s still a very interesting indicator. It proves once again that Nokia still has what it takes to produce fantastic hardware.

Obviously, there is one flaw with Nokia’s story, which is the OS running on the phone. Although it looks pretty nice, the MeeGo OS has no real future perspective. So, the immediate question is: what was on Nokia’s mind to launch such a phone with only months to go until the availability of Windows Phone 7 devices? For me, the answer is quite obvious: it’s a teaser. It’s a product that probably was in the works by the time Nokia entered the Microsoft deal, a product that is most probably aimed to restore a bit consumer confidence in the company and ease the wait.

In fact, Nokia’s N9 is nothing more to me than yet another element to support the decision regarding my next Windows 7 phone. Although I decided quite some time ago (when the news about the Nokia-Microsoft deal went public) that my next device will be a Nokia running WP7, the N9 is a proof that I’m right to wait. Imagine running Windows Phone 7 Mango on something like the N9…

Nokia is sailing through rough seas these days and many are questioning their decision to go the WP7 way. I totally agree with the fact that there is absolutely no guarantee that this marriage will be a successful one. And that’s simply because you’re talking about two very different companies, with very different cultures. Still, one cannot ignore the reality. The one big thing that Microsoft missed when it launched Windows Phone 7 was a killer device. Sure, all the phones in the original lineup were good. But none of them made me say wow! in the way that the N9 does. On the other hand, the one big thing that Nokia was missing for years was a good OS. They produced fantastic hardware in the past but they never seemed to be able to nail it with the OS (remember Symbian?). Combine the needs and the strengths of the two and you might get the ultimate gadget.

A product that goes in the footsteps of N9 from the point of view of design and hardware, and runs WP7, might be that perfect combination capable of becoming the new king of gadgets. The truth is that the more I study the N9 and the more I use WP7, the more confident I get about the chances of success for the Nokia-Microsoft marriage.

And that success might just open the door for a killer Nokia Windows 8 tablet, right?

Tags:

Windows Phone | Consumer

That Illusive Appliance

by Ciprian Jichici 10. June 2011 01:48

Ever though about a Windows Azure Platform Appliance running in your own backyard? Well, the freshly released Fujitsu Global Cloud Platform could help you get an idea about the intended scale of such an appliance. While not being necessarily a very accurate indicator about the scale at which Microsoft intends to marked the cloud appliance, it is nevertheless an indicator. Since Microsoft talked for the first time about it, I’ve received lots of questions about its availability. Most of these questions came from companies which, despite being important players in their local geography, are too small from a global perspective. For the moment, unless you are Fujitsu, Dell, eBay, HP, or the like, don’t plan on getting your own Azure to play with (what I mean here is that it probably doesn’t make sense for you from a financial point of view).

Microsoft’s strategy so far has been to mention the appliance on virtually every occasion but refrain from providing details. This generated a certain level of expectation within the industry, and even made some analysts question its very existence. I’d dare to say this also generated a certain level of confusion, leading some IT managers to believe that in the not so distant future they’ll be able to play with their own on-premises Azure (although Microsoft never delivered such a promise regarding the appliance).

I guess the Fujitsu announcement brings a bit of clarity into this story. For now, the appliance is clearly neither intended nor marketed as an affordable multi-server (read “a few servers”) solution for IT departments. This quote from the official Azure Platform Appliance page is relevant:

“Think of it as hundreds of servers in pre-configured racks of networking, storage, and server hardware that are based on Microsoft-specified reference architecture.

The Microsoft Windows Azure platform appliance is different from typical server appliances in that it involves hundreds of servers rather than just one node or a few nodes and It is designed to be extensible[…]”

I think Microsoft’s communication strategy around the matter, although not perfect and despite some of the confusion it generated, is just about right. Nowadays there’s a lot of buzz around the private cloud concept (I’ve talked about this previously on this blog). Two important approaches are to be considered here:

  • Do-it-yourself
  • Buy it from a provider

In the case of the former, your IT department will use several tools and technologies (virtualization being among them) in order to become a service provider within the organization. If we’re talking about the Microsoft platform, we’re talking today about Hyper-V and System Center.

In the case of the latter, the same IT department will buy instead something (most probably some kind of appliance) that provides out-of-the-box the needed services.

Unfortunately, there’s a lot of confusion around private clouds today. Some of this confusion also comes from companies (read major players) who (for the moment) lost the cloud train and are trying to overcome this weakness by rebranding collections of their products and services as “private cloud”. By doing this, they hope to mask the lack of real cloud offerings while working hard to recuperate the delay. In this context, like many previous buzz-words (BI and SOA are the ones that I can think about immediately), private cloud is many things to many people. And that’s why I agree with Microsoft’s “better-don’t-give-details-rather-than-being-misleading” strategy, despite the drawbacks I mentioned above.

In a nutshell, the “private cloud” reality in the Microsoft world can be summarized as follows:

  • You can do it yourself with Hyper-V and System Center (but don’t expect to get the level of service that you get from Windows Azure); still, you can get excellent results combining the two;
  • You can buy it as an appliance (giving you most, if not all, the functionality that exists in the public cloud); right now, you must be a true global player to qualify for it;
  • If you’re not a true global player, there is no appliance offering for you yet (again, with the risk of repeating myself, what I mean here is that it probably doesn’t make sense for you from a financial point of view); by all means this does not exclude the fact that at some point in time, a more reduced/compact version of the appliance will become available.

Hopefully, this is a welcomed clarification when it comes to translating the public cloud buzz into the reality of Microsoft’s platform.

Tags: , ,

Architecture | Azure

Windows. The Next Generation

by Ciprian Jichici 3. June 2011 03:33

Let me start with a quote from a previous post:

“[…] And I’ve also asked myself why doesn’t Microsoft consider Windows Phone 7’s OS the obvious candidate to fight the tablet wars? After all, given the circumstances, it’s doing a good job in the smart phone space. After spending a fair amount of time thinking about this, I realized that throwing in the battle at this moment a WP7 based tablet (or tablets for that matter) would really qualify in the “rush in with a fix” category of moves. Let me explain why.

The most important reason is that Microsoft and Windows own the (desktop, laptop, netbook) space. It would be fundamentally wrong to ignore this fact when developing strategies for the smart phone and tablet wars. And it would force Microsoft to fight the war without its most powerful weapon. I’ve said above at some point that I think the fundamental weakness of the tablet today is the fact it runs OSs initially developed for smart phones. Combine that with the form factor, and eventually you will find out after a while that it’s quite hard to perform productive work on the tablet. Pressure is high for a compelling Windows tablet, no doubt about it. Android and iOS are gaining more and more traction every day, including in the enterprise. Yet more and more tablet owners admit that after the initial enthusiasm of owning a tablet they end up back to the (desktop, laptop, netbook) for productive work. The fact is, neither the smart phone nor the tablet are yet in a position to kill the (desktop, laptop, netbook). It’s likely that for a few years at least, these worlds will coexist. Actually, I think this gives Microsoft a bit of space to think, prepare, and make the right move. Finally, it’s pretty obvious that both the smart phone and the tablet markets are in their infancy. There is a lot of room for growth, and, while the early players have a clear advantage, there’s always going to be room for quality products.

What should be Microsoft’s next move? I now believe it has to be Windows centered. Not Windows 7 because, despite it’s awesome qualities, Windows 7 is not really suitable for touch devices. Microsoft’s next move also needs to capitalize on the strengths of Windows vs. the weaknesses of today’s tablets. In a nutshell, Microsoft needs to deliver a new Windows that’s ready for the next killer device. What’s that device? I dare to predict it’s the one that will combine the efficiency of the laptop with the mobility of the tablet. Many say the smart phone and/or the tablet are today’s new PCs. Turns out they are not. At least not yet. But the day is coming, there’s no doubt about it. “

A short while ago we’ve seen the first public demos of Windows 8. Personally, I’m way more enthusiastic than I thought I would be. In fact, to be honest, the last time I was this impressed was when I made first contact with .NET. It’s not because of the METRO UI approach (although I like it very much). It’s not because of the fresh look and perfect match of the experience with the slate/tablet format (although I’ve expected this for such a long time). It’s probably because I’ve always been fascinated by a good chess game. It’s really amazing how some players, when they are under immense pressure, find the resources to avoid the “quick fix” move, opting for the more painful longer-term fix. Which is usually the only one that can lead to a strong end game. For me, this is the difference between great chess players and amateurs.

And that’s exactly what Microsoft is doing with Windows 8. By the looks of it, it’s going to be an amazing OS. True, there is still a huge amount of work to be done in order to harness and deliver the full potential of the new W8 concept. But it’s a real good feeling to see the guys in Redmond are indeed making the right moves towards ensuring that the platform so many of us love reinvents itself and rises to the challenges of the decade.

Let me finish by restating what I’ve said in another blog post: Microsoft looks more and more like a really COOL company.

I guess that says it all.

Tags:

Windows

Year 2 A.C.–Life In The Cloud

by Ciprian Jichici 26. May 2011 23:56

We’re in year 2 A.C. (anno cloud) on the Microsoft Application Platform. Lots of things are now a bit more clear than they were at the beginning of this era, but some are still to be clarified. Based on some recent feedbacks I got from software architects and developers, I came to the conclusion that it would be a good idea to produce a brief report on how does Azure impact our work in its second year of commercial availability.

Please note this is ongoing work. Today’s version of my analysis is merely a starting point. I’m not claiming it’s exhaustive and it very likely that it will be updated many times. In fact, your feedback would be greatly appreciated. By the way, I’m delivering today a talk at the IT Camp conference in Romania based on the ideas presented below.

This post has also been published on AzureCloud.eu, a site I strongly encourage you to visit if you’re interested in talks about Azure.

So, here it goes…

1. Azure Current Status

First of all, let’s start with a discussion about the big picture by answering the following question: what is the cloud computing offering on the Microsoft Application Platform?

The short answer is the Windows Azure Platform, but that’s way too generic. To get into more details, I’ll start with a bit of history. The first public announcement (and the first CTP) of Windows Azure occurred in October 2008 during the PDC. The next year brought the announcement about SQL Azure (the relational database in the cloud) and an updated CTP. The platform became commercially available in February 2010 and got later in the same year some significant updates.

Now’s a good time to be more specific. When we talk about Windows Azure, we really talk about four major components:

  • Windows Azure with the following functionalities:
    • Compute – web roles and worker roles
      • VM Role (currently in BETA) – deploy custom Windows Server 2008 R2 images
      • Extra Small Instance (currently in BETA)
    • Storage – blobs, queues, tables, and drives (NTFS VHDs mounted into compute instances)
    • Content Delivery Network – broad reach via globally distributed locations
    • Virtual Network
      • Connect (currently in CTP) – secure network connectivity between on-premises and cloud
      • Traffic Manager (currently in CTP) – load balance traffic to multiple hosted services
    • Management
  • SQL Azure with the following functionalities:
    • Database – relational database service built on SQL Server
    • Reporting (currently in CTP) – develop and deploy operational reports on the cloud
    • Data Sync (currently in CTP) – data synchronization service built on Sync Framework
    • Management
  • Windows Azure AppFabric with the following functionalities:
    • Service Bus – secure messaging capabilities
    • Access Control – standards-based service for identity and access control
    • Caching – distributed, in-memory cache service
    • Integration (will be CTP in 2011) -  BizTalk server integration capabilities
    • Composition Model
    • Management
  • Marketplace
    • Data Market
    • App Market

Well, that’s about it. Windows Azure seen from 10000 feet as it is today. As you can see, it’s an evolving platform with some components already available in release form and others as BETA or CTP. It’s also interesting to note that, while it started as pure PaaS, Azure is now also moving into the realm of IaaS (see this post for a detailed discussion about XaaS). Another interesting discussion revolves around the availability of Windows Azure in your own backyard (commonly referred as Windows Azure Platform Appliance). Despite the fact that Microsoft talks quite often about it, it’s nowhere to be seen yet.

Now that we have an overview of the platform let’s see how can we use it to architect the next generation, cloud-based applications.

2. Architectural Challenges

In the years that passed since software architects started to take into consideration cloud-based approaches for their solutions, one thing became very clear: there are lots of challenges and questions to be addressed. There is no doubt in my mind that on the long run the cloud will become ubiquitous. It has certain advantages in terms of flexibility, scalability, and availability that simply cannot be matched by on-premises solutions. On the other hand it also has some shortcomings that will most probably lead to a hybrid world (at least in the foreseeable future) where our software will run partly in our own backyard and partly in the cloud.

Consequently, as we advance into year 2 a.c., software architects have to address the following challenges (I don’t claim this to be a complete list, it one based on my practical experience):

  • The pace of evolution – as you can see in the Azure status I presented above, the cloud environment evolves much faster than the traditional on-premises backend environment
  • The new layer of complexity – instead of a pure on-premises world, architects now have to think at this level in a bi-dimensional way (at this point in time, hybrid approaches seem to be the favored by IT managers)
  • Perception – issues like security, reliability, and cost are often not that well understood; more than that, recent high-profile worldwide incidents in the cloud industry (Amazon, Sony, and others) did a lot of harm when it comes to perception
  • Suitable design patters – using the cloud for suitable scenarios (avoiding the technology for the sake of technology syndrome)
  • Out-of-the-box thinking on traditional cross-cutting concerns
    • Storage – relational vs. No-SQL
    • Communications – SOAP vs. REST, messaging paradigms, state/session management
    • Security – identity, service security
    • Decoupling – asynchronous patterns
    • Parallel computing – decomposing the universe of the problem to harness the full power of the cloud
    • Caching
    • Data management – backup, archiving, ETL processed, master data
    • Instrumentation
    • Operations

To be very clear, these are not the only challenges to be addressed. These are merely the ones that come with the cloud, in addition to the large number of traditional ones that software architects have to face.

Keeping these challenges in mind, let’s move one step further and discuss about designing applications for the cloud.

3. Designing Applications For The Cloud

The first thing we have to state when it comes to cloud applications is that we can identify four major situations (the terms native, full migration, partial migration, and forced migration are my own – they are not currently used by Microsoft to refer to the situations described below; I use them because I feel it’s easier to identify this way each individual case):

  • The application is designed from the ground up for Azure (native development)
  • The application already exists and it’s redesigned to work on Azure (full migration)
  • The application already exists and only parts of it are redesigned to work on Azure or new components that work on Azure are added to it (partial migration)
  • The application already exists and it’s moved as-is into Azure (forced migration)

It’s pretty obvious that each situation has its own advantages and disadvantages. Up until now, based on my personal experience, the most common ones are native development and partial migration. Somehow, this is in line with the overall evolution of the entire cloud industry in general and cloud perception in particular. The most likely parts of a company’s application infrastructure to move into the cloud are right now the non-critical ones. Most companies have this approach because they recognize the value of the cloud as an application platform (PaaS) but they are not yet confident in their capacity of handling all the new stuff that’s out there.

The table below points out some of the strong points and some of the weaknesses for each of the four situations enumerated above:

Approach

Advantages

Disadvantages

Native development

  • Harnesses the full power of the cloud
  • Allows many architectural approaches
  • Higher learning curve
  • Depending on the number of native Azure features used, leaving the cloud might be tricky

Full migration

Same as native development

+

  • Enables redesign on some sub-optimal features

Same as native development

+

  • The effort might not pay off
  • Replacing some architectural decisions with ones more suitable for the cloud might be very difficult

Partial migration

  • More manageable than full migration
  • Enables you to concentrate on fewer cloud features, shortening the learning curve
  • The hybrid environment might be difficult to implement and operate

Forced migration

  • Minimizes any migration effort allowing you to move the application into the cloud in the shortest time possible
  • Usually ignores many of the features, using the cloud in as IaaS way rather than an PaaS way

Regardless of the approach, you will have to address the most part of the architectural challenges I talked earlier about. The Cartesian product of the architectural challenges and the application design cases gives you a pretty accurate image of what it means today to design and develop for the cloud. Although at first sight it might look like a daunting task, keep in mind that the reward is significant. Do things right and you’ll get a solution that makes all the powers of the cloud work in your favor.

4. Harnessing The Cloud Infrastructure

Finally, this discussion has to refer to some of the IaaS capabilities of the cloud. I’ve seen in the past two years quite a few cases where companies were not ready yet (for countless reasons) to develop applications for the cloud, yet they found great value in some of the platform’s IaaS capabilities. To name just a few:

  • Massive (and parallel) processing
  • Content delivery
  • Storage (for backup and/or archiving)

 

Well.. this is it. I tried (and hope that I also succeeded, at leas to some degree) to give you an image of Microsoft’s cloud computing platform as it is today, from the point of view of a software architect. Concentrating on application development, I left out on purpose some of the other important components of Microsoft’s cloud strategy: Exchange Online, SharePoint Online, Lync, BPOS, Office 365. The main reason was to keep this post at a manageable size Smile

Anyway, as I mentioned at the beginning, this is and will be an ongoing effort. Most probably I will update (and extend) this report several times in the months to come hoping to transform it into useful tool for any software architect that needs a general view on how’s life evolving on Windows Azure.

I’ll keep you posted…

Tags: , ,

Architecture | Azure | Microsoft Application Platform

We Have the Winners of the Romanian Azure Contest

by Ciprian Jichici 20. April 2011 05:29

I’ve had the privilege of being a member of the jury at the Romanian Azure Contest. This is the first time we can see and evaluate some of the results of the work done in Romania to educate and inform developers and decision makers about the capabilities and advantages of a platform like Windows Azure. The list of winners is available (in Romanian only) on Zoli Herczeg’s blog.

Here are some of the interesting facts that I derived from my experience as a member of the jury (remember, this is a national level contest, so you have to factor into my findings the local nature of it):

  • All the really good apps were components or modules of larger apps that were already developed/running in either on-premises or hosted scenarios. My perception is that this is in line with the current status of cloud computing in general and Windows Azure in particular. We’re at a point were folks are “trying out” both the concept and the technology, to see how it fits their needs. There’s not much enthusiasm in porting full-blown core apps to the cloud, but there is an increasing understanding of the fact that cloud computing and Windows Azure can help tremendously in certain areas.
  • We need to continue and perhaps even intensify the education process. Folks are showing more and more interest in the platform, but there are still aspects that elude their understanding. I’ve seen cases where some Azure technologies were preferred instead of others (which could have probably been better suited) because of lack of understanding. With respect to the particular case of Romania, I think we are definitely on the right track when it comes to education. My hopes are that Microsoft Romania will keep the same pace in this area for the foreseeable future.
  • Folks still have problems in understanding how to derive money from a platform like Windows Azure. Interestingly, this is a problem that I see in other areas too, the most notable one being Windows Phone 7. Seems to me that the Microsoft developer ecosystem is not yet fully accustomed (from a business point of view) with the opportunities presented by platforms that can grow from zero to big easily and with graduate cost. I guess more education is needed here too.

Tags: , ,

Azure | Architecture