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

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

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

Is There Life After The Cloud?–An IT Pro Perspective

by Ciprian Jichici 22. February 2011 18:06

Today I am talking at TechDays Romania about cloud computing challenges faced by IT Pros. After being heavily involved in cloud computing issues for more than 4 years now, I came to an interesting conclusion: when it comes to IT Pros (ranging from the IT Manager down to the rookie sysadmin), the top concerns are not really technical. The aggressive (in a good way) messaging coming out from the large cloud providers geared towards the fundamental advantages of the cloud is creating the perception that the era of cloud computing will bring an end to the era of the IT Pro. Consequently, one of the top questions asked by IT Pros is: will the move to cloud computing jeopardize my job? Am I going to be still needed once the cloud takes over?

Well… One of the key messages of my talk is that ADAPT is the name of the game. I base my logic on the following two assumptions:

  • Despite the current perception, once the cloud becomes mainstream, there will be as much IT Pro work to be done as ever
  • The thing is, this work will be a bit different than the one IT Pros are used to do

The main challenge for an IT Pro from the cloud perspective will be, as I mentioned above, adapting to the new reality. As always, there are going to be casualties, I have no doubt about it. Still, I think the vast majority of IT Pros will be quite successful in the cloud computing era. The success of reinventing yourself as a cloud-aware IT Pro depends on the ability to perform the following fundamental tasks:

  • Analyze the new world
  • Understand cloud computing fundamentals
  • Compare different offerings from different providers
  • Optimize your existing and future infrastructure using the latest developments
  • Evolve your infrastructure and apps to match the current state of the art
  • Start all over again Smile

When it comes to understanding cloud fundamentals, I think the core equation is:

(IaaS, PaaS, SaaS) x (Public, Community, Hybrid, Private)

I’ve talked in quite a bit of a detail about this equation in one of my previous posts. In this context, it’s also a very good exercise to understand the process behind the birth of the major cloud computing platforms available today (Windows Azure, Google Apps, AWS Elastic Beanstalk – to name just the PaaS ones).

Some of the most important challenges faced by today’s IT Pros when it comes to cloud computing are in my opinion the following:

  • Understanding specifics and vendor discriminants (cloud computing gains ever more momentum and evolves at a rapid pace, so this is not an easy task)
  • Build and keep the exit strategies of your infrastructure (assure provider independence)
  • Security (of course Smile)
  • Fight lack of understanding and misconceptions
  • Balance bottom-up vs. top-down adoption
  • Prepare for ad-hoc standards and interop headaches
  • Avoid over and under utilization
  • Address network limitations

From a higher perspective, some of the most sensitive issues to be addressed are in areas like:

  • Data governance (cloud computing implies loosing some of your capabilities to govern your data)
  • Manageability (still an issue with all cloud vendors)
  • Monitoring (a whole new ball game)
  • Migration (what, when, and how to move into the cloud)
  • Changes in infrastructure, architecture, procedures, operations
  • Data changes (REST vs. SOAP, SQL vs. No-SQL)
  • Service Level Agreements

My conclusion?

It’s going to be a wild ride in the years to come, but I think it’s old news for most of us. After all, it’s always fantastic to live and breathe the next big thing. Right?

Tags: , , ,

Architecture | Azure | Microsoft Application Platform

XaaS Decoded: Cloud Computing The Microsoft Way

by Ciprian Jichici 10. November 2010 11:42

Disclaimer: After finishing the post I realized it ended up being much longer that initially intended. Still, I don’t claim it’s an exhaustive analysis of cloud computing as it is today. It’s just a brief introduction into the matter, nothing more, nothing less. Here it goes…

There’s a question that pops up almost every time I have a discussion about cloud computing. That question is usually something like “So, what is XaaS exactly?” (XaaS is one of IaaS, PaaS, or SaaS). My latest post about the Tech’Ed keynote referred to some of these acronyms and triggered a new instance of this question from one of Genisoft’s business partners. So I guess it’s a good time to try to define a few things.

First of all, let’s start with the mother of all buzz-words (well, the most recent one to be more accurate): cloud computing. It has the same faith as many of its predecessors (BI, SOA, Web 2.0 – to name just a few) – it becomes so overloaded in terms of semantics that it reaches a point where it means so many things that it actually means nothing. Because it sounds cool and in the same time familiar, people tend to start using it to define things it was not really meant to define. To avoid the common pitfall of defining the meaning of buzzwords, I will try instead to focus on a few more precise concepts we can operate with.

Based on my experience so far, I find that when they are talking about cloud computing people usually refer (either directly or indirectly) to one of the following:

  • IaaS (Infrastructure as a Service)
  • PaaS (Platform as a Service)
  • SaaS (Software as a Service)

This would be the first dimension of cloud computing. Let’s take a closer look…

IaaS is the basically virtualization offered as a service. Instead of spending on hardware, software licenses, storage, or network equipment, one can buy all these as a service. Simply put, your local iron gets replaced by a virtual one. You still have to do all the management and administration.

PaaS aims to abstract things more than IaaS. Instead of providing bare “logical” metal as a service, it delivers an application platform which one can use to implement apps. You don’t work anymore (at least not directly) with the typical concepts like server, OS, and so on. Some kind of abstraction is usually available which hides all these. Plus, several services are provided in order to shield you from “classical” infrastructure management. I’m thinking here about virtual machine provisioning, load balancing, guest OS patching, and the like. In a sense, PaaS offers you an OS for the datacenter where:

  • Instead of the classical resources (CPU, GPU, memory, I/O) you are abstracting servers
  • Instead of the classical OS abstraction layers you have some kind of agent infrastructure that is capable of abstracting the concept of a virtual server into a higher level element (like role for example)
  • Instead of the classical OS API you have a set of complex services that you can use as building blocks for your apps

Finally, SaaS is at the highest level available where you get the direct services of an application online, without any kind of implementation effort. Opposed to IaaS, there’s no need to manage infrastructure. Opposed to PaaS, there’s no need to develop and/or manage applications. It’s simply there so you can use it.

The second dimension of cloud computing refers to the place where XaaS’s are deployed. Public and private are the most common places we’re talking about today. However, there are many folks out there (myself included) that don’t think exclusively in black and white. Perhaps intermediate approaches like community clouds (several entities share the infrastructure to get better privacy than with the public approach) or hybrid ones (the same entity has a mix of public/community/private approaches) are going to be at least as common as “pure” ones.

What’s interesting is what you get when you put these two dimensions in perspective:

  IaaS PaaS SaaS
Public Has been around for quite some time, initially via hosting and more recently via virtualization Available more recently from major vendors who have the strength to industrialize computing power and storage at a large scale Has been around for quite some time. Gained a lot of momentum when major vendors decided to update complex on-premises apps and make them available online 
Community Interesting for areas like the public sector where different organizations (like government agencies) share the same needs and interest An interesting option when you want more privacy than public PaaS but you’re not willing to risk alone Lower license costs will probably drive this approach
Hybrid Has been around for quite some time, as a natural combination between public and private Most probably, that’s the way things will get started in the near future. It’s hard to imagine large organizations jumping directly into Public PaaS Most probably we’ll encounter this one in organizations which will transit from on-premises implementations to public ones.
Private Became quite popular once virtualization software and proper hardware support became available Still at the “we’re talking about it” stage mostly. But not too far, as some of the vendors are now prepared to provide it. Interestingly, other major vendors who are a bit behind at the public game try to position their cosmeticized on-premises offers as Private PaaS. In a sense, we’ve been doing that since the dawn of IT Smile. In a more serious note, it’s probably going to be available in the form of software appliances.

With this Tech’Ed, Microsoft’s strategy is getting its final (public) touches. Seems that the guys in Redmond have pretty big plans as they intend to be a major player in all three areas (IaaS, PaaS, and SaaS). Their matrix looks like this:

IaaS PaaS SaaS
Enabling Technology Windows Server Hyper-V + System Center Windows Azure Platform (Windows Azure, SQL Azure, AppFabric) + System Center Office 365, Windows Intune, Dynamics, and others

As I mentioned in my previous post, Microsoft’s strategy and delivery look quite sharp and promising in all three areas. Consequently, this puts them in a position where they can claim the position of being one of the main players in cloud computing for the next decade. As always, time (and paying customers) will tell whether this huge undertaking will pay off or not.

Tags: , ,

Azure | Architecture

IaaS Revolutions: The Cloud Comes Home

by Ciprian Jichici 9. November 2010 11:43

In today’s keynote at Tech’Ed Europe 2010 Microsoft went (finally) public with its strategy regarding private clouds. And it did it in style, showing an impressive demo about the future of private IaaS (or private cloud as we all know it). Seen from 10,000 feet, Microsoft’s move is pretty simple: take the experience you have running Windows Azure as a public service for almost two years now (CTP and beta period included), package it into an appliance, and make it available to anyone who needs (and affords it).

Only when you enter into the details you really how impressive this stuff is. I’m more like a hardcore architect and developer rather than being an IT (read infrastructure) specialist. Being an RD, I’m also pretty hard to impress with a demo. Despite all of this, today’s demo concerning the management of a private cloud took me to the WOW state. Believe me, I’m not exaggerating at all. The capability of defining hardware allocation policies, application deployment policies, and management policies is a very powerful one. And the fact that the demo showed hot to do all of this in a graphical designer says it all. As one of my RD colleagues noted during the keynote, looks like the business user will be able to manage infrastructure Smile For all IT specialists out there, stay cool, he’s joking Smile Your job is as safe as ever albeit it will change in many interesting ways in the years to follow (that’s a story for another post though).

It’s true, the technology will probably need at least one year to start getting mainstream. Still, it’s a game changer and I believe it will have a major impact on the industry. PDC 2010 convinced me that Microsoft is in the driving seat when it comes to PaaS. Tech’Ed Europe 2010 proved to me that it is in the same driving seat when it comes to IaaS too.

If you’re not in Berlin right now, I’m strongly encouraging you to keep an eye on all the announcements. I’ll follow up on this story with details, so stay tuned…

Tags: ,

Architecture | Azure | Microsoft Application Platform

The Age Of Coolness

by Ciprian Jichici 29. October 2010 06:52

It’s been quite some time since I’ve blogged, mostly due to a large number of projects I’ve been involved in. It sure feels good to be back Smile. And if I factor in the context, it feels even better. Let me explain…

I’m watching the PDC keynote as I write this from the comfort of my office. It’s a pretty bold approach from Microsoft, I must admit. Having many thousands (perhaps even more since the figures are not published yet) of viewers watching a multi-track conference live via the web is something that has never been tried before at this scale. From what I can tell so far, it’s been working out just great. But this is not the main reason why I'm feeling good.

The real reason is what I see in front of my eyes. The code, right? you might ask yourself. Well …, it’s not the code. What I see is a company that has gone a long, long way from what it used to be 10 or 15 years ago. It’s a company that survived a fundamental change at the very top level. A company that “lost” its founder who was also its leader and one of the major figures in the industry (and still is). A company that many said will go down and will be lost in the shadow of the new “enfants terribles” of the industry. A company that was supposed to loose the race between its main cash-cows Windows / Office and Linux / Open Office. Or the one between its development platform and Java. Or the one between its SQL Server database engine and Oracle/MySQL/others. Or many, many other races. Yet, despite these predictions it survived and it did this quite well. The interesting part for me is that not only it survived but it turned into something that I never thought of … a COOL company.

I’m watching the new leader of Microsoft, Steve Ballmer as it talks to thousands of developers via a virtual PDC. What strikes me is that Steve has a main slide behind him which has three lines:

  • IE9, HTML5
  • Windows Phone 7
  • Windows Azure

I’m not the kind of person that gets easily carried away and those of you who watched me speaking or delivering workshops and trainings know that it’s not really uncommon for me to criticize openly on Microsoft when I think there’s good reason for it. But right now, I just can’t help it … it’s for the first time I perceive Microsoft as being a cool company. I’ve had this feeling in the past about some of its products, but never about the company as a whole. Listening Microsoft talking about its present and future plans for the browser, the mobile platform and the cloud platform is fantastic. I’m realistic, and I admit that in two of the three (browser and mobile) Microsoft is currently a follower rather than a leader. Yet is shows good signs for strong comebacks in both areas. As for the third one, the cloud, Microsoft is shaping the game.

All in all, looks like this is going to be a great PDC. Not necessarily because it’s an online one (you can watch it here), but because of the content. We’re living very interesting times and it looks like Microsoft is on the track to be one of the major players in all three dimensions of these interesting times (browser, mobile, cloud). Even more than that, seems to me its on the track to achieve the one thing most of us thought it’s unachievable.

That one thing is being a cool company.

Tags: , ,

Architecture | Azure | Windows Phone | Microsoft Application Platform

About the Limit of a SQL Azure Database

by Ciprian Jichici 19. June 2010 00:25

In the past few months I received tons of questions about the SQL Azure database limit. There is an ongoing debate revolving around this size limitation with some arguing is not that bad and some saying it’s a complete showstopper. But before getting into the details let’s have a quick review of the facts. Initially, Microsoft limited the SQL Azure database to 10 GB, which meant that once you hit the limit you will receive error 40544 and you will not be able to perform anymore operations like inserting data, updating data, or creating new objects such as tables, stored procedures, views, and functions. To make things clear, the maximum size of the database refers exclusively to objects that you create and have control over. It does not take into account content from the master database, replicas, and the transaction log. At TechEd 2010 US, Microsoft announced an increase of the limit which now stands at 50 GB.

Well, that’s the current situation. As it is with many things in IT there is no free lunch here and there is also the usual compromise to be dealt with. On one hand there are high expectations from customers based on the fundamental promises of cloud computing: availability, scalability, and optimized cost of operations. There is a common expectation that one will be able to use the power of the cloud to manage efficiently high amounts of data. Currently, the 50 GB limit falls quite short of meeting these expectations. On the other hand, there are technical limitations which lead to the current size limit. In other words, there is a price to be paid in order to get the cloud advantages.

Let me elaborate a bit on this. One of the key features of SQL Azure is its capability to store 3 different copies of your database at any given point in time. While this is not used (at least not for now) for load balancing purposes, it gives you a very strong approach in terms of robustness. Suppose the primary copy fails, your requests will be automatically redirected to the second copy while in the background, SQL Azure will recreate the third copy offline. Once you understand this mechanism it becomes quite clear that it conflicts heads-on with the database size. With this approach, you will need to work with a maximum database size that guarantees a reasonable amount of time needed to rebuild copies, even in the worst case (the first two instances fail at short intervals of time) so that the risk of having all three copies failing while the new copies are still being rebuilt is minimized. It’s quite clear that despite the recent increase (from 10 GB to 50 GB) we cannot expect spectacular increases in the future, unless the model is changed.

It seems to me the next step in scaling the SQL Azure database size relies on introducing a new logical level which works transparently with X GB chunks in the underlying layer. What I am talking about is some kind of “logical” database that is broken transparently by the fabric in chunks. As a matter of fact this is exactly what Microsoft is recommending today as a best practice for those who want to use SQL Azure for large databases (the concept is commonly referred as sharding). The difference is that today we need to develop our own logic in order to achieve this.

As a matter of fact, Microsoft has a few compelling arguments in favor of the existing limit:

  • Application migration to the cloud will start most probably with smaller, departmental applications which are unlikely to require storage in excess of 50 GB
  • Most large applications to live in the cloud will be based on multi-tenant architectures which are build from the ground up with sharding in mind
  • The advantage of having three different copies of your data maintained by the cloud make it worth to re-architect your solution with sharding in mind

While I mostly agree with the arguments presented above, I still think that Microsoft needs to address the following two issues:

  • Release the promised patterns & practices guidance that addresses the challenges of architectures based on sharding (it has been referred many times in official talks but it’s no where to be seen)
  • Build into SQL Azure that extra logical layer that will allow us to move as high as we need in terms on database size while enjoying the advantages of the SQL Azure fabric

Until then, we need to plan and assess carefully before we decide to move our relational data into the cloud.

Tags: , ,

Azure | Architecture | SQL Server

On The Complexity of Microsoft .NET

by Ciprian Jichici 1. April 2010 06:04

.NET Framework 4 together with Visual Studio 2010 are major milestones in the lifecycle of Microsoft’s complex application platform. Unlike the Java world which is currently experiencing fragmentation (Oracle’s Java EE 6, Spring, others) the .NET world seems to be holding together. Version 4, backed by a strong Visual Studio with a brand new shell written entirely in WPF, looks very solid and appealing from both the architectural and the development perspectives. Well … is it?

It seems to me one can find in almost any situation that leads to software development conflicting perceptions between developers and decision makers. When I say decision makers I’m thinking about those who have to accept and ultimately assume the technical decisions taken during the ALM (Application Lifecycle Management) process. While the former become rather easily enthusiastic about any new technology as well as about as more control as possible, the latter are much more inclined towards stability and, much more important, clear and measurable technology roadmaps. This is why I think that the fragmentation we see today in the Java world is not necessarily a good thing. .NET needs a strong Java as much as Java needs a strong .NET. History says loud and clear that the only way forward is strong and fierce competition.

The interesting question here is whether having a single driver behind guarantees or not reduced complexity in addition to platform stability. Seems to me the answer is closer to no than to yes. Despite being pushed by a single vendor, .NET exhibits many (if not all) of the unknowns that exist in fragmented worlds. Probably the most common unknown is “what’s the right technology to choose here since I have several alternatives?”. It’s true, most technologies that are present in .NET have a pretty clear area of coverage. The problem is that sometimes these areas overlap and it’s not always clear what the right choice should be. Just think about desktop user experience for a moment. Should I bet on Windows Forms, Windows Presentation Foundation, or even Silverlight? Or take the web: ASP.NET Web Forms, ASP.NET MVC, ASP.NET with AJAX, or Silverlight? Sometimes, it’s obvious. But sometimes it is not, and this is why I feel there’s an ever increasing need for guidance here. With .NET Framework 4 especially, the game is not only about learning how every single technology works. It’s also about tradeoffs, compromises, and especially implications resulting from choosing one option over the other.

With newcomers like LINQ, Parallel LINQ, cloud computing, dynamic languages, functional programming, and modeling (to name just a few) we’re now very far from what .NET used to be in its early years. We’re at the dawn of an era where the complexity of the platform becomes a fact of life. Most problems we have to solve have at least two or three different solutions, with conflicting consequences. It’s a world where knowing a programming language and a few basic technologies is not the recipe for success anymore.

To make myself very clear I have to say that .NET’s complexity is not due to any kind of architectural, design, or execution flaw. Au contraire, I think Microsoft .NET Framework (especially version 4) is a fantastic feat of engineering, a living example on how to design and implement complex functionality. The complexity of .NET comes from the fact that it spans an amazing array of technologies, environments, and approaches to build software. For us architects and developers it means that knowing to write .NET code is just not enough anymore. It means we need to dedicate serious time to understand every single option .NET has to offer, to learn the tradeoffs, and to know where the compromise lies in every choice we make. It means to accept a simple fact of life: the power and versatility of .NET comes at the price of increased complexity, and we need to deal with it.

Tags: ,

.NET | Architecture