Sunday, May 2, 2010

Speaking at Executive Cloud Computing Roundtable in Portland

I'll be speaking at the Executive Cloud Computing Roundtable on the evening of Thursday May 6th in Portland Oregon. To lead off our discussion, I'll present on the business benefits of Windows Azure and examine what cloud computing means for I.T. under the best and worst of circumstances--and how to direct the outcome.

For more information, contact me through this blog.

Speaking on VS2010 and C# 4.0 at LA .NET Developers Group Meeting on May 3rd

On Monday May 3rd I'll be speaking at the Los Angeles .Net Developers Group on C# 4.0 and Visual Studio 2010.

Next Meeting

Monday, May 03, 2010 at
Visual Studio 2010 and C# with David Pallman
TOPIC: Tour of Visual Studio 2010 and C# 4.0

David Pallmann will take us on a tour of Visual Studio 2010 and C# 4.0. In the Visual Studio 2010 portion of the talk, many new IDE features and improvements will be shown that improve your design, development, debugging, and deployment experience, including: zoom, box selection, call hierarchy, navigation, highlighting, generate from usage, and more intelligent IntelliSense.

In the C# portion of the talk, new language features will be demonstrated including: named and optional parameters; the dynamic language runtime; variance; and COM interop.


We're meeting from 6:30 to 9:30 pm on the UCLA campus. You can get directions from the the LA .Net Developers Group web site. If you're in the LA area, we hope you can join us!

Thursday, April 22, 2010

Windows Azure Best Practices

At Neudesic we do a great deal of Windows Azure consulting and development. Here are the best practices we've identified from our field experience:

1. Validate your approach in the cloud early on
2. Run a minimum of 2 server instances for high availability
3. SOA best practices generally apply in the cloud.
4. SOAP is out, REST is in.
5. Be as stateless as possible.
6. Co-locate code and data as much as possible.
7. Take advantage of data center affinity.
8. Retry calls to Windows Azure services, SQL Azure databases, and your own web services before failing.
9. Use separation of concerns to isolate cloud/enterprise differences.
10. Get as current as possible before migrating to azure.
11. Migrate applications one tier at a time.

1. Validate your approach in the cloud early on. Once you have a tentative solution design, test the viability of your design in the cloud early in your project to validate its viability. Don’t wait until the end of your project to find out if your approach will work. Your solution in the cloud may reveal very different dynamics and performance from the enterprise, and you may encounter issues with supported features and deployment. Waiting until the last minute to test viability in the cloud is dangerous.

2. Run a minimum of 2 server instances for high availability. When hosting in Windows Azure, consider 2 as the minimum server farm size. If you only run 1 server, you will experience periods of unavailability as patches or updates are applied. When you have 2 more servers in a farm, patches and updates are sequenced to prevent downtime. The Windows Azure SLA is only guaranteed when there are at least 2 servers in a farm.

3. SOA best practices apply to the cloud. The principles of Service-Oriented Architecture apply equally well to the cloud as they do in the enterprise:
 Connect programs with loose coupling
 Define explicit boundaries
 Use interoperable standards
 Define coarse-grained contracts and avoid chatty interfaces
 Favor stateless services

4. SOAP is out, REST is in. REST is part of “how we do things in the cloud”. The best way to write effective cloud software is to be in line with its philosophies and preferred protocols. SOAP does of course play a role in key areas such as federated security but for application developers it’s about REST these days. Take advantage of related technologies like WCF RIA Services.

5. Be as stateless as possible. Farms for web applications, web services, and workers can be adjusted at any time to larger or smaller sizes. The best way to code wherever possible is to avoid session state. If you must have session state, implement it in a way that doesn’t rely on server affinity.

6. Co-Locate code and data as much as possible. Whether your code is in the cloud or in the enterprise, it’s best if code and the data it accesses are near each other. Avoid unnecessary traffic between cloud and enterprise.

7. Take advantage of data center affinity. Since many cloud solutions involve multiple projects (hosting, storage, database, communication, security) use the Affinity Group feature of the Azure management portal to ensure a related set of projects reside in the same data center.

8. Retry calls to Windows Azure services, SQL Azure databases, and your own web services before failing. Any HTTP call can fail, and you should expect calls to the cloud will fail or time out at times. Your calling code should attempt a limited number of retries before failing. This applies to your own web services, to Windows Azure services (storage, communication, security), and to SQL Azure databases.

9. Use separation of concerns to isolate cloud/enterprise differences. Use common interfaces and dual service implementations to provide equivalent cloud and on-premise functionality to your apps. If you’re writing applications that need to work in the cloud as well as on-premise, you’ll have to implement some things slightly differently—for example, accessing a local file server vs. accessing blob storage in the cloud. A great way to do this is to define a common service interface (with functions like GetFile, PutFile) and have two implementations, one for on-premise and one for in the cloud.

10. Get as Current As Possible Before Migrating to Azure. The more current you are on Microsoft technologies in your enterprise app before migration, the easier the migration will be. A case in point is SQL Server to SQL Azure. If you’re not on SQL Server 2008 yet, you should get compatible with that before migrating to SQL Azure. Otherwise you’ll have twice the number of issues in getting the database migrated and it will be less clear what’s an Azure issue vs. a SQL Server version issue.

11. Migrate applications one tier at a time. Since most solutions have multiple tiers, a migration to the cloud can be approached one tier at a time—keeping the solution running all the while. This is analogous to keeping a patient alive through a series of surgeries. By focusing on one software layer at a time, you carve a complex job into a series of smaller more focused tasks. It’s best to migrate database first, then web services, then front end.

Saturday, February 20, 2010

Should IT Fear the Cloud or Embrace It?

Cloud computing’s arrival on the scene certainly can’t be ignored, especially given the boost it has received from the recent economic climate. The cloud has a compelling business story that appeals to business owners and a compelling technology story that appears to developers. But then we have IT, charged with enabling the business with technology while simultaneously protecting and managing the use of that technology. How should IT feel about the cloud?

There are more than a few reasons why an IT department’s initial reaction to cloud computing could be less than enthusiastic. First off, it’s something new and therefore to be viewed with suspicion. Taking programs and data off-site and having less direct control over them also raises a red flag. And then there’s the self-service aspect of cloud computing, where any department or individual in the company can do what they want without going through channels. Security becomes a huge concern: might someone put sensitive data in the cloud on their own and not secure it properly? Last but not least, if your business takes cloud computing seriously might that not lead to a reduction in IT staffing?

While all of these are valid concerns, they are addressable. More importantly, they miss the key point about cloud computing, which is that it’s coming upon all of us whether or not everyone likes it. We’re already hearing stories where some individual in a company became a hero by taking matters into their own hands through cloud computing and a credit card and saved the day. This isn’t the first time new technology has caused control and security concerns in the enterprise: when wireless PDAs starting showing up within the business walls, many IT departments were nervous about the potential security concern they represented and weren’t sure how to deal with them at first. Similarly, self-service computing in the cloud is now a reality that anyone in your organization might be tempted to take advantage of. You can embrace cloud computing or you can fight it, but you certainly cannot afford to ignore it.

The right thing for IT departments and CIOs to do about cloud computing is to lead the way in their company’s use of it, a far better alternative to letting it happen all around them, uncontrolled and uncoordinated. IT should be championing the business benefits of cloud computing to executive management, putting company-wide policies in place about when and where cloud computing is appropriate, and coordinating its use across the company. It’s in this IT-supportive context that cloud computing can best deliver its benefits without risking unintended consequences.

Cloud computing brings with it the democratization of IT, where common tasks such as installing software, configuring a server, or deploying applications become routine and easy enough that anybody can do it. Smart IT departments will not see this as a threat to their jobs, but rather an opportunity to operate at a higher level. Freed from many mundane tasks, IT personnel can take things up a notch and focus on the strategic use of technology in their organization, which is in fact their mission.

Tuesday, February 2, 2010

Azure ROI Calculator New Address


Neudesic's Azure ROI Calculator has a new address due to Windows Azure going live. The calculator is now available at http://neudesic.cloudapp.net/azureroi.aspx.

Azure ROI Calculator and other Neudesic cloud links can be found at neudesic.com/cloud.

Although Microsoft has made a comprehensive TCO tool available at Azure.com, the Azure ROI calculator is a useful complementary tool when you need to quickly compute monthly charges or ROI without going though a lot of dialogs.

Monday, November 16, 2009

Dr. McCloud Blog Launched

You may have seen some tongue-in-cheek but technically serious cloud articles on this blog from time to time under the pseudonym "Dr. McCloud". Dr. McCloud's practice is growing at a phenomenal rate and he now has his own blog at http://drmccloud.blogspot.com/. We wish Dr. McCloud well as he evangelizes the masses about the goodness of cloud computing with Windows Azure and overcomes discomfort with his excellent bedside manner. The Doctor is In.

Friday, November 13, 2009

Upcoming O.C. Azure User Group Nov 2009 Meeting on Rich Internet Applications

The next Orange County Azure User Group Meeting is Thursday 11/19/2009 6:00-08:00 PM.

The topic for the November meeting is Rich Internet Applications. RIAs are the new wave in application development: they provide a rich user experience, are often hosted in the cloud, are highly scalable, and leverage new thinking and new technology in their design. At the meeting, we'll see RIA demos and create our own RIA using Microsoft's Azure, Silverlight, and .NET RIA Services technologies. We’ll also have an update of Azure announcements made at PDC 2009.

Pizza, beverages, and give-aways will be provided. RSVP at http://www.clicktoattend.com/?id=142708

As usual, we're meeting at QuickStart Intelligence in Irvine:

QuickStart Intelligence
16815 Von Karman Ave., Ste 100
Irvine, CA 92606