Guy Shahine's Blog

CloudCamp Seattle

Few weeks ago, I attended the CloudCamp event that was held at the Amazon headquarters in Seattle. For anyone who couldn’t make it, here’s my take:

The event started with a 5 min talk by the main sponsors (For more details about the speakers, check out the schedule at CloudCamp Seattle):

Amazon: The presenter pitch was around the idea that the cloud is secure and that the concept might have changed. Historically, you probably were able to point at or hug your machines and call them yours, but once you connect them to the internet, the question becomes “are they secure?”. Steve believes that the statement “the Cloud is insecure” is not true, “what’s secure anyway?”

IBM: I was so happy to know for the first time where IBM is partially heading toward, they’ve been talking about cloud and green earth and those nice commercials for months but on the technical ground I didn’t see a defined story. During Tony’s (who’s not a technical guy, he’s more of a sales/business person) presentation, it was a product pitch about what they call WebSphere CloudBurst/Hypervisor Editions (ouuu fancy name). Here’s the one sentence that summarizes his whole 7 minutes talk “They provide an appliance (the size of a pizza box, he said it like 10 times) that you connect to your network and machines, and what it provides a Front End between you and your machines sitting in your own data center or lab to spin up Virtual Machines and control the environment”

Windows Azure: The presentation was an overview of the Windows Azure Platform features. I wish the talk was around how Windows Azure brings value as a cloud platform. Well, I guess there is very little that you can squeeze in a 5 minutes talk.

Skytap: it was a pure product pitch delivered in a super boring manner. Their website has an overview of what they do, the presentation didn’t bring any value other than repeating this description.

Atlantic.NET: NO SHOW

Hubspan: Business talk, the presenter was really funny and the presentation was engaging. The talk was mostly addressed to business owners/investors and pretty much how the cloud can promote the old business model.

Guest Speaker: Patrick from a local company (forgot the name) that runs financial profiling to give you advice on the stock/mutual funds/… that you need to invest in. If you’re curious: I chatted with the dude, and they don’t take customers with less than a million dollars in investment

Then we moved to the Unpanel section where the audience asked 9 questions related to cloud: 6 answered by people who called themselves cloud experts, 3 answered from the audience (1 of them by me). Example questions: In the light of wikileaks being kicked out by Amazon, where does cloud stand providers stand ? Where do you think the NoSQL database is heading toward? Name one type of business or firm that can’t move to cloud, and give facts? Where does cloud stand on multiple geo located databases and how do you keep them in sync? Where does cloud stand in the open source community? … etc

Finally the unconference time came where around 7 people from the audience suggested topics to chat about. Some of the topics were: Cloud APIs, Open source community, Windows Azure 101, Google Webservices 101, CloudDatabase discussion … others

That’s it, let me know if you have any questions.

Azure Service & Storage Management Tools

In your day-to-day efforts to build a cloud service on Windows Azure, it’s crucial to be aware of the currently available tools that will facilitate your job and makes you more productive. I’ve created a table that will illustrate the different aspect of each tool, then I expressed my opinion about each one of them.

Azure Tools Table

See the table in Zoom.it

UI tools

Cloud Storage Studio

A tool developed by a company called Cerebrata, It’s currently my favorite tool which I extensively use for service management and browsing storage accounts. Even though the name is confusing, the interface is really nice, the application is stable and the team is very receptive of feedback . The only thing that annoys me, I can’t retrieve storage accounts information. Plus, it’s not for free but the team is actively adding new features and rolling fixes.

UPDATE 5/29/2011: The team read my blog post and they implemented the ability to retrieve storage accounts information. Now, I wish I had the ability to right click on a certain storage account and connect to it.

Windows Azure MMC tool

It has the richest set of utilities and It’s for FREE. Now, If you can bite on the wound and accept a blend interface, plus you expect it to hang here and there, then this tool if for you. Also note, that the tool is lightly maintained and I’m not aware of any planned new releases.

Azure Diagnostics Manager

Another tool developed by Cerebrata. This tool is more focused on managing your diagnostics. It includes a bunch of utilities that will definitely help you a lot in browsing through the logs, getting performance counters, trying to figure out some weird issue…etc It also includes a storage explorer (that I haven’t used because I already have Cloud Storage Studio)

UPDATE 5/29/2011: I’ve been using this tool more lately, and besides the fact that it gets stuck when I connect to a certain storage account once in a while, it’s very useful, and I really like the graphs that gets generated for the performance counters over time.

Visual Studio Tools For Azure

There are multiple parts: It has a nice interface for configuring your service. You’re able to build, package and deploy your service when you ask Visual Studio to publish your app. You can also build, package and run locally in devFabric. There is also a readonly storage explorer. The downside is that you can’t manage your services or storage data but I believe there are plans to allow you to (at least for storage data)

Windows Azure Portal

The portal is required for many things that are usually done very rarely like creating and deleting a storage account. It’s slow and poor on features, but there was an announcement at PDC2010 that there will be a redesigned portal built on top of Silverlight.

Cloud Storage Studio /e

A web based storage explorer built by Cerebrata. It’s still in beta and for free. I personally haven’t used it in a while.

UPDATE 5/29/2011

Thanks to all the readers that brought to my attention other tools that I’ve missed, here’s another set of tools:

Azure Storage Explorer

A FREE open source tool published on codeplex that allows you to manipulate your Azure Blob, Queue and Table storage

AzureXplorer

Developed by a company called clumsyleaf, it’s a paid product and I haven’t used it myself but it’s worth checking it out, it might suite your needs, check out the website for all the details/screenshots/pricing …

CloudXplorer

A Clumsyleaf free product, it let’s you browse through your Azure blob storage account in a similar fashion as the Windows file system explorer.

TableXplorer

Another Clumsyleaf free product, it offers a simple way to retrieve your Azure tables.

Windows Azure SCOM Management Pack

Here’s a nice blog post that enumerates the features of the SCOM (System Center Operations Manager) Management Pack for Windows Azure.

As far as I’m aware, it’s currently the only enterprise level monitoring tool for Windows Azure. If you’re already using SCOM then it’s perfect, you can immediately start monitoring your Azure services.

Here’s what I really like about it :

  • Setup alerts to get notifications by email, phone call, IM, … for the following cases:
    • Service status changed .
    • Performance counters crossed some specific threshold.
    • A Windows Event with a certain ID is detected.
    • Critical, Error, … logs are observed in the logs store.
    • and more…

What I don’t like about it:

  • You need to have a SCOM license to be able to use the Management Pack.
  • If you’re not familiar with SCOM, I found it cumbersome to set it up.

Script based tools

Windows Azure Service Management Cmdlets

Even though I haven’t wrote any scripts that make use of the cmdlets, I know the test and operations team rely on them to automate different kinds of services management.

Azure Management Cmdlets

Didn’t also get the chance to play with it, but I believe it’s very similar to the Windows Azure Service Management Cmdlets. I’ll leave it for you to figure the difference 🙂

Azure SDK command line tools

The SDK command line tools are essentials for automation. There are multiple ways you can find those tools useful, I’ll name a couple 1) Write a custom script that will allow you to package then run your service locally (or perform other actions) using cspack.exe and csrun.exe. 2) Integrate cspack.exe part of your build system to automate packaging the service.

The Windows Azure Bed Time Story

These days, everyone is getting excited about the cloud. You here them talking about how it became easier to deploy, manage, and monitor your services, and how much money your company will save (IF, of course, they know how to use it). Plus, most of us started understanding the concept of the cloud and how it is different than the old way of running services (even though different people see it differently).

Your curiosity led you to surf the web for information about Microsoft Windows Azure, you read a whitepaper from here, a blog post from there, (ohh if you’ve checked out the MSDN documentation, let’s just say it needs improvement) but you still feel that something is missing. Suddenly, you realize that you still didn’t get your hands dirty with it, you didn’t get the A to Z experience, where A is an empty file and Z is a running service that you can interact with from anywhere in the world. Your journey is kinda straight forward at this point. Assuming you’ve got the expected Operating System, Visual Studio, IIS, … You download the Azure SDK et voila, now you’re ready to run an Azure service locally on your machine. Then you get an Azure account (let’s hope you’ve got a limit on your credit card 🙂 ), go through the Azure portal and you deploy your service that’s up and running in minutes. Wow, a process that used to take you hours, days or even weeks (depends on how large the organization and the type of process, at Microsoft it used to take weeks) to run your application in datacenters, now it became a matter of minutes, isn’t it amazing? Well, it is amazing, that’s why most of us are excited about this new technology and business model.

Most of us agree that Azure is still catching up, there are areas that needs improvement, features that are missing, and others… but the team is working hard (as we would expect) to improve things and stand strong against the competition. While we’re waiting for these improvements to see the light, here are some areas that I’m planning on writing posts about sometime soon to give you guidance on how you can make your life easier:

Sleep tight 🙂

Windows Azure: Why is my service not starting?

Have you found yourself in a situation where your service goes from Initializing…Busy…Stopped…Initializing… when you deploy to Windows Azure? That’s when I value the “hint button” that pops up in some games after struggling to figure out how to go to the next level. Unfortunately, there is no hint button on the Windows Azure Portal, so this blog post will help you put a checklist of things to go over before you give up.

Deployment Initializing Busy Deployment

Possible Issues

Deploying With Local Service Configuration File

A typical mistake is to deploy your service with your local configuration file where usually the diagnostic store and/or other storage endpoints are pointing to the local development storage. To avoid this problem, always create separate configuration files, e.g. ServiceConfiguration-Local.cscfg, ServiceConfiguration-Staging.cscfg and ServiceConfiguration-Production.cscfg…etc

Local Service Configuration

Wrong Service Configuration Settings

There is a range of wrong configuration settings which could cause your role to crash. I’ll enumerate the most common mistakes:

  • Wrong storage name: You should be aware that the storage account name is not your LiveID alias. When you create a new storage account, you usually choose an account name and it’s displayed in the following fashion “http://[account-name].blob.core.windows.net”.
  • Wrong storage account key: The storage account key is not your LiveID password. When you create a storage account, you should get two base-64 keys primary and secondary key.
  • Regenerated account key: When you regenerate your primary and/or secondary key then the old key will become invalid.
  • Unreachable endpoints: Many factors could cause your endpoints to be unreachable, for instance, power failure, network failure … etc (that’s another reason to move those services to Windows Azure 🙂 so you don’t suffer from downtimes ). When an endpoint is not reachable and your service is relying on it, then your service will crash.

Administrator Privileges Required

Today, Windows Azure doesn’t allow you to perform administrative actions within your role, so if your service requires:

  • Installing some software
  • Installing/Configuring a DCOM service
  • Editing Registries

Or anything that requires admin privilege then your role will crash and your service won’t start.

ATTENTION: When your service is running locally in Full Trust in DevFabric then administrative actions will work and they won’t crash your role. This is caused by the DevFabric running in administrator mode on your machine and the Windows Azure team hasn’t implemented yet a way to block those actions when running locally. So this will make it harder locally to identify that your service will not work when deployed to the cloud.

Full Trust vs Partial Trust

In Windows Azure you’re allowed to run your service in Full Trust or Partial Trust so if you set it to run in Partial Trust, then Full Trust assemblies will cause your service to crash.

.NET Trust Level Option in Visual Studio

ASP.NET Custom Error Page

By default, custom error pages are enabled when creating an new Windows Azure web role. The custom page is meant to hide the ugly crash details from the end-user (ugly to some people, very beautiful and informational to others 😉 ). It’s possible to turn off the custom error page in the project web.config, check out the documentation: http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx.

Windows Azure Web Role with Custom Error Page On:

ASP.NET Custom Error Page

Windows Azure Web Role with Custom Error Page Off:

ASP.NET Page Details Crash Information

Key Takeaways

The key takeaways from this post is to double check your application’s settings and to be aware of what’s not supported by Windows Azure before contacting the support team.

  • Always make sure to run your service locally in the DevFabric, as it will identify many of the issues that might cause your service to crash when deployed to the cloud.
  • Maintain separate service configuration files for each environment: Local, Staging, Production, … etc
  • Make sure to keep your settings file up-to-date in case you renew storage keys or you rename resources (e.g. rename the queue instance that your service relies on)
  • Make sure that other services that you rely on are up and running.
  • Turn off ASP.NET custom error pages as you’ll get more details about the crash, which will allow you to get more traction on the areas to focus on to fix your service.

Good Luck!

Three Days at Microsoft’s PDC

How was PDC this year?

Last week (Nov. 17-19), Microsoft gathered around developers, architects, media, etc.. at the Convention Center in LA in an event called Professional Developer Conference (PDC09). Unlike previous years where Microsoft used to announce new products at PDC, this year was more focused on accomplishing the announcements that were made before, for example: the launch of Windows Azure and the launch of Windows 7, or what’s coming up in the next version of previously released Microsoft products, for example: Microsoft Visual Studio 2010, Microsoft Office 2010, Microsoft Internet Explorer 9, Microsoft Silverlight 4.

Who am I?

I’m a developer on the Windows Azure team and in the past year and a half, I was part of the on-boarding team where I work closely with developers that are building services on top of Windows Azure platform.

Guy Shahine

Windows Azure at PDC

The Windows Azure lounge was one of the busiest places for three consecutive days (there is a Lebanese saying: “The monkey is a gazelle in the eyes of his mother”, but I’m telling the truth here). Everyone seemed interested and people were lining up for three hours to get a spot for the hands on labs (alright, we were giving a flip camera for every attendee that finishes one lab exercise and one Windows Azure session, but the third day we ran out of cameras and the labs were still full). Oh, and did I mention the container? Windows Azure had a datacenter container on site. The container is a smaller version than the original ones but it was still very exciting to see one of them.

Windows Azure Container

I was fortunate to be helping in the hands-on labs, where I had the chance to stumble upon people who were only interested in getting the camera instead of taking the opportunity to learn something. The best one was a lady in her 50s who waited in line for like two hours, and I was very happy to see a dedicated person that can’t wait to play with the labs (the thought of her waiting for a camera didn’t cross my mind for 2 seconds) until she made a typo while following the lab walkthrough and she called me to ask what does the underlying red zigzag means under her using statement and that her application is not running when hitting the “run” button. What did I do? Well, I gave her a stamp and sent her in piece for her little camera. The second best one was from a person with an eastern European accent, who skipped the 3 hours like and came directly to me: “Look, I am not a programmer and I don’t know how to write code, but I want the camera and there is no point for me to wait in line and reserve a station, so can you give me a stamp?”, I replied: “no”, He replied: “But why?”, I replied: “If you wait in line and your turn arrives I’ll personally give you a stamp without the need to finish the lab”, he ran away 🙂 .

Windows Azure Hands-on labs queue

Overall, the experience was awesome and the customers were very interested. Many of the attendees had very good questions and feedback, others were still interesting which led me to write this blog post 🙂 .