Posts filed under Windows Azure

Get-AzureDeployment returns "Requested value 'Basic_A0' was not found"

I was digging into the PowerShell Azure Commandlets when I hit a strange error: When executing:

Get-AzureDeployment -ServiceName SomeName

I got the error:

Requested value 'Basic_A0' was not found? What!?

Well, since in general working with the Azure-Commandlets worked - so I figured, that I might have an old version installed. 

 

Which version of the Azure PowerShell Commandlets I have installed?

On this guys blog I found a handy PowerShell function. Though, this post is a bit old already and "Windows Azure PowerShell" is now called "Microsoft Azure PowerShell".

Here is the updated version of the script:

function Get-MicrosoftAzurePowerShellVersion
{
[CmdletBinding()]
Param ()
 
## - Section to query local system for Microsoft Azure PowerShell version already installed:
Write-Host "`r`nMicrosoft Azure PowerShell Installed version: " -ForegroundColor 'Yellow';
(Get-Module -ListAvailable | Where-Object{ $_.Name -eq 'Azure' }) `
| Select Version, Name, Author | Format-List;
 
## - Section to query web Platform installer for the latest available Microsoft Azure PowerShell version:
Write-Host "Microsoft Azure PowerShell available download version: " -ForegroundColor 'Green';
[reflection.assembly]::LoadWithPartialName("Microsoft.Web.PlatformInstaller") | Out-Null;
$ProductManager = New-Object Microsoft.Web.PlatformInstaller.ProductManager;
$ProductManager.Load(); $ProductManager.Products `
| Where-object{
($_.Title -match "Microsoft Azure PowerShell") `
-and ($_.Author -eq 'Microsoft Corporation')
} `
| Select-Object Version, Title, Published, Author | Format-List;
};

And ... indeed, I had an old version installed:

Just fire up the Platform installer, update the Microsoft Azure PowerShell package, restart your PowerShell console and you are good to go.

 

 

 

Posted on November 27, 2014 and filed under development, Windows Azure, PowerShell.

Ever wondered how Microsoft build its software? Check their "Engineering Stories"

 Screenshot taken from http://www.microsoft.com/visualstudio/stories/scaling-agile-across-the-enterprise/

Screenshot taken from http://www.microsoft.com/visualstudio/stories/scaling-agile-across-the-enterprise/

At the TechEd North America 2014 yesterday many new products and features have been released or announced. 

 

But besides real, delivered software and "early previews" Microsoft also let us see behind their company facade and announced their "Engineering Stories" where you get deep insights in their processes and ways of working. And you might have wondered, how Microsoft was able to change their release cycles in the last years down from 3 years to 3 Weeks to support business needs - this is already the first story: "Scaling Agile to the Enterprise".

 

I hope to see more interesting stories - Microsoft definitively has the size, complexity to let us look behind the scenes a bit ;) 

Posted on May 13, 2014 and filed under Conferences, Windows Azure.

Cross-Plattform Entwicklung - Microsoft Event Wrap Up

 Different trade offs if chosing a client implementation technology

Different trade offs if chosing a client implementation technology

Microsoft Austria was organising a quite interesting event today: Cross-Platform-Development in a heterogenous world. As you probably know Microsoft and Xamarin are partnering on a global level to enable C# devs to write great apps for iOS and Android. And since we at code4ward are having our products also released for OS X,  Android and iOS, we were curious to see best practices in this area. 

 

 

 

Agenda

The agenda was a bit fuzzy and contained two parts: the first part mentioned that Xamarin will be presented and how this tool can help developing mobile apps for iOS and Android. And a second part where they show "which tools Microsoft is offering for cross-platform development and how Microsoft Azure can be utilised here.

 

After a quite high-level overview ("what makes a modern app?" and why building native apps is hard), we got introduced to client technology choices - also on a high level (how does decision between a web app and a native app impact portability, performance, updatability etc. Then we've seen a short demo on how using Visual Studio and Xamarin to develop an Android app. The rest of the time was used for a lengthy presentation of Windows Azure Mobile services  and Visual Studio Online and how a Web Load Test can be conducted in the cloud.

 Depending on the chosen client technology stack you get different products and distribution models

Depending on the chosen client technology stack you get different products and distribution models

 

Wrap Up

The topic itself is interesting for many devs - as room was almost full with devs. But the majority of the presented content missed the point in my opinion. Quite some time was spent on advertising Azure with features that are barely relevant for cross-platform development. Additionally an annoying amount of time was spent with copy and pasting code around in Visual Studio solutions - this should be prepared upfront in a a working solution, since we never walked through the code anyways (and of course, this is error prone ...) 

 

I really expected much more focused, in-depth and hands-on development content - because reworking your codebase to support cross-platform development is not easy. I recommend having a level provided with the agenda so one can better evaluate, if an event is helpful.

 

A Last Recommendation

Much better depth of content I found in the //build/ presentation of Miguel de Icaza on "Go Mobile with C# and Xamarin" - watch this! He gives an overview on how Xamarin works and how to structure your source code. 

Dev VM hosted in Azure - How to optimize its performance

I blogged about my first try to host my development environment here and here

 

But at the event "On Cloud Nine - the developer roadshow" (find my wrap up here) of Microsoft Austria I got some tips on how to improve the performance of the VM in the cloud. 

 

1) Affinity Groups & Regions

By default, this should be configured correctly anyway, but its good to know: Windows Azure Data Centers consist of Containers that have racks inside. On this hardware you find the typical services running (compute, storage, access control etc). The Affinity Group now tells Windows Azure to put objects next to each other (e.g. compute and storage) so latency is minimised and also you don't pay for any traffic (traffic inside a data center is free). This means: make sure, your VM and your hard disc share the same Affinity Group. 

Of course, the region should be the same as well ...

 

2) Availability Sets

When talking about hosting a VM, Availability Sets are a bit tricky: if you have configured them, they enable the 99.995% SLA. Good. but this requires that the VM is kept redundant and is basically running twice (so you get a fast fail-over in case of a problem). But you also get charged twice

 

3) I/O Performance

Since Azure has some limits on the Max IOPS that are also bound to the size of the VM, make sure you have different disks to work with. I have my sources and the compilation on separate disk.

 

4) Optimise Performance of the VM

Windows Azure VMs can not host Client operating systems (only a Server OS). But you can install the Desktop Experience to get the Windows 8 experience on your Windows Server 2012 R2 machine (and do this as early as possible).

 Chose "Advanced System Settings" on the screen System window in the Control Panel

Chose "Advanced System Settings" on the screen System window in the Control Panel

There is a couple of settings you can optimise:

Visual Effects

Configure this to your liking, the less effects, the less settings enabled, the less performance and RDP data transfer you will get.

 Disable all Visual Effects for best performance of your VM

Disable all Visual Effects for best performance of your VM

Some Visual Effects interfere with the settings you can specify in your RDP connection. E.g. "Show window contents while dragging":

server config: show
rdp-config: do not show
effecteive: not shown

 

server config: do not show
rdp-config: show
effective: not shown

 

 

Processor Scheduling

Change the setting to "Allow best performance for Programs" since we work interactively with the VM most of the time.

 Make sure, you have selected "Programs" as Processor scheduling settings

Make sure, you have selected "Programs" as Processor scheduling settings

 

If I change these settings on my local Windows PC it requires me to restart. The Windows Azure hosted VM does not require this - but just to be sure, I suggest to restart (to honour the old days ;)

 

4) Optimise Performance on RDP connection

Many of the advanced settings you can chose in RDP (Text Cursor blinking etc) don't have any effect if you have overwritten them in the Advanced Settings I showed unter topic 3)

Nevertheless check, if you have set the right  

 Reduce the Color Depth to 15 bit (using Royal TS)

Reduce the Color Depth to 15 bit (using Royal TS)

 Some WLANs restrict your ports - so I configured my VM to listen to port 80

Some WLANs restrict your ports - so I configured my VM to listen to port 80

 

Is it fast now?

I still don't get the performance I have on my local dev machine - what i hate most is the slight lag between my input (e.g. when typing in an editor) and other UI related changes/actions. Compiling or CPU intensive work is not an issue - thats fast enough.

 

But this might have something to do with the desktop resolution for a 30" monitor that I use ;)

 

Posted on December 16, 2013 and filed under development, productivity, Royal TS, Windows Azure.

"On Cloud Nine - The Developer Roadshow" wrap up

image.png

On December 11th Microsoft Austria organised the "On Cloud Nine - The Developer Roadshow" event at the Microsoft Austria office. The two presenters were Michael Koester from Microsoft Germany and Clemens Reijen from Microsoft Corporation. All Slides and backup material will be distributed later via codefest.at (as well as the video recordings)

 

The main idea of this day was to present 5 scenarios on from a developers point of view - I think, thats a good idea to engage more devs in this topic!

 

The Agenda

  1. Keynote by Michael Koester
  2. Scenario 1: The Cloud Developer Desktop
  3. Scenario 2: Using Cloud Dev/Test Sandbox Environments
  4. Scenario 3: Scaling the ALM infrastructure using the Cloud
  5. Scenario 4: ALM in the Cloud with Team Foundation Service
  6. Scenario 5: Building Cloud Applications with Windows Azure

 

The Keynote was a bit too high-level (announced as level 100 as I remember) and thus not very useful (remember: this event was intended for developers).

One argument for using the Cloud though was "If your code is not fully efficient, just throw more (cloud) resources on it" - WTF? I strongly hope, that this is NOT an official recommendation from Microsoft ... 

 

Scenario 1: The Cloud Developer Desktop

Since I have tried hard to set up a development VM in Azure for some time (see here and here) the there was not much new Info for me. Though I got two interesting pointers from Michael Koester on how to improve the performance and I will blog about these soon.

One thing was remarkable though: to get the promised SLA of 99.995% uptime, you have to configure an Availability Set for your VM. That was known - but: In order to get this working, Azure is basically running BOTH VMs to guarantee the uptime. This means, you are charged twice for VM minutes. 

 

Scenario 2 / Scenario 3 / Scenario 4

Many demos were shown on how you configure your VM to get access to on premise resources, how to structure your Cloud Services and how to manage your infrastructure with PowerShell. Unfortunately he mentioned many times, how "uncomfortable" PowerShell is - also his demos were failing quite often. I expected a bit more than "Be prepared to see a lot red in your PowerShell console" ... 

 

Clemens Reijen stressed the capability to be agile and fast - a new team member should do a meaningful (!) check during his first day! Thats quite a challenge I would say. But at least it looks like the infrastructure (account, project creation, source control, etc) is not the biggest hurdle anymore. 

 

They also touched licensing topics which is important if you want to use Windows Azure in your company for real (e.g. how to organise the billing)

 

Scenario 5: Building Cloud Applications with Windows Azure

This was a short wrap up on whats new in using Azure in a PaaS fashion (as it was provided by Microsoft since 3 years) - this was very high-level and just presented the main building blocks a dev can use. I would like to see a whole day on this stuff since it can save a significant amount of time if you know how to integrate these instead of building your own ...

 

MSDN Benefits for Windows Azure

Again and again it was stressed, that - if you have a MSDN subscription - you can use Azure resources for about 75€ / month for free! (e.g. thats 3 VMs for 16 hours / day!) These resources can not be pooled and accumulated if you have not used them - but you can use this to play around and explore the stuff!

 

Wrap up

Similar to my Visual Studio 2013 VIP Launch event wrap up I got some important pointers in some areas. The "Tips and Tricks" slides are a good sum up of each topic, but: having direct access to the presenters again proved to be a very valuable possibility to grab their knowledge :) 

Posted on December 12, 2013 and filed under development, Windows Azure.

Windows Azure LogStreaming Service - Introducing Kudu

Scott Hanselman has written a very interesting post about viewing/streaming trace logs from Windows Azure hosted websites on my dev machine:

http://www.hanselman.com/blog/StreamingDiagnosticsTraceLoggingFromTheAzureCommandLinePlusGlimpse.aspx. He has good arguments why to use Tracing in your codeWith Windows Azure you have the possibility to look at the trace output with in realtime and without downloading log-files via FTP. But thats not very flexible, its slow and you don't see the data in real time. 

 

This is a quick overview of a new REAL TIME  Logstream feature, how to use it an how to integrate it with Royal TS

My default ASP.NET MVC website with trace-output shown in the commandline window via curl.exe

I want to describe the issues I had with configuring this for my azure-hosted website as well as how to view the logstream without the Azure Command Line tools installed

 

1) Setup your windows azure website

I will not go into details here - any tutorial out there will do - e.g. this one. Make sure you published to Windows Azure and can view your website over an *.azurewebsites.net URL)

 

2) Add tracing 

For this, you can check Scotts Blogpost . Test until "azure site log tail mysite" works when you call ./trace.axd

 

3) Configure a deployment user

In the dashboard of your website click "set up deployment credentials" to setup a new user for deployments. See more documentation here

 

4) Checkout the Kudu project

Kudu is the engine behind git deployments for Windows Azure websites. It is open source (Apache Licence 2.0) and can be used locally in your own datacenter if you wish to).

 

Behind every azure-hosted website, there is a kudu-service site. As an example:

Your website: http://azurelogstreaming.azurewebsites.net

The corresponding Kudu service site is https://azurelogstreaming.scm.azurewebsites.net.

 

Note: the https-protocol and the .scm. in the middle of the URL. The https is needed since you are required to send username/password over the wire. For more information about Kudu service urls read https://github.com/projectkudu/kudu/wiki/Accessing-the-kudu-service.

 

In order to stream the Trace information to your browser/command line window, you have to connect to the Kudu-URL and /logstream at the end. 

In the Kudu Dashboard you can see the various REST endpoint URLs and also there is a nice Diagnostic console! It's still an experimental feature, but you can see what the backend already alows... I wonder, if we see an integration with Visual Studio here in the future... (you can even edit the files on the server in the console)

Kudu services dashboard

Kudu Diagnostic Console

If you want to know more about the Kudu Project, there is a series of Channel9 posts about Kudu. 

 

5) Enjoy live trace messages

Scott showed how you can grab the trace output via the Windows Azure Cross-Platform Command Line Tools.

But there is no magic involved - Kudu is just a regular http endpoint that you can access - so there is many other ways to display the output - sweet!

 

Option 1: Use a Web browser

Just point your browser to https://azurelogstreaming.scm.azurewebsites.net/logstream and enter the login/password you have just configured in step 3) 

Since browsers buffer content until they get a complete document (which will never happen in this case) or they get a large amount of data you wont see output immediately. It is recommended to use curl or any other command line toll that does not buffer. 

 

Option 2: Use curl and the Command line

You can also display the trace output via a standard curl call (curl is a command line URL transfer library that works with http, ftp and many more): 

curl -u deploymentuser https://azurelogstreaming.scm.azurewebsites.net/logstream -k

Windows Azure Trace output via /logstream displayed via curl

Note: In previous posts (1 and 2) I have already given some love to Chocolatey. A simple "cinst curl" and you have installed curl.

 

Option 3: Use PowerShell

After installing the powershell tools for Windows Azure (which you can download via the Web Platform Installer or find them here) you can simply issue the following command to show the trace output:

 

Get-AzureWebSiteLog -Name websitename -Tail

 

Use the -Message parameter to filter for specific events, use the -Path parameter to filter for specific log types.

Using the Web Platform Installer to install PowerShell commandlets for Windows Azure

Integration in Royal TS

There are neat ways to integrate this in Royal TS: You could launch the Kudu Diagnostics page from within Royal TS:

Kudu Diagnostics console

... or display the Logstream of your Web site in realtime:

Windows Azure Logstream

Posted on December 9, 2013 and filed under development, Windows Azure, Royal TS.

My Windows Azure subscription can't use Websites?

I started playing around with an ASP.NET MVC5 website that I wanted to deploy to Windows Azure.

 

For this I followed a very basic and simple tutorial at http://www.windowsazure.com/en-us/develop/net/tutorials/get-started/. But when I came to the step to create a new site on Windows Azure (step 9) I got the following error-message:

—————————————- Microsoft Visual Studio —————————————-
This subscription is not registered to use the following resources: Website. The remote server returned an unexpected response: (400) Bad Request.
—————————————- OK —————————————-

Remark: You know, that you can copy the text of a MessageBox in Windows just by pressing CTRL-C, right? ;)

 

I have my Windows Azure subscription based on my MSDN account and of course I can create websites... And yes, I was logged in with my VS2013 into Visual Studio Online.

 

The solution

After some playing around I logged in into Windows Azure via the normal web browser and voila ... I tried again and the message was gone... I wonder, what this changed or if that has something to do with me using Chrome as my default browser?

 

Somehow this is using the browser (and maybe its cookies?) to communicate with Windows Azure?

Posted on December 6, 2013 and filed under development, Windows Azure.

Installing the dev-tools

Using Chocolatey  i was very quick in setting up a basic set of tools that i usually need when developing stuff:

  • cinst notepadplusplus (sometimes needed)
  • cinst GoogleChrome  (nothing to say here)
  • cinst Console2 (extende console)
  • cinst sysinternals  (best tool-set ever for windows)
  • cinst fiddler4  (proxy for debugging)
  • cinst Wget  (commandline http calls)
  • cinst curl  (commandline http calls)
  • cinst linqpad4  (test your linq)
  • cinst baretail  (tail -f for windows)
  • cinst greenshot  (Screenshot tool)

put this to a batch-file and you are super-fast in setting up another dev-machine

 

Keeping your tools at hand fresh

once you have done this, with the command cup all you can easily bring all packages up to date - sweet :) This can eben be automated so once a week you refresh all your tools by default. 

 

Is there any development-tool missing at Chocolatey? If so, think of creating your own package. Its a fairly easy process (as long as you are not scared by commandlines...) which I will blog about soon.  

Posted on November 7, 2013 and filed under development, productivity, Windows Azure.

How to connect to a Windows Azure VM using Royal TSX

While I was test-driving a Windows Azure hosted VM as my main development environment i had problems connecting using Royal TSX:

Screen Shot 2013-11-05 at 15.35.23.png

Using the Windows Version of Royal TS worked fine - so whats the deal?  

 

1) Move the port where it belongs

I imported the .rdp file that was generated by the Windows Azure Management Portal in the Windows Version of RTS. This put the following text in the "Computername" field: 

<ip-address>:<port> 

Remove the port and put it in the appropriate setting:

Screen Shot 2013-11-05 at 15.37.50.png

2) Make sure, you have the FreeRDP plugin for RDP used

Open the properties of the Application node and select FreeRDP as default plugin for RDP

 Make sure, FreeRDP ist the default Plugin for RDP connections

Make sure, FreeRDP ist the default Plugin for RDP connections

If you dont have FreeRDP there, just download it. Go to the Application Preferences, Plugins and install it from the Plugin List: 

Screen Shot 2013-11-05 at 15.41.21.png

After this adaptions, Royal TSX worked smoothly :) 

Posted on November 6, 2013 and filed under development, productivity, Royal TS, Windows Azure.