<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wely&#039;s Cloud Journey...</title>
	<atom:link href="http://wely-lau.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://wely-lau.net</link>
	<description>A Wordpress Blog, Running on Windows Azure Platform</description>
	<lastBuildDate>Sun, 15 Jan 2012 13:39:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Uploading File Securely to Windows Azure Blob Storage with Shared Access Signature via REST-API</title>
		<link>http://wely-lau.net/2012/01/10/uploading-file-securely-to-windows-azure-blob-storage-with-shared-access-signature-via-rest-api/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=uploading-file-securely-to-windows-azure-blob-storage-with-shared-access-signature-via-rest-api</link>
		<comments>http://wely-lau.net/2012/01/10/uploading-file-securely-to-windows-azure-blob-storage-with-shared-access-signature-via-rest-api/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 07:53:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Windows Azure]]></category>
		<category><![CDATA[Windows Azure Storage]]></category>

		<guid isPermaLink="false">http://wely-lau.net/2012/01/10/uploading-file-securely-to-windows-azure-blob-storage-with-shared-access-signature-via-rest-api/</guid>
		<description><![CDATA[In many scenario, you would need to give somebody an access (regardless write, read, etc.) but you don’t want to give him / her full permission. Wouldn’t also be great if you could control the access on certain time frame. The “somebody” could be person or system that use various different platform other than .NET. [...]]]></description>
			<content:encoded><![CDATA[<p>In many scenario, you would need to give somebody an access (regardless write, read, etc.) but you don’t want to give him / her full permission. Wouldn’t also be great if you could control the access on certain time frame. The “somebody” could be person or system that use various different platform other than .NET. This post is about to show you how to upload a file to Windows Azure Storage with REST-based API without having to expose your <a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh225339.aspx">Storage Account credential</a>. </p>
<h2>Shared Access Signature</h2>
<p>A cool feature Shared Access Signature (SAS) is built-in on Windows Azure Storage. In a nutshell, SAS is a mechanism to give permission while retaining security by producing a set of attributes and signature in the URL. </p>
<p>For the fundamental of SAS, I recommend you to read the following post:</p>
<ul>
<li><a href="http://blog.smarx.com/posts/new-storage-feature-signed-access-signatures">http://blog.smarx.com/posts/new-storage-feature-signed-access-signatures</a> </li>
<li><a href="http://blog.smarx.com/posts/shared-access-signatures-are-easy-these-days">http://blog.smarx.com/posts/shared-access-signatures-are-easy-these-days</a> </li>
<li><a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee395415.aspx">http://msdn.microsoft.com/en-us/library/windowsazure/ee395415.aspx</a></li>
</ul>
<p>Here’re the walkthrough how you can do that:</p>
<p>I assume that you’ve the Windows Azure Storage Account and Key with you.</p>
<h2>Preparing SAS and Signature</h2>
<p>1. Giving access to your container. You can either use tools or library to set SAS permission access on container or blobs. In this example, I use Cerebrata’s Cloud Storage Studio.</p>
<p><a href="http://cdn.wely-lau.net/wordpress/2012/01/1.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="1" border="0" alt="1" src="http://cdn.wely-lau.net/wordpress/2012/01/1_thumb.jpg" width="438" height="402" /></a></p>
<p>As could be seen, I’ve created a policy with the following attributes:</p>
<ul>
<li>Start Date Time: Jan 8, 2012 / 00:00:00 </li>
<li>Expiry Date Time: Jan 31, 2012 / 00:00:00 </li>
<li>Permission: Write only </li>
<li>Signed Identifier: Policy1</li>
</ul>
<p>By applying this policy to some particular container, somebody who possess a signature will only be able to write something inside this container on the given timeframe. I mentioned “a signature”, what’s the signature then?</p>
<p>2. You can click on “Generate Signed URL” button if you’re using Cloud Storage Studio. But I believe you can do similarly feature although using different tool. </p>
<p><a href="http://cdn.wely-lau.net/wordpress/2012/01/2.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="2" border="0" alt="2" src="http://cdn.wely-lau.net/wordpress/2012/01/2_thumb.jpg" width="475" height="383" /></a></p>
<p>In the textbox, you’ll see something like this:</p>
<p><a href="https://[your-account].blob.core.windows.net/samplecontainer1?&amp;sr=c&amp;si=Policy1&amp;sig=pjJhE%2FIgsGQN9Z1231312312313123123A%3D">https://[your-account].blob.core.windows.net/samplecontainer1?&amp;sr=c&amp;si=Policy1&amp;sig=pjJhE%2FIgsGQN9Z1231312312313123123A%3D</a></p>
<p>Basically, starting the ? symbol to the end, that’s the signature: <strong>?&amp;sr=c&amp;si=Policy1&amp;sig=pjJhE%2FIgsGQN9Z1231312312313123123A%3D</strong></p>
<blockquote><p>*Copy that value first, you will need this later.</p>
</blockquote>
<p>The signature will be signed securely according to your storage credentials and also the properties you’ve specified.</p>
<p>&#160;</p>
<h2>Let’s jump to Visual Studio to start our coding!!!</h2>
<p>I use the simplest C# Console Application to get started. Prepare the file to be uploaded. In my case, I am using Penguin.jpg which you can find in Windows sample photo. </p>
<p>3. Since I am about to upload a picture, I will need to get byte[] of data from the actual photo. To do that, I use the following method.</p>
<pre class="csharpcode">        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">byte</span>[] GetBytesFromFile(<span class="kwrd">string</span> fullFilePath)
        {
            FileStream fs = File.OpenRead(fullFilePath);
            <span class="kwrd">try</span>
            {
                <span class="kwrd">byte</span>[] bytes = <span class="kwrd">new</span> <span class="kwrd">byte</span>[fs.Length];
                fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
                fs.Close();
                <span class="kwrd">return</span> bytes;
            }
            <span class="kwrd">finally</span>
            {
                fs.Close();
            }
        } </pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>4. The next step is the most important one, which is to upload a file to Windows Azure Storage through REST with SAS.</p>
<pre class="csharpcode">        <span class="kwrd">static</span> WebResponse UploadFile(<span class="kwrd">string</span> storageAccount, <span class="kwrd">string</span> container, <span class="kwrd">string</span> filename, <span class="kwrd">string</span> signature, <span class="kwrd">byte</span>[] data)
        {
            var req = (HttpWebRequest)WebRequest.Create(<span class="kwrd">string</span>.Format(<span class="str">&quot;http://{0}.blob.core.windows.net/{1}/{2}{3}&quot;</span>, storageAccount, container , filename, signature));
            req.Method = <span class="str">&quot;PUT&quot;</span>;
            req.ContentType = <span class="str">&quot;text/plain&quot;</span>;

            <span class="kwrd">using</span> (Stream stream = req.GetRequestStream())
            {
                stream.Write(data, 0, data.Length);
            }

            <span class="kwrd">return</span> req.GetResponse();
        }</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>5. To call it, you will need to do the following:</p>
<pre class="csharpcode">        <span class="kwrd">static</span> <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[] args)
        {
            <span class="kwrd">string</span> storageAccount = <span class="str">&quot;your-storage-account&quot;</span>;
            <span class="kwrd">string</span> file = <span class="str">&quot;Penguins.jpg&quot;</span>;
            <span class="kwrd">string</span> signature = <span class="str">&quot;<strong>?&amp;sr=c&amp;si=Policy1&amp;sig=pjJhE%2FIgsGQN9Z1231312312313123123A%3D</strong>&quot;</span>;
            <span class="kwrd">string</span> container = <span class="str">&quot;samplecontainer1&quot;</span>;

            <span class="kwrd">byte</span>[] data = GetBytesFromFile(file);
            WebResponse resp = UploadFile(storageAccount, container, file, signature, data);

            Console.ReadLine();
        }</pre>
<style type="text/css">
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>The signature variable should be filled with the signature that you’ve copied in step 2 just now.</p>
<p>6. Let’s try to see if it works!</p>
<p>And yes, it works <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://cdn.wely-lau.net/wordpress/2012/01/wlEmoticon-smile.png" />.</p>
<p><a href="http://cdn.wely-lau.net/wordpress/2012/01/3.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="3" border="0" alt="3" src="http://cdn.wely-lau.net/wordpress/2012/01/3_thumb.jpg" width="390" height="321" /></a></p>
<p>Hope this helps!</p>
]]></content:encoded>
			<wfw:commentRss>http://wely-lau.net/2012/01/10/uploading-file-securely-to-windows-azure-blob-storage-with-shared-access-signature-via-rest-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;A Cloudy Place&#8221;&#8211; Blogging About Cloud Computing</title>
		<link>http://wely-lau.net/2011/12/29/a-cloudy-place-blogging-about-cloud-computing/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-cloudy-place-blogging-about-cloud-computing</link>
		<comments>http://wely-lau.net/2011/12/29/a-cloudy-place-blogging-about-cloud-computing/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 05:35:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Cloud]]></category>

		<guid isPermaLink="false">http://wely-lau.net/2011/12/29/a-cloudy-place-blogging-about-cloud-computing/</guid>
		<description><![CDATA[I am glad to share that “a cloudy place” blog is finally up here: http://acloudyplace.com What is “a cloudy place”? A centralized blog focused on cloud technology exclusively for developers. If you’ve heard about SQL Server Central, it’s somewhat similar but focus on cloud computing. You can find topics such as general cloud info, Amazon [...]]]></description>
			<content:encoded><![CDATA[<p>I am glad to share that “a cloudy place” blog is finally up here: <a href="http://acloudyplace.com">http://acloudyplace.com</a></p>
<p><a href="http://acloudyplace.com"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://cdn.wely-lau.net/wordpress/2011/12/image.png" width="304" height="104" /></a></p>
<h2>What is “a cloudy place”?</h2>
<p>A centralized blog focused on cloud technology exclusively for developers. If you’ve heard about <a href="http://www.sqlservercentral.com/">SQL Server Central</a>, it’s somewhat similar but focus on cloud computing. You can find topics such as <a href="http://acloudyplace.com/category/general/">general cloud info</a>, <a href="http://acloudyplace.com/category/amazon-ec2/">Amazon Web Services</a>, <a href="http://acloudyplace.com/category/azure/">Windows Azure</a>, and so many more.</p>
<h2>Who own “a cloudy place”?</h2>
<p>“a cloudy place” is owned and managed by <a href="http://www.red-gate.com/">Red Gate</a>, a software company specializing in SQL, DBA, .NET, and Oracle development tools based in Cambridge, UK.</p>
<h2>What to do with me?</h2>
<p>Aha! I am invited to become a contributor on “a cloudy place”. In a first few post, you will see me write about some generic cloud concept. Of course, I’ll discuss more about Windows Azure later on.</p>
<p>You can find my articles <a href="http://acloudyplace.com/author/wely_lau/">here</a>.</p>
<p>Happy “cloudy” reading on “a cloudy place”!</p>
]]></content:encoded>
			<wfw:commentRss>http://wely-lau.net/2011/12/29/a-cloudy-place-blogging-about-cloud-computing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Announcements on Windows Azure [12 Dec 2011]</title>
		<link>http://wely-lau.net/2011/12/13/new-announcement-on-windows-azure-12-dec-2011/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-announcement-on-windows-azure-12-dec-2011</link>
		<comments>http://wely-lau.net/2011/12/13/new-announcement-on-windows-azure-12-dec-2011/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 02:20:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Windows Azure Platform]]></category>

		<guid isPermaLink="false">http://wely-lau.net/2011/12/13/new-announcement-on-windows-azure-12-dec-2011/</guid>
		<description><![CDATA[What’s new? There’re several announcements that are made by Windows Azure team yesterday. Here’re the summary: Metro-style Windows Azure Home Page http://www.windowsazure.com/en-us/ The site is more simplified now, the look-and-feel looks clean and comfortable. Windows Azure SDK for Node.js https://github.com/WindowsAzure/azure-sdk-for-node Maximum database size has been increased from 50GB to 150GB. http://www.windowsazure.com/en-us/home/tour/database/ *Price will be capped [...]]]></description>
			<content:encoded><![CDATA[<h1>What’s new?</h1>
<p>There’re several announcements that are made by Windows Azure team yesterday. Here’re the summary:</p>
<ul>
<li>Metro-style <strong>Windows Azure Home Page </strong><a href="http://www.windowsazure.com/en-us/">http://www.windowsazure.com/en-us/</a></li>
</ul>
<blockquote><p>The site is more simplified now, the look-and-feel looks clean and comfortable.</p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/12/1.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="1" border="0" alt="1" src="http://cdn.wely-lau.net/wordpress/2011/12/1_thumb.jpg" width="424" height="271" /></a></p>
</blockquote>
<ul>
<li>Windows Azure SDK for <strong>Node.js</strong> </li>
</ul>
<blockquote><p><a href="https://github.com/WindowsAzure/azure-sdk-for-node">https://github.com/WindowsAzure/azure-sdk-for-node</a></p>
</blockquote>
<ul>
<li>Maximum database size has been increased from <strong>50GB to 150GB</strong>.</li>
</ul>
<blockquote><p><a href="http://www.windowsazure.com/en-us/home/tour/database/">http://www.windowsazure.com/en-us/home/tour/database/</a></p>
<p>*Price will be capped to $ 499.95 per DB per month.</p>
</blockquote>
<ul>
<li>SQL Azure <strong>Federation</strong></li>
</ul>
<blockquote><p><a href="http://social.technet.microsoft.com/wiki/contents/articles/2281.aspx">http://social.technet.microsoft.com/wiki/contents/articles/2281.aspx</a></p>
</blockquote>
<ul>
<li>Metro-styled <strong>SQL Azure Management Portal</strong></li>
<blockquote><p><a href="http://www.windowsazure.com/en-us/pricing/details/"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="2" border="0" alt="2" src="http://cdn.wely-lau.net/wordpress/2011/12/2.jpg" width="436" height="216" /></a></p>
</blockquote>
<li>Some adjustment on <strong>pricing</strong></li>
</ul>
<blockquote><p><a href="http://www.windowsazure.com/en-us/pricing/details/">http://www.windowsazure.com/en-us/pricing/details/</a></p>
</blockquote>
<h1>More Info?</h1>
<p>For more detail, please refer to the following links:</p>
<ul>
<li><a href="http://blogs.msdn.com/b/windowsazure/archive/2011/12/12/improved-developer-experience-interoperability-and-scalability-on-windows-azure.aspx">http://blogs.msdn.com/b/windowsazure/archive/2011/12/12/improved-developer-experience-interoperability-and-scalability-on-windows-azure.aspx</a></li>
<li><a href="http://blogs.msdn.com/b/windowsazure/archive/2011/12/12/now-available-sql-azure-q4-2011-service-release.aspx">http://blogs.msdn.com/b/windowsazure/archive/2011/12/12/now-available-sql-azure-q4-2011-service-release.aspx</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://wely-lau.net/2011/12/13/new-announcement-on-windows-azure-12-dec-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows Azure Storage Transaction &#124; Unveiling the Unforeseen Cost and Tips to Cost Effective Usage</title>
		<link>http://wely-lau.net/2011/12/02/unveiling-the-unforeseen-cost-of-windows-azure-storage-transaction/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=unveiling-the-unforeseen-cost-of-windows-azure-storage-transaction</link>
		<comments>http://wely-lau.net/2011/12/02/unveiling-the-unforeseen-cost-of-windows-azure-storage-transaction/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 07:47:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Windows Azure Storage]]></category>

		<guid isPermaLink="false">http://wely-lau.net/2011/12/02/unveiling-the-unforeseen-cost-of-windows-azure-storage-transaction/</guid>
		<description><![CDATA[Background I was quite surprise when seeing the Storage Transaction bills 2000% more than Storage Capacity, and it’s about 40% of my total bill. Wow&#8230; How can that be? Isn’t that the storage transaction just costs $ 0.01 per 10,000 transactions, but why it’s become so expensive? In fact, this is the component that many [...]]]></description>
			<content:encoded><![CDATA[<h1>Background</h1>
<p>I was quite surprise when seeing the Storage Transaction bills 2000% more than Storage Capacity, and it’s about 40% of my total bill. Wow&#8230; How can that be? </p>
<p>Isn’t that the storage transaction just costs $ 0.01 per 10,000 transactions, but why it’s become so expensive? In fact, this is the component that many people ignore when doing the running cost estimation for Windows Azure project.</p>
<p>This leads me to explore and understand Window Azure Storage Transaction more deeply. This article will unveil this unforeseen cost, explain thoroughly how the Storage Transaction costs charge, followed by scenarios that potentially cause the high cost of Storage Transaction. Eventually, I’ll provide some tips to avoid the costly charge of Storage Transaction.</p>
<p>Before getting into the detail, let’s refresh our mind to understanding how Windows Azure Storage costs in overview. </p>
<h1>Understanding Windows Azure Storage Billing</h1>
<p>Brad Calder from Windows Azure Storage Team did a <a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/07/09/understanding-windows-azure-storage-billing-bandwidth-transactions-and-capacity.aspx">great post</a> on explaining how the billing looks like for Windows Azure Storage including the Capacity, Bandwidth, and Transaction. </p>
<p>In summary, here’re how it costs (as per Nov 2011). Keep in mind that the cost may change (although not very frequent, but who knows)</p>
<p>1. Storage Capacity = $0.14 per GB stored per month, based on the daily average</p>
<p>2. Storage Transactions = $0.01 per 10,000 transactions </p>
<p>3. Data Transfer (Bandwidth)</p>
<ul>
<li>Free Ingress (inbound) </li>
<li>Outbound:
<ul>
<li>North America and Europe region = $ 0.15 per GB </li>
<li>Asia Pacific region = $ 0.20 per GB </li>
</ul>
</li>
</ul>
<p>Please always refer to the following for latest pricing:</p>
<ul>
<li><a href="http://www.microsoft.com/windowsazure/pricing/">http://www.microsoft.com/windowsazure/pricing/</a> </li>
<li><a href="http://www.microsoft.com/windowsazure/pricing-calculator/">http://www.microsoft.com/windowsazure/pricing-calculator/</a> </li>
</ul>
<p>Many people argue that Windows Azure Storage is much more cost-effective than SQL Azure. </p>
<p>Well, that’s true in “most of the time”, but not “all the time”.&#160; </p>
<h2>Understanding How Storage Transaction Charge in More Detail</h2>
<p>Now, let’s forget the Storage Capacity and Bandwidth first, let’s talk about Storage Transaction now. It’s considered 1 transaction whenever you “touch” any component of Windows Azure Storage.</p>
<ul>
<li>“Touch” means any REST calls or operation including read, write, delete, update. </li>
<li>“Any Component” means any entity inside Blobs, Tables, or Queues. </li>
</ul>
<p>Here’re some examples of transactions that extracted from <a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/07/09/understanding-windows-azure-storage-billing-bandwidth-transactions-and-capacity.aspx">“Understanding Windows Azure Storage Billings”</a> post.</p>
<blockquote><ul>
<li>A single GetBlob request to the blob service = 1 transaction </li>
<li>PutBlob with 1 request to the blob service = 1 transaction </li>
<li>Large blob upload that results in 100 requests via PutBlock, and then 1 PutBlockList for commit = 101 transactions </li>
<li>Listing through a lot of blobs using 5 requests total (due to 4 continuation markers) = 5 transactions </li>
<li>Table single entity AddObject request = 1 transaction </li>
<li>Table Save Changes (without SaveChangesOptions.Batch) with 100 entities = 100 transactions </li>
<li>Table Save Changes (with SaveChangesOptions.Batch) with 100 entities = 1 transaction </li>
<li>Table Query specifying an exact PartitionKey and RowKey match (getting a single entity) = 1 transaction </li>
<li>Table query doing a single storage request to return 500 entities (with no continuation tokens encountered) = 1 transaction </li>
<li>Table query resulting in 5 requests to table storage (due to 4 continuation tokens) = 5 transactions </li>
<li>Queue put message = 1 transaction </li>
<li>Queue get single message = 1 transaction </li>
<li>Queue get message on empty queue = 1 transaction </li>
<li>Queue batch get of 32 messages = 1 transaction </li>
<li>Queue delete message = 1 transaction </li>
</ul>
</blockquote>
<h1>Scenarios</h1>
<p>Having done understanding how the storage transaction charge, considering the following scenarios:</p>
<h2>Scenario 1 – Iterating files inside Blob container</h2>
<p>An application will organize the blobs in different container per each users. It also allows the users to check size of each container. For that, a function is created to loop through entire files inside the container and return the size in decimal. Now, this functionality is exposed at UI screen. An admin can typically call this function a few times a day.</p>
<blockquote><p><em>*Update: Actually, we can use ListBlobs method to get the length / size of files inside the container. But anyway, just forget it at the moment. (Thanks to Jai Haridas for this comment)</em></p>
</blockquote>
<h3>Some Figures for Illustration</h3>
<p>Assuming the following figures are used for illustration:</p>
<ul>
<li>I have <strong>1,000 users</strong>. </li>
<li>I have <strong>10,000 of files</strong> in average for each container. </li>
<li>Admin call this function <strong>5 times a day</strong> in average. </li>
</ul>
<p>How much it costs for Storage Transaction per month?</p>
<blockquote><p><em><strong>Remember: a single GetBlob request is considered 1 transaction!</strong></em></p>
<p>1,000 users X 10,000 files X 5 times query X 30 days = 1,500,000,000 transaction</p>
<p>$ 0.01 per 10,000 transactions X 1,500,000,000 transactions = <strong><font color="#ff0000">$ 1,500 per month</font></strong></p>
</blockquote>
<p>Well, that’s not cheap at all.</p>
<h3>Tips to Bring it Down</h3>
<ul>
<li>Verify with the admin if they really need to use the function for 5 times a day? Educate them, tell them that each time this function is being called, it roughly costs $ 10 since it involves 10 million transaction (10,000 files X 1,000 users). I bet the admin will also avoid that if he/she knows the cost. </li>
<li>Do not expose this functionality as real time query to admin. Considering to automatically run this function once in a day, save the size in somewhere. Just let admin to view the daily result (day by day). </li>
</ul>
<p>With limiting the admin to just only view once a day, what will be the monthly cost looks like:</p>
<blockquote><p>1,000 users X 10,000 files X 1 times query X 30 days = 300,000,000 transaction </p>
<p>$ 0.01 per 10,000 transactions X 300,000,000&#160; transactions = <strong><font color="#008080">$ 300 per month</font></strong></p>
</blockquote>
<p>Well, I think that’s fair enough!</p>
<p>&#160;</p>
<h2>Scenario 2 – Worker Role Constantly Pinging Queue</h2>
<p>An application enables user to upload some document for processing. The uploaded document will be processed asynchronously at the backend. When processing is done, the user will get notified by email.</p>
<p>Technically, it uses Queue to store and centralize all tasks. Two instances of web roles to take the input and store task as message inside the Queue. On the other hand, 5 instances of Worker Role are provisioned, they will constantly pinging Queue Storage to check if there’s new message to be processed. </p>
<p>The following diagrams illustrates how the architecture may look like.</p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/12/image5.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://cdn.wely-lau.net/wordpress/2011/12/image5_thumb.png" width="353" height="264" /></a></p>
<p align="center"><font size="1"><em><strong>*icons by </strong></em></font><a href="http://azuredesignpatterns.com/"><font size="1"><em><strong>http://azuredesignpatterns.com/</strong></em></font></a><font size="1"><em><strong>, David Pallman</strong></em></font></p>
<h3>Some Figures for Illustration</h3>
<p>Assuming the following figures:</p>
<ul>
<li>It has <strong>5 instances</strong> of Worker Role </li>
<li>Those Worker Role will constantly get message from Queue (regardless it’s empty or filled) </li>
</ul>
<blockquote><pre class="code"><span style="color: blue">public override void </span>Run()
{
    <span style="color: blue">while </span>(<span style="color: blue">true</span>)
    {
        <span style="color: #2b91af">CloudQueueMessage </span>msg = queue.GetMessage();
        <span style="color: blue">if </span>(msg != <span style="color: blue">null</span>)
        {
            <span style="color: green">// process the message
               </span>}
    }
}</pre>
</blockquote>
<ul>
<li>Those Worker Role will run 24 hours per day, 30 days per month </li>
<li>It’s stated <a href="http://blogs.msdn.com/b/windowsazurestorage/archive/2010/05/10/windows-azure-storage-abstractions-and-their-scalability-targets.aspx">here</a> that a single queue is able to process up to 500 messages per second. Let’s assume in average, it will process 200 messages per second (considering some tiny latency between Worker Role and Storage) </li>
</ul>
<p>How much it costs for Storage Transaction per month?</p>
<blockquote>
<p><strong><em>Remember: a GetMessage on Queue function (regardless empty or filled) is considered 1 transaction</em></strong></p>
<p>200 req X 60 sec X 60 min X 24 hours X 30 days X 5 instances = 2,592,000,000 transactions</p>
</td>
<p>$ 0.01 per 10,000 transactions X 2,592,000,000 transactions = <strong><font color="#ff0000">$ 2,592 per month</font></strong></p>
</blockquote>
<h3>Tips to Bring it Down&#160; #1</h3>
<p>Unless there’s requirement to meet certain number of target, otherwise consider to put some Sleep to especially when you’ve got empty message result for several times. </p>
<p>Assuming we put Thread.Sleep(100) = 0.1 second, which means for <strong>every second there will be 10 time</strong> polling to the queue to check if there’s message.</p>
<blockquote>
<pre class="code"><span style="color: blue">public override void </span>Run()
{
    <span style="color: blue">while </span>(<span style="color: blue">true</span>)
    {
        <span style="color: #2b91af">CloudQueueMessage </span>msg = queue.GetMessage();
        <span style="color: blue">if </span>(msg != <span style="color: blue">null</span>)
        {
            <span style="color: green">// process the message

               </span>}
<span style="color: blue">               else </span><span style="color: #2b91af">Thread</span>.Sleep(100);
    }
}</pre>
</blockquote>
<p>With that, how much do you think it will cost for a month?</p>
<blockquote>
<p>
    <br />10 req X 60 sec X 60 min X 24 hours X 30 days X 5 instances = 129,600,000&#160; transactions </p>
<p>$ 0.01 per 10,000 transactions X 129,600,000 transactions =<font color="#00ff00"> </font><font color="#008080"><strong>$ 129.6 per month</strong></font></p>
</blockquote>
<p>Well, that’s fair enough.</p>
<h3>Tips to Bring it Down #2</h3>
<p>When your 5 instances of Worker Role have fetched so many times of empty message, then you should start asking yourself if you really need those 5 instances of Worker Roles?</p>
<p>Scaling them in will not only can bring down the Storage Transaction costs, but also will save you some money on Windows Azure Compute Instances.</p>
<blockquote>
<p><em>*Thanks to Brad Calder for this thought.</em></p>
</blockquote>
<h2>Scenario 3 – Be Aware with Turning on Windows Azure Diagnostic </h2>
<p>Another hidden scenario that may burst your bill on Storage Transaction is turning on Windows Azure Diagnostic if you do not control it properly.</p>
<h3>How Windows Azure Diagnostic Work</h3>
<p>Windows Azure Diagnostic collects diagnostic data from your instances and copies it to a Window Azure Storage account (either on blob and table storage). Those diagnostic data (such as log) can indeed help developer for the purpose of monitoring performance and tracing source of failure if exception occurs.</p>
<p>We’ll need to define what kind of log (IIS Logs, Crash Dumps, FREB Logs, Arbitrary log files, Performance Counters, Event Logs, etc.) to be collected and send to Windows Azure Storage either on-schedule-basis or on-demand. </p>
<p>However, if you are not carefully define what you are really need for the diagnostic info, you might end up paying the unexpected bill. </p>
<h3>Some Figures for Illustration</h3>
<p>Assuming the following figures:</p>
<ul>
<li>You a few application that require high processing power of <strong>100 instances</strong></li>
<li>You apply 5 performance counter logs (Processor% Processor Time, MemoryAvailable Bytes, PhysicalDisk% Disk Time, Network Interface Connection: Bytes Total/sec, Processor Interrupts/sec)</li>
<li>Performing a schedule transfer for every 5 seconds</li>
<li>The instance will run 24 hours per day, 30 days per month </li>
</ul>
<p>How much it costs for Storage Transaction per month?</p>
<blockquote>
<p>5 counters X 12 times X 60 min X 24 hours X 30 days X 100 instances = 259,200,000 transactions </p>
<p>$ 0.01 per 10,000 transactions X 129,600,000 transactions =<font color="#00ff00"> </font><strong><font color="#ff0000">$ 259.2 per month</font></strong></p>
</blockquote>
<h3>Tips to Bring it Down #2</h3>
<p>Ask yourself again if you really need to monitor all 5 performance counters on every 5 seconds? What if you reduce them to 3 counters and monitor it every 20 seconds?</p>
<blockquote>
<p>3 counters X 3 times X 60 min X 24 hours X 30 days X 100 instances = 3,8880,000 transactions </p>
<p>$ 0.01 per 10,000 transactions X 129,600,000 transactions =<font color="#00ff00"> </font><font color="#008080"><strong>$ 38.8 per month</strong></font></p>
</blockquote>
<p>You can see how much you save for this numbers. Windows Azure Diagnostic is really needed but use it improperly may cause you paying unnecessary money. It’s double-edge sword, be careful. </p>
<h1>Conclusion</h1>
<p>To conclude, this article gives you a view of how Transaction Cost of Windows Azure Transaction may lead to costly charge if it’s not properly used. Different component in Windows Azure Platform charges differently, cloud architect should have deep understanding in order to design scalable, reliable, yet cost-effective solution to customer.</p>
<p>In some case where constantly request is requirement, you may also would like to evaluate using SQL Azure instead of Windows Azure Storage because there will no any storage transaction cost in SQL Azure. </p>
<p>Do not worry of using any component if you really need. As long as you architect and design the solution properly, the cost should be reasonable enough.</p>
<p>Hopefully by reading this article, you’ll save some money for storage transaction <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://cdn.wely-lau.net/wordpress/2011/12/wlEmoticon-winkingsmile.png" />.</p>
]]></content:encoded>
			<wfw:commentRss>http://wely-lau.net/2011/12/02/unveiling-the-unforeseen-cost-of-windows-azure-storage-transaction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I am officially MCPD in Windows Azure</title>
		<link>http://wely-lau.net/2011/11/26/i-am-officially-mcpd-in-windows-azure/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=i-am-officially-mcpd-in-windows-azure</link>
		<comments>http://wely-lau.net/2011/11/26/i-am-officially-mcpd-in-windows-azure/#comments</comments>
		<pubDate>Sat, 26 Nov 2011 03:58:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Certification]]></category>

		<guid isPermaLink="false">http://wely-lau.net/2011/11/26/i-am-officially-mcpd-in-windows-azure/</guid>
		<description><![CDATA[Due to bunch of busy stuff, I had not have chance to blog. Anyway, I am pleased to share that I am now officially MCPD (Microsoft Certified Professional Developer) in Windows Azure. Obtaining MCPD in Windows Azure requires three exams: Exam 70-513 &#8211; MCTS prerequisite: TS: Windows Communication Foundation Development with Microsoft .NET Framework 4 [...]]]></description>
			<content:encoded><![CDATA[<p>Due to bunch of busy stuff, I had not have chance to blog.</p>
<p>Anyway, I am pleased to share that I am now officially MCPD (Microsoft Certified Professional Developer) in Windows Azure.</p>
<p>Obtaining MCPD in Windows Azure requires three exams:</p>
<ul>
<li><a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-513&amp;Locale=en-us">Exam 70-513 &#8211; MCTS prerequisite: TS: Windows Communication Foundation Development with Microsoft .NET Framework 4</a> </li>
<li><a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-516&amp;locale=en-us">Exam 70-516 &#8211; MCTS prerequisite: TS: Accessing Data with Microsoft .NET Framework 4</a> </li>
<li><a href="http://www.microsoft.com/learning/en/us/Exam.aspx?ID=70-583&amp;Locale=en-us">Exam 70-583 &#8211; MCPD requirement: PRO: Designing and Developing Windows Azure Applications</a> </li>
</ul>
<h2>Passing the core 70-538 Beta Exam</h2>
<p>I have successfully passed the beta exam of <a href="http://blogs.msdn.com/b/gerryo/archive/2010/10/13/windows-azure-beta-exam-announcement.aspx">Designing and Developing Windows Azure Applications</a> about a year ago. Beta exam is more challenging than normal exam. There’re no official preparation material, no training kit, no e-book, no online training. </p>
<p>It’s just purely state a few topics with their short descriptions what will be tested.</p>
<h2>Passing the MCTS Prerequisite: 70-516 and 70-513</h2>
<p>As you can see that, there are 2 prerequisites exams that need to be accomplished apart form the core exam 70-583. I had passed the 70-516 last September and 70-513 just last week.</p>
<p>With that, here’s my MCPD cert in Windows Azure <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://cdn.wely-lau.net/wordpress/2011/11/wlEmoticon-winkingsmile.png" /></p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/11/clip_image001.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://cdn.wely-lau.net/wordpress/2011/11/clip_image001_thumb.jpg" width="244" height="183" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://wely-lau.net/2011/11/26/i-am-officially-mcpd-in-windows-azure/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Participating HP APJ (Asia Pacific &amp; Japan) Media Event in Singapore</title>
		<link>http://wely-lau.net/2011/10/23/participating-hp-apj-asia-pacific-japan-media-event-in-singapore/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=participating-hp-apj-asia-pacific-japan-media-event-in-singapore</link>
		<comments>http://wely-lau.net/2011/10/23/participating-hp-apj-asia-pacific-japan-media-event-in-singapore/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 08:18:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[HP]]></category>

		<guid isPermaLink="false">http://wely-lau.net/2011/10/23/participating-hp-apj-asia-pacific-japan-media-event-in-singapore/</guid>
		<description><![CDATA[It was indeed a pleasant experience to participate HP APJ (Asia Pacific &#38; Japan) Media Event in Singapore last 18 and 19 Oct. This two-days event was actually targeting media reporter or journalist in APAC and Japan Region. More than 100 of them were invited to the event. They came from China, Vietnam, Indonesia, Japan, [...]]]></description>
			<content:encoded><![CDATA[<p>It was indeed a pleasant experience to participate HP APJ (Asia Pacific &amp; Japan) Media Event in Singapore last 18 and 19 Oct. This two-days event was actually targeting media reporter or journalist in APAC and Japan Region. More than 100 of them were invited to the event. They came from China, Vietnam, Indonesia, Japan, Australia, New Zealand, and so many more. </p>
<p><a href="http://netindonesia.net/blogs/reyza/">Reza Faisal</a> and <a href="http://ucxrays.wordpress.com/">Raymond Englebert</a> were Indonesia MVPs that join us on the event as well. And surprisingly, I met my Windows Azure MVP fellow from Australia, <a href="http://azure.snagy.name/blog/">Steven Nagy</a>. I knew Steven online from blog, forum, distribution-list, but never met him face-to-face before.</p>
<p>Despite of media event, a few prominent technology bloggers in the region were invited as well. I believe from HP’s perspective, bloggers are like informal online journalist, yet could be key influencers as well.</p>
<p>I am glad that I was also invited to the event. The event is organized in Marina Bay Sands, one of the most awesome hotel in Singapore <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://cdn.wely-lau.net/wordpress/2011/10/wlEmoticon-winkingsmile.png" />.</p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/10/099.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="099" border="0" alt="099" src="http://cdn.wely-lau.net/wordpress/2011/10/099_thumb.jpg" width="244" height="183" /></a><a href="http://cdn.wely-lau.net/wordpress/2011/10/097.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="097" border="0" alt="097" src="http://cdn.wely-lau.net/wordpress/2011/10/097_thumb.jpg" width="244" height="183" /></a></p>
<p>Here’re quick summary from me.</p>
<h1>Day 1</h1>
<p>First part of the agenda of the day were done by several gentlemen from HP.</p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/10/101.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="101" border="0" alt="101" src="http://cdn.wely-lau.net/wordpress/2011/10/101_thumb.jpg" width="244" height="183" /></a><a href="http://cdn.wely-lau.net/wordpress/2011/10/105.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="105" border="0" alt="105" src="http://cdn.wely-lau.net/wordpress/2011/10/105_thumb.jpg" width="244" height="183" /></a></p>
<ul>
<li>It was started Wolfgang Wittmer, GM of Enterprise Servers, Storage &amp; Networking from HP Asia Pacific &amp; Japan. Wolfgang described about the growth of Cloud Computing were mainly triggered by economic factor, social factor, and technology transformation factors. </li>
<li>The presentation was continued by Steve Dietch, Vice President, Marketing, Cloud Solutions &amp; Infrastructure from HP. He explained about strategies of HP in answering the complete solution of Cloud Computing Innovation. </li>
<li>The next session was presented by EJ Bodnar, WW Marketing Director, Technology Consulting Services from HP that highlighted the growth of data center in APJ Region. It’s predicted that China will become the second biggest data center in worldwide by 2012. </li>
<li>Tom Joyce, Vice President of Storage Marketing, Strategy &amp; Operations from HP that illustrated HP 3PAR Utility Storage that is mainly designed for Virtualization and Cloud Solution. </li>
</ul>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/10/106.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="106" border="0" alt="106" src="http://cdn.wely-lau.net/wordpress/2011/10/106_thumb.jpg" width="183" height="244" /></a><a href="http://cdn.wely-lau.net/wordpress/2011/10/107.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="107" border="0" alt="107" src="http://cdn.wely-lau.net/wordpress/2011/10/107_thumb.jpg" width="183" height="244" /></a><a href="http://cdn.wely-lau.net/wordpress/2011/10/108.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="108" border="0" alt="108" src="http://cdn.wely-lau.net/wordpress/2011/10/108_thumb.jpg" width="183" height="244" /></a></p>
<p>The second part of the agenda was the Panel Discussion amongst a few cloud computing practitioner from the industry where they share what they have done on cloud computing and how it helps their business. The panelists were as following:</p>
<ul>
<li><a href="http://www.hostworks.com.au/">Hostworks</a> (Adrian Britton, General Manager of Technology, Strategy &amp; Innovation) </li>
<li><a href="http://info.singtel.com/">SingTel</a> (Alvin Kok, Head Infocomm Services) </li>
<li><a href="http://www.cloudsite.com/">Cloudsite</a> (John Drossos, CEO) </li>
<li><a href="http://monash.edu.au/study/campuses/sunway.html">Monash University Sunway</a> (Edmund Turner, Director ITC) </li>
</ul>
<p>&#160;</p>
<p>Having done the lunch and second part of panel discussion. We then proceeded to Cooltown Tour… What is “cooltown” anyway? It is actually an Innovation Centre located in Singapore that delivers a unique experience of how Business Technology drives business outcomes with hands on technology and real world scenarios.</p>
<p><img src="http://www.progmic.com/wp-content/uploads/2011/10/GEDC6863.jpg" width="366" height="274" /></p>
<h1>Day 2</h1>
<p>Day 2 is purposely plan for technical blogger where the content are much more deep-drilled. The sessions were not only on presentation, but also some interactive live demo. </p>
<p>The following topics were covered:</p>
<ul>
<li>HP 3PAR Storage System </li>
<li>Cloud System Matrix </li>
<li>HP Data Center Transformation Experience Workshop </li>
<li>Virtual System </li>
</ul>
<p>Some photos taken <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://cdn.wely-lau.net/wordpress/2011/10/wlEmoticon-smile.png" /></p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/10/143.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="143" border="0" alt="143" src="http://cdn.wely-lau.net/wordpress/2011/10/143_thumb.jpg" width="183" height="244" /></a>&#160;<a href="http://cdn.wely-lau.net/wordpress/2011/10/141.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="141" border="0" alt="141" src="http://cdn.wely-lau.net/wordpress/2011/10/141_thumb.jpg" width="183" height="244" /></a>&#160;<a href="http://cdn.wely-lau.net/wordpress/2011/10/144.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="144" border="0" alt="144" src="http://cdn.wely-lau.net/wordpress/2011/10/144_thumb.jpg" width="183" height="244" /></a></p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/10/119.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="119" border="0" alt="119" src="http://cdn.wely-lau.net/wordpress/2011/10/119_thumb.jpg" width="244" height="183" /></a><a href="http://cdn.wely-lau.net/wordpress/2011/10/121.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="121" border="0" alt="121" src="http://cdn.wely-lau.net/wordpress/2011/10/121_thumb.jpg" width="244" height="183" /></a><a href="http://cdn.wely-lau.net/wordpress/2011/10/116.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="116" border="0" alt="116" src="http://cdn.wely-lau.net/wordpress/2011/10/116_thumb.jpg" width="244" height="183" /></a><a href="http://cdn.wely-lau.net/wordpress/2011/10/130.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="130" border="0" alt="130" src="http://cdn.wely-lau.net/wordpress/2011/10/130_thumb.jpg" width="244" height="183" /></a></p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/10/138.jpg"><img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="138" border="0" alt="138" src="http://cdn.wely-lau.net/wordpress/2011/10/138_thumb.jpg" width="244" height="183" /></a><a href="http://cdn.wely-lau.net/wordpress/2011/10/133.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="133" border="0" alt="133" src="http://cdn.wely-lau.net/wordpress/2011/10/133_thumb.jpg" width="244" height="183" /></a></p>
<p>The second part of the agenda was SingTel Cloud Data Center Tour. The tour was to show us how the data center of SingTel Cloud <a href="http://www.alatum.com.sg/index.aspx">Alatum</a> works. What I can tell, that was awesome experience. Unfortunately, we are not allowed to take any photo of it. </p>
<p>So, sorry guys, no photo uploaded <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://cdn.wely-lau.net/wordpress/2011/10/wlEmoticon-smile.png" />.</p>
<h1>Summary</h1>
<p>That was a quick summary from me. I believe other bloggers may have their own as well. I really enjoy the event, that’s indeed a great exposure. Hope to see you guys again!</p>
<p>For those who tweet regularly, you can check out Twitter tag #HPAPJ. I believe many folks there were tweeting very actively. </p>
<p>All in all, I would like to thank:</p>
<ul>
<li><a href="http://www.hp.com/">HP</a> that inviting us and make this event happened </li>
<li><a href="http://www.ivyworldwide.com/">Ivyworldwide</a> (Nick and Terri) for your kind arrangement and assistance </li>
<li>Bloggers for sharing and participating the event. It&#8221;s nice to meet bloggers from various country with various background, experience, culture, and knowledge. </li>
</ul>
<p>See you on the next event.</p>
<p><img src="http://a7.sphotos.ak.fbcdn.net/hphotos-ak-snc7/312810_2444094817797_1114651482_32810590_2034312249_n.jpg" width="580" height="314" /></p>
]]></content:encoded>
			<wfw:commentRss>http://wely-lau.net/2011/10/23/participating-hp-apj-asia-pacific-japan-media-event-in-singapore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Can We Install Custom Software on Windows Azure?</title>
		<link>http://wely-lau.net/2011/10/10/can-we-install-custom-software-on-windows-azure/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=can-we-install-custom-software-on-windows-azure</link>
		<comments>http://wely-lau.net/2011/10/10/can-we-install-custom-software-on-windows-azure/#comments</comments>
		<pubDate>Mon, 10 Oct 2011 13:13:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Windows Azure Platform]]></category>
		<category><![CDATA[Install Software on Windows Azure]]></category>

		<guid isPermaLink="false">http://wely-lau.net/2011/10/10/can-we-install-custom-software-on-windows-azure/</guid>
		<description><![CDATA[Recently, a few people asked me similar questions: Can we install custom software on Windows Azure? In a nutshell, I will yes, it is possible! Next, the question: How to do it? How complex it is? Before answering those question, I’ll start this discussion with some basic concept first. Start with Basic Concept First Cloud [...]]]></description>
			<content:encoded><![CDATA[<p>Recently, a few people asked me similar questions:</p>
<blockquote><p>Can we install custom software on Windows Azure?</p></blockquote>
<p>In a nutshell, I will yes, it is possible! Next, the question:</p>
<blockquote><p>How to do it? How complex it is?</p></blockquote>
<p>Before answering those question, I’ll start this discussion with some basic concept first.</p>
<h1>Start with Basic Concept First</h1>
<h2>Cloud Design Philosophy: Scaling for capacity and redundancy</h2>
<p>Windows Azure is the cloud environment to enable customer to elastically scale in and out where necessary.</p>
<ul>
<li>Scale out means to increase # of VM so that can process / compute more (of course you may more).</li>
<li>Scale in means to decrease # of VM because we may not need too many VM (of course you pay less).</li>
</ul>
<p>This might lead to the rule-of-thumb:</p>
<p><strong>Stateless Internally, State-full with External Durable Storage</strong></p>
<h2>Local Storage Inside VM Instance</h2>
<p>When specify the VM Size of our Windows Azure service, the VM eventually will come with the Compute power and internal local storage. The internal local storage itself is actually the local virtual hard-disk which size varies from 20 GB (Extra Small) – 2 TB (Extra Large), mounted as Drive C:.</p>
<p>Please refer to my previous post of <a href="http://wely-lau.net/2011/09/12/a-deep-look-inside-windows-azure-virtual-machines-part-1/">A Deep Look Inside Windows Azure VM</a> for more detail.</p>
<h3>Caveats</h3>
<p>Although there’s some dedicated local hard-disk space inside each VM, there are some caveats:</p>
<h4>1. Not Persistence</h4>
<p>Local Storage is considered not-persistence. Meaning the data stored inside the local storage may be gone when scenario such as:</p>
<ul>
<li>That’s the node that deleted when we scale-in (# of instances is reduced)</li>
<li>Due to hardware failure, Windows Azure will spin up the VM on another node for us</li>
</ul>
<h4>2. Not Centralized</h4>
<p>If we store data inside the VM, the data could only be accessed by that VM instance, not the rest of the VM. This obviously doesn’t make sense when we have many VM instance running on.</p>
<h3>When it is useful?</h3>
<p>A few useful scenario of using Local Storage:</p>
<h4>1. Storage Temporary Data</h4>
<p>Local Storage is very useful when storing temporary data which doesn’t require any persistency guarantee.</p>
<h4>2. A cache copy of Windows Azure Drive</h4>
<p>Windows Azure Drive provides an optional local on-disk cache of the drive’s data. Employing the cache is useful to reduce the transaction cost of accessing the blob service.</p>
<h2>Scalable, Persistence Storage – SQL Azure / Windows Azure Storage</h2>
<p>We could achieve durability, scalability, and persistency when using <a href="http://www.microsoft.com/windowsazure/sqlazure/">SQL Azure</a> or <a href="http://www.microsoft.com/windowsazure/features/storage/">Windows Azure Storage</a>. By doing so, regardless how many VM instances we have, they are able to access the centralized storage appropriately.</p>
<p>Having understood the basic concept, here’re a few techniques that may help you install custom software on Windows Azure.</p>
<h1>Start-up Task</h1>
<p>Since SDK 1.3, Microsoft introduced a concept called Start-up Task. The idea of the start-up task is enable us to run a set of command script or PowerShell script before our instance starts. Typically, you can configuring anything with start-up task as long as it must <strong>be scripted</strong>.</p>
<p>Here’re some example of what can we do with start-up task:</p>
<ul>
<li>Downloading from a link</li>
<li>Install some custom software</li>
<li>Configuring environment variable</li>
<li>Configuring registry</li>
<li>etc.</li>
</ul>
<p>Although many tasks are achievable using start-up task. I will be focus on “Installing Software” in this case. In the example below, I use start-up task to download and install <a href="http://rarlab.com/">WinRar</a> on Windows Azure.</p>
<h2>How to?</h2>
<h3>1. Prepare your startup script.</h3>
<p>Here is the example of startup.cmd file:</p>
<blockquote><p>1: powershell -c &#8220;set-executionpolicy unrestricted&#8221;<br />
2: powershell -c &#8220;(new-object system.net.webclient).downloadfile(&#8221;<a href="http://mystorage.com/download/winrar-x64-40b7.exe''">http://mystorage.com/download/winrar-x64-40b7.exe&#8221;</a>, &#8221;winrar-x64-40b7.exe&#8221;)<br />
3: winrar-x64-40b7.exe /s</p></blockquote>
<ul>
<li>The first line is to set the execution policy of my Powershell script to unrestricted.</li>
<li>The second line is to download a file from the given URL to local storage.</li>
<li>The third line is to run the installer “winrar-x64-40b7.exe” using silent mode (/s). (Note that each installer may have different silent mode installation parameter). By doing so, there’s no prompt screen which require us to click next – next – finish anymore.</li>
</ul>
<p>I would recommend you to create the file using notepad or other ASCII editor, since textfile created by Visual Studio seems to have a byte order mark that will make it fail.</p>
<p>Please make sure that set “copy to output directory” to “copy always”, to ensure that the script will be included inside your package.</p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/10/startup.jpg"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="startup" src="http://cdn.wely-lau.net/wordpress/2011/10/startup_thumb.jpg" border="0" alt="startup" width="425" height="151" /></a></p>
<h3>2. Modify your ServiceDefinition.csdef file by adding Startup – Task section.</h3>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/10/service-def.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="service def" src="http://cdn.wely-lau.net/wordpress/2011/10/service-def_thumb.png" border="0" alt="service def" width="551" height="91" /></a></p>
<ul>
<li>The commandLine attribute requires the path of our startup script</li>
<li>The executionContent attribute requires us to choose either:
<ul>
<li>elevated (which will run as admin-role) or</li>
<li>limited (non admin-role)</li>
</ul>
</li>
<li>The taskType, with the following options
<ul>
<li>Simple [Default] – System waits for the task to exit before any other tasks are launched</li>
<li>Background – System does not wait for the task to exit</li>
<li>Foreground – Similar to background, except role is not restarted until all foreground tasks exit</li>
</ul>
</li>
</ul>
<p>Since the start-up task is scripted using elevated admin mode, it has enough right to write to local disk. Also, since the start-up task will be run every time the OS is provisioned, the state will be persistence at the time the installation is done.</p>
<p>I can tell that start-up task will be the preferable option (if possible).</p>
<h2>The Catch</h2>
<p>Any activity that could be scripted-out could run well using Start-up Task. But, what if not? Not all installer could be scripted out. Or some installer could be started up, but requires some manual step of UI-based configuration…</p>
<p>In this case, sadly to say that you can’t use Start-up Task <img class="wlEmoticon wlEmoticon-sadsmile" style="border-style: none;" src="http://cdn.wely-lau.net/wordpress/2011/10/wlEmoticon-sadsmile.png" alt="Sad smile" />.</p>
<h1>VM Role</h1>
<p>VM Role is exactly created for the issue that couldn’t be addressed by Start-up Task. However, the name of the VM-Role is sometime misleading. Many people would think they can easily bring their entire VM and let it runs on the cloud directly and store whatever they want inside the VHD.</p>
<p>Well, this is true and false.</p>
<p>True that you will need to install the OS (and your intended software) by your own, configure necessary task (that you can’t scripted out), and bring your OS to the cloud.</p>
<p>False that the VHD itself is still non-persistence. Which means you still need to store your persistence data on Windows Azure Storage or SQL Azure. Remember, VM Role is not IAAS (Infrastructure-as-a-service).</p>
<h2>VM Role LifeCycle</h2>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/10/vmrole.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="vmrole" src="http://cdn.wely-lau.net/wordpress/2011/10/vmrole_thumb.png" border="0" alt="vmrole" width="300" height="226" /></a></p>
<p>Here’s the lifecycle of the VM Role.</p>
<ul>
<li>Build VM Image
<ul>
<li>Convert product DVD to a VHD, or use existing VHD</li>
<li>Prepare the VHD</li>
</ul>
</li>
<li>Create Service
<ul>
<li>Create a service model with the above image.</li>
</ul>
</li>
<li>Upload Image
<ul>
<li>Store VHD in Windows Azure blob storage</li>
</ul>
</li>
<li>Deploy Service
<ul>
<li>Include in service model. Specify instance count.</li>
<li>Package as cspkg, upload cskpg.</li>
</ul>
</li>
<li>Maintain Service
<ul>
<li>Remote Desktop</li>
<li>Reboot / Reimage</li>
</ul>
</li>
<li>Upgrade Service
<ul>
<li>Repeat above steps, with a new OS image.</li>
</ul>
</li>
</ul>
<h2>The Catch</h2>
<p>1. With Web Role and Worker Role, Windows Azure will take care of the OS Update for you. Meaning that if there’s new patch of the OS, Windows Azure will automatically update our VM, which is the Guest OS. While with VM Role, you will have responsibility to manage by your own.</p>
<p>2. The supported OS of VM Role is only Windows Server 2008 R2. Other OS is definitely out of question.</p>
<p>2. At the time this article of written, VM Role is still at beta. Any thing may change when it is released. So, consider carefully if your company policy allows running beta / CTP software on the production.</p>
<h1>Remote Desktop to Perform Manual Installation</h1>
<p>This is actually not a good technique but I will include in this post as well since it maybe useful occasionally especially when doing testing or staging.</p>
<p>The idea of this technique is to <a href="http://wely-lau.net/tag/remote-desktop/">enable remote desktop on our Windows Azure service</a> and install the software using remote desktop.</p>
<p><img src="http://cdn.wely-lau.net/wordpress/2011/09/image_thumb_69ACB748_thumb.png" alt="image_thumb_69ACB748" /></p>
<h2>The Catch</h2>
<p>The big and fatal disadvantage of this technique: <span style="color: #ff0000;"><strong>there is no guarantee that the changes or the installation that we’ve done will be persistence</strong></span>. Because, we are installing or making change the stateless VHD inside the VM. (Refer to the basic concept we’ve discussed above).</p>
<h2>When it is helpful?</h2>
<p>Nonetheless, a few advantage of this technique are:</p>
<p>1. Easy-to-do and Simple</p>
<p>We don’t have to bother about scripting out start-up task nor uploading the entire big VHD. Just Remote Desktop in and performing your installation as per normal condition.</p>
<p>2. Purely for testing purpose that can tolerate the catch</p>
<p>There may be some scenario that we’re just purely doing some testing and we can tolerate if the changes gone. If you can accept the catch, of course it’s fine for you.</p>
<p>But of course, word of warning: <strong><span style="color: #ff0000;">do not use this technique in PRODUCTION</span></strong>.</p>
<h1>Conclusion</h1>
<p>To conclude, I began with explaining the Windows Azure scaling concept and available storage. Subsequently, I discuss about three techniques (Start-up Task, VM Role, and Remote Desktop) with the explanation of how to achieve that, the advantages and the catch.</p>
<p>Hopefully this post will be helpful to you.</p>
]]></content:encoded>
			<wfw:commentRss>http://wely-lau.net/2011/10/10/can-we-install-custom-software-on-windows-azure/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reviewing &#8220;Microsoft Windows Azure Development Cookbook&#8221; by Neil Mackenzie</title>
		<link>http://wely-lau.net/2011/10/03/reviewing-microsoft-windows-azure-development-cookbook-by-neil-mackenzie/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reviewing-microsoft-windows-azure-development-cookbook-by-neil-mackenzie</link>
		<comments>http://wely-lau.net/2011/10/03/reviewing-microsoft-windows-azure-development-cookbook-by-neil-mackenzie/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 11:28:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Book Review]]></category>

		<guid isPermaLink="false">http://wely-lau.net/2011/10/03/reviewing-microsoft-windows-azure-development-cookbook-by-neil-mackenzie/</guid>
		<description><![CDATA[Introduction A couple of weeks ago, I received an email from Packt Publishing to help on reviewing a book entitiled “Microsoft Windows Azure Development Cookbook” by one of Windows Azure MVP, Neil Mackenzie. Although never meets Neil face-to-face, I know that Neil is one of the very active contributor in MSDN Forum. Neil is also [...]]]></description>
			<content:encoded><![CDATA[<h1>Introduction</h1>
<p>A couple of weeks ago, I received an email from <a href="http://www.packtpub.com/">Packt Publishing</a> to help on reviewing a book entitiled “Microsoft Windows Azure Development Cookbook” by one of Windows Azure MVP, <a href="http://convective.wordpress.com/">Neil Mackenzie</a>. </p>
<p>Although never meets Neil face-to-face, I know that Neil is one of the very active contributor in <a href="http://social.msdn.microsoft.com/profile/neil%20mackenzie">MSDN Forum</a>. Neil is also a <a href="http://convective.wordpress.com/">great blogger</a> that could be able to share his knowledge comprehensively. </p>
<h1>Disclaimer</h1>
<p>This review is written upon request of the publisher without any incentive provided. It is purely based on <strong>my personal opinion</strong>: input, suggestion, and recommendation for positive / better improvement. <strong>Not meant</strong> to criticize, insult, or disrespect any relevant parties including the writer, publisher, editors, or anyone else. You may disagree with my opinions as there is no right or wrong in this case.</p>
<p>Relevant parties including writer, publisher, or editors may consider the following review as reference or suggestion. However, it is eventually up to them to decide how do they want to proceed in future edition.</p>
<h1>Review</h1>
<p>And here’re the review…</p>
<h2>What I like about this book</h2>
<h3>1. Clear explanation on each walkthrough</h3>
<p>Having done explaining the concept of each topic, the book includes the “how to do it” section which guide step-by-step how to achieve the goal and “how it works” which explain how it actually works under the hood.</p>
<p>I would believe reader with Visual Studio could easily follow the walkthrough. </p>
<h3>2. This book covers deep topics</h3>
<p>This book covers deep enough topics which may not easily found on other book or event web resources. They are such as:</p>
<ul>
<li>Managing Blob Access Policy with Shared Access Signature </li>
<li>Optimizing Blob Upload and Download </li>
<li>Performing Asynchronous and Parallel Queries </li>
<li>Choosing Partition Key and Row Key on Windows Azure Tables </li>
<li>Using Service Management API </li>
</ul>
<h3>3. Clear Warning and Tips-and-Tricks Provided</h3>
<p>Along the chapters, there’re some warning and tips-and-tricks to provide reader to digest the information better and in more detail. I would say this is very useful approach. </p>
<h2>How it could be improved</h2>
<h3>1. Start with Introduction</h3>
<p>This book straight away jump into the topic of “Controlling Access in the Windows Azure Platform” without any introduction.</p>
<p>I am aware that it is clearly written (on the preface) that this book is for experienced Windows Azure developer or architect. However, I would prefer to always start something with a clear introduction or big picture what’s the topic that we will be covering in the rest of the chapter. </p>
<p>This may includes things such as:</p>
<ul>
<li>Brief introduction about cloud computing </li>
<li>Brief history on Windows Azure (starting from old-days of Red Dog project) </li>
<li>Windows Azure Platform Building Blocks (each component of Windows Azure Platform including Windows Azure, SQL Azure, and Windows Azure AppFabric) </li>
</ul>
<h3>2. Provide Explanation with IMAGES</h3>
<p>I completely understand that in writing a book, images are supposed to be included only where necessary. Unlike hands-on-lab or training kit like <a href="http://msdn.microsoft.com/en-us/gg271268">Windows Azure Platform Training Kit</a>, where every steps are followed by very detail of screenshot. </p>
<p>However, I just find that this book really lack of images. The only image that I found in the book is at the cover <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://cdn.wely-lau.net/wordpress/2011/10/wlEmoticon-winkingsmile.png" />, please correct me if I am wrong.</p>
<p>I am not saying that it must include bunch of images on each topic or walkthrough-steps. But <strong>(Images + explanation)</strong> would be a great combination to enable people comprehend more easily on the subject. Something like this may probably bring more sense for the readers.</p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/10/building-block.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="building block" border="0" alt="building block" src="http://cdn.wely-lau.net/wordpress/2011/10/building-block_thumb.jpg" width="244" height="187" /></a></p>
<h3>3. Suggested Topics</h3>
<p>As stated clearly that this book is meant for experience developer or architect, I would suggest to also include topic such as:</p>
<ul>
<li>Inside Windows Azure:
<ul>
<li>covering the under-the-hood view of Windows Azure. </li>
<li>Mark Russinovich has done bunch of great talk at: <a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/COS301">TechEd</a>, <a href="http://channel9.msdn.com/Events/PDC/PDC10/CS08">PDC</a>, and <a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-853T">BUILD</a>. It may be used for references </li>
</ul>
</li>
<li>Windows Azure AppFabric Access Control Service (ACS)
<ul>
<li>I notice that Chapter 9 which covers about AppFabric did not explain ACS in detail. </li>
</ul>
</li>
<li>The future of Windows Azure, that covers upcoming / CTP / beta technologies:
<ul>
<li>SQL Azure Data Sync </li>
<li>SQL Azure Reporting </li>
<li>AppFabric Service Bus Messaging: Topics and Queues </li>
<li>Windows Azure Traffic Manager </li>
<li>etc. </li>
</ul>
</li>
</ul>
<p>&#160;</p>
<h2>Conclusion</h2>
<p>As conclusion, I would say that Neil has done a great job on this book. He’s indeed very knowledgeable on the subject. Thus, I would recommend you to check out the book <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://cdn.wely-lau.net/wordpress/2011/10/wlEmoticon-smile.png" />.</p>
<p><a href="http://www.packtpub.com/microsoft-windows-azure-development-cookbook/book"><font color="#000000"></font><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="Microsoft Windows Azure Development Cookbook" border="0" alt="Microsoft Windows Azure Development Cookbook" src="http://cdn.wely-lau.net/wordpress/2011/10/Microsoft-Windows-Azure-Development-Cookbook.jpg" width="129" height="156" /></a></p>
<p>Links: <a href="http://www.packtpub.com/microsoft-windows-azure-development-cookbook/book">http://www.packtpub.com/microsoft-windows-azure-development-cookbook/book</a></p>
<p>I hope this short review is useful for any relevant parties including writer, publisher, editors, or readers.</p>
]]></content:encoded>
			<wfw:commentRss>http://wely-lau.net/2011/10/03/reviewing-microsoft-windows-azure-development-cookbook-by-neil-mackenzie/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A Deep Look on Windows Azure Presentation on AzureUG.SG Sept 2011 Meeting</title>
		<link>http://wely-lau.net/2011/10/03/a-deep-look-on-windows-azure-presentation-on-azureug-sg-sept-2011-meeting/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-deep-look-on-windows-azure-presentation-on-azureug-sg-sept-2011-meeting</link>
		<comments>http://wely-lau.net/2011/10/03/a-deep-look-on-windows-azure-presentation-on-azureug-sg-sept-2011-meeting/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 10:12:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[AzureUG.SG]]></category>
		<category><![CDATA[Windows Azure Events]]></category>
		<category><![CDATA[Event]]></category>

		<guid isPermaLink="false">http://wely-lau.net/2011/10/03/a-deep-look-on-windows-azure-presentation-on-azureug-sg-sept-2011-meeting/</guid>
		<description><![CDATA[As invited over here, last Tuesday, I had a presentation entitled A Deep Look on Windows Azure and Its Virtual Machine. It was actually a user group meeting for Windows Azure User Group Singapore (AzureUG.SG). It was attended by about 15 enthusiast participants from different background. A lot of material in my presentation was derived [...]]]></description>
			<content:encoded><![CDATA[<p>As invited over <a href="http://www.facebook.com/event.php?eid=264929470208365">here</a>, last Tuesday, I had a presentation entitled A Deep Look on Windows Azure and Its Virtual Machine. It was actually a user group meeting for Windows Azure User Group Singapore (AzureUG.SG). </p>
<p>It was attended by about 15 enthusiast participants from different background. </p>
<p>A lot of material in my presentation was derived from Mark Russinovich’s session in <a href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/COS301">TechEd</a>, <a href="http://channel9.msdn.com/Events/PDC/PDC10/CS08">PDC</a>, and <a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-853T">BUILD</a>.</p>
<p>Detail of the presentation and slide could be found below.</p>
<div style="width: 425px" id="__ss_9519625"><strong style="margin: 12px 0px 4px; display: block"><a title="A Deep Look Inside Windows Azure and Its VM" href="http://www.slideshare.net/ylew15/a-deep-look-inside-windows-azure-and-its-vm" target="_blank">A Deep Look Inside Windows Azure and Its VM</a></strong> <iframe height="355" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/9519625" frameborder="0" width="425" marginwidth="0" scrolling="no"></iframe></div>
]]></content:encoded>
			<wfw:commentRss>http://wely-lau.net/2011/10/03/a-deep-look-on-windows-azure-presentation-on-azureug-sg-sept-2011-meeting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Blog is Now Running WordPress on Windows Azure</title>
		<link>http://wely-lau.net/2011/09/25/my-blog-is-now-running-wordpress-on-windows-azure/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=my-blog-is-now-running-wordpress-on-windows-azure</link>
		<comments>http://wely-lau.net/2011/09/25/my-blog-is-now-running-wordpress-on-windows-azure/#comments</comments>
		<pubDate>Sun, 25 Sep 2011 15:33:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Windows Azure Platform]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://wely-lau.net/2011/09/25/my-blog-is-now-running-wordpress-on-windows-azure/</guid>
		<description><![CDATA[I am glad to share that my new blog (http://wely-lau.net) is now running WordPress on Windows Azure Platform. Not only .NET can run on Windows Azure, it proves that but PHP can also run well on Windows Azure . Components Used Here’re Windows Azure components that I used in my blog: 1. Windows Azure WebRole [...]]]></description>
			<content:encoded><![CDATA[<p>I am glad to share that my new blog (<a href="http://wely-lau.net">http://wely-lau.net</a>) is now running WordPress on Windows Azure Platform. Not only .NET can run on Windows Azure, it proves that but PHP can also run well on Windows Azure <img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-winkingsmile" alt="Winking smile" src="http://cdn.wely-lau.net/wordpress/2011/09/wlEmoticon-winkingsmile.png" />.</p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/09/1.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="1" border="0" alt="1" src="http://cdn.wely-lau.net/wordpress/2011/09/1_thumb.jpg" width="531" height="283" /></a></p>
<h1>Components Used</h1>
<p>Here’re Windows Azure components that I used in my blog:</p>
<p><strong>1. Windows Azure WebRole</strong></p>
<p>Bunch of <a href="http://wordpress.visitmix.com/download">WordPress’s PHP file</a> are hosted on Windows Azure WebRole. Utilizing <a href="http://phpazure.codeplex.com/">PHP SDK for Windows Azure</a> is the trick that make it happens successfully.</p>
<p><strong>2. Windows Azure Worker Role</strong></p>
<p>As we know that, at this moment, SQL Azure does not provide any backup and restore mechanism for customer, I design my own backup and restore strategy. The idea is to spin up a Worker Role that is scheduled to perform daily backup from SQL Azure to Windows Azure Blob Storage.</p>
<p><strong>3. SQL Azure</strong> </p>
<p>I use <a href="http://www.microsoft.com/windowsazure/sqlazure/">SQL Azure</a> as the backend database to store bunch of WordPress data. This must thank to <a href="http://sqlsrvphp.codeplex.com/">SQL Server (Azure) Driver for PHP</a>!</p>
<p><strong>4. Windows Azure Storage</strong></p>
<p><a href="http://www.microsoft.com/windowsazure/features/storage/">Windows Azure Storage</a> is used for the following purpose:</p>
<ul>
<li>Contents (including images and files), </li>
<li>Logs (including traces logs and performance counter logs) </li>
<li>Database backup files (schema and data) </li>
</ul>
<p><strong>5. Content Delivery Network</strong></p>
<p>I am aware that lots of my blog post contain images. To ensure better performance accessing my blog, <a href="http://www.microsoft.com/windowsazure/features/cdn/">CDN</a> is enabled for Blob Storage to cache contents on edges server. </p>
<p><strong>6. Access Control Service</strong></p>
<p>Visitor are allowed register themselves to my WordPress blog. To tackle the issue of “island-of-identity”, <a href="http://wordpress.org/extend/plugins/acs-plugin-for-wordpress/">ACS Plugin for WordPress</a> is used, so that you can use either your Live ID, Yahoo ID, Google ID, or Facebook Account to create a user on my blog. </p>
<p><a href="http://cdn.wely-lau.net/wordpress/2011/09/image.png"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="image" border="0" alt="image" src="http://cdn.wely-lau.net/wordpress/2011/09/image_thumb.png" width="183" height="244" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://wely-lau.net/2011/09/25/my-blog-is-now-running-wordpress-on-windows-azure/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

