<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Bruno Terkaly - Developer Evangelist - bterkaly@microsoft.com</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/brunoterkaly/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/feed.xml</link>
    <description>Making Microsoft developer efforts more effective.</description>
    <lastBuildDate>Wed, 24 Feb 2016 11:53:10 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Programming Azure Blobs with Java</title>
      <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/programming-azure-blobs-with-java</link>
      <pubDate>Mon, 28 Dec 2015 16:33:13 GMT</pubDate>
      <dc:creator><![CDATA[BrunoTerkaly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/brunoterkaly/2015/12/28/programming-azure-blobs-with-java/</guid>
      <description><![CDATA[I'm producing a series of blog post that highlights the work I've done with an O'Reilly media video...]]></description>
      <content:encoded><![CDATA[<p>I'm producing a series of blog post that highlights the work I've done with an O'Reilly media video course. I will produce several posts a week to support this course, as seen below.</p>  <p><a href="https://bit.ly/bruno-does-linux-data-java">https://bit.ly/bruno-does-linux-data-java</a></p>  <p><a href="https://bit.ly/bruno-does-linux-data-java"><img title="smallslide0" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0726.smallslide0_b9eb25d6-0d9e-48e5-ac38-da67112d2182.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0726.smallslide0_5F00_b9eb25d6_2D00_0d9e_2D00_48e5_2D00_ac38_2D00_da67112d2182.png" width="750" height="202" /></a></p>  <p>The course is targeted towards developers who want to write Java applications on Linux and host those application in Azure.</p>  <p>These applications talk to today's top data stores, including:</p>  <ul>   <li>Azure Tables </li>    <li>Azure Blobs </li>    <li>Azure Queues </li>    <li>SQL Server </li>    <li>SQL Database </li>    <li>MySQL </li>    <li>PostGres </li>    <li>DocumentDB </li>    <li>MongoDB </li>    <li>Cassandra </li>    <li>Redis </li> </ul>  <hr />  <h4 style="height: 8px; color: darkblue">Using Java to connect to Azure Blobs</h4>  <ul>   <li>Reading and writing blobs is easy with the Azure SDK </li>    <li>You will need to:      <ul>       <li>Provision a storage account </li>        <li>Reference a container </li>        <li>Write code for the blob operations (upload, delete, download, etc) </li>     </ul>   </li> </ul>  <p><a href="./images/slide001.jpg" target="_blank"><img title="smallslide001" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3426.smallslide001_f0a9b75f-2f68-466b-95a6-c74738068354.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3426.smallslide001_5F00_f0a9b75f_2D00_2f68_2D00_466b_2D00_95a6_2D00_c74738068354.jpg" width="750" height="413" /></a></p>  <p><em>Slide 1 - Overview</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">You can find the Java Storage SDK</h4>  <ul>   <li>You can compile your own jar from the latest sources </li> </ul>  <p><a href="./images/slide002.jpg" target="_blank"><img title="smallslide002" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3617.smallslide002_d901dc8d-ab56-4cd1-b049-825b0463c113.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3617.smallslide002_5F00_d901dc8d_2D00_ab56_2D00_4cd1_2D00_b049_2D00_825b0463c113.jpg" width="750" height="413" /></a></p>  <p><em>Slide 2 - Finding the SDK</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">The Github Repo with the Java SDK</h4>  <ul>   <li>Source code is available </li>    <li>We will compile our own Jar file </li> </ul>  <p><a href="./images/slide003.jpg" target="_blank"><img title="smallslide003" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide003" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6320.smallslide003_44018062-c5a7-40e8-ae69-2a9edbc57704.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6320.smallslide003_5F00_44018062_2D00_c5a7_2D00_40e8_2D00_ae69_2D00_2a9edbc57704.jpg" width="750" height="413" /></a></p>  <p><em>Slide 3 - Github</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">Git Clone</h4>  <ul>   <li>Downloading the Azure Java Storage SDK </li> </ul>  <p><a href="./images/slide004.jpg" target="_blank"><img title="smallslide004" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3022.smallslide004_93578034-5fcd-4aea-80cf-4e70f3d83e0e.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3022.smallslide004_5F00_93578034_2D00_5fcd_2D00_4aea_2D00_80cf_2D00_4e70f3d83e0e.jpg" width="750" height="413" /></a></p>  <p><em>Slide 4 - Downloading the SDK to local dev computer</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">Maven Compile</h4>  <ul>   <li>You will need to install and run Maven </li>    <li>Explained in course at top of this post </li> </ul>  <p><a href="./images/slide014.jpg" target="_blank"><img title="smallslide014" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide014" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4863.smallslide014_982199a4-d83f-4c01-bc07-a1d2425fc2dc.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4863.smallslide014_5F00_982199a4_2D00_d83f_2D00_4c01_2D00_bc07_2D00_a1d2425fc2dc.jpg" width="750" height="421" /></a></p>  <p><em>Slide 5 - Compiling the .java to .class</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">Using the jar utility to create a JAR file</h4>  <ul>   <li>Creating a jar file from all the class files </li>    <li>Review      <ul>       <li>Download sources </li>        <li>Compile sources </li>        <li>Create jar file </li>        <li>Add jar file to Eclipse project (future module) </li>     </ul>   </li> </ul>  <p><a href="./images/slide005.jpg" target="_blank"><img title="smallslide005" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide005" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3125.smallslide005_7a5b7d14-6128-4e96-8b8b-31608ee3e5ac.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3125.smallslide005_5F00_7a5b7d14_2D00_6128_2D00_4e96_2D00_8b8b_2D00_31608ee3e5ac.jpg" width="750" height="421" /></a></p>  <p><em>Slide 6 - Creating jar file</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">Viewing Jar file</h4>  <ul>   <li>You can now see the jar file created </li>    <li>You may want to copy it to an easier location      <ul>       <li>Like c:\azure-storage-java </li>     </ul>   </li> </ul>  <p><a href="./images/slide007.jpg" target="_blank"><img title="smallslide007" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide007" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7077.smallslide007_906a3aef-e9c7-4436-a52c-c0ad3f283b3f.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7077.smallslide007_5F00_906a3aef_2D00_e9c7_2D00_4436_2D00_a52c_2D00_c0ad3f283b3f.jpg" width="750" height="421" /></a></p>  <p><em>Slide 7 - Viewing the jar file</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">Moved jar file to new location</h4>  <ul>   <li>Don't want it too deeply buried </li> </ul>  <p><a href="./images/slide008.jpg" target="_blank"><img title="smallslide008" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4150.smallslide008_fc41e31d-ac52-4eda-a172-93c85a28ba2d.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4150.smallslide008_5F00_fc41e31d_2D00_ac52_2D00_4eda_2D00_a172_2D00_93c85a28ba2d.jpg" width="750" height="421" /></a></p>  <p><em>Slide 8 - New jar file location</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">Creating a new Java project in Eclipse</h4>  <ul>   <li>Obviously, I assume you've installed Eclipse </li>    <li>Issue a File/New/Java Project </li> </ul>  <p><a href="./images/slide009.jpg" target="_blank"><img title="smallslide009" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide009" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3250.smallslide009_369e0fc1-83ac-4199-8e29-0a0d030da1d6.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3250.smallslide009_5F00_369e0fc1_2D00_83ac_2D00_4199_2D00_8e29_2D00_0a0d030da1d6.jpg" width="750" height="421" /></a></p>  <p><em>Slide 9 - Installing Eclipse</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">Filling out the connection string</h4>  <ul>   <li>We have added BlobManager.java </li>    <li>You need to go to the portal to fill out the rest </li>    <li>Notice the import statements for the Azure Java Storage SDK </li> </ul>  <p><a href="./images/slide010.jpg" target="_blank"><img title="smallslide010" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide010" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3581.smallslide010_4459c812-ef0c-4642-942a-083df2164a8b.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3581.smallslide010_5F00_4459c812_2D00_ef0c_2D00_4642_2D00_942a_2D00_083df2164a8b.jpg" width="750" height="421" /></a></p>  <p><em>Slide 10 - Adding BlobManager.java</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">The Azure Portal</h4>  <ul>   <li>Notice we have:      <ul>       <li>Storage Account Name </li>        <li>Primary Key </li>     </ul>   </li>    <li>We will need to paste this into our code </li> </ul>  <p><a href="./images/slide011.jpg" target="_blank"><img title="smallslide011" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide011" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5822.smallslide011_13ed9cd8-aa56-47e3-b611-ecae6cab2576.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5822.smallslide011_5F00_13ed9cd8_2D00_aa56_2D00_47e3_2D00_b611_2D00_ecae6cab2576.jpg" width="750" height="421" /></a></p>  <p><em>Slide 11 - Azure Portal</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">Storage Connection String</h4>  <ul>   <li>Notice on line 11 and 12 we have storage account name and primary account key pasted </li>    <li>Next we will go to try {} block on line 16 </li> </ul>  <p><a href="./images/slide012.jpg" target="_blank"><img title="smallslide012" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide012" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6874.smallslide012_42ca9572-2ac5-4030-9f04-842569325262.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6874.smallslide012_5F00_42ca9572_2D00_2ac5_2D00_4030_2D00_9f04_2D00_842569325262.jpg" width="750" height="421" /></a></p>  <p><em>Slide 12 - Finished connection string</em></p>  <hr />  <h4 style="height: 8px; color: darkblue">Connecting to storage account</h4>  <ul>   <li>Using CloudStorageAccount and CloudBlobClient objects </li>    <li>Lines 16 and 17 </li> </ul>  <p><a href="./images/slide013.jpg" target="_blank"><img title="smallslide013" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide013" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2781.smallslide013_826dc28e-545b-4d5d-bad3-f540ee2d958b.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2781.smallslide013_5F00_826dc28e_2D00_545b_2D00_4d5d_2D00_bad3_2D00_f540ee2d958b.jpg" width="750" height="421" /></a></p>  <p><em>Slide 13 - Code to connect</em></p>  <h4 style="height: 8px; color: darkblue">Make sure you have the azurestorage.jar properly referenced</h4>  <ul>   <li>It is part of project properties </li>    <li>After adding the azurestorage.jar file to project you need to make sure it is part of the Java Build Path. </li> </ul>  <p><a href="./images/slide015.jpg" target="_blank"><img title="smallslide015" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide015" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3146.smallslide015_503d1d98-1296-45a2-a370-7ef913b4be66.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3146.smallslide015_5F00_503d1d98_2D00_1296_2D00_45a2_2D00_a370_2D00_7ef913b4be66.jpg" width="750" height="522" /></a></p>  <p><em>Slide 14 - Java build Path</em></p>]]></content:encoded>
    </item>
    <item>
      <title>Understanding Azure Provisioning</title>
      <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/understanding-azure-provisioning</link>
      <pubDate>Fri, 18 Dec 2015 13:10:48 GMT</pubDate>
      <dc:creator><![CDATA[BrunoTerkaly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/brunoterkaly/2015/12/18/understanding-azure-provisioning/</guid>
      <description><![CDATA[I'm producing a series of blog post that highlights the work I've done with an O'Reilly media video...]]></description>
      <content:encoded><![CDATA[<p>I'm producing a series of blog post that highlights the work I've done with an O'Reilly media video course. I will produce several posts a week to support this course, as seen below.</p>  <p><a href="https://bit.ly/bruno-does-linux-data-java">https://bit.ly/bruno-does-linux-data-java</a></p>  <p><a href="https://bit.ly/bruno-does-linux-data-java"><img title="slide0" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="slide0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6825.slide0_9f9e9cf2-6d6e-4969-b0d0-a4d36de1622e.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6825.slide0_5F00_9f9e9cf2_2D00_6d6e_2D00_4969_2D00_b0d0_2D00_a4d36de1622e.png" width="1036" height="280" /></a></p>  <p>The course is targeted towards developers who want to write Java applications on Linux and host those application in Azure.</p>  <p>These applications talk to today's top data stores, including:</p>  <ul>   <li>Azure Tables </li>    <li>Azure Blobs </li>    <li>Azure Queues </li>    <li>SQL Server </li>    <li>SQL Database </li>    <li>MySQL </li>    <li>PostGres </li>    <li>DocumentDB </li>    <li>MongoDB </li>    <li>Cassandra </li>    <li>Redis </li> </ul>  <h4 style="height: 8px; color: darkblue">How you can provision compute, networking, and storage in Azure</h4>  <ul>   <li>The preferred way is through ARM - the declarative way      <ul>       <li>JSON-based text files let's you provision infrastructure </li>     </ul>   </li>    <li>The imperative way is through scripting - doesn't scale as well      <ul>       <li>Some customers take the approach to generate an ARM template with code as an effort to abstract away the complexities of the ARM templates </li>     </ul>   </li> </ul>  <p><a href="./images/smallslide001.jpg" target="_blank"><img title="smallslide001" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7418.smallslide001_e076123e-88e3-4d4a-92be-d1ce45918ce0.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7418.smallslide001_5F00_e076123e_2D00_88e3_2D00_4d4a_2D00_92be_2D00_d1ce45918ce0.jpg" width="750" height="421" /></a></p>  <p><em>Slide 1 of 11 - Provisioning infrastructure</em></p>  <h4 style="height: 8px; color: darkblue">Compute, networking, and storage are bundled up into a resource group</h4>  <ul>   <li>Typically, resource groups contain resources related to a specific application      <ul>       <li>For example, you might bundle a SQL Server database, a web application, and the storage account in one resource group </li>     </ul>   </li>    <li>If you delete a resource group, you delete all the resources in that resource group </li>    <li>Resource groups encapsulate the lifecycle of the resources inside of it </li>    <li>When you provision resources with the Azure resource manager,, you always provision in the context of specific resource group      <ul>       <li>Resources can be linked across resource groups </li>     </ul>   </li> </ul>  <p><a href="./images/smallslide002.jpg" target="_blank"><img title="smallslide002" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7002.smallslide002_6062af72-124a-4099-a6e4-0bccfc0d5a80.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7002.smallslide002_5F00_6062af72_2D00_124a_2D00_4099_2D00_a6e4_2D00_0bccfc0d5a80.jpg" width="750" height="421" /></a></p>  <p><em>2lide 2 of 11 - Resource groups are containers</em></p>  <h4 style="height: 8px; color: darkblue">The Azure portal is also organized through resource groups</h4>  <ul>   <li>The image to the right shows the &quot;javavm&quot; resource group </li>    <li>You can see that it has a virtual machine, a network card, and a public IP address </li> </ul>  <p><a href="./images/smallslide003.jpg" target="_blank"><img title="smallslide003" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide003" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8585.smallslide003_a6d6d120-67e3-4e57-b084-6ceca906d616.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8585.smallslide003_5F00_a6d6d120_2D00_67e3_2D00_4e57_2D00_b084_2D00_6ceca906d616.jpg" width="750" height="421" /></a></p>  <p><em>Slide 2 of 11 - Resource groups are part of the Azure portal</em></p>  <h4 style="height: 8px; color: darkblue">Connecting to a VM</h4>  <ul>   <li>Regardless of whether you have a Linux or Windows virtual machine, you can remote into it </li>    <li>Putty is one of the approaches you can take with Windows to SSH into a Linux virtual machine </li>    <li>Simply provide the IP address ( public IP address ) of your virtual machines remote into      <ul>       <li>The default is port 22 for SSH, but that can be modified </li>        <li>You can use network security groups to open and close specific ports in a virtual machine </li>     </ul>   </li> </ul>  <p><a href="./images/smallslide004.jpg" target="_blank"><img title="smallslide004" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8883.smallslide004_b4c288a9-774b-480b-ba68-1ece1b041ac1.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8883.smallslide004_5F00_b4c288a9_2D00_774b_2D00_480b_2D00_ba68_2D00_1ece1b041ac1.jpg" width="750" height="421" /></a></p>  <p><em>Slide 3 of 11 - several options connecting to virtual machines (Linux or Windows)</em></p>  <h4 style="height: 8px; color: darkblue">Mac or Windows Support</h4>  <ul>   <li>Mac OS comes in with the built-in ability for SSH </li>    <li>For Windows you can download Putty </li> </ul>  <p><a href="./images/smallslide005.jpg" target="_blank"><img title="smallslide005" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide005" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7838.smallslide005_a20baace-c674-4917-a0a0-508bd098bd65.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7838.smallslide005_5F00_a20baace_2D00_c674_2D00_4917_2D00_a0a0_2D00_508bd098bd65.jpg" width="750" height="421" /></a></p>  <p><em>Slide 4 of 11 - Mac or Windows support</em></p>  <h4 style="height: 8px; color: darkblue">Code or JSON</h4>  <ul>   <li>As explained previously, you can either use code or the declarative syntax using JSON with the Azure resource manager templates      <ul>       <li>The three main sections for templates are:          <ul>           <li>parameters </li>            <li>variables </li>            <li>resources </li>         </ul>       </li>     </ul>   </li> </ul>  <p><a href="./images/smallslide006.jpg" target="_blank"><img title="smallslide006" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3632.smallslide006_22d42ee6-974f-4a9d-b751-855f50c40036.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3632.smallslide006_5F00_22d42ee6_2D00_974f_2D00_4a9d_2D00_b751_2D00_855f50c40036.jpg" width="750" height="421" /></a></p>  <p><em>Slide 5 of 11 - The declarative JSON approach is preferred</em></p>  <h4 style="height: 8px; color: darkblue">Better to define the end results, then all the steps</h4>  <ul>   <li>The Azure resource manager lets you define the end state     <br />      <ul>       <li>It's a way of expressing to Azure what you want the final outcome to look like </li>     </ul>   </li> </ul>  <p><a href="./images/smallslide007.jpg" target="_blank"><img title="smallslide007" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide007" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2677.smallslide007_300ee848-9f13-48c3-a64a-6c6a201009c7.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2677.smallslide007_5F00_300ee848_2D00_9f13_2D00_48c3_2D00_a64a_2D00_6c6a201009c7.jpg" width="750" height="421" /></a></p>  <p><em>Slide 6 of 11 - Defining the end state</em></p>  <h4 style="height: 8px; color: darkblue">Your deployment consists of two files: parameters file in the template file</h4>  <ul>   <li>This is demonstrated in detail in the video here: <a href="https://bit.ly/bruno-does-linux-data-java">https://bit.ly/bruno-does-linux-data-java</a> </li> </ul>  <p><a href="./images/smallslide008.jpg" target="_blank"><img title="smallslide008" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4336.smallslide008_0e86b7bd-25d3-4e4f-8134-736f280a5fe1.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4336.smallslide008_5F00_0e86b7bd_2D00_25d3_2D00_4e4f_2D00_8134_2D00_736f280a5fe1.jpg" width="750" height="421" /></a></p>  <p><em>Slide 7 of 11 - It's about the parameters file in the template file</em></p>  <h3 style="height: 8px; color: darkblue">The goals of the Azure resource manager</h3>  <ul>   <li>You can read more here:      <ul>       <li><a href="https://azure.microsoft.com/en-us/documentation/articles/resource-group-overview/">https://azure.microsoft.com/en-us/documentation/articles/resource-group-overview/</a> </li>        <li><a href="https://msdn.microsoft.com/en-us/library/azure/dn790568.aspx">https://msdn.microsoft.com/en-us/library/azure/dn790568.aspx</a> </li>        <li><a href="https://azure.microsoft.com/en-us/documentation/articles/powershell-azure-resource-manager/">https://azure.microsoft.com/en-us/documentation/articles/powershell-azure-resource-manager/</a> </li>        <li><a href="https://azure.microsoft.com/en-us/documentation/articles/resource-group-authoring-templates/">https://azure.microsoft.com/en-us/documentation/articles/resource-group-authoring-templates/</a> </li>        <li><a href="https://github.com/Azure/azure-quickstart-templates">https://github.com/Azure/azure-quickstart-templates</a> will </li>     </ul>   </li> </ul>  <p><a href="./images/smallslide010.jpg" target="_blank"><img title="smallslide010" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide010" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1425.smallslide010_569efcc4-ee52-453d-be01-a9cc1e73ccb5.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1425.smallslide010_5F00_569efcc4_2D00_ee52_2D00_453d_2D00_be01_2D00_a9cc1e73ccb5.jpg" width="750" height="421" /></a></p>  <p><em>Slide 8 of 11 - Some simple goals</em></p>  <h4 style="height: 8px; color: darkblue">Infrastructure lives in resource groups and resource groups get deployed to a data center</h4>  <ul>   <li>Resource groups do not span data centers </li> </ul>  <p><a href="./images/smallslide011.jpg" target="_blank"><img title="smallslide011" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide011" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7776.smallslide011_b6d53c71-4d0f-4040-aae5-248916ac1595.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7776.smallslide011_5F00_b6d53c71_2D00_4d0f_2D00_4040_2D00_aae5_2D00_248916ac1595.jpg" width="750" height="421" /></a></p>  <p><em>Slide 9 of 11 - Deployments end up in a data center</em></p>  <h4 style="height: 8px; color: darkblue">Azure XPlat CLI</h4>  <ul>   <li>Notice the <em>azure group create command</em> </li>    <li>You specify the resource group, the region, the deployment name </li>    <li>More importantly, you pass in the deployment file in the parameters file </li> </ul>  <p><a href="./images/smallslide013.jpg" target="_blank"><img title="smallslide013" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide013" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6305.smallslide013_3ec61310-0c78-4948-a961-fb0820bc255c.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6305.smallslide013_5F00_3ec61310_2D00_0c78_2D00_4948_2D00_a961_2D00_fb0820bc255c.jpg" width="750" height="421" /></a></p>  <p><em>Slide 10 of 11 - Azure XPlat CLI</em></p>  <h4 style="height: 8px; color: darkblue">Your deployment ends up in the data center</h4>  <ul>   <li>There are many global data centers to choose from </li>    <li>This list is constantly growing and may already be out of date </li>    <li>You can get an updated list here, <a href="https://azure.microsoft.com/en-us/regions/">https://azure.microsoft.com/en-us/regions/</a> </li> </ul>  <p><a href="./images/smallslide014.jpg" target="_blank"><img title="smallslide014" style="max-width: 100%; border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; margin: 0px; display: inline; padding-right: 0px" border="0" alt="smallslide014" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0550.smallslide014_207d47af-8274-4996-9f13-7b53c73b0739.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0550.smallslide014_5F00_207d47af_2D00_8274_2D00_4996_2D00_9f13_2D00_7b53c73b0739.jpg" width="750" height="421" /></a></p>  <p><em>Slide 11 of 11 - Choosing from one of many global data centers</em></p>]]></content:encoded>
    </item>
    <item>
      <title>An Azure Overview and Perspective</title>
      <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/an-azure-overview-and-perspective</link>
      <pubDate>Thu, 17 Dec 2015 11:40:25 GMT</pubDate>
      <dc:creator><![CDATA[BrunoTerkaly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/brunoterkaly/2015/12/17/an-azure-overview-and-perspective/</guid>
      <description><![CDATA[I'm producing a series of blog post that highlights the work I've done with an O'Reilly media video...]]></description>
      <content:encoded><![CDATA[<p>I'm producing a series of blog post that highlights the work I've done with an O'Reilly media video course. I will produce several posts a week to support this course, as seen below.</p>  <p><a href="https://bit.ly/bruno-does-linux-data-java">https://bit.ly/bruno-does-linux-data-java</a></p>  <p><a href="https://bit.ly/bruno-does-linux-data-java"><img title="smallslide0" style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="smallslide0" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7382.smallslide0_6ff3fd94-37eb-449d-8d3f-7f1195e28cf9.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7382.smallslide0_5F00_6ff3fd94_2D00_37eb_2D00_449d_2D00_8d3f_2D00_7f1195e28cf9.png" width="750" height="202" /></a></p>  <p>The course is targeted towards developers who want to write Java applications on Linux and host those application in Azure.</p>  <p>These applications talk to today's top data stores, including:</p>  <ul>   <li>Azure Tables </li>    <li>Azure Blobs </li>    <li>Azure Queues </li>    <li>SQL Server </li>    <li>SQL Database </li>    <li>MySQL </li>    <li>PostGres </li>    <li>DocumentDB </li>    <li>MongoDB </li>    <li>Cassandra </li>    <li>Redis </li> </ul>  <h4 style="color: darkblue">High Level Overview</h4>  <ul>   <li>Here is the Azure big picture type of slides. Don't worry, I'm going to get to real low-level coding details as these posts progress. </li> </ul>  <p><a href="./images/smallslide2.jpg" target="_blank"><img title="smallslide2" style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="smallslide2" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7220.smallslide2_47caacbb-c500-49d7-8012-cf90c60e085e.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7220.smallslide2_5F00_47caacbb_2D00_c500_2D00_49d7_2D00_8012_2D00_cf90c60e085e.jpg" width="750" height="421" /></a></p>  <p><em>Slide 1 of 7 - Azure is Microsoft's public cloud</em></p>  <h4 style="color: darkblue">The magnitude of the platform</h4>  <ul>   <li>I don't expect you to read the fine print here </li>    <li>Although you can see the three pillars here      <ul>       <li>virtual machines </li>        <li>cloud services </li>        <li>application services </li>     </ul>   </li>    <li>The bottom half of the image shows a tremendous depth of services and capabilities </li> </ul>  <p><a href="./images/smallslide3.jpg" target="_blank"><img title="smallslide3" style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="smallslide3" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2133.smallslide3_556e68ba-fd0e-442d-abaf-af49d85369ce.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2133.smallslide3_5F00_556e68ba_2D00_fd0e_2D00_442d_2D00_abaf_2D00_af49d85369ce.jpg" width="750" height="421" /></a></p>  <p><em>Slide 2 of 7 - A broad and powerful cloud platform</em></p>  <h4 style="color: darkblue">Azure has more data centers than Google and AWS combined</h4>  <ul>   <li>This is important for compliance reasons </li>    <li>Different countries have different laws </li>    <li>Having a data center in different countries allows Microsoft to conform to those country's laws </li>    <li>Some of the VM's are extremely powerful      <ul>       <li>32 cores with half a terabyte of ram combine with SSD storage </li>     </ul>   </li> </ul>  <p><a href="./images/smallslide4.jpg" target="_blank"><img title="smallslide4" style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="smallslide4" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2072.smallslide4_b4ba5078-489a-434f-905d-6871d2f1947c.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2072.smallslide4_5F00_b4ba5078_2D00_489a_2D00_434f_2D00_905d_2D00_6871d2f1947c.jpg" width="750" height="421" /></a></p>  <p><em>Slide 3 of 7 - A massive global footprint</em></p>  <h4 style="color: darkblue">You can think of Azure as having three core pillars</h4>  <ul>   <li>Compute, storage, networking is the starting point for any cloud platform </li>    <li>Ultimately, platform as a service will rule the world, as I've commented in previous posts </li>    <li>Many view platform as a service as vendor lock-in, not to mention developers like being able to control individual virtual machines </li>    <li>But managing a large distributed computing platform is difficult and error prone </li> </ul>  <p><a href="./images/smallslide5.jpg" target="_blank"><img title="smallslide5" style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="smallslide5" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7737.smallslide5_3e8f88fc-a428-43ed-978f-c4aa4a808163.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7737.smallslide5_5F00_3e8f88fc_2D00_a428_2D00_43ed_2D00_978f_2D00_c4aa4a808163.jpg" width="750" height="421" /></a></p>  <p><em>Slide 4 of 7 - A range of capabilities</em></p>  <h4 style="color: darkblue">Many companies choose to build their own platform as a service using core infrastructure</h4>  <ul>   <li>This gives them the ability to avoid vendor lock-in because they are abstracting away the provisioning, scaling, health monitoring, networking, orchestration, scheduling and more </li>    <li>The O'Reilly course that I have created speaks to the storage capabilities of Azure      <ul>       <li>The link for this course is a top of this post and dives deep into Java, Linux using 11 different storage mechanisms, including relational and NoSQL </li>     </ul>   </li> </ul>  <p><a href="./images/smallslide6.jpg" target="_blank"><img title="smallslide6" style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="smallslide6" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2553.smallslide6_d37af77a-9d54-4fec-b537-123c8abac025.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2553.smallslide6_5F00_d37af77a_2D00_9d54_2D00_4fec_2D00_b537_2D00_123c8abac025.jpg" width="750" height="421" /></a></p>  <p><em>Slide 5 of 7 - Avoiding the vendor lock-in</em></p>  <h4 style="color: darkblue">Cloud services allow you to focus on your application and the data, not the underlying infrastructure</h4>  <ul>   <li>The value proposition of cloud services is that you abstract away the details of running individual virtual machines </li>    <li>instead, you can think of your compute needs as being a collection of resources is managed by a cloud-based operating system </li> </ul>  <p><a href="./images/smallslide7.jpg" target="_blank"><img title="smallslide7" style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="smallslide7" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2068.smallslide7_038718c6-75e6-4bc9-8b85-8b01f34ab5c1.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2068.smallslide7_5F00_038718c6_2D00_75e6_2D00_4bc9_2D00_8b85_2D00_8b01f34ab5c1.jpg" width="750" height="421" /></a></p>  <p><em>Slide 6 of 7 - Focusing on your application, not infrastructure</em></p>  <h4 style="color: darkblue">Application services are optimized to support web and mobile workloads</h4>  <ul>   <li>Many of integration points between software as a service applications are built in </li>    <li>The obvious goal here is to free developers from the low-level details of supporting mobile and web applications </li> </ul>  <p><a href="./images/smallslide8.jpg" target="_blank"><img title="smallslide8" style="border-left-width: 0px; max-width: 100%; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="smallslide8" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5164.smallslide8_ef2f7ef0-1439-4087-ac0e-af208e5f4118.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5164.smallslide8_5F00_ef2f7ef0_2D00_1439_2D00_4087_2D00_ac0e_2D00_af208e5f4118.jpg" width="750" height="421" /></a></p>  <p><em>Slide 7 of 7 - Easily support mobile and web apps</em></p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft Azure Data Storage for Developers using Linux and Java</title>
      <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/microsoft-azure-data-storage-for-developers-using-linux-and-java</link>
      <pubDate>Wed, 16 Dec 2015 18:12:35 GMT</pubDate>
      <dc:creator><![CDATA[BrunoTerkaly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/brunoterkaly/2015/12/16/microsoft-azure-data-storage-for-developers-using-linux-and-java/</guid>
      <description><![CDATA[O'Reilly Course Released  Hello Friends,  I have released a full-blown video course on O'Reilly....]]></description>
      <content:encoded><![CDATA[<h2 style="color: darkblue">O'Reilly Course Released</h2>  <p>Hello Friends,</p>  <p>I have released a full-blown video course on O'Reilly.</p>  <h3 style="color: darkblue">Intended target audience and skill level for a customer</h3>  <ul>   <li>I would like to think that because of the approach I'm taking that this course is relevant for all skill levels. </li>    <li>If you are a beginner, I type everything in from scratch and assume very little. </li>    <li>I suppose the prerequisites for a beginner are that you know a little bit about Java programming. </li>    <li>I also think there's something in here for intermediate to advanced developers who may be familiar with Linux and Java, as well as some of the data stores, but want to put all these three ingredients together as one knowledge base. </li> </ul>  <h3 style="color: darkblue">Why you might care to take it</h3>  <ul>   <li>The ability to interact with popular data stores is the cornerstone of the modern developer. </li>    <li>Whether you are going down the path of big data, working in enterprise as a line of business developer, working at a startup to build out your next idea, this course will be highly relevant. </li>    <li>An important part of the course is gaining not just an understanding of a particular data store, but how to actually install it and program against it in concrete terms. </li>    <li>In essence, this course provides you a soup to nuts exposure to the spectrum of knowledge you need to start interacting with today's most popular data stores. </li>    <li>The course covers all the coure pillars, from Azure-specific data stores (tables, blobs, queues), relational data stores, and NoSQL stores. </li> </ul>  <h3 style="color: darkblue">Important points covered in the course</h3>  <ul>   <li>Coverage of all the important data stores in the context of one of the largest public cloud offerings.      <ul>       <li>The course will enable you to understand the strengths and weaknesses of a specific data store. </li>        <li>It will also show you how to provision and install a specific data store. </li>        <li>And ultimately, it will show you how to write Java code to read and write from and to that data store. </li>        <li>There are three main categories of data stores that this course dives deeply into. </li>        <li>The first is cloud specific data stores meant for massive scale, which includes Azure's tables, blobs, and queues. </li>        <li>The course also covers relational data stores, including MySQL, SQL Server, SQL Database, and PostGres. The course covers NoSQL stores, including DocumentDB, MongoDB, Redis, Cassandra, Azure Blobs, Azure Queues, Azure Tables, Redis. </li>     </ul>   </li> </ul>  <h3 style="color: darkblue">Microsoft Azure Data Storage for Developers</h3>  <h4 style="color: darkblue">Cloud-Based Provisioning, Storage, and Data Retrieval with Java and Linux</h4>  <p><a href="https://bit.ly/bruno-does-linux-data-java">https://bit.ly/bruno-does-linux-data-java</a></p>  <p>In this Microsoft Azure Data Storage for Developers training course, expert author Bruno Terkaly covers everything you need to know about data storage with Microsoft Azure. This course is designed for users that have some basic working knowledge of Java.   <br />You will start by learning about how to get an Azure subscription and configure your environment. From there, Bruno will teach you about Azure storage and Azure blobs, including how to perform CRUD operations on blobs. This video tutorial also covers Azure queues and tables and relational storage, including connecting to MySQL from Java, connecting to Azure SQL database from Java, and PostgreSQL. Finally, you will cover NoSQL storage, including connecting to DocumentDB from Java, provisioning MongoDB databases, and using Redis Cache from Java.</p>  <h2 style="color: darkblue">Introduction</h2>  <h3 style="color: darkblue">Course Introduction And What To Expect (Free) 07m 27s</h3>  <ul>   <li>The Author (Free) 02m 30s     <br /></li>    <li>To Access Your Working Files 01m 15s     <br /></li> </ul>  <h3 style="color: darkblue">Overview</h3>  <ul>   <li>Azure Feature Overview – Part 1 (Free) 07m 45s     <br /></li>    <li>Azure Feature Overview – Part 2 (Free) 08m 07s     <br /></li>    <li>Azure Feature Overview – Part 3 (Free) 04m 54s     <br /></li>    <li>Azure Feature Overview – Part 4 (Free) 05m 36s     <br /></li>    <li>Developer Versus DevOps (Free) 02m 09s     <br /></li>    <li>Linux And Windows (Free) 01m 15s     <br /></li>    <li>Programming Languages And REST (Free) 02m 13s     <br /></li> </ul>  <h3 style="color: darkblue">Getting Ready</h3>  <ul>   <li>Getting An Azure Subscription And Configuring Your Environment 01m 09s     <br /></li>    <li>Provisioning An Ubuntu Linux VM At The Azure Portal 08m 37s     <br /></li>    <li>Installing The Azure Cross Platform Tooling 03m 29s     <br /></li>    <li>Provisioning Resources With The Azure Resource Manager - Part 1 06m 52s     <br /></li>    <li>Provisioning Resources With The Azure Resource Manager - Part 2 04m 57s     <br /></li>    <li>Provisioning Resources With The Azure Resource Manager - Part 3 14m 04s     <br /></li>    <li>Using The Azure Cross Platform CLI To Provision Infrastructure 07m 39s     <br /></li>    <li>Downloading And Installing Java, Eclipse, FileZilla And Git 11m 31s     <br /></li>    <li>Hello World With A Java Application And A Java Dynamic Web Application 12m 41s     <br /></li> </ul>  <h3 style="color: darkblue">Azure Storage - Introduction And Azure Blobs</h3>  <ul>   <li>Overview - The Storage Landscape In Azure 06m 32s     <br /></li>    <li>Provisioning A Storage Account With The Portal And ARM 14m 53s     <br /></li>    <li>Overview Of Azure Blobs And Azure Java Storage SDK 06m 40s     <br /></li>    <li>Performing CRUD Operations On Blobs - Part 1 08m 49s     <br /></li>    <li>Performing CRUD Operations On Blobs - Part 2 05m 54s     <br /></li>    <li>Performing CRUD Operations On Blobs - Part 3 04m 54s     <br /></li> </ul>  <h3 style="color: darkblue">Azure Storage - Azure Queues And Tables</h3>  <ul>   <li>Overview Of Azure Queues 08m 32s     <br /></li>    <li>Inserting And Reading Messages With Queues 07m 30s     <br /></li>    <li>Using A Background Process To Process Messages - Part 1 10m 31s     <br /></li>    <li>Using A Background Process To Process Messages - Part 2 10m 23s     <br /></li>    <li>Overview Of Azure Tables 04m 52s     <br /></li>    <li>Performing CRUD Operations On Tables - Part 1 07m 01s     <br /></li>    <li>Performing CRUD Operations On Tables - Part 2 05m 42s     <br /></li>    <li>Performing CRUD Operations On Tables - Part 3 10m 00s     <br /></li>    <li>Performing CRUD Operations On Tables - Part 4 10m 06s     <br /></li>    <li>Performing CRUD Operations On Tables - Part 5 06m 46s     <br /></li> </ul>  <h3 style="color: darkblue">Azure Storage - Relational Storage</h3>  <ul>   <li>Overview Of Relational Storage - SQL Server, SQL Database And MySQL 07m 39s     <br /></li>    <li>Provisioning MySQL 03m 36s     <br /></li>    <li>Connecting To MySQL From Java - Part 1 06m 01s     <br /></li>    <li>Connecting To MySQL From Java - Part 2 09m 58s     <br /></li>    <li>Connecting To MySQL From Java - Part 3 06m 12s     <br /></li>    <li>Connecting To MySQL From Java - Part 4 06m 04s     <br /></li>    <li>Provisioning SQL Server On A Virtual Machine - Part 1 05m 54s     <br /></li>    <li>Provisioning SQL Server On A Virtual Machine - Part 2 08m 32s     <br /></li>    <li>Connecting To SQL Server From Java - Part 1 06m 03s     <br /></li>    <li>Connecting To SQL Server From Java - Part 2 05m 38s     <br /></li>    <li>Connecting To SQL Server From Java - Part 3 08m 35s     <br /></li>    <li>Provisioning SQL Database 01m 11s     <br /></li>    <li>Understanding Azure SQL Database 04m 23s     <br /></li>    <li>Connecting To Azure SQL Database From Java - Part 1 04m 35s     <br /></li>    <li>Connecting To Azure SQL Database From Java - Part 2 07m 08s     <br /></li>    <li>Connecting To Azure SQL Database From Java - Part 3 07m 11s     <br /></li>    <li>Introduction PostGres - Part 1 05m 24s     <br /></li>    <li>Introduction PostGres - Part 2 06m 06s     <br /></li>    <li>Provisioning PostGres - Part 1 06m 29s     <br /></li>    <li>Provisioning PostGres - Part 2 03m 52s     <br /></li>    <li>Connecting To PostGres From Java - Part 1 08m 47s     <br /></li>    <li>Connecting To PostGres From Java - Part 2 06m 16s     <br /></li> </ul>  <h3 style="color: darkblue">Azure Storage - NoSQL Storage</h3>  <ul>   <li>Overview Of NoSQL Storage 09m 36s     <br /></li>    <li>Provisioning DocumentDB Databases 01m 40s     <br /></li>    <li>Connecting To DocumentDB From Java - Part 1 06m 41s     <br /></li>    <li>Connecting To DocumentDB From Java - Part 2 05m 09s     <br /></li>    <li>Connecting To DocumentDB From Java - Part 3 05m 36s     <br /></li>    <li>Connecting To DocumentDB From Java - Part 4 02m 58s     <br /></li>    <li>Provisioning MongoDB Databases - Part 1 03m 04s     <br /></li>    <li>Provisioning MongoDB Databases - Part 2 04m 06s     <br /></li>    <li>Provisioning MongoDB Databases - Part 3 03m 42s     <br /></li>    <li>Connecting To MongoDB From Java - Part 1 04m 34s     <br /></li>    <li>Connecting To MongoDB From Java - Part 2 04m 31s     <br /></li>    <li>Connecting To MongoDB From Java - Part 3 06m 46s     <br /></li>    <li>Provisioning Redis Cache 05m 45s     <br /></li>    <li>Using Redis Cache From Java 08m 10s     <br /></li>    <li>Introducing Cassandra - Part 1 05m 08s     <br /></li>    <li>Introducing Cassandra - Part 2 04m 57s     <br /></li>    <li>Provisioning Cassandra - Part 1 03m 59s     <br /></li>    <li>Provisioning Cassandra - Part 2 06m 42s     <br /></li>    <li>Connecting To Apache Cassandra With Java - Part 1 05m 38s     <br /></li>    <li>Connecting To Apache Cassandra With Java - Part 2 04m 28s     <br /></li>    <li>Connecting To Apache Cassandra With Java - Part 3 06m 07s     <br /></li> </ul>]]></content:encoded>
    </item>
    <item>
      <title>Build a Cloud-hosted, Web-Based Blob Copy Utility using Node.js</title>
      <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/build-a-cloud-hosted-web-based-blob-copy-utility-using-node-js</link>
      <pubDate>Sat, 28 Mar 2015 19:06:51 GMT</pubDate>
      <dc:creator><![CDATA[BrunoTerkaly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/brunoterkaly/2015/03/28/build-a-cloud-hosted-web-based-blob-copy-utility-using-node-js/</guid>
      <description><![CDATA[Introduction  The goal is simple. Present a web form that allows a user to type in a URL. A...]]></description>
      <content:encoded><![CDATA[<base href="file:\\\C:\github\customers\" />  <h3 style="color: darkblue">Introduction</h3>  <p>The goal is simple. Present a web form that allows a user to type in a URL. A username and password also accepted.</p>  <p>When the user clicks perform copy, the image pointed to by the URL will be copied to azure blob storage through a streaming mechanism.</p>  <p><a href="images/overview.png" target="_blank"><img title="overview" style="max-width: 100%; margin: 0px; display: inline" alt="overview" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0741.overview_0F61EA5D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0741.overview_5F00_0F61EA5D.png" width="750" height="409" /></a></p>  <p>We will build a blob copy utility using Node.js, hosted in Azure. We will host this application in Azure websites.</p>  <p>There are a few things to accomplish at the Azure portal. First, we will provision in Azure website. We will also provision in Azure storage account. </p>  <p>The assumption here is that you already have a repository defined in Github. We will correlate our Azure websites to Github.</p>  <p><a href="images/correlate.png" target="_blank"><img title="correlate" style="max-width: 100%; margin: 0px; display: inline" alt="correlate" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2620.correlate_23E739DB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2620.correlate_5F00_23E739DB.png" width="750" height="153" /></a></p>  <h3 style="color: darkblue">Workplan</h3>  <p>As you can see we have a few things to do at the portal in addition to writing some code. I will assume you have the skills to go figure out how to provision a storage account. But I will walk you through the new portal where we provision and Azure website.</p>  <p>We have three pieces of code. We have one node.JS file called server.JS. For the web form we have SubmitForm.htm and style.css.</p>  <p><a href="images/workplan.png" target="_blank"><img title="workplan" style="max-width: 100%; margin: 0px; display: inline" alt="workplan" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0677.workplan_1F70B914.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0677.workplan_5F00_1F70B914.png" width="750" height="567" /></a></p>  <h4 style="color: darkblue">Provision Github Repo</h4>  <p>We will login to Github and define a new repository called blobcopy.</p>  <p><a href="images/node0009.png" target="_blank"><img title="node0009" style="max-width: 100%; margin: 0px; display: inline" alt="node0009" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8105.node0009_1F04861F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8105.node0009_5F00_1F04861F.png" width="342" height="88" /></a></p>  <p><a href="images/node0010.png" target="_blank"><img title="node0010" style="max-width: 100%; margin: 0px; display: inline" alt="node0010" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0284.node0010_21AD41D0.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0284.node0010_5F00_21AD41D0.png" width="326" height="45" /></a></p>  <p>Provide a name for your repo.</p>  <p><a href="images/node0012.png" target="_blank"><img title="node0012" style="max-width: 100%; margin: 0px; display: inline" alt="node0012" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5086.node0012_61772855.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5086.node0012_5F00_61772855.png" width="570" height="86" /></a></p>  <p>Copy the following code from the Github web site.</p>  <p><a href="images/node0013.png" target="_blank"><img title="node0013" style="max-width: 100%; margin: 0px; display: inline" alt="node0013" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5305.node0013_7353BC22.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5305.node0013_5F00_7353BC22.png" width="565" height="123" /></a></p>  <p>Make a folder on your local drive.</p>  <p><a href="images/node0014.png" target="_blank"><img title="node0014" style="max-width: 100%; margin: 0px; display: inline" alt="node0014" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8032.node0014_610AF560.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8032.node0014_5F00_610AF560.png" width="283" height="106" /></a></p>  <p>Paste in the commands from the clipboard. This will associate your local repository with the repo hosted at Github.</p>  <p><a href="images/node0015.png" target="_blank"><img title="node0015" style="max-width: 100%; margin: 0px; display: inline" alt="node0015" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1106.node0015_35C65E59.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1106.node0015_5F00_35C65E59.png" width="750" height="401" /></a></p>  <p><em>Image 15</em></p>  <h4 style="color: darkblue">Provision Web App at the Portal</h4>  <p>Let's begin by creating an Azure Web Site to host our Node.js application. Now we will go to the Azure portal to provision in Azure website.</p>  <p><a href="images/node0006.png" target="_blank"><img title="node0006" style="max-width: 100%; margin: 0px; display: inline" alt="node0006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5808.node0006_1C5E5B1F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5808.node0006_5F00_1C5E5B1F.png" width="599" height="66" /></a></p>  <p>Click the new button on the lower left corner.</p>  <p><a href="images/node0007.png" target="_blank"><img title="node0007" style="max-width: 100%; margin: 0px; display: inline" alt="node0007" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5822.node0007_5C2841A4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5822.node0007_5F00_5C2841A4.png" width="62" height="76" /></a></p>  <p>From the create menu choose web + mobile.    <br />The GUI will expand. On the right click web app.</p>  <p><a href="images/node0008.png" target="_blank"><img title="node0008" style="max-width: 100%; margin: 0px; display: inline" alt="node0008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8176.node0008_69FA879F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8176.node0008_5F00_69FA879F.png" width="629" height="200" /></a></p>  <p>Choose the region (data center location), then click CREATE. Choose a region.    <br />Provide a name for your node.JS hosted website. In my case on calling at my blob copy but your name will be different.</p>  <p><a href="images/node0016.png" target="_blank"><img title="node0016" style="max-width: 100%; margin: 0px; display: inline" alt="node0016" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6318.node0016_059F1396.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6318.node0016_5F00_059F1396.png" width="322" height="164" /></a></p>  <p>Choose a region.</p>  <p><a href="images/node0017.png" target="_blank"><img title="node0017" style="max-width: 100%; margin: 0px; display: inline" alt="node0017" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3660.node0017_177BA763.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3660.node0017_5F00_177BA763.png" width="286" height="58" /></a></p>  <p>You will wait less than 2 minutes for your site to come up.</p>  <p><a href="images/node0018.png" target="_blank"><img title="node0018" style="max-width: 100%; margin: 0px; display: inline" alt="node0018" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1134.node0018_533B4016.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1134.node0018_5F00_533B4016.png" width="157" height="154" /></a></p>  <p>We will now set up continuous deployment with Github. Click set up continuous deployment.</p>  <p><a href="images/node0020.png" target="_blank"><img title="node0020" style="max-width: 100%; margin: 0px; display: inline" alt="node0020" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6837.node0020_7A095656.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6837.node0020_5F00_7A095656.png" width="358" height="206" /></a></p>  <p>For the source select Github by Github.</p>  <p><a href="images/node0021.png" target="_blank"><img title="node0021" style="max-width: 100%; margin: 0px; display: inline" alt="node0021" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3288.node0021_39D33CDC.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3288.node0021_5F00_39D33CDC.png" width="286" height="165" /></a></p>  <p>Select configure required settings, where you will go back to choose the repo that you created at Github. In my case that was called blobcopy.</p>  <p><a href="images/node0022.png" target="_blank"><img title="node0022" style="max-width: 100%; margin: 0px; display: inline" alt="node0022" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7002.node0022_0E8EA5D5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7002.node0022_5F00_0E8EA5D5.png" width="296" height="309" /></a></p>  <p>blobcopy has been selected.</p>  <p>You will need to login to github here to associate your github repo.</p>  <p><a href="images/node0024.png" target="_blank"><img title="node0024" style="max-width: 100%; margin: 0px; display: inline" alt="node0024" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1638.node0024_4E588C5A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1638.node0024_5F00_4E588C5A.png" width="288" height="54" /></a></p>  <p>Now it is time to ride our node. JS code.</p>  <p><a href="images/node0025.png" target="_blank"><img title="node0025" style="max-width: 100%; margin: 0px; display: inline" alt="node0025" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2046.node0025_7526A29A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2046.node0025_5F00_7526A29A.png" width="278" height="262" /></a></p>  <h3 style="color: darkblue">Writing some node.js code (Hello World)</h3>  <p>We will create a program call server.JS. It's important to give it this name because that's what Azure websites will use as a default file name.</p>  <p><a href="images/node0026.png" target="_blank"><img title="node0026" style="max-width: 100%; margin: 0px; display: inline" alt="node0026" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1072.node0026_2DD14CA8.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1072.node0026_5F00_2DD14CA8.png" width="371" height="61" /></a></p>  <p>We will write a simple &quot;hello world&quot; example to start.</p>  <p><a href="images/node0027.png" target="_blank"><img title="node0027" style="max-width: 100%; margin: 0px; display: inline" alt="node0027" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6378.node0027_6990E55B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6378.node0027_5F00_6990E55B.png" width="605" height="259" /></a></p>  <p>Save your file returned back to the command line, and type in the following Github commands. This is what allows Github to copy our code from a local hard disk up into the cloud where we are hosting our Azure website</p>  <p><a href="images/node0028.png" target="_blank"><img title="node0028" style="max-width: 100%; margin: 0px; display: inline" alt="node0028" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2260.node0028_300DD564.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2260.node0028_5F00_300DD564.png" width="750" height="412" /></a></p>  <p>We will now return to the portal to copy the URL of our provisioned website.</p>  <p><a href="images/node0029.png" target="_blank"><img title="node0029" style="max-width: 100%; margin: 0px; display: inline" alt="node0029" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2063.node0029_7280779A.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2063.node0029_5F00_7280779A.png" width="532" height="202" /></a></p>  <p>We will now navigate to that URL and should see hello world. This validates that we have things set up correctly.</p>  <p><a href="images/node0030.png" target="_blank"><img title="node0030" style="max-width: 100%; margin: 0px; display: inline" alt="node0030" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8865.node0030_122F5163.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8865.node0030_5F00_122F5163.png" width="505" height="163" /></a></p>  <h2 style="color: darkblue">Web Client</h2>  <p>Let's now write a web client that will submit form data to our node back-end. The point is to be able to pass in blob endpoints to node, which will then copy them to another destination.</p>  <p>Your form might look something like this. Notice I'm running this locally but you can choose to also run this in Azure, using the same techniques just discussed.</p>  <p><a href="images/node0031.png" target="_blank"><img title="node0031" style="max-width: 100%; margin: 0px; display: inline" alt="node0031" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0028.node0031_0DB8D09C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0028.node0031_5F00_0DB8D09C.png" width="750" height="356" /></a></p>  <p><em>Image 31</em></p>  <h4 style="color: darkblue">Source Code for SubmitForm.html</h4>  <p>The style sheet can be found in the Appendix.</p>  <p>Take special node of the URL where the form fields are submitted.</p>  <p><a href="https://myblobcopy.azurewebsites.net/">https://myblobcopy.azurewebsites.net/</a></p>  <p>The original intent of this program is to copy pictures from Amazon over to Azure. That's why you see the source URL pointing to Amazon.</p>  <p>Although we will enter and support a username password, for the purposes of this demo we are not going to worry about authentication and authorization.</p>  <p>One important thing to notice here is the form action points to our provision website up in Azure, from the previous step.</p>  <p>Once again, the url is:</p>  <p><a href="https://myblobcopy.azurewebsites.net/">https://myblobcopy.azurewebsites.net/</a></p>  <div class="highlight highlight-html">   <pre>&lt;<span class="pl-ent">html</span>&gt;
&lt;<span class="pl-ent">head</span>&gt;
    &lt;<span class="pl-ent">link</span> <span class="pl-e">href</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>style.css<span class="pl-pds">&quot;</span></span> <span class="pl-e">rel</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>stylesheet<span class="pl-pds">&quot;</span></span>&gt;

&lt;/<span class="pl-ent">head</span>&gt;
&lt;<span class="pl-ent">body</span>&gt;
    &lt;<span class="pl-ent">form</span> <span class="pl-e">action</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>https://myblobcopy.azurewebsites.net/<span class="pl-pds">&quot;</span></span> <span class="pl-e">method</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>post<span class="pl-pds">&quot;</span></span>&gt;
        &lt;<span class="pl-ent">div</span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>title<span class="pl-pds">&quot;</span></span>&gt;Copy blob from Amazon to Azure&lt;/<span class="pl-ent">div</span>&gt;
        &lt;<span class="pl-ent">div</span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>row<span class="pl-pds">&quot;</span></span>&gt;
            &lt;<span class="pl-ent">label</span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>col1<span class="pl-pds">&quot;</span></span>&gt;Source URL (Amazon):<span class="pl-c1">&amp;nbsp;&amp;nbsp;</span>&lt;/<span class="pl-ent">label</span>&gt;
            &lt;<span class="pl-ent">span</span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>col2<span class="pl-pds">&quot;</span></span>&gt;&lt;<span class="pl-ent">input</span> <span class="pl-e">name</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>sourceurl<span class="pl-pds">&quot;</span></span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>input<span class="pl-pds">&quot;</span></span> <span class="pl-e">type</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>text<span class="pl-pds">&quot;</span></span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>sourceurl<span class="pl-pds">&quot;</span></span> <span class="pl-e">value</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>https://www.motorbikespecs.net/images/Suzuki/GSXR_1000_K3_03/GSXR_1000_K3_03_2.jpg<span class="pl-pds">&quot;</span></span> <span class="pl-e">size</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>80<span class="pl-pds">&quot;</span></span> <span class="pl-e">tabindex</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>1<span class="pl-pds">&quot;</span></span> /&gt;&lt;/<span class="pl-ent">span</span>&gt;
        &lt;/<span class="pl-ent">div</span>&gt;
        &lt;<span class="pl-ent">div</span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>row<span class="pl-pds">&quot;</span></span>&gt;
            &lt;<span class="pl-ent">label</span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>col1<span class="pl-pds">&quot;</span></span>&gt;User Name:<span class="pl-c1">&amp;nbsp;&amp;nbsp;</span>&lt;/<span class="pl-ent">label</span>&gt;
            &lt;<span class="pl-ent">span</span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>col2<span class="pl-pds">&quot;</span></span>&gt;&lt;<span class="pl-ent">input</span> <span class="pl-e">name</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>username<span class="pl-pds">&quot;</span></span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>input<span class="pl-pds">&quot;</span></span> <span class="pl-e">type</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>text<span class="pl-pds">&quot;</span></span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>username<span class="pl-pds">&quot;</span></span> <span class="pl-e">value</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>c<span class="pl-pds">&quot;</span></span> <span class="pl-e">size</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>80<span class="pl-pds">&quot;</span></span> <span class="pl-e">tabindex</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>3<span class="pl-pds">&quot;</span></span> /&gt;&lt;/<span class="pl-ent">span</span>&gt;
        &lt;/<span class="pl-ent">div</span>&gt;
        &lt;<span class="pl-ent">div</span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>row<span class="pl-pds">&quot;</span></span>&gt;
            &lt;<span class="pl-ent">label</span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>col1<span class="pl-pds">&quot;</span></span>&gt;Password:<span class="pl-c1">&amp;nbsp;&amp;nbsp;</span>&lt;/<span class="pl-ent">label</span>&gt;
            &lt;<span class="pl-ent">span</span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>col2<span class="pl-pds">&quot;</span></span>&gt;&lt;<span class="pl-ent">input</span> <span class="pl-e">name</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>password<span class="pl-pds">&quot;</span></span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>input<span class="pl-pds">&quot;</span></span> <span class="pl-e">type</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>text<span class="pl-pds">&quot;</span></span> <span class="pl-e">id</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>password<span class="pl-pds">&quot;</span></span> <span class="pl-e">value</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>d<span class="pl-pds">&quot;</span></span> <span class="pl-e">size</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>80<span class="pl-pds">&quot;</span></span> <span class="pl-e">tabindex</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>4<span class="pl-pds">&quot;</span></span> /&gt;&lt;/<span class="pl-ent">span</span>&gt;
        &lt;/<span class="pl-ent">div</span>&gt;
        &lt;<span class="pl-ent">div</span> <span class="pl-e">align</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>center<span class="pl-pds">&quot;</span></span> <span class="pl-e">class</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>submit<span class="pl-pds">&quot;</span></span>&gt;
            &lt;<span class="pl-ent">input</span> <span class="pl-e">type</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>submit<span class="pl-pds">&quot;</span></span> <span class="pl-e">value</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>Perform Copy<span class="pl-pds">&quot;</span></span> <span class="pl-e">alt</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>send<span class="pl-pds">&quot;</span></span> <span class="pl-e">width</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>52<span class="pl-pds">&quot;</span></span> <span class="pl-e">height</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>19<span class="pl-pds">&quot;</span></span> <span class="pl-e">border</span>=<span class="pl-s"><span class="pl-pds">&quot;</span>0<span class="pl-pds">&quot;</span></span> /&gt;
        &lt;/<span class="pl-ent">div</span>&gt;
    &lt;/<span class="pl-ent">form</span>&gt;

&lt;/<span class="pl-ent">body</span>&gt;
&lt;/<span class="pl-ent">html</span>&gt;

  </pre>
</div>

<h2 style="color: darkblue">Return back to the server.js node code</h2>

<p>Let's now finish writing our server back-end the perform a copy. </p>

<h4 style="color: darkblue">Submitting form fields and having Node.js receive them.</h4>

<p>We will need to leverage a bunch of node packages. We will need to install a number of those node packages, approximately eight of them.</p>

<p>At the top of our node.js app (server.js) we will want to leverages some packages, like this:</p>

<div class="highlight highlight-javascript">
  <pre><span class="pl-k">var</span> http <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>http<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> querystring <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>querystring<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> azure <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>azure<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>request<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> stream <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>stream<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> util <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>util<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> url <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>url<span class="pl-pds">&quot;</span></span>);
<span class="pl-k">var</span> path <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>path<span class="pl-pds">&quot;</span></span>);
  </pre>
</div>

<p>But these packages will need to be installed. The assumption is that you've installed Node on your development computer and Node Package Manager. You can get the bits here:</p>

<p><a href="https://nodejs.org/">https://nodejs.org/</a></p>

<pre><code>npm install http
npm install querystring
npm install azure
npm install request
npm install stream
npm install util
npm install url
npm install path


</code></pre>

<p>Here is the output of request as an example. Azure is a big one and will take the longest. These are packages or libraries used by our app for additional functionality. You can read about them here:</p>

<p><a href="https://www.npmjs.com/">https://www.npmjs.com/</a></p>

<p><a href="images/node0032.png" target="_blank"><img title="node0032" style="max-width: 100%; margin: 0px; display: inline" alt="node0032" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0363.node0032_0D4C9DA7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0363.node0032_5F00_0D4C9DA7.png" width="750" height="377" /></a></p>

<h4 style="color: darkblue">Copying an image to Azure Storage</h4>

<p>Double check and make these edits are in your code.</p>

<div class="highlight highlight-javascript">
  <pre><span class="pl-k">var</span> http <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>http<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> querystring <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>querystring<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> azure <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>azure<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> request <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>request<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> stream <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>stream<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> util <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">'</span>util<span class="pl-pds">'</span></span>);
<span class="pl-k">var</span> url <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>url<span class="pl-pds">&quot;</span></span>);
<span class="pl-k">var</span> path <span class="pl-k">=</span> <span class="pl-c1">require</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>path<span class="pl-pds">&quot;</span></span>);

<span class="pl-k">var</span> blobService <span class="pl-k">=</span> azure.createBlobService(<span class="pl-s"><span class="pl-pds">'</span>brunostorage<span class="pl-pds">'</span></span>, <span class="pl-s"><span class="pl-pds">'</span>YOU GET THIS FROM THE PORTAL UNDER YOUR STORAGE ACCOUNT 8OGSlD7wWHLQA+q3dXmNUOUtBW/liL3a1zc8DevrtlAKnI5wwzg==<span class="pl-pds">'</span></span>);

<span class="pl-k">var</span> containerName <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>ppt<span class="pl-pds">'</span></span>;

<span class="pl-k">var</span> port <span class="pl-k">=</span> <span class="pl-c1">process</span>.env.PORT <span class="pl-k">||</span> <span class="pl-c1">1337</span>;

http.createServer(<span class="pl-k">function</span>(<span class="pl-smi">req</span>, <span class="pl-smi">res</span>) {
    <span class="pl-k">var</span> body <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span><span class="pl-pds">&quot;</span></span>;
    req.on(<span class="pl-s"><span class="pl-pds">'</span>data<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">chunk</span>) {
        body <span class="pl-k">+=</span> chunk;
    });

    req.on(<span class="pl-s"><span class="pl-pds">'</span>end<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {
        <span class="pl-en">console</span><span class="pl-c1">.log</span>(<span class="pl-s"><span class="pl-pds">'</span>POSTed: <span class="pl-pds">'</span></span> <span class="pl-k">+</span> body);
        res.writeHead(<span class="pl-c1">200</span>);


        <span class="pl-c">// Break apart submitted form data</span>
        <span class="pl-k">var</span> decodedbody <span class="pl-k">=</span> querystring.<span class="pl-c1">parse</span>(body);


        <span class="pl-c">// Parse out the submitted URL</span>
        <span class="pl-k">var</span> parsed <span class="pl-k">=</span> url.<span class="pl-c1">parse</span>(decodedbody.sourceurl);

        <span class="pl-c">// Get the filename</span>
        <span class="pl-k">var</span> filename <span class="pl-k">=</span> path.basename(parsed.<span class="pl-c1">pathname</span>);

        <span class="pl-c">// Send text to the browser</span>
        <span class="pl-k">var</span> result <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">&quot;</span>Copying <span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span> decodedbody.sourceurl <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span>&lt;/br&gt; to <span class="pl-pds">&quot;</span></span> <span class="pl-k">+</span>
            filename;
        res.end(result);

        <span class="pl-c">// Start copying to storage account</span>
        loadBase64Image(decodedbody.sourceurl, <span class="pl-k">function</span> (<span class="pl-smi">image</span>, <span class="pl-smi">prefix</span>) {
            <span class="pl-k">var</span> fileBuffer <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Buffer</span>(image, <span class="pl-s"><span class="pl-pds">'</span>base64<span class="pl-pds">'</span></span>);
            blobService.createBlockBlobFromStream(containerName, filename, 
                 <span class="pl-k">new</span> <span class="pl-en">ReadableStreamBuffer</span>(fileBuffer), fileBuffer.<span class="pl-c1">length</span>, 
                 { contentTypeHeader<span class="pl-k">:</span> <span class="pl-s"><span class="pl-pds">'</span>image/jpg<span class="pl-pds">'</span></span> }, <span class="pl-k">function</span> (<span class="pl-smi">error</span>) {
                <span class="pl-c">//console.log('api result');</span>
                <span class="pl-k">if</span> (<span class="pl-k">!</span>error) {
                    <span class="pl-en">console</span><span class="pl-c1">.log</span>(<span class="pl-s"><span class="pl-pds">'</span>ok<span class="pl-pds">'</span></span>);
                }
                <span class="pl-k">else</span> {
                    <span class="pl-en">console</span><span class="pl-c1">.log</span>(error);
                }

            });
        });

    });



    <span class="pl-k">var</span> <span class="pl-en">downloadImage</span> <span class="pl-k">=</span> <span class="pl-k">function</span>(<span class="pl-smi">options</span>, <span class="pl-smi">fileName</span>) {
        http.get(options, <span class="pl-k">function</span>(<span class="pl-smi">res</span>) {
            <span class="pl-k">var</span> imageData <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span><span class="pl-pds">'</span></span>;
            res.setEncoding(<span class="pl-s"><span class="pl-pds">'</span>binary<span class="pl-pds">'</span></span>);
            res.on(<span class="pl-s"><span class="pl-pds">'</span>data<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">chunk</span>) {
                imageData <span class="pl-k">+=</span> chunk;
            });
            res.on(<span class="pl-s"><span class="pl-pds">'</span>end<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>() {
                fs.writeFile(fileName, imageData, <span class="pl-s"><span class="pl-pds">'</span>binary<span class="pl-pds">'</span></span>, <span class="pl-k">function</span>(<span class="pl-smi">err</span>) {
                    <span class="pl-k">if</span> (err) <span class="pl-k">throw</span> err;
                    <span class="pl-en">console</span><span class="pl-c1">.log</span>(<span class="pl-s"><span class="pl-pds">'</span>File: <span class="pl-pds">'</span></span> <span class="pl-k">+</span> fileName <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">&quot;</span> written!<span class="pl-pds">&quot;</span></span>);
                });
            });
        });
    };


    <span class="pl-k">var</span> <span class="pl-en">loadBase64Image</span> <span class="pl-k">=</span> <span class="pl-k">function</span> (<span class="pl-smi">url</span>, <span class="pl-smi">callback</span>) {
        <span class="pl-c">// Required 'request' module</span>

        <span class="pl-c">// Make request to our image url</span>
        request({ url<span class="pl-k">:</span> url, encoding<span class="pl-k">:</span> <span class="pl-c1">null</span> }, <span class="pl-k">function</span> (<span class="pl-smi">err</span>, <span class="pl-smi">res</span>, <span class="pl-smi">body</span>) {
            <span class="pl-k">if</span> (<span class="pl-k">!</span>err <span class="pl-k">&amp;&amp;</span> res.statusCode <span class="pl-k">==</span> <span class="pl-c1">200</span>) {
                <span class="pl-c">// So as encoding set to null then request body became Buffer object</span>
                <span class="pl-k">var</span> base64prefix <span class="pl-k">=</span> <span class="pl-s"><span class="pl-pds">'</span>data:<span class="pl-pds">'</span></span> <span class="pl-k">+</span> res.<span class="pl-c1">headers</span>[<span class="pl-s"><span class="pl-pds">'</span>content-type<span class="pl-pds">'</span></span>] <span class="pl-k">+</span> <span class="pl-s"><span class="pl-pds">'</span>;base64,<span class="pl-pds">'</span></span>
                , image <span class="pl-k">=</span> body.<span class="pl-c1">toString</span>(<span class="pl-s"><span class="pl-pds">'</span>base64<span class="pl-pds">'</span></span>);
                <span class="pl-k">if</span> (<span class="pl-k">typeof</span> callback <span class="pl-k">==</span> <span class="pl-s"><span class="pl-pds">'</span>function<span class="pl-pds">'</span></span>) {
                    callback(image, base64prefix);
                }
            } <span class="pl-k">else</span> {
                <span class="pl-k">throw</span> <span class="pl-k">new</span> <span class="pl-en">Error</span>(<span class="pl-s"><span class="pl-pds">'</span>Can not download image<span class="pl-pds">'</span></span>);
            }
        });
    };


    <span class="pl-k">var</span> <span class="pl-en">ReadableStreamBuffer</span> <span class="pl-k">=</span> <span class="pl-k">function</span> (<span class="pl-smi">fileBuffer</span>) {

        <span class="pl-k">var</span> that <span class="pl-k">=</span> <span class="pl-v">this</span>;
        stream.Stream.<span class="pl-c1">call</span>(<span class="pl-v">this</span>);
        <span class="pl-v">this</span>.readable <span class="pl-k">=</span> <span class="pl-c1">true</span>;
        <span class="pl-v">this</span>.writable <span class="pl-k">=</span> <span class="pl-c1">false</span>;

        <span class="pl-k">var</span> frequency <span class="pl-k">=</span> <span class="pl-c1">50</span>;
        <span class="pl-k">var</span> chunkSize <span class="pl-k">=</span> <span class="pl-c1">1024</span>;
        <span class="pl-k">var</span> size <span class="pl-k">=</span> fileBuffer.<span class="pl-c1">length</span>;
        <span class="pl-k">var</span> position <span class="pl-k">=</span> <span class="pl-c1">0</span>;

        <span class="pl-k">var</span> buffer <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Buffer</span>(fileBuffer.<span class="pl-c1">length</span>);
        fileBuffer.copy(buffer);

        <span class="pl-k">var</span> <span class="pl-en">sendData</span> <span class="pl-k">=</span> <span class="pl-k">function</span> () {
            <span class="pl-k">if</span> (size <span class="pl-k">===</span> <span class="pl-c1">0</span>) {
                that.emit(<span class="pl-s"><span class="pl-pds">&quot;</span>end<span class="pl-pds">&quot;</span></span>);
                <span class="pl-k">return</span>;
            }

            <span class="pl-k">var</span> amount <span class="pl-k">=</span> <span class="pl-c1">Math</span>.<span class="pl-c1">min</span>(chunkSize, size);
            <span class="pl-k">var</span> chunk <span class="pl-k">=</span> <span class="pl-c1">null</span>;
            chunk <span class="pl-k">=</span> <span class="pl-k">new</span> <span class="pl-en">Buffer</span>(amount);
            buffer.copy(chunk, <span class="pl-c1">0</span>, position, position <span class="pl-k">+</span> amount);
            position <span class="pl-k">+=</span> amount;
            size <span class="pl-k">-=</span> amount;

            that.emit(<span class="pl-s"><span class="pl-pds">&quot;</span>data<span class="pl-pds">&quot;</span></span>, chunk);
        };

        <span class="pl-c1">this</span>.<span class="pl-en">size</span> <span class="pl-k">=</span> <span class="pl-k">function</span> () {
            <span class="pl-k">return</span> size;
        };

        <span class="pl-c1">this</span>.<span class="pl-en">maxSize</span> <span class="pl-k">=</span> <span class="pl-k">function</span> () {
            <span class="pl-k">return</span> buffer.<span class="pl-c1">length</span>;
        };

        <span class="pl-c1">this</span>.<span class="pl-en">pause</span> <span class="pl-k">=</span> <span class="pl-k">function</span> () {
            <span class="pl-k">if</span> (sendData) {
                <span class="pl-c1">clearInterval</span>(sendData.interval);
                <span class="pl-k">delete</span> sendData.interval;
            }
        };

        <span class="pl-c1">this</span>.<span class="pl-en">resume</span> <span class="pl-k">=</span> <span class="pl-k">function</span> () {
            <span class="pl-k">if</span> (sendData <span class="pl-k">&amp;&amp;</span> <span class="pl-k">!</span>sendData.interval) {
                sendData.interval <span class="pl-k">=</span> <span class="pl-c1">setInterval</span>(sendData, frequency);
            }
        };

        <span class="pl-c1">this</span>.<span class="pl-en">destroy</span> <span class="pl-k">=</span> <span class="pl-k">function</span> () {
            that.emit(<span class="pl-s"><span class="pl-pds">&quot;</span>end<span class="pl-pds">&quot;</span></span>);
            <span class="pl-c1">clearTimeout</span>(sendData.interval);
            sendData <span class="pl-k">=</span> <span class="pl-c1">null</span>;
            that.readable <span class="pl-k">=</span> <span class="pl-c1">false</span>;
            that.emit(<span class="pl-s"><span class="pl-pds">&quot;</span>close<span class="pl-pds">&quot;</span></span>);
        };

        <span class="pl-c1">this</span>.<span class="pl-en">setEncoding</span> <span class="pl-k">=</span> <span class="pl-k">function</span> (<span class="pl-smi">_encoding</span>) {
        };

        <span class="pl-v">this</span>.resume();
    };
    util.inherits(ReadableStreamBuffer, stream.Stream);

}).listen(port);</pre>
</div>

<h4 style="color: darkblue">Updating your repo</h4>

<p>We are now ready to synchronize our local edits up to Azure websites by issuing the following Github commands.</p>

<pre><code>git add . --all
git commit -m &quot;new updates&quot;
git push -u origin master
</code></pre>

<p><a href="images/node0033.png" target="_blank"><img title="node0033" style="max-width: 100%; margin: 0px; display: inline" alt="node0033" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6232.node0033_16A862DB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6232.node0033_5F00_16A862DB.png" width="679" height="221" /></a></p>

<p>Make sure that your form is submitting to the correct endpoint. Yours will be different from the highlighted section below.</p>

<p><a href="images/node0034.png" target="_blank"><img title="node0034" style="max-width: 100%; margin: 0px; display: inline" alt="node0034" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8306.node0034_6F6E19A5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8306.node0034_5F00_6F6E19A5.png" width="750" height="276" /></a></p>

<p>Run the submitting form and it should look something like this. Notice that are hardcoded a URL that points to an existing photo. Ideally, this could be some photo sitting on Amazon that you wish to copy to Azure.</p>

<p>Once you click perform copy the following screen should appear. It indicates that the file was successfully downloaded and written to your Azure blob storage account.</p>

<p><a href="images/node0037.png" target="_blank"><img title="node0037" style="max-width: 100%; margin: 0px; display: inline" alt="node0037" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0407.node0037_03F36924.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0407.node0037_5F00_03F36924.png" width="750" height="190" /></a></p>

<p>You can download a simple utility to go to your Azure storage blob files to validate the correct copy of current.</p>

<p>You can download it for free here:</p>

<p><a href="https://azurestorageexplorer.codeplex.com/">https://azurestorageexplorer.codeplex.com/</a></p>

<p><a href="images/node0039.png" target="_blank"><img title="node0039" style="max-width: 100%; margin: 0px; display: inline" alt="node0039" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2860.node0039_518F95A4.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2860.node0039_5F00_518F95A4.png" width="750" height="416" /></a></p>

<h2 style="color: darkblue">Conclusion</h2>

<p>There is room for improvement in this quick sample. One of the things you can do is make the process more asynchronous. The way to do that is to leverage Azure queues. That means all submitted URLs would go into a queue. From there a background process would read from the queue and perform the actual operation whereby the images are copied azure blob storage. But the code provided above serves as an excellent starting point to build a more robust solution.</p>

<h1 style="color: darkblue">Appendix</h1>

<h4 style="color: darkblue">Style Sheet - style.css</h4>

<div class="highlight highlight-css">
  <pre><span class="pl-e">#linear_grad</span>
{
<span class="pl-c1"><span class="pl-c1">height</span></span>: <span class="pl-c1">100<span class="pl-k">px</span></span>;
<span class="pl-c1"><span class="pl-c1">background</span></span>: linear-gradient(<span class="pl-c1">#deefff</span>, <span class="pl-c1">#96caff</span>);
}
<span class="pl-e">#button_grad</span>
{
<span class="pl-c1"><span class="pl-c1">height</span></span>: <span class="pl-c1">40<span class="pl-k">px</span></span>;
<span class="pl-c1"><span class="pl-c1">width</span></span>: <span class="pl-c1">100<span class="pl-k">px</span></span>;
<span class="pl-c1"><span class="pl-c1">color</span></span>: <span class="pl-c1">#ffffff</span>;
<span class="pl-c1"><span class="pl-c1">font</span></span>: <span class="pl-c1">bold</span> <span class="pl-c1">84<span class="pl-k">%</span></span> <span class="pl-s"><span class="pl-pds">'</span>trebuchet ms<span class="pl-pds">'</span></span>,<span class="pl-c1">helvetica</span>,<span class="pl-c1">sans-serif</span>;
<span class="pl-c1"><span class="pl-c1">font-size</span></span>: <span class="pl-c1">large</span>;
<span class="pl-c1"><span class="pl-c1">background</span></span>: linear-gradient(<span class="pl-c1">#aeaeae</span>, <span class="pl-c1">#929292</span>);
}
<span class="pl-ent">body</span> {
    <span class="pl-c1"><span class="pl-c1">background-color</span></span>: <span class="pl-c1">#DBE8F9</span>;
    <span class="pl-c1"><span class="pl-c1">font</span></span>: <span class="pl-c1">11<span class="pl-k">px</span></span>/<span class="pl-c1">24<span class="pl-k">px</span></span> <span class="pl-s"><span class="pl-pds">&quot;</span>Lucida Grande<span class="pl-pds">&quot;</span></span>, <span class="pl-s"><span class="pl-pds">&quot;</span>Trebuchet MS<span class="pl-pds">&quot;</span></span>, <span class="pl-c1">Arial</span>, <span class="pl-c1">Helvetica</span>, <span class="pl-c1">sans-serif</span>;
    <span class="pl-c1"><span class="pl-c1">color</span></span>: <span class="pl-c1">#5A698B</span>;
}

<span class="pl-e">#title</span> {
    <span class="pl-c1"><span class="pl-c1">width</span></span>: <span class="pl-c1">330<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">height</span></span>: <span class="pl-c1">26<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">color</span></span>: <span class="pl-c1">#5A698B</span>;
    <span class="pl-c1"><span class="pl-c1">font</span></span>: <span class="pl-c1">bold</span> <span class="pl-c1">11<span class="pl-k">px</span></span>/<span class="pl-c1">18<span class="pl-k">px</span></span> <span class="pl-s"><span class="pl-pds">&quot;</span>Lucida Grande<span class="pl-pds">&quot;</span></span>, <span class="pl-s"><span class="pl-pds">&quot;</span>Trebuchet MS<span class="pl-pds">&quot;</span></span>, <span class="pl-c1">Arial</span>, <span class="pl-c1">Helvetica</span>, <span class="pl-c1">sans-serif</span>;
    <span class="pl-c1"><span class="pl-c1">padding-top</span></span>: <span class="pl-c1">5<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">background</span></span>: <span class="pl-c1">transparent</span> <span class="pl-c1">url</span>(<span class="pl-s"><span class="pl-pds">&quot;</span>images/bg_legend.gif<span class="pl-pds">&quot;</span></span>) <span class="pl-c1">no-repeat</span>;
    <span class="pl-c1"><span class="pl-c1">text-transform</span></span>: <span class="pl-c1">uppercase</span>;
    <span class="pl-c1"><span class="pl-c1">letter-spacing</span></span>: <span class="pl-c1">2<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">text-align</span></span>: <span class="pl-c1">center</span>;
}

<span class="pl-ent">form</span> {
    <span class="pl-c1"><span class="pl-c1">width</span></span>: <span class="pl-c1">335<span class="pl-k">px</span></span>;
}

<span class="pl-e">.col1</span> {
    <span class="pl-c1"><span class="pl-c1">text-align</span></span>: <span class="pl-c1">right</span>;
    <span class="pl-c1"><span class="pl-c1">width</span></span>: <span class="pl-c1">135<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">height</span></span>: <span class="pl-c1">31<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">margin</span></span>: <span class="pl-c1">0</span>;
    <span class="pl-c1"><span class="pl-c1">float</span></span>: <span class="pl-c1">left</span>;
    <span class="pl-c1"><span class="pl-c1">margin-right</span></span>: <span class="pl-c1">2<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">background</span></span>: <span class="pl-c1">url</span>(<span class="pl-v">images/bg_label.gif</span>) <span class="pl-c1">no-repeat</span>;
}

<span class="pl-e">.col2</span> {
    <span class="pl-c1"><span class="pl-c1">width</span></span>: <span class="pl-c1">195<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">height</span></span>: <span class="pl-c1">31<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">display</span></span>: <span class="pl-c1">block</span>;
    <span class="pl-c1"><span class="pl-c1">float</span></span>: <span class="pl-c1">left</span>;
    <span class="pl-c1"><span class="pl-c1">margin</span></span>: <span class="pl-c1">0</span>;
    <span class="pl-c1"><span class="pl-c1">background</span></span>: <span class="pl-c1">url</span>(<span class="pl-v">images/bg_textfield.gif</span>) <span class="pl-c1">no-repeat</span>;
}

<span class="pl-e">.col2comment</span> {
    <span class="pl-c1"><span class="pl-c1">width</span></span>: <span class="pl-c1">195<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">height</span></span>: <span class="pl-c1">98<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">margin</span></span>: <span class="pl-c1">0</span>;
    <span class="pl-c1"><span class="pl-c1">display</span></span>: <span class="pl-c1">block</span>;
    <span class="pl-c1"><span class="pl-c1">float</span></span>: <span class="pl-c1">left</span>;
    <span class="pl-c1"><span class="pl-c1">background</span></span>: <span class="pl-c1">url</span>(<span class="pl-v">images/bg_textarea.gif</span>) <span class="pl-c1">no-repeat</span>;
}

<span class="pl-e">.col1comment</span> {
    <span class="pl-c1"><span class="pl-c1">text-align</span></span>: <span class="pl-c1">right</span>;
    <span class="pl-c1"><span class="pl-c1">width</span></span>: <span class="pl-c1">135<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">height</span></span>: <span class="pl-c1">98<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">float</span></span>: <span class="pl-c1">left</span>;
    <span class="pl-c1"><span class="pl-c1">display</span></span>: <span class="pl-c1">block</span>;
    <span class="pl-c1"><span class="pl-c1">margin-right</span></span>: <span class="pl-c1">2<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">background</span></span>: <span class="pl-c1">url</span>(<span class="pl-v">images/bg_label_comment.gif</span>) <span class="pl-c1">no-repeat</span>;
}

<span class="pl-ent">div</span><span class="pl-e">.row</span> {
    <span class="pl-c1"><span class="pl-c1">clear</span></span>: <span class="pl-c1">both</span>;
    <span class="pl-c1"><span class="pl-c1">width</span></span>: <span class="pl-c1">335<span class="pl-k">px</span></span>;
}

<span class="pl-e">.submit</span> {
    <span class="pl-c1"><span class="pl-c1">height</span></span>: <span class="pl-c1">29<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">width</span></span>: <span class="pl-c1">330<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">background</span></span>: <span class="pl-c1">url</span>(<span class="pl-v">images/bg_submit.gif</span>) <span class="pl-c1">no-repeat</span>;
    <span class="pl-c1"><span class="pl-c1">padding-top</span></span>: <span class="pl-c1">5<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">clear</span></span>: <span class="pl-c1">both</span>;
} 

<span class="pl-e">.input</span> {
    <span class="pl-c1"><span class="pl-c1">background-color</span></span>: <span class="pl-c1">#fff</span>;
    <span class="pl-c1"><span class="pl-c1">font</span></span>: <span class="pl-c1">11<span class="pl-k">px</span></span>/<span class="pl-c1">14<span class="pl-k">px</span></span> <span class="pl-s"><span class="pl-pds">&quot;</span>Lucida Grande<span class="pl-pds">&quot;</span></span>, <span class="pl-s"><span class="pl-pds">&quot;</span>Trebuchet MS<span class="pl-pds">&quot;</span></span>, <span class="pl-c1">Arial</span>, <span class="pl-c1">Helvetica</span>, <span class="pl-c1">sans-serif</span>;
    <span class="pl-c1"><span class="pl-c1">color</span></span>: <span class="pl-c1">#5A698B</span>;
    <span class="pl-c1"><span class="pl-c1">margin</span></span>: <span class="pl-c1">4<span class="pl-k">px</span></span> <span class="pl-c1">0</span> <span class="pl-c1">5<span class="pl-k">px</span></span> <span class="pl-c1">8<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">padding</span></span>: <span class="pl-c1">1<span class="pl-k">px</span></span>;
    <span class="pl-c1"><span class="pl-c1">border</span></span>: <span class="pl-c1">1<span class="pl-k">px</span></span> <span class="pl-c1">solid</span> <span class="pl-c1">#8595B2</span>;
}

<span class="pl-e">.textarea</span> {
    <span class="pl-c1"><span class="pl-c1">border</span></span>: <span class="pl-c1">1<span class="pl-k">px</span></span> <span class="pl-c1">solid</span> <span class="pl-c1">#8595B2</span>;
    <span class="pl-c1"><span class="pl-c1">background-color</span></span>: <span class="pl-c1">#fff</span>;
    <span class="pl-c1"><span class="pl-c1">font</span></span>: <span class="pl-c1">11<span class="pl-k">px</span></span>/<span class="pl-c1">14<span class="pl-k">px</span></span> <span class="pl-s"><span class="pl-pds">&quot;</span>Lucida Grande<span class="pl-pds">&quot;</span></span>, <span class="pl-s"><span class="pl-pds">&quot;</span>Trebuchet MS<span class="pl-pds">&quot;</span></span>, <span class="pl-c1">Arial</span>, <span class="pl-c1">Helvetica</span>, <span class="pl-c1">sans-serif</span>;
    <span class="pl-c1"><span class="pl-c1">color</span></span>: <span class="pl-c1">#5A698B</span>;
    <span class="pl-c1"><span class="pl-c1">margin</span></span>: <span class="pl-c1">4<span class="pl-k">px</span></span> <span class="pl-c1">0</span> <span class="pl-c1">5<span class="pl-k">px</span></span> <span class="pl-c1">8<span class="pl-k">px</span></span>;
}

  </pre>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Installing And Configuring PowerShell To Build Out a Linux-based High Performance Storage Infrastructure In The Cloud</title>
      <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/installing-and-configuring-powershell-to-build-out-a-linux-based-high-performance-storage-infrastructure-in-the-cloud</link>
      <pubDate>Sun, 25 Jan 2015 16:11:53 GMT</pubDate>
      <dc:creator><![CDATA[BrunoTerkaly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/brunoterkaly/2015/01/25/installing-and-configuring-powershell-to-build-out-a-linux-based-high-performance-storage-infrastructure-in-the-cloud/</guid>
      <description><![CDATA[This post is about provisioning a Linux VM (Ubuntu) with Premium storage. Most posts focus on...]]></description>
      <content:encoded><![CDATA[  <div class="markdown-body">   <p>This post is about provisioning a Linux VM (Ubuntu) with Premium storage. Most posts focus on Windows but the customers I work with our 100% Linux based. As of this post, the only definitive and testing scripting approach is with Windows-based PowerShell. I apologize for this and hope we get a more JavaScript version soon with Azure xPlat CLI. You can read about Linux-based tooling here: <a title="The Azure Cross-Platform Command-Line Interface" href="https://azure.microsoft.com/en-us/documentation/articles/xplat-cli/" target="_blank">The Azure Cross-Platform Command-Line Interface</a>. It is only a matter of time before PowerShell and the Cross-Plat tools are in parity.</p>    <p>Two other good reads are:</p>    <ul>     <li><a href="https://azure.microsoft.com/blog/2014/12/11/introducing-premium-storage-high-performance-storage-for-azure-virtual-machine-workloads/">Introducing Premium Storage: High-Performance Storage for Azure Virtual Machine Workloads</a></li>      <li><a href="https://azure.microsoft.com/en-us/documentation/articles/storage-premium-storage-preview-portal/">Premium Storage: High-Performance Storage for Azure Virtual Machine Workloads</a></li>   </ul>    <p>I have focused on providing guidance around Linux specifically.</p>    <p>Microsoft has recently gone into preview with an amazingly fast storage infrastructure. I am very excited about this because I am working with a lot of companies who want the fastest possible disc-based performance. MS’s new offering is called Azure premium storage.</p>    <p>I don't know if you've been paying attention, but MS is now offering unprecedented hardware.</p>    <p>Our G5 hardware includes the following:</p>    <table style="border-width: medium 1px 1px; border-style: none solid solid; border-color: currentcolor rgb(95, 95, 95) rgb(95, 95, 95); text-align: left; color: rgb(0, 0, 0); font-family: &quot;Segoe UI&quot;, tahoma, geneva, verdana, sans-serif; float: none; border-collapse: collapse;"><tbody>       <tr style="vertical-align: top; background-color: rgb(162, 238, 241);">         <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"> Cores</td>          <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"> 32</td>       </tr>        <tr style="vertical-align: top; background-color: rgb(242, 247, 247);">         <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"> RAM </td>          <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"> 448 GB</td>       </tr>        <tr style="vertical-align: top; background-color: rgb(162, 238, 241);">         <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"> Local SSD disk </td>          <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"> 6,144 GB</td>       </tr>        <tr style="vertical-align: top; background-color: rgb(242, 247, 247);">         <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"> Number of Attached drives available</td>          <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"> 64 1 TB drives</td>       </tr>        <tr style="vertical-align: top; background-color: rgb(162, 238, 241);">         <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"> Potential IOPS</td>          <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"> 64 x 500 IOPS or 32,000 IOPS</td>       </tr>     </tbody></table>    <p>No other leading public cloud vendor today is offering a machine of this caliber in the public cloud. The huge, local SSDs and the latest <a href="https://www.intel.com/content/www/us/en/processors/xeon/xeon-e5-solutions.html">Intel® Xeon® processor E5 </a>processor is state-of-the-art.</p>    <p><strong>The DS-Series supports Premium Storage</strong></p>    <p>Premium Storage stores data on the latest technology Solid State Drives (SSDs) whereas Standard Storage stores data on Hard Disk Drives (HDDs).</p>    <p>You can read about all the available hardware here: <a title="https://msdn.microsoft.com/en-us/library/azure/dn197896.aspx" href="https://msdn.microsoft.com/en-us/library/azure/dn197896.aspx" target="_blank">https://msdn.microsoft.com/en-us/library/azure/dn197896.aspx</a></p>    <p>Premium Storage is specifically designed for Azure Virtual Machine workloads requiring consistent high performance and low latency. This makes them highly suitable for I/O-sensitive SQL Server workloads. Premium Storage is currently available only for storing data on disks used by Azure Virtual Machines.</p>    <p><strong>Many ways to provision VMs and Storage</strong></p>    <p>There are numerous ways to provision resources in Azure. The future really belongs to the Azure resource manager (ARM), which represents a declarative way to build your infrastructure, as opposed to the traditional way of imperatively building out your infrastructure, step-by-step. </p>    <p>The ARM will enable you to build out a JSON-based text file that defines such things as networking, virtual machines, storage, services, and anything that you can do today manually through the portal or through scripting.</p>    <p>It is in <strong>preview</strong> today so we will postpone a discussion of the ARM.</p>    <p><strong>Two Scripting Environments</strong></p>    <p>You can read more about it here: <a href="https://azure.microsoft.com/en-us/documentation/articles/powershell-azure-resource-manager/">Using Windows PowerShell with Resource Manager</a></p>    <p>There are two scripting environments that support the automation for provisioning Azure infrastructure:</p>    <ol>     <li>       <p>Windows PowerShell</p>     </li>      <li>       <p>Cross-Platform CLI (xPlat CLI)</p>     </li>   </ol>    <p><strong>PowerShell is the most up-to-date</strong></p>    <p>PowerShell is the most complete and thorough way to provision resources. Microsoft works hard instead keeping this scripting language the most up to date. Unfortunately, the Xplat CLI lags behind the supported feature set. So this post will focus on PowerShell because it's the most complete.</p>    <h4 id="Installing_PowerShell" style="color: darkblue;">Installing PowerShell</h4>    <p>Linux users won't be very thrilled to know that PowerShell is only supported on a Windows platform. I must confess that although I like all scripting languages, PowerShell is beautiful and elegant. It's very compact and easy to write. My view is to use the best tool for the job, and if it means learning something new, so be it.</p>    <p><strong>But you aren’t done – Still need Azure PowerShell</strong></p>    <p>The section below will have you install Azure PowerShell, which adds to the generic version of PowerShell.</p>    <p>This guidance here probably provides the easiest way to get PowerShell onto your Windows environment:</p>    <p>Many versions of Windows are supported I will be using Windows 8.1 for this post.</p>    <table style="border-width: medium 1px 1px; border-style: none solid solid; border-color: currentcolor rgb(95, 95, 95) rgb(95, 95, 95); text-align: left; color: rgb(0, 0, 0); font-family: &quot;Segoe UI&quot;, tahoma, geneva, verdana, sans-serif; float: none; border-collapse: collapse;"><tbody>       <tr style="vertical-align: top; background-color: rgb(162, 238, 241);">         <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;">How to install PowerShell</td>          <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"><a href="https://technet.microsoft.com/en-us/library/hh847837.aspx#BKMK_InstallingOnWindows8andWindowsServer2012" target="_blank">https://technet.microsoft.com/en-us/library/hh847837.aspx#BKMK_InstallingOnWindows8andWindowsServer2012</a></td>       </tr>     </tbody></table>    <br />    <table style="border-width: medium 1px 1px; border-style: none solid solid; border-color: currentcolor rgb(95, 95, 95) rgb(95, 95, 95); text-align: left; color: rgb(0, 0, 0); font-family: &quot;Segoe UI&quot;, tahoma, geneva, verdana, sans-serif; float: none; border-collapse: collapse;"><tbody>       <tr style="vertical-align: top; background-color: rgb(162, 238, 241);">         <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;">Windows 8</td>          <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;">It is preinstalled, so &quot;forget about it.&quot; You are done.</td>       </tr>        <tr style="vertical-align: top; background-color: rgb(242, 247, 247);">         <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;">Other versions of Windows</td>          <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;">See link above</td>       </tr>     </tbody></table>    <h4 style="color: darkblue;">Installing the PowerShell Azure CmdLets</h4>    <p>Once the scripting environment of PowerShell is installed, your next step is to install the <strong>Azure CmdLets</strong>. This is basically the same as <strong>Azure PowerShell.</strong></p>    <p>How to install and configure <strong>Azure PowerShell</strong></p>    <p><a href="https://go.microsoft.com/fwlink/p/?LinkID=320552#">https://go.microsoft.com/fwlink/p/?LinkID=320552#</a></p>    <p>Once you have figured the <strong>Azure CmdLets</strong>, we are ready to start provisioning resources. For the moment, we will disregard the Azure resource manager, which hasn't been officially released at this time. I will circle back to the ARM in a future post.</p>    <h4 id="Running_PowerShell" style="color: darkblue;">Running PowerShell</h4>    <p>Once you have it installed, it's fairly simple to get the environment up and running. Let's begin by hitting the Windows key. You can also right mouse click on the Windows taskbar icon and select <strong>search</strong> . Type in <strong>PowerShell</strong> .</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5504.image001_4C114955.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5504.image001_5F00_4C114955.png"><img title="image001" style="margin: 0px; display: inline;" alt="image001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5047.image001_thumb_4DE19F1C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5047.image001_5F00_thumb_5F00_4DE19F1C.png" width="331" height="198" /></a> </p>    <p><em>Figure 1: Starting PowerShell</em> </p>    <p>Select <strong>Microsoft</strong> <strong>Azure</strong> <strong>PowerShell</strong> . You will see Figure 2, which is the <strong>Azure PowerShell command line</strong>.</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3618.image002_0B718D97.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3618.image002_5F00_0B718D97.png"><img title="image002" style="margin: 0px; display: inline;" alt="image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0456.image002_thumb_498FC9AA.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0456.image002_5F00_thumb_5F00_498FC9AA.png" width="750" height="361" /></a> </p>    <p><em>Figure 2: PowerShell Command Line</em> </p>    <p>At the command prompt type in <strong>ISE</strong> .</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6064.image003_36078B6B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6064.image003_5F00_36078B6B.png"><img title="image003" style="margin: 0px; display: inline;" alt="image003" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0027.image003_thumb_7BB136EB.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0027.image003_5F00_thumb_5F00_7BB136EB.png" width="750" height="361" /></a> </p>    <p><em>Figure 3: Starting the PowerShell IDE</em> </p>    <p>At this point the IDE will show up. This is a wonderful scripting environment that has a powerful help system built-in as well as integrated debugging.</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5280.image004_30DFE0C0.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5280.image004_5F00_30DFE0C0.jpg"><img title="image004" style="margin: 0px; display: inline;" alt="image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7612.image004_thumb_3965D0BB.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7612.image004_5F00_thumb_5F00_3965D0BB.jpg" width="720" height="413" /></a> </p>    <p><em>Figure 4: The PowerShell IDE</em> </p>    <p>Notice the various panes and a full debugging experience. The debugger is so useful so take a look here.</p>    <table style="border-width: medium 1px 1px; border-style: none solid solid; border-color: currentcolor rgb(95, 95, 95) rgb(95, 95, 95); text-align: left; color: rgb(0, 0, 0); font-family: &quot;Segoe UI&quot;, tahoma, geneva, verdana, sans-serif; float: none; border-collapse: collapse;"><tbody>       <tr style="vertical-align: top; background-color: rgb(162, 238, 241);">         <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;">How to debug Azure PowerShell Script</td>          <td style="padding: 5px 10px; height: 26px; border-top-color: rgb(95, 95, 95); border-left-color: rgb(95, 95, 95); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid;"><a href="https://technet.microsoft.com/en-us/library/dd819480.aspx" target="_blank">https://technet.microsoft.com/en-us/library/dd819480.aspx</a></td>       </tr>     </tbody></table>    <h4 id="Background_-_Premium_Resources" style="color: darkblue;">Background - Premium Resources</h4>    <p>MS has built specialized machines with built in caching technology, optimized to provide low read latency. As you know, there are four categories of VMs:</p>    <p>(1) A Series </p>    <p>(2) D Series</p>    <p>(3) DS Series</p>    <p>(4) G Series</p>    <p>The DS Series are currently (as of 1/23/2015) the VMs that support Premium Storage. Note that they can also leverage standard storage, just like the other 3 types of VMs. The point is that you must provision <strong>the DS series</strong> for <strong>Azure Premium Storage</strong>.</p>    <p><strong>Sign Up through your subscription</strong></p>    <p>It goes without saying that you will need an <strong>Azure subscription</strong> to get started. To sign up for <strong>Premium Storage</strong>, you will need to go to the Azure Preview page, and sign up for the <strong>Microsoft Azure Premium Storage</strong> service using one or more of your subscriptions. As subscriptions are approved for the Premium Storage preview, you will get an email notifying you of the approval.</p>    <p>Once you get approved, you can then go to the Microsoft Azure Preview Portal and create a new Premium Storage account using the approved subscription. </p>    <p><strong>Not all regions are created equal</strong></p>    <p>You need to pay special attention to providing the right information when provisioning Premium Storage. For example, Premium Storage is not available in all regions. You will notice this in my PowerShell code later in this post. Currently, Premium Storage is available for preview in the following regions:</p>    <ul>     <li>       <p>West US</p>     </li>      <li>       <p>East US 2</p>     </li>      <li>       <p>West Europe</p>     </li>   </ul>    <h3 id="Provisioning_Resources" style="color: darkblue;">Provisioning Resources</h3>    <p>We have completed the following:</p>    <ol>     <li>       <p>Installed PowerShell</p>     </li>      <li>       <p>Azure Cmdlets</p>     </li>      <li>       <p>Started PowerShell and brought up the IDE</p>     </li>   </ol>    <p>It is now time to use PowerShell to provision the appropriate <strong>VM</strong> and <strong>premium storage</strong>.</p>    <h4 id="Making_your_Azure_account_and_its_subscriptions_available_in_Windows_PowerShell" style="color: darkblue;">Making your Azure account and its subscriptions available in Windows PowerShell</h4>    <p>You need to tell Azure PowerShell about your subscription. The steps are below. You can learn more here:</p>    <p>I am using the <strong>Azure AD Method.</strong> You can learn more here:</p>    <p><a title="https://azure.microsoft.com/en-us/documentation/articles/install-configure-powershell/#Connect" href="https://azure.microsoft.com/en-us/documentation/articles/install-configure-powershell/#Connect" target="_blank">https://azure.microsoft.com/en-us/documentation/articles/install-configure-powershell/#Connect</a>&#160;</p>   <span class="codelanguage">PowerShell</span>    <div style="margin: 0em; padding: 4px; border: 2px solid navy; text-align: left; color: black; line-height: 9pt; overflow: visible; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: rgb(237, 238, 238);">     <pre style="margin: 0px; line-height: 1em;">Add-AzureAccount
  
$cred = Get-Credential

Add-AzureAccount -Credential $cred</pre>
  </div>

  <p>The steps above authenticates through Windows Azure Active Directory and downloads associated subscriptions.</p>

  <h4 id="Creating_a_storage_account" style="color: darkblue;">Creating a storage account</h4>

  <p>The following command creates a storage account<strong>.</strong> The storage account name is <strong>terkalystorage</strong> <strong>.</strong></p>

  <div style="margin: 0em; padding: 4px; border: 2px solid navy; text-align: left; color: black; line-height: 9pt; overflow: visible; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: rgb(237, 238, 238);">
    <pre style="margin: 0px; line-height: 1em;">New-AzureStorageAccount –StorageAccountName &quot;terkalystorage&quot; `
      -Location &quot;East US 2&quot; -Type &quot;Premium_LRS&quot;
    </pre>
  </div>

  <h3 id="Creating_a_DS_series_VM_with_a_storage_account" style="color: darkblue;">Creating a DS series VM with a storage account</h3>

  <p>We will now create a virtual machine to which we will attach our storage account. When you provision your virtual machine you specify the type of operating system you would like. To get a list of available operating systems, you will need to follow directions below.</p>

  <h4 id="Getting_a_list_of_available_operating_systems__virtual_machine_types" style="color: darkblue;">Getting a list of available operating systems (virtual machine types)</h4>

  <p>This is an awesome command that will list out list the available virtual machines from which you can choose. Notice that it outputs in <strong>grid</strong> format. See <strong>figure 5.</strong></p>
  <span class="codelanguage">PowerShell</span>

  <div style="margin: 0em; padding: 4px; border: 2px solid navy; text-align: left; color: black; line-height: 9pt; overflow: visible; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: rgb(237, 238, 238);">
    <pre style="margin: 0px; line-height: 1em;">Get-AzureVMImage | Select * | Out-Gridview -Passthru </pre>
  </div>

  <p>If you like to filter out only the Linux images:</p>
  <span class="codelanguage">PowerShell</span>

  <div style="margin: 0em; padding: 4px; border: 2px solid navy; text-align: left; color: black; line-height: 9pt; overflow: visible; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: rgb(237, 238, 238);">
    <pre style="margin: 0px; line-height: 1em;">Get-AzureVMImage | Select * | Where-Object {$_.OS -eq 'Linux'} `
    | Out-Gridview -Passthru   
    </pre>
  </div>

  <h4 id="Associated_the_current_storage_account" style="color: darkblue;">Associated the current storage account</h4>

  <p>I found this to be a little confusing and I'm not sure I still really fully understand it. This was a nasty challenge. You can read more here:</p>

  <p><a title="https://azure.microsoft.com/en-us/documentation/articles/storage-create-storage-account/" href="https://azure.microsoft.com/en-us/documentation/articles/storage-create-storage-account/" target="_blank">https://azure.microsoft.com/en-us/documentation/articles/storage-create-storage-account/</a></p>

  <div style="margin: 0em; padding: 4px; border: 2px solid navy; text-align: left; color: black; line-height: 9pt; overflow: visible; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: rgb(237, 238, 238);">
    <pre style="margin: 0px; line-height: 1em;">Set-AzureSubscription -SubscriptionName &quot;Windows Azure Internal Consumption&quot; ` -CurrentStorageAccount terkalystorage </pre>
  </div>
</div>

<p>Notice that the subscription name is easily obtained at the portal. Or you can use this command, which outputs the information to a text file. You can find the <strong>SubscriptionName</strong> there.</p>

<div style="margin: 0em; padding: 4px; border: 2px solid navy; text-align: left; color: black; line-height: 9pt; overflow: visible; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: rgb(237, 238, 238);">
  <pre style="margin: 0px; line-height: 1em;">Get-AzureSubscription | out-file c:\temp\sub.txt
  </pre>
</div>

<p>The <strong>terkalystorage</strong> part is based on the name you provided for your storage account in a previous step.</p>

<h4 id="Lets_get_a_list_of_available_Linux_VMs" style="color: darkblue;">Let's get a list of available Linux VMs</h4>

<p>In order to build a Linux (or Windows for that matter) <strong>vm</strong>, you will need the <strong>imagename</strong> <strong>.</strong> PowerShell can give you those image names pretty easily, even in a grid format, as discussed earlier.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5543.image005_6AF3CF01.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5543.image005_5F00_6AF3CF01.jpg"><img title="image005" style="margin: 0px; display: inline;" alt="image005" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4375.image005_thumb_57690011.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4375.image005_5F00_thumb_5F00_57690011.jpg" width="720" height="380" /></a> </p>

<p><em>Figure 5: PowerShell Output Grid</em> </p>

<p>Notice in the code below we found the image name of <strong>0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2.</strong> This is an Ubuntu image, x64, version 14.2.</p>

<p>The following commands creates a VM and associates the previously created storage account.</p>
<span class="codelanguage">PowerShell</span>

<div style="margin: 0em; padding: 4px; border: 2px solid navy; text-align: left; color: black; line-height: 9pt; overflow: visible; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: rgb(237, 238, 238);">
  <pre style="margin: 0px; line-height: 1em;">$storageAccount = &quot;terkalystorage&quot;
$adminName = &quot;YOUMAKETHISUP&quot;
$adminPassword = &quot;THISISYOURSECRET&quot;
$vmName =    &quot;terkalyfastvm&quot;
$location = &quot;East US 2&quot;
$imageName = &quot;0b11de9248dd4d87b18621318e037d37__RightImage-Ubuntu-14.04-x64-v14.2&quot;
$vmSize =    &quot;Standard_DS2&quot; 
$OSDiskPath = &quot;https://&quot; + $storageAccount + &quot;.blob.core.windows.net/vhds/&quot; + `
              $vmName + &quot;_OS_PIO.vhd&quot;
$vm = New-AzureVMConfig -Name $vmName -ImageName $imageName `
              -InstanceSize $vmSize -MediaLocation $OSDiskPath
Add-AzureProvisioningConfig -Linux -VM $vm -LinuxUser `
              $adminName -Password $adminPassword 
New-AzureVM -ServiceName $vmName -VMs $VM -Location $location
  </pre>
</div>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3250.image006_66A1F98F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3250.image006_5F00_66A1F98F.jpg"><img title="image006" style="margin: 0px; display: inline;" alt="image006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0003.image006_thumb_5146D4D8.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0003.image006_5F00_thumb_5F00_5146D4D8.jpg" width="750" height="490" /></a> </p>

<p><em>Figure 6: Provisioning the VM and linking Premium Storage</em> </p>

<h4 id="Summary" style="color: darkblue;">Summary</h4>

<p>We are done. Here is what we've created.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0207.image007_2E1BFAD7.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0207.image007_5F00_2E1BFAD7.png"><img title="image007" style="margin: 0px; display: inline;" alt="image007" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6471.image007_thumb_4641F5E3.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6471.image007_5F00_thumb_5F00_4641F5E3.png" width="446" height="183" /></a> </p>

<p><em>Figure 7: What we built</em> </p>

<p>Here is what it looks like in the portal.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4760.image008_20DA9326.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4760.image008_5F00_20DA9326.jpg"><img title="image008" style="margin: 0px; display: inline;" alt="image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2502.image008_thumb_2B9A7B2C.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2502.image008_5F00_thumb_5F00_2B9A7B2C.jpg" width="600" height="391" /></a> </p>

<p><em>Figure 8: Verifying the VM at the Portal</em> </p>

<p>And here is the storage account.</p>

<p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7318.image009_069F4B64.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7318.image009_5F00_069F4B64.jpg"><img title="image009" style="margin: 0px; display: inline;" alt="image009" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4135.image009_thumb_4EEC9133.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4135.image009_5F00_thumb_5F00_4EEC9133.jpg" width="600" height="242" /></a> </p>

<p><em>Figure 9: Verifying Storage at the portal</em></p>]]></content:encoded>
    </item>
    <item>
      <title>The Azure Portal A to Z</title>
      <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/the-azure-portal-a-to-z</link>
      <pubDate>Sat, 10 Jan 2015 14:56:31 GMT</pubDate>
      <dc:creator><![CDATA[BrunoTerkaly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/brunoterkaly/2015/01/10/the-azure-portal-a-to-z/</guid>
      <description><![CDATA[This is a post about the Azure platform at large. It attempts to explain it in its entirety,...]]></description>
      <content:encoded><![CDATA[<div class="markdown-body">   <p>This is a post about the Azure platform at large. It attempts to explain it in its entirety, using the Azure portal as the launching point for discussion. There are currently around 26 separate menu selections from the portal itself.</p>    <p>Each one of these menu items can be considered a career in itself. Think about machine learning, networking, big data, and much more.</p>    <p>Even though I am an insider at Microsoft, and have access to some of the product engineering teams, I am constantly challenged with keeping up. The rate of innovation now taking place can boggle the mind.</p>    <p>I created this post so that you could evaluate your own knowledge and find gaps or weaknesses. At the end of the post I try to do a little more drilling down into identity and storage, but I'm still scratching the surface. I hope you find this useful and I look forward to your comments.     <br /></p>    <ol>     <li>       <p>Deck built by Bruno Terkaly </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4544.image001_189A19EB.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4544.image001_5F00_189A19EB.jpg"><img title="image001" style="margin: 0px; display: inline;" alt="image001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5621.image001_thumb_33D272EC.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5621.image001_5F00_thumb_5F00_33D272EC.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Principal Software Engineer</li>          <li>Microsoft</li>          <li>Mobile/Cloud/Startup/Enterprise</li>       </ul>     </li>      <li>       <p>Understanding the whole platform </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6131.image002_1D132B63.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6131.image002_5F00_1D132B63.jpg"><img title="image002" style="margin: 0px; display: inline;" alt="image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6646.image002_thumb_117D6E24.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6646.image002_5F00_thumb_5F00_117D6E24.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Can you explain to a call all the different parts in the Azure portal?</li>       </ul>     </li>      <li>       <p>Microsoft engineering is on fire </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1682.image003_3B304C64.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1682.image003_5F00_3B304C64.jpg"><img title="image003" style="margin: 0px; display: inline;" alt="image003" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6724.image003_thumb_256B8569.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6724.image003_5F00_thumb_5F00_256B8569.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Microsoft's cloud offering, Azure, is growing at an exponential pace</li>       </ul>     </li>      <li>       <p>Number speak for themselves </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6761.image004_08F3B4EB.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6761.image004_5F00_08F3B4EB.jpg"><img title="image004" style="margin: 0px; display: inline;" alt="image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0876.image004_thumb_13B39CF1.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0876.image004_5F00_thumb_5F00_13B39CF1.jpg" width="750" height="421" /></a> </p>        <ul>         <li>The scale of the 19 public data centers is remarkable</li>       </ul>     </li>      <li>       <p>This is the portal that were walking through </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4061.image005_3C5499A9.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4061.image005_5F00_3C5499A9.jpg"><img title="image005" style="margin: 0px; display: inline;" alt="image005" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8176.image005_thumb_4231CDF3.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8176.image005_5F00_thumb_5F00_4231CDF3.jpg" width="750" height="421" /></a> </p>        <ul>         <li>It currently has 26 separate menu selections to choose from</li>          <li>There is a newer, more modern portal at <a href="https://portal.azure.com">https://portal.azure.com</a> (in preview)</li>       </ul>     </li>      <li>       <p>Azure Web Sites </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5635.image006_55E14838.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5635.image006_5F00_55E14838.jpg"><img title="image006" style="margin: 0px; display: inline;" alt="image006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2703.image006_thumb_7DA9DF06.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2703.image006_5F00_thumb_5F00_7DA9DF06.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Represents the most automated way to run websites</li>          <li>A migration assistant can aid in moving existing web sites over</li>          <li>This is essentially platform as a service</li>       </ul>     </li>      <li>       <p>Virtual Machines </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2022.image007_41A7E015.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2022.image007_5F00_41A7E015.jpg"><img title="image007" style="margin: 0px; display: inline;" alt="image007" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1832.image007_thumb_42A260A3.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1832.image007_5F00_thumb_5F00_42A260A3.jpg" width="750" height="421" /></a> </p>        <ul>         <li>The core for infrastructure as a service</li>          <li>This is where you provision linux and windows virtual machines</li>          <li>You choose your hardware, your operating system, and configure networking and storage</li>          <li>The high-end G5 machine is a 32 core, incredibly powerful piece of hardware</li>       </ul>     </li>      <li>       <p>Mobile Services </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2728.image008_2696C31A.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2728.image008_5F00_2696C31A.jpg"><img title="image008" style="margin: 0px; display: inline;" alt="image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4152.image008_thumb_7C4CACA0.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4152.image008_5F00_thumb_5F00_7C4CACA0.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Brings together a bunch of disparate services all in one place</li>          <li>It's about identity, storage, web services, and more</li>       </ul>     </li>      <li>       <p>Mobile Services </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8814.image009_61A531E9.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8814.image009_5F00_61A531E9.jpg"><img title="image009" style="margin: 0px; display: inline;" alt="image009" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0218.image009_thumb_5E92D3F4.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0218.image009_5F00_thumb_5F00_5E92D3F4.jpg" width="750" height="421" /></a> </p>        <ul>         <li>This is platform as a service</li>          <li>Has built-in health, monitoring, and patching</li>          <li>Operates the concept of upgrade and fault domains</li>          <li>Skills up and down very easily</li>          <li>Simple deployment model, directly from visual studio</li>       </ul>     </li>      <li>       <p>SQL Database </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0677.image010_5B16D3BB.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0677.image010_5F00_5B16D3BB.jpg"><img title="image010" style="margin: 0px; display: inline;" alt="image010" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8081.image010_thumb_6813447D.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8081.image010_5F00_thumb_5F00_6813447D.jpg" width="750" height="421" /></a> </p>        <ul>         <li>This is a relational database as a service</li>          <li>Extremely economical</li>          <li>Works with all the traditional tools, like SQL server management studio</li>       </ul>     </li>      <li>       <p>Storage </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5635.image011_0E0B8585.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5635.image011_5F00_0E0B8585.jpg"><img title="image011" style="margin: 0px; display: inline;" alt="image011" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3652.image011_thumb_1454ECC4.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3652.image011_5F00_thumb_5F00_1454ECC4.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Azure includes a variety of triply replicated, scalable, high performance data stores</li>          <li>All of them have a rest interface to support virtually any language or environment</li>          <li>Some include high performance options like azure premium storage</li>       </ul>     </li>      <li>       <p>The Portal </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5657.image012_0C5FDB13.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5657.image012_5F00_0C5FDB13.jpg"><img title="image012" style="margin: 0px; display: inline;" alt="image012" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1667.image012_thumb_0B8A05DA.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1667.image012_5F00_thumb_5F00_0B8A05DA.jpg" width="750" height="421" /></a> </p>        <ul>         <li>This is the portal that were walking through</li>          <li>It currently has 26 separate menu selections to choose from</li>       </ul>     </li>      <li>       <p>HDInsight </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8407.image013_53D9DC5A.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8407.image013_5F00_53D9DC5A.jpg"><img title="image013" style="margin: 0px; display: inline;" alt="image013" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5241.image013_thumb_3591B615.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5241.image013_5F00_thumb_5F00_3591B615.jpg" width="750" height="421" /></a> </p>        <ul>         <li>This is Microsoft's big data offering</li>          <li>Based on the HortonWorks implementation</li>          <li>Typically means you are programming in hive and pig</li>       </ul>     </li>      <li>       <p>Media Services </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4532.image014_344FADE7.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4532.image014_5F00_344FADE7.jpg"><img title="image014" style="margin: 0px; display: inline;" alt="image014" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4431.image014_thumb_0F547E1F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4431.image014_5F00_thumb_5F00_0F547E1F.jpg" width="750" height="421" /></a> </p>        <ul>         <li>This is about making media consumable from mobile and web</li>          <li>It is about streaming and encoding at scale</li>          <li>It is about DRM</li>          <li>There is also audio to text services</li>       </ul>     </li>      <li>       <p>Service Bus </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4846.image015_277A792B.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4846.image015_5F00_277A792B.jpg"><img title="image015" style="margin: 0px; display: inline;" alt="image015" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2273.image015_thumb_4D0917EE.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2273.image015_5F00_thumb_5F00_4D0917EE.jpg" width="750" height="421" /></a> </p>        <ul>         <li>The Service Bus is about messaging</li>          <li>It is about connecting computers, punching through firewalls</li>          <li>It supports the Pub/Sub Model with multiple producers and multiple message consumers</li>          <li>It supports sending push notifications through the Apple Push Notification Network, Google Push Notifications, Windows Notifications</li>       </ul>     </li>      <li>       <p>Visual Studio Online </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6406.image016_3C2704AF.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6406.image016_5F00_3C2704AF.jpg"><img title="image016" style="margin: 0px; display: inline;" alt="image016" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5736.image016_thumb_0ECA9041.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5736.image016_5F00_thumb_5F00_0ECA9041.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Supports the DevOps playing a role in building, deployment, load testing</li>          <li>Store test results for future analysis</li>       </ul>     </li>      <li>       <p>Cache </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8446.image017_641446D2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8446.image017_5F00_641446D2.jpg"><img title="image017" style="margin: 0px; display: inline;" alt="image017" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1376.image017_thumb_25B113D0.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1376.image017_5F00_thumb_5F00_25B113D0.jpg" width="750" height="421" /></a> </p>        <ul>         <li>The name Redis means REmote DIctionary Server</li>          <li>Redis is a data structure server </li>          <li>It is open-source, networked, in-memory, and stores keys with optional durability </li>          <li>The development of Redis has been sponsored by Pivotal Software since May 2013;[1] before that, it was sponsored by VMware</li>       </ul>     </li>      <li>       <p>The Portal </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8304.image018_2BFA7B0F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8304.image018_5F00_2BFA7B0F.jpg"><img title="image018" style="margin: 0px; display: inline;" alt="image018" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5852.image018_thumb_0B099919.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5852.image018_5F00_thumb_5F00_0B099919.jpg" width="750" height="421" /></a> </p>        <ul>         <li>This is the portal that were walking through</li>          <li>It currently has 26 separate menu selections to choose from</li>          <li>There is a newer, more modern portal at <a href="https://portal.azure.com">https://portal.azure.com</a> (in preview)</li>       </ul>     </li>      <li>       <p>BizTalk Services </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4251.image019_2C8B5959.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4251.image019_5F00_2C8B5959.jpg"><img title="image019" style="margin: 0px; display: inline;" alt="image019" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7723.image019_thumb_537E1AEE.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7723.image019_5F00_thumb_5F00_537E1AEE.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Typically use for B2B scenarios</li>          <li>Enables companies to automate business processes</li>          <li>Uses adapters which are tailored to communicate with different software systems used in an enterprise </li>          <li>It is about enterprise application integration, business process automation, business-to-business communication, message broker and business activity monitoring</li>       </ul>     </li>      <li>       <p>Recovery Services </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6507.image020_328FC9A9.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6507.image020_5F00_328FC9A9.jpg"><img title="image020" style="margin: 0px; display: inline;" alt="image020" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5315.image020_thumb_1D34A4F2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5315.image020_5F00_thumb_5F00_1D34A4F2.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Data recovery is critical</li>          <li>There is a Windows backup is as well as the DPM backup agent</li>          <li>You can use Microsoft system Center to back up data to Windows Azure</li>          <li>You will need to use or set up a certificate to work with Azure recovery services backup</li>          <li>This allows you to back up on premises Windows server to Azure</li>          <li>It involves a certificate ( download the vault credential)m the installation of a backup agent, and some simple configuration</li>       </ul>     </li>      <li>       <p>CDN </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5861.image021_38035BAF.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5861.image021_5F00_38035BAF.jpg"><img title="image021" style="margin: 0px; display: inline;" alt="image021" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3034.image021_thumb_74BAE43F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3034.image021_5F00_thumb_5F00_74BAE43F.jpg" width="750" height="421" /></a> </p>        <ul>         <li>A global solution for delivering high-bandwidth content</li>          <li>You can cash blobs or static web content</li>          <li>Better performance and user experiences for your users</li>          <li>Be prepared for instant high load, such as what occurs during a product launch</li>       </ul>     </li>      <li>       <p>Automation </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1325.image022_086A5E85.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1325.image022_5F00_086A5E85.jpg"><img title="image022" style="margin: 0px; display: inline;" alt="image022" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3480.image022_thumb_29EC1EC5.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3480.image022_5F00_thumb_5F00_29EC1EC5.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Automate frequent, time-consuming, error-prone cloud management tasks</li>          <li>Handle processes that span tools, systems, and departmental silos</li>       </ul>     </li>      <li>       <p>Scheduler </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2112.image023_190A0B86.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2112.image023_5F00_190A0B86.jpg"><img title="image023" style="margin: 0px; display: inline;" alt="image023" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0044.image023_thumb_2C4D52D6.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0044.image023_5F00_thumb_5F00_2C4D52D6.jpg" width="750" height="421" /></a> </p>        <ul>         <li>CDNManages the schedule for scripting</li>          <li>Coordinates the schedule among the many Azure services</li>          <li>A cloud scale Cron job, doesn't execute code, but invokes a service which executes code</li>          <li>Used indirectly versus service within Azure and directly by developer to invoke a service</li>          <li>Invoke big data jobs within HDInsight</li>       </ul>     </li>      <li>       <p>The Portal </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5633.image024_228A7C0F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5633.image024_5F00_228A7C0F.jpg"><img title="image024" style="margin: 0px; display: inline;" alt="image024" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4442.image024_thumb_1A956A5E.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4442.image024_5F00_thumb_5F00_1A956A5E.jpg" width="750" height="421" /></a> </p>        <ul>         <li>This is the portal that were walking through</li>          <li>It currently has 26 separate menu selections to choose from</li>       </ul>     </li>      <li>       <p>API Management </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8535.image025_5512FAE3.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8535.image025_5F00_5512FAE3.jpg"><img title="image025" style="margin: 0px; display: inline;" alt="image025" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8037.image025_thumb_5AF02F2D.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8037.image025_5F00_thumb_5F00_5AF02F2D.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Good for companies that want to sell an API or accelerate the adoption of your API by developers</li>          <li>Examples include making phone calls, sending SMS messages</li>          <li>Expose data and services for your products to other business partners</li>          <li>Create an integrated experience within portals</li>          <li>Make it easy to discover and use and have managed access</li>          <li>Supports authentication, throttling, rate limiting, quota setting</li>       </ul>     </li>      <li>       <p>Machine Learning </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0081.image026_27B68675.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0081.image026_5F00_27B68675.jpg"><img title="image026" style="margin: 0px; display: inline;" alt="image026" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6253.image026_thumb_024F23B8.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6253.image026_5F00_thumb_5F00_024F23B8.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Machine learning is a scientific discipline that explores the construction and study of algorithms that can learn from data</li>          <li>One great way to think about machine learning is to break down analytics into 3 questions: What happened?, What will happen? What should I do next?</li>          <li>Relevant to information workers, IT professionals, and data scientists</li>       </ul>     </li>      <li>       <p>Networks </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3005.image027_05F25FF7.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3005.image027_5F00_05F25FF7.jpg"><img title="image027" style="margin: 0px; display: inline;" alt="image027" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7827.image027_thumb_596BC0C1.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7827.image027_5F00_thumb_5F00_596BC0C1.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Extend your data Center into the cloud</li>          <li>Isolate/segregate networks to improve security (only VM's and services within the same virtual network can identify or connect to each other)</li>       </ul>     </li>      <li>       <p>Traffic Manager </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1524.image028_464D24C6.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1524.image028_5F00_464D24C6.jpg"><img title="image028" style="margin: 0px; display: inline;" alt="image028" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5125.image028_thumb_25C875C5.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5125.image028_5F00_thumb_5F00_25C875C5.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Monitors your endpoints to validate ongoing availability</li>          <li>Remap your domain name to route traffic manager domain name servers</li>       </ul>     </li>      <li>       <p>Remote App </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4162.image029_0BF6D047.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4162.image029_5F00_0BF6D047.jpg"><img title="image029" style="margin: 0px; display: inline;" alt="image029" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1715.image029_thumb_16B6B84D.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1715.image029_5F00_thumb_5F00_16B6B84D.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Azure RemoteApp helps employees stay productive anywhere, and on a variety of devices - Windows, Mac OS X, iOS, or Android</li>          <li>Your company's applications run on Windows Server in the Azure cloud, where they're easier to scale and update</li>          <li>Employees install Microsoft Remote Desktop clients on their Internet-connected laptop, tablet, or phone'and can then access applications as if they were running locally</li>          <li>Quickly ramp up and ramp down for seasonal workers</li>       </ul>     </li>      <li>       <p>The Portal </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1682.image030_6F12CCD3.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1682.image030_5F00_6F12CCD3.jpg"><img title="image030" style="margin: 0px; display: inline;" alt="image030" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4606.image030_thumb_032E7A0E.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4606.image030_5F00_thumb_5F00_032E7A0E.jpg" width="750" height="421" /></a> </p>        <ul>         <li>This is the portal that were walking through</li>          <li>It currently has 26 separate menu selections to choose from</li>          <li>There is a newer, more modern portal at <a href="https://portal.azure.com">https://portal.azure.com</a> (in preview)</li>       </ul>     </li>      <li>       <p>Management Services </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1856.image031_0258A4D5.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1856.image031_5F00_0258A4D5.jpg"><img title="image031" style="margin: 0px; display: inline;" alt="image031" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0250.image031_thumb_0835D91F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0250.image031_5F00_thumb_5F00_0835D91F.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Empower administrators to easily manage your entire cloud infrastructure from one place</li>          <li>View the status of a variety of wonders Azure services</li>          <li>You incident notifications and log files</li>       </ul>     </li>      <li>       <p>Active Directory </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2705.image032_0040C76E.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2705.image032_5F00_0040C76E.jpg"><img title="image032" style="margin: 0px; display: inline;" alt="image032" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0525.image032_thumb_340B4E70.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0525.image032_5F00_thumb_5F00_340B4E70.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Secure your web applications, web services, as well as mobile applications</li>          <li>Make use of REST API based identity Services, WS-Federation, SAML 2.0, OAuth 2.0, OpenID Connect</li>       </ul>     </li>      <li>       <p>Marketplace </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7024.image033_5CAC4B28.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7024.image033_5F00_5CAC4B28.jpg"><img title="image033" style="margin: 0px; display: inline;" alt="image033" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2548.image033_thumb_753E7929.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2548.image033_5F00_thumb_5F00_753E7929.jpg" width="750" height="421" /></a> </p>        <ul>         <li>If you're an ISV, sell your products and services to a global audience</li>          <li>Published an application service in the Azure Marketplace</li>          <li>Publish a virtual machine image in the Azure Marketplace</li>       </ul>     </li>      <li>       <p>StorSimple </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1856.image034_48B7D9F4.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1856.image034_5F00_48B7D9F4.jpg"><img title="image034" style="margin: 0px; display: inline;" alt="image034" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5383.image034_thumb_6E43E806.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5383.image034_5F00_thumb_5F00_6E43E806.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Azure StorSimple is an efficient, cost-effective, and manageable solution that eliminates many of the issues and expense associated with enterprise storage and data protection</li>          <li>It uses a proprietary device (the Microsoft Azure StorSimple device) and integrated management tools to provide a seamless view of all enterprise storage, including cloud storage</li>          <li>60-80% Lower Total Cost of Ownership (TCO)</li>          <li>Reduced cost associated with: Cloud integration, Data management, Media management, Data center resources </li>       </ul>     </li>      <li>       <p>Settings </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0640.image035_51CC1788.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0640.image035_5F00_51CC1788.jpg"><img title="image035" style="margin: 0px; display: inline;" alt="image035" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7853.image035_thumb_15A2DC91.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7853.image035_5F00_thumb_5F00_15A2DC91.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Specify co-administrators for your subscription</li>          <li>You how many cores, cloud services, and storage counts you have used so you know how much you have left</li>       </ul>     </li>      <li>       <p>The Portal </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1537.image036_674BE794.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1537.image036_5F00_674BE794.jpg"><img title="image036" style="margin: 0px; display: inline;" alt="image036" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7776.image036_thumb_7FDE1595.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7776.image036_5F00_thumb_5F00_7FDE1595.jpg" width="750" height="421" /></a> </p>        <ul>         <li>This is the portal that were walking through</li>          <li>It currently has 26 separate menu selections to choose from</li>          <li>There is a newer, more modern portal at <a href="https://portal.azure.com">https://portal.azure.com</a> (in preview)</li>       </ul>     </li>      <li>       <p>Azure: Security, Privacy and Compliance </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5582.image037_26428992.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5582.image037_5F00_26428992.jpg"><img title="image037" style="margin: 0px; display: inline;" alt="image037" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4035.image037_thumb_71388B12.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4035.image037_5F00_thumb_5F00_71388B12.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Azure invests heavily into security, privacy, and compliance</li>          <li>We will review how Azure reduces exposure, saves time, and improves global coverage</li>       </ul>     </li>      <li>       <p>Goals / Mission Statement </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3683.image038_6053E722.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3683.image038_5F00_6053E722.jpg"><img title="image038" style="margin: 0px; display: inline;" alt="image038" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2577.image038_thumb_28A3BDA3.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2577.image038_5F00_thumb_5F00_28A3BDA3.jpg" width="750" height="421" /></a> </p>        <ul>         <li>The goal is for businesses to spend less time engineering solutions for compliance purposes</li>       </ul>     </li>      <li>       <p>SOC 2 Audits </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6758.image039_6EB70B67.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6758.image039_5F00_6EB70B67.jpg"><img title="image039" style="margin: 0px; display: inline;" alt="image039" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7674.image039_thumb_3BE995A4.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7674.image039_5F00_thumb_5F00_3BE995A4.jpg" width="750" height="421" /></a> </p>        <ul>         <li>SOC 2 is focused on financial controls in Azure is SOC 2 compliant</li>          <li>Microsoft has retained a large public accounting firm as its auditor</li>       </ul>     </li>      <li>       <p>Why Azure is Secure </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1651.image040_4EC33AB0.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1651.image040_5F00_4EC33AB0.jpg"><img title="image040" style="margin: 0px; display: inline;" alt="image040" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5518.image040_thumb_7FE796B2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5518.image040_5F00_thumb_5F00_7FE796B2.jpg" width="750" height="421" /></a> </p>        <ul>         <li>24 hour monitored physical security. Datacenters are physically constructed, managed, and monitored to shelter data and services from unauthorized access as well as environmental threats</li>          <li>Monitoring and logging. Security is monitored with the aid of centralized monitoring, correlation, and analysis systems that manage the large amount of information generated by devices within the environment and providing timely alerts. In addition, multiple levels of monitoring, logging, and reporting are available to provide visibility to customers</li>          <li>Patching. Integrated deployment systems manage the distribution and installation of security patches. Customers can apply similar patch management processes for Virtual Machines deployed in Azure</li>          <li>Antivirus/Antimalware protection. Microsoft Antimalware is built-in to Cloud Services and can be enabled for Virtual Machines to help identify and remove viruses, spyware and other malicious software and provide real time protection. Customers can also run antimalware solutions from partners on their Virtual Machines</li>          <li>Intrusion detection and DDoS. Intrusion detection and prevention systems, denial of service attack prevention, regular penetration testing, and forensic tools help identify and mitigate threats from both outside and inside of Azure</li>          <li>Zero standing privileges. Access to customer data by Microsoft operations and support personnel is denied by default. When granted, access is carefully managed and logged. Data center access to the systems that store customer data is strictly controlled via lock box processes</li>          <li>Isolation. Azure uses network isolation to prevent unwanted communications between deployments, and access controls block unauthorized users. Virtual Machines do not receive inbound traffic from the Internet unless customers configure them to do so</li>          <li>Azure Virtual Networks. Customers can choose to assign multiple deployments to an isolated Virtual Network and allow those deployments to communicate with each other through private IP addresses</li>          <li>Encrypted communications. Built-in SSL and TLS cryptography enables customers to encrypt communications within and between deployments, from Azure to on-premises datacenters, and from Azure to administrators and users</li>          <li>Private connection. Customers can use ExpressRoute to establish a private connection to Azure datacenters, keeping their traffic off the Internet</li>          <li>Data encryption. Azure offers a wide range of encryption capabilities up to AES-256, giving customers the flexibility to implement the methods that best meets their needs</li>          <li>Identity and access. Azure Active Directory enables customers to manage access to Azure, Office 365 and a world of other cloud apps. Multi-Factor Authentication and access monitoring offer enhanced security</li>       </ul>     </li>      <li>       <p>Certifications </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5076.image041_6303933F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5076.image041_5F00_6303933F.jpg"><img title="image041" style="margin: 0px; display: inline;" alt="image041" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1321.image041_thumb_367CF40A.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1321.image041_5F00_thumb_5F00_367CF40A.jpg" width="750" height="421" /></a> </p>        <ul>         <li>There are a vast number of certifications that Azure has secured</li>       </ul>     </li>      <li>       <p>Bonus Material </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8611.image042_0825FF0E.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8611.image042_5F00_0825FF0E.jpg"><img title="image042" style="margin: 0px; display: inline;" alt="image042" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4834.image042_thumb_0C9F1086.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4834.image042_5F00_thumb_5F00_0C9F1086.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Mobile applications are becoming increasingly popular in the enterprise</li>          <li>This next section will focus on some of the solutions available to solve authentication challenges for mobile applications</li>       </ul>     </li>      <li>       <p>Mobile Applications </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2727.image043_7C269F8A.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2727.image043_5F00_7C269F8A.jpg"><img title="image043" style="margin: 0px; display: inline;" alt="image043" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3107.image043_thumb_6737ADC8.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3107.image043_5F00_thumb_5F00_6737ADC8.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Mobile applications are becoming increasingly popular in the enterprise</li>          <li>This next section will focus on some of the solutions available to solve authentication challenges for mobile applications</li>       </ul>     </li>      <li>       <p>Options for secure mobile </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6170.image044_161CF05E.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6170.image044_5F00_161CF05E.jpg"><img title="image044" style="margin: 0px; display: inline;" alt="image044" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3480.image044_thumb_634F7A9A.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3480.image044_5F00_thumb_5F00_634F7A9A.jpg" width="750" height="421" /></a> </p>        <ul>         <li>I have authored several articles in MSDN magazine around this topic</li>          <li>To the content here can be seen in its entirety at MSDN magazine</li>       </ul>     </li>      <li>       <p>Thinking about LOB Apps </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4762.image045_73EC96EA.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4762.image045_5F00_73EC96EA.jpg"><img title="image045" style="margin: 0px; display: inline;" alt="image045" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4667.image045_thumb_4C4B3C22.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4667.image045_5F00_thumb_5F00_4C4B3C22.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Key Characteristics of LOB/Mobile Apps</li>          <li>Identity as a key pillar</li>       </ul>     </li>      <li>       <p>Options for secure mobile </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2477.image046_72437D29.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2477.image046_5F00_72437D29.jpg"><img title="image046" style="margin: 0px; display: inline;" alt="image046" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8233.image046_thumb_788CE468.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8233.image046_5F00_thumb_5F00_788CE468.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Another important concern when running applications on personal devices is Network Location Awareness (NLA) </li>          <li>This means when a request comes in for a protected network resource, you can determine whether that request originated from outside the corporate network </li>          <li>NLA provides an extra layer of protection because it helps enforce additional rules, such as multi-factor authentication for requests generated outside the corporate network</li>          <li>To implement network location transparency typically means you create some sort of proxy Web service in a DMZ </li>          <li>A DMZ is a network that exposes an organization's external-facing services to a larger and untrusted network, like the Internet </li>          <li>You can use these proxies to trigger additional rules and insulate private resources on a network from outside access </li>       </ul>     </li>      <li>       <p>Identity Landscape </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8270.image047_3061B93D.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8270.image047_5F00_3061B93D.jpg"><img title="image047" style="margin: 0px; display: inline;" alt="image047" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7080.image047_thumb_0FDD0A3C.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7080.image047_5F00_thumb_5F00_0FDD0A3C.jpg" width="750" height="421" /></a> </p>        <ul>         <li>The enterprise identity landscape is large and complex</li>          <li>First, you have a variety of software technology to solve identity challenges</li>          <li>You need to take into account the identity stakeholders and what type of devices you wish to support</li>          <li>Then there are some industry-standard protocols and token formats that you need to adhere to</li>       </ul>     </li>      <li>       <p>BYOD - Registering Device </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2021.image048_416B0882.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2021.image048_5F00_416B0882.jpg"><img title="image048" style="margin: 0px; display: inline;" alt="image048" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4503.image048_thumb_3E5B3B3E.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4503.image048_5F00_thumb_5F00_3E5B3B3E.jpg" width="750" height="421" /></a> </p>        <ul>         <li>How to ensure secure, encrypted communication between corporate resources and the device itself </li>          <li>In the enterprise there needs to enforce some type of control over personal devices</li>          <li>But it is too to force users to fully domain join their devices </li>          <li>A less-extreme version of control is called a workplace join</li>          <li>Installing a device certificate as part of the provisioning process </li>          <li>Step 1 is to authenticate a user against a trusted directory service </li>          <li>Successful device provisioning (or registration) results in a JSON-based token on the device </li>          <li>The token can be used to ensure secure communication between users and the corporate network </li>       </ul>     </li>      <li>       <p>Azure Mobile Services </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4314.image049_4EF8578E.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4314.image049_5F00_4EF8578E.jpg"><img title="image049" style="margin: 0px; display: inline;" alt="image049" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3666.image049_thumb_4BE88A4A.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3666.image049_5F00_thumb_5F00_4BE88A4A.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Simple provisioning and management of tables for storing app data</li>          <li>Integration with notification services to deliver push notifications to your app</li>          <li>Integration with well-known identity providers for authentication</li>          <li>Granular control for authorizing access to tables</li>          <li>Custom business logic on the server</li>          <li>Integration with other cloud services</li>          <li>Supports the ability to scale a mobile service instance</li>          <li>Service monitoring and logging</li>       </ul>     </li>      <li>       <p>Azure Mobile Services </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0003.image050_2F0486D7.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0003.image050_5F00_2F0486D7.jpg"><img title="image050" style="margin: 0px; display: inline;" alt="image050" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6840.image050_thumb_24D57D1B.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6840.image050_5F00_thumb_5F00_24D57D1B.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Azure mobile services provides an easy workflow to provision secure mobile applications in the enterprise</li>          <li>Tokens can be saved directly to the key store of a mobile device so that a user does not need to continually login</li>       </ul>     </li>      <li>       <p>Azure Mobile Services </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7838.image051_4E6E69B0.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7838.image051_5F00_4E6E69B0.jpg"><img title="image051" style="margin: 0px; display: inline;" alt="image051" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6232.image051_thumb_31F69932.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6232.image051_5F00_thumb_5F00_31F69932.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Azure mobile services provides an easy workflow for iOS, android and Windows devices</li>          <li>The portal even provide some starter projects that are supported in Xcode, android studio, and Visual Studio</li>          <li>Azure mobile services provides constructs for identity, database storage, and web service back ends</li>       </ul>     </li>      <li>       <p>Active Directory Trust Relationships </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2313.image052_3EF309F4.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2313.image052_5F00_3EF309F4.jpg"><img title="image052" style="margin: 0px; display: inline;" alt="image052" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3365.image052_thumb_1E0227FE.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3365.image052_5F00_thumb_5F00_1E0227FE.jpg" width="750" height="421" /></a> </p>        <ul>         <li>The traditional approach of using trust relationships documented here</li>          <li>This can be a cumbersome process but does provide many advantages, like single sign-on</li>       </ul>     </li>      <li>       <p>Configure Active Directory </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5315.image053_789AC540.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5315.image053_5F00_789AC540.jpg"><img title="image053" style="margin: 0px; display: inline;" alt="image053" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0511.image053_thumb_2C654C43.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0511.image053_5F00_thumb_5F00_2C654C43.jpg" width="750" height="421" /></a> </p>        <ul>         <li>When provisioning your Azure mobile service backend, there are a few questions to answer</li>          <li>In return you will receive some metadata that you can encode directly into your mobile application</li>          <li>Allowed tenants, the app is only going to accept from this tenant.</li>          <li>Client id from the web app registration, app within the tenant</li>          <li>App url is what msdn magazine wants to expose</li>          <li>Add a user, or dirsync</li>          <li>Users from that domain have access to the app url</li>          <li>App is inside of tenant, giving to members of tenant</li>          <li>You could map a user from another tenant</li>       </ul>     </li>      <li>       <p>A deeper example </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1884.image054_18DA7D53.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1884.image054_5F00_18DA7D53.jpg"><img title="image054" style="margin: 0px; display: inline;" alt="image054" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4024.image054_thumb_5600C989.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4024.image054_5F00_thumb_5F00_5600C989.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Here is an example scenario whereby free text search is provided to a variety of rest capable client's</li>          <li>The specific diagram leverages Azure search, which is one of the services available similar to ElasticSearch</li>          <li>Notice that there are a variety of authentication mechanisms</li>          <li>Also notice that there is an abstraction layer of the web service that brokers the conversation to some of the other services within Azure</li>       </ul>     </li>      <li>       <p>Applications to Support Multiple Companies </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1665.image055_4275FA99.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1665.image055_5F00_4275FA99.jpg"><img title="image055" style="margin: 0px; display: inline;" alt="image055" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3617.image055_thumb_0889485E.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3617.image055_5F00_thumb_5F00_0889485E.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Azure active directory led to set up a variety of tenants or directory entries for specific companies</li>       </ul>     </li>      <li>       <p>ADFS versus Directory Sync </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6330.image056_6EB7A2DF.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6330.image056_5F00_6EB7A2DF.jpg"><img title="image056" style="margin: 0px; display: inline;" alt="image056" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2450.image056_thumb_44D9BF5B.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2450.image056_5F00_thumb_5F00_44D9BF5B.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Azure active directory provides directory sync, which enables you to take your on premises identities and migrate them to the cloud, offloading authentication away from your on premises infrastructure</li>          <li>This diagram also illustrates the use of ADFS 2.0, which can provide a single sign-on token directly from your on premises infrastructure. This may not be the ideal approach since it forces you to expose your corporate infrastructure to external applications</li>       </ul>     </li>      <li>       <p>Directory Sync - Authenticating in the Cloud </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3377.image057_4810C8A5.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3377.image057_5F00_4810C8A5.jpg"><img title="image057" style="margin: 0px; display: inline;" alt="image057" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0284.image057_thumb_3DDF2E38.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0284.image057_5F00_thumb_5F00_3DDF2E38.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Directory sync is a feature of Azure active directory that allows you to take your on premises identities and store them up in Azure data center, allowing applications from the Internet to authenticate, keeping your on premises directory services safe</li>       </ul>     </li>      <li>       <p>Using Hybrid Connections </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7506.image058_2B2CC532.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7506.image058_5F00_2B2CC532.jpg"><img title="image058" style="margin: 0px; display: inline;" alt="image058" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8831.image058_thumb_0F8AC9ED.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8831.image058_5F00_thumb_5F00_0F8AC9ED.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Hybrid connections are another technology from Microsoft that allows you to expose corporate resources to cloud hosted applications or mobile applications from the Internet</li>          <li>Websites and Mobile Services can access existing on-premises data and services securely</li>          <li>Multiple Websites or Mobile Services can share a Hybrid Connection to access an on-premises resource</li>          <li>Minimal TCP Ports are required to access your network</li>          <li>Applications using Hybrid Connections access only the specific on-premises resource that is published through the Hybrid Connection</li>          <li>Can connect to any on-premises resource that uses a static TCP port, such as SQL Server, MySQL, HTTP Web APIs, and most custom Web Services</li>          <li>Can be used with all frameworks supported by Azure Websites (.NET, PHP, Java, Python, Node.js) and Azure Mobile Services (Node.js, .NET)</li>       </ul>     </li>      <li>       <p>Using Service Bus Relays </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0447.image059_1397A870.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0447.image059_5F00_1397A870.jpg"><img title="image059" style="margin: 0px; display: inline;" alt="image059" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6685.image059_thumb_22CE113D.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6685.image059_5F00_thumb_5F00_22CE113D.jpg" width="750" height="421" /></a> </p>        <ul>         <li>The Azure service bus provides a relay mechanism, that makes it possible to have a peer-to-peer connection between two endpoints protected by firewalls</li>       </ul>     </li>      <li>       <p>Storage Overview </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4544.image060_6DC412BD.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4544.image060_5F00_6DC412BD.jpg"><img title="image060" style="margin: 0px; display: inline;" alt="image060" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7142.image060_thumb_089038CA.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7142.image060_5F00_thumb_5F00_089038CA.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Azure Storage Options</li>          <li>There are many types of storage options for the MS cloud. We will focus on Azure tables</li>          <li>Here is what we'll cover:</li>          <li>When to use Azure Tables</li>          <li>When are the appropriate to consider</li>          <li>Understanding that Azure Tables are collection of entities</li>          <li>Access Azure Tables directly or through a cloud application</li>          <li>Key Features of Azure Tables</li>          <li>Relationship between accounts, Tables, and entities</li>          <li>Efficient Inserts and Updates</li>          <li>Designing for scale</li>          <li>Query Design and Performance</li>          <li>Understanding Partition Keys</li>          <li>How data is partitioned</li>          <li>Coding considerations</li>          <li>Azure Table Query Concepts</li>          <li>Understanding TableServiceEntity/TableServiceContext</li>          <li>Additional Resources</li>       </ul>     </li>      <li>       <p>Tables, Blobs, Queues, DBs </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4442.image061_05EA0DCA.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4442.image061_5F00_05EA0DCA.jpg"><img title="image061" style="margin: 0px; display: inline;" alt="image061" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1106.image061_thumb_45B68500.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1106.image061_5F00_thumb_5F00_45B68500.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Understanding core pillars of storage</li>       </ul>     </li>      <li>       <p>Tables - When to use </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5857.image062_09211714.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5857.image062_5F00_09211714.jpg"><img title="image062" style="margin: 0px; display: inline;" alt="image062" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2086.image062_thumb_1B003B92.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2086.image062_5F00_thumb_5F00_1B003B92.jpg" width="750" height="421" /></a> </p>        <ul>         <li>When to use Azure tables</li>          <li>These are some typical use case scenarios for using Azure tables</li>          <li>Azure tables are optimized for capacity and performance (scale)</li>       </ul>     </li>      <li>       <p>Tables - When to use </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0827.image063_3AB1A60B.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0827.image063_5F00_3AB1A60B.jpg"><img title="image063" style="margin: 0px; display: inline;" alt="image063" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5483.image063_thumb_34F91D16.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5483.image063_5F00_thumb_5F00_34F91D16.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Azure Tables - When Appropriate</li>          <li>SQL Database does not scale infinately</li>          <li>If your code requires strong relational semantics, Azure tables are not appropriate. They don't allow for join statements</li>          <li>You can think of Azure tables as nothing more than a collection of objects. Note that each entity (similar to a row in a table) could have different attributes. In the diagram above, the second entity does not have a city property</li>          <li>One of the beauties of Azure Tables is that your can replicate across data centers, aiding in disaster revocery</li>       </ul>     </li>      <li>       <p>Tables - Conceptual </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0638.image064_348F7AD2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0638.image064_5F00_348F7AD2.jpg"><img title="image064" style="margin: 0px; display: inline;" alt="image064" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2728.image064_thumb_43C5E39F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2728.image064_5F00_thumb_5F00_43C5E39F.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Tables: A collection of entities</li>          <li>A table is a collection of entities</li>          <li>An entity is like an object. It has name/value pairs</li>          <li>An entity is kind of like a row in a relational database table, with the caveat that entities don't need to have the exact same attributes</li>       </ul>     </li>      <li>       <p>Tables - Rest-enabled </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6825.image065_47D2C222.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6825.image065_5F00_47D2C222.jpg"><img title="image065" style="margin: 0px; display: inline;" alt="image065" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4721.image065_thumb_6717F9A6.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4721.image065_5F00_thumb_5F00_6717F9A6.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Accessing Azure Table Storage From Azure</li>          <li>Any application that is capable of http is capable of communicating with Azure tables. That is because Azure tables are REST-based. This means a Java or PHP application can directly perform CRUD (create, read, update, delete) operations on an Azure Table</li>       </ul>     </li>      <li>       <p>Tables - Service Orientation </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0042.image066_3D378571.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0042.image066_5F00_3D378571.jpg"><img title="image066" style="margin: 0px; display: inline;" alt="image066" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1882.image066_thumb_5635E667.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1882.image066_5F00_thumb_5F00_5635E667.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Accessing Azure Table Storage From Azure</li>          <li>Azure cloud applications can be hosted in the same data center as the Azure Table Storage. The compelling point here is that the latency from the cloud application is very low and can read and update the data at very high speeds</li>       </ul>     </li>      <li>       <p>Tables - Partition Key / Row Key </p>        <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7142.image067_6EC81468.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7142.image067_5F00_6EC81468.jpg"><img title="image067" style="margin: 0px; display: inline;" alt="image067" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5468.image067_thumb_74A548B2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5468.image067_5F00_thumb_5F00_74A548B2.jpg" width="750" height="421" /></a> </p>        <ul>         <li>Designing For Scale </li>          <li>The Partition Key and RowKey are required properties for each entity. They play a key role on how the data is partitioned and scaled. They also determine performance for various queries. As mentioned previously, they also play a role in transactions (transactions cannot span Partition Keys)</li>          <li>How to issue efficient queries will be addressed later in this post</li>       </ul>     </li>      <li>       <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7077.image068_137E4D42.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7077.image068_5F00_137E4D42.jpg"><img title="image068" style="margin: 0px; display: inline;" alt="image068" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0552.image068_thumb_6A0A0C01.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0552.image068_5F00_thumb_5F00_6A0A0C01.jpg" width="750" height="421" /></a> </p>     </li>   </ol> </div>]]></content:encoded>
    </item>
    <item>
      <title>Installing Ruby On Rails On Ubuntu on Azure</title>
      <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/installing-ruby-on-rails-on-ubuntu-on-azure</link>
      <pubDate>Fri, 21 Nov 2014 09:41:38 GMT</pubDate>
      <dc:creator><![CDATA[BrunoTerkaly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/brunoterkaly/2014/11/21/installing-ruby-on-rails-on-ubuntu-on-azure/</guid>
      <description><![CDATA[I have a customer wanting to run their Rails stack on Azure. So I thought I'd explore what it...]]></description>
      <content:encoded><![CDATA[<meta charset="utf-8" />  <div class="markdown-body">I have a customer wanting to run their Rails stack on Azure. So I thought I'd explore what it takes to make that happen.    <p>Ruby on Rails is an application stack that provides developers with a framework to quickly create a variety of web applications.</p>    <h4 id="Starting_at_the_Azure_Portal" style="color: darkblue;">Starting at the Azure Portal</h4>    <p>The first step is to provision a VM in an Azure Data Center. You can automate this using PowerShell, Shell Script, JavaScript and more. But let's do it the easy, quick way - let's just click a few buttons on the portal.</p>    <p>Once you've logged then you simply navigate to the left menu bar and choose Virtual Machines. And in the lower left corner you can see the +NEW command.</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6622.image001_5FC210AC.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6622.image001_5F00_5FC210AC.jpg"><img title="image001" style="display: inline;" alt="image001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5670.image001_thumb_4D0D16F5.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5670.image001_5F00_thumb_5F00_4D0D16F5.jpg" width="750" height="425" /></a> </p>    <p><em>Figure 1: Creating your Ruby VM at the portal</em> </p>    <p>Notice that you can choose version 14.1 of Ubuntu. </p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8625.image002_3D6D0BE4.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8625.image002_5F00_3D6D0BE4.jpg"><img title="image002" style="margin: 0px; display: inline;" alt="image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4011.image002_thumb_240508AA.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4011.image002_5F00_thumb_5F00_240508AA.jpg" width="685" height="420" /></a> </p>    <p><em>Figure 2: Choosing Ubuntu</em> </p>    <p>In the next step you will name your VM. You will also need to provide a username and password. </p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4527.image003_6A81F8B2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4527.image003_5F00_6A81F8B2.jpg"><img title="image003" style="margin: 0px; display: inline;" alt="image003" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6507.image003_thumb_2CF49AE9.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6507.image003_5F00_thumb_5F00_2CF49AE9.jpg" width="561" height="696" /></a> </p>    <p><em>Figure 3: Naming your virtual machine</em> </p>    <p>The next screen is about specifying a cloud service that will act as a container to map incoming requests to the VM. We'll keep things simple for the moment and ignore some of these details. There is a lot of other tutorials and web properties that explain all that.</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1738.image004_482CF3EA.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1738.image004_5F00_482CF3EA.jpg"><img title="image004" style="margin: 0px; display: inline;" alt="image004" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4786.image004_thumb_75AE13AD.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4786.image004_5F00_thumb_5F00_75AE13AD.jpg" width="701" height="718" /></a> </p>    <p><em>Figure 4: Providing a location/data center for your virtual machine</em> </p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3731.image005_6A18566E.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3731.image005_5F00_6A18566E.jpg"><img title="image005" style="margin: 0px; display: inline;" alt="image005" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2766.image005_thumb_1EB8B2AA.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2766.image005_5F00_thumb_5F00_1EB8B2AA.jpg" width="750" height="26" /></a> </p>    <p><em>Figure 5: The Azure portal showing the our virtual machine is running</em> </p>    <h4 id="Remoting_into_Ubuntu" style="color: darkblue;">Remoting into Ubuntu</h4>    <p>The next step is about remoting in and installing software.</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6567.image006_3E678C72.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6567.image006_5F00_3E678C72.jpg"><img title="image006" style="margin: 0px; display: inline;" alt="image006" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4745.image006_thumb_4BCD9F78.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4745.image006_5F00_thumb_5F00_4BCD9F78.jpg" width="618" height="551" /></a> </p>    <p><em>Figure 6: Remoting into our virtual machine</em> </p>    <p>Because of the way we named our VM, here is the url to remote in:</p>    <p><a href="https://terkalyubuntu2.cloudapp.net">https://terkalyubuntu2.cloudapp.net</a></p>    <p>We can remote in with Putty, as seen in the figure below.</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4341.image007_273C11F4.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4341.image007_5F00_273C11F4.jpg"><img title="image007" style="margin: 0px; display: inline;" alt="image007" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5751.image007_thumb_26CFDEFF.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5751.image007_5F00_thumb_5F00_26CFDEFF.jpg" width="750" height="471" /></a> </p>    <p><em>Figure 7: Logged in and ready to start installing Ruby</em> </p>    <p>After logging in, your session should look like this:</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/3201.image008_622344BD.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/3201.image008_5F00_622344BD.jpg"><img title="image008" style="margin: 0px; display: inline;" alt="image008" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6443.image008_thumb_0B9A16AF.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6443.image008_5F00_thumb_5F00_0B9A16AF.jpg" width="643" height="242" /></a> </p>    <p><em>Figure 8: Getting to a Ruby command prompt</em> </p>    <h4 id="Adding_Ruby" style="color: darkblue;">Adding Ruby</h4>    <p>The next few steps are about installing Ruby. The first is to get CURL installed. cURL is a computer software project providing a library and command-line tool for transferring data using various protocols. It will be used to install RVM, the Ruby Version Manager. But RVM requires Gnu Privacy Guard, providing a way to verify signed binaries so you don't install bogus software.</p>    <div id="brunoSnippet" style="margin: 0px; padding: 0px; border: 1px solid silver; width: 97.5%; text-align: left; line-height: 10pt; overflow: scroll; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; cursor: text; direction: ltr; background-color: white;">     <table id="codeSnippet" style="margin: 0px; padding: 0px; border: 0px currentcolor; width: 100%; text-align: left; color: black; line-height: 11pt; overflow: visible; font-size: 9pt; direction: ltr;"><tbody>         <tr>           <td id="hdr" style="padding: 0px 0px 0px 10px; text-align: left; color: rgb(204, 0, 0); line-height: 1.2em; font-size: 14pt; font-weight: 600;" colspan="2">Installing Ruby Part 1</td>         </tr>          <tr id="myrowgrey" style="margin: 0em; padding: 0px; width: 18px; text-align: right; color: black; font-size: 9pt; font-weight: bolder; vertical-align: top; border-right-color: rgb(0, 255, 255); border-right-width: 3px; border-right-style: solid; direction: ltr; background-color: white;">           <td id="col1" style="width: 18px; text-align: right; color: rgb(175, 175, 175); font-size: 9pt; font-weight: bolder; border-right-color: rgb(0, 229, 0); border-right-width: 3px; border-right-style: solid; background-color: white;"><span id="mypre">1</span>               <br /><span id="mypre">2</span>               <br /></td>            <td id="col2" style="margin: 0em; padding: 0px; text-align: left; color: black; overflow: visible; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: white;"><span id="mypre">sudo apt-get update</span>               <br /><span id="mypregrey">sudo apt-get install curl</span>               <br /></td>         </tr>       </tbody></table>   </div>    <p>You will need to answer &quot;Y&quot; to move through these steps.</p>    <div id="brunoSnippet" style="margin: 0px; padding: 0px; border: 1px solid silver; width: 97.5%; text-align: left; line-height: 10pt; overflow: scroll; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; cursor: text; direction: ltr; background-color: white;">     <table id="codeSnippet" style="margin: 0px; padding: 0px; border: 0px currentcolor; width: 100%; text-align: left; color: black; line-height: 11pt; overflow: visible; font-size: 9pt; direction: ltr;"><tbody>         <tr>           <td id="hdr" style="padding: 0px 0px 0px 10px; text-align: left; color: rgb(204, 0, 0); line-height: 1.2em; font-size: 14pt; font-weight: 600;" colspan="2">Installing Ruby Part 2</td>         </tr>          <tr id="myrowgrey" style="margin: 0em; padding: 0px; width: 18px; text-align: right; color: black; font-size: 9pt; font-weight: bolder; vertical-align: top; border-right-color: rgb(0, 255, 255); border-right-width: 3px; border-right-style: solid; direction: ltr; background-color: white;">           <td id="col1" style="width: 18px; text-align: right; color: rgb(175, 175, 175); font-size: 9pt; font-weight: bolder; border-right-color: rgb(0, 229, 0); border-right-width: 3px; border-right-style: solid; background-color: white;"><span id="mypre">1</span>               <br /></td>            <td id="col2" style="margin: 0em; padding: 0px; text-align: left; color: black; overflow: visible; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: white;"><span id="mypre">gpg --keyserver hkp:[###1###]</span>               <br /></td>         </tr>       </tbody></table>   </div>    <p>The next few steps are quite simple. They use the Ruby version manager to get the latest copy on to our Ubuntu server. Curl is the tool that lets us accomplish some of this.</p>    <div id="brunoSnippet" style="margin: 0px; padding: 0px; border: 1px solid silver; width: 97.5%; text-align: left; line-height: 10pt; overflow: scroll; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; cursor: text; direction: ltr; background-color: white;">     <table id="codeSnippet" style="margin: 0px; padding: 0px; border: 0px currentcolor; width: 100%; text-align: left; color: black; line-height: 11pt; overflow: visible; font-size: 9pt; direction: ltr;"><tbody>         <tr>           <td id="hdr" style="padding: 0px 0px 0px 10px; text-align: left; color: rgb(204, 0, 0); line-height: 1.2em; font-size: 14pt; font-weight: 600;" colspan="2">Installing Ruby</td>         </tr>          <tr id="myrowgrey" style="margin: 0em; padding: 0px; width: 18px; text-align: right; color: black; font-size: 9pt; font-weight: bolder; vertical-align: top; border-right-color: rgb(0, 255, 255); border-right-width: 3px; border-right-style: solid; direction: ltr; background-color: white;">           <td id="col1" style="width: 18px; text-align: right; color: rgb(175, 175, 175); font-size: 9pt; font-weight: bolder; border-right-color: rgb(0, 229, 0); border-right-width: 3px; border-right-style: solid; background-color: white;"><span id="mypre">1</span>               <br /><span id="mypre">2</span>               <br /><span id="mypre">3</span>               <br /><span id="mypre">4</span>               <br /><span id="mypre">5</span>               <br /><span id="mypre">6</span>               <br /><span id="mypre">7</span>               <br /></td>            <td id="col2" style="margin: 0em; padding: 0px; text-align: left; color: black; overflow: visible; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: white;"><span id="mypre">\curl -L https:[###1###]</span>               <br /><span id="mypregrey">source ~/.rvm/scripts/rvm</span>               <br /><span id="mypre">rvm requirements</span>               <br /><span id="mypregrey">rvm install ruby</span>               <br /><span id="mypre">rvm use ruby --default</span>               <br /><span id="mypregrey">rvm rubygems current</span>               <br /><span id="mypre">gem install rails</span>               <br /></td>         </tr>       </tbody></table>   </div>    <p>At this point you are ready to start<strong>.</strong> You can bring up the Ruby command prompt with <strong>irb.</strong></p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8103.image009_31FBF9FA.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8103.image009_5F00_31FBF9FA.jpg"><img title="image009" style="margin: 0px; display: inline;" alt="image009" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1072.image009_thumb_51AAD3C2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1072.image009_5F00_thumb_5F00_51AAD3C2.jpg" width="288" height="72" /></a> </p>    <p><em>Figure 9: Hello world in Ruby</em> </p>    <p><strong>Hello</strong> <strong>world</strong> and Ruby is amazingly easy. You just type then hello <strong>world</strong> inside of quotes. No print command is needed.</p>    <h4 id="Conclusion" style="color: darkblue;">Conclusion</h4>    <p>At this stage we are done configuring Ruby. Perhaps the next post will take this a little step further and show what else can be done with Ruby. </p>    <p>There is a Ruby development Center where you can download the Azure SDK for Ruby:</p>    <p><a href="https://azure.microsoft.com/en-us/develop/ruby/">https://azure.microsoft.com/en-us/develop/ruby/</a></p> </div>]]></content:encoded>
    </item>
    <item>
      <title>How to use PowerShell to Build Azure Storage Connection Strings</title>
      <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/how-to-use-powershell-to-build-azure-storage-connection-strings</link>
      <pubDate>Wed, 20 Aug 2014 09:34:15 GMT</pubDate>
      <dc:creator><![CDATA[BrunoTerkaly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/brunoterkaly/2014/08/20/how-to-use-powershell-to-build-azure-storage-connection-strings/</guid>
      <description><![CDATA[I needed to create a bunch of connection strings to use in my code. But this can be error prone...]]></description>
      <content:encoded><![CDATA[  <div class="markdown-body">   <p>I needed to create a bunch of connection strings to use in my code. But this can be error prone and painful, especially if you have many data centers. In addition, you may decide to regenerate the primary storage key, in which case the whole nightmare would need to be repeated.</p>    <p>In my previous post, I illustrated how to provision a bunch of Azure storage accounts. So this post is a continuation from there to retrieve the primary storage keys. PowerShell syntax is really simple so it really doesn't require much explanation.</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7357.image001_28181887.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7357.image001_5F00_28181887.jpg"><img title="image001" style="display: inline;" alt="image001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7875.image001_thumb_1F2B16F9.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7875.image001_5F00_thumb_5F00_1F2B16F9.jpg" width="750" height="138" /></a> </p>    <p><em>Figure 1: Powershell output showing my connection strings</em> </p>    <p>Now I can just past into my app.config file for my Visual Studio project.</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/1018.image002_4C4003C7.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/1018.image002_5F00_4C4003C7.jpg"><img title="image002" style="display: inline;" alt="image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/2626.image002_thumb_1565AF81.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/2626.image002_5F00_thumb_5F00_1565AF81.jpg" width="338" height="350" /></a> </p>    <p><em>Figure 2: The Visual Studio solution that will use my connection string</em> </p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/7762.image003_77872B7F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/7762.image003_5F00_77872B7F.jpg"><img title="image003" style="display: inline;" alt="image003" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/6204.image003_thumb_74E1007F.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/6204.image003_5F00_thumb_5F00_74E1007F.jpg" width="750" height="156" /></a> </p>    <p><em>Figure 3: Updated App.config file</em> </p>    <div id="brunoSnippet" style="margin: 0px; padding: 0px; border: 1px solid silver; width: 97.5%; text-align: left; line-height: 10pt; overflow: scroll; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; cursor: text; direction: ltr; background-color: white;">     <table id="codeSnippet" style="margin: 0px; padding: 0px; border: 0px currentcolor; width: 100%; text-align: left; color: black; line-height: 11pt; overflow: visible; font-size: 9pt; direction: ltr;"><tbody>         <tr>           <td id="hdr" style="padding: 0px 0px 0px 10px; text-align: left; color: rgb(204, 0, 0); line-height: 1.2em; font-size: 14pt; font-weight: 600;" colspan="2"> Getting Storage Account Keys</td>         </tr>          <tr id="myrowgrey" style="margin: 0em; padding: 0px; width: 18px; text-align: right; color: black; font-size: 9pt; font-weight: bolder; vertical-align: top; border-right-color: rgb(0, 255, 255); border-right-width: 3px; border-right-style: solid; direction: ltr; background-color: white;">           <td id="col1" style="width: 18px; text-align: right; color: rgb(175, 175, 175); font-size: 9pt; font-weight: bolder; border-right-color: rgb(0, 229, 0); border-right-width: 3px; border-right-style: solid; background-color: white;"><span id="mypre">1</span>               <br /><span id="mypre">2</span>               <br /><span id="mypre">3</span>               <br /><span id="mypre">4</span>               <br /><span id="mypre">5</span>               <br /><span id="mypre">6</span>               <br /><span id="mypre">7</span>               <br /><span id="mypre">8</span>               <br /><span id="mypre">9</span>               <br /><span id="mypre">10</span>               <br /><span id="mypre">11</span>               <br /><span id="mypre">12</span>               <br /><span id="mypre">13</span>               <br /><span id="mypre">14</span>               <br /><span id="mypre">15</span>               <br /><span id="mypre">16</span>               <br /><span id="mypre">17</span>               <br /><span id="mypre">18</span>               <br /><span id="mypre">19</span>               <br /><span id="mypre">20</span>               <br /><span id="mypre">21</span>               <br /><span id="mypre">22</span>               <br /><span id="mypre">23</span>               <br /><span id="mypre">24</span>               <br /><span id="mypre">25</span>               <br /><span id="mypre">26</span>               <br /><span id="mypre">27</span>               <br /><span id="mypre">28</span>               <br /></td>            <td id="col2" style="margin: 0em; padding: 0px; text-align: left; color: black; overflow: visible; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: white;"><span id="mypre"></span>              <br /><span id="mypregrey"># A list of storage account names</span>               <br /><span id="mypre">$DataCenterList = @(</span>               <br /><span id="mypregrey">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalysoutheastasia&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;Southeast Asia&quot;</span>)</span>               <br /><span id="mypre">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalyenortheurope&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;North Europe&quot;</span>)</span>               <br /><span id="mypregrey">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalyeastus&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;East US&quot;</span>)</span>               <br /><span id="mypre">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalywestus&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;West US&quot;</span>)</span>               <br /><span id="mypregrey">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalyjapaneast&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;Japan East&quot;</span>)</span>               <br /><span id="mypre">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalycentralus&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;Central US&quot;</span>)</span>               <br /><span id="mypregrey">&#160;&#160;&#160;&#160;&#160;&#160;&#160; )</span>               <br /><span id="mypre"></span>              <br /><span id="mypregrey"># Loop through the storage accounts and get the primary storage key</span>               <br /><span id="mypre">ForEach($DC in $DataCenterList) {</span>               <br /><span id="mypregrey"></span>              <br /><span id="mypre"></span>              <br /><span id="mypregrey">&#160;&#160;&#160; Start-Sleep -s 1</span>               <br /><span id="mypre"></span>              <br /><span id="mypregrey">&#160;&#160;&#160; # get the storage key using the storage account name</span>               <br /><span id="mypre">&#160;&#160;&#160;&#160; $myStoreKey = (Get-AzureStorageKey –StorageAccountName $DC[0]).Primary </span>              <br /><span id="mypregrey">&#160;&#160;&#160; $part1 = <span style="color: rgb(255, 0, 255);">&quot;<add rgb(255,0,255);"="rgb(255,0,255);&quot;" key="&lt;/span&gt;&lt;span style=">&quot;&quot;</add></span>;</span>               <br /><span id="mypre">&#160;&#160;&#160; $part2 = <span style="color: rgb(255, 0, 255);">&quot;&quot;</span><span style="color: rgb(255, 0, 255);">&quot;&quot;</span></span>               <br /><span id="mypregrey">&#160;&#160;&#160; $part3 = <span style="color: rgb(128, 0, 128);">&quot; value=<span style="color: rgb(255, 0, 255);">&quot;&quot;</span>DefaultEndpointsProtocol=https;AccountName=&quot;</span>;</span>               <br /><span id="mypre">&#160;&#160;&#160; $part4 = <span style="color: rgb(255, 0, 255);">&quot;;AccountKey=&quot;</span>;</span>               <br /><span id="mypregrey">&#160;&#160;&#160; $part5 = <span style="color: rgb(255, 0, 255);">&quot;&quot;</span><span style="color: rgb(255, 0, 255);">&quot;/&gt;&quot;</span>;</span>               <br /><span id="mypre">&#160;&#160;&#160; # the connection string name is the same as the storage account anem</span>               <br /><span id="mypregrey">&#160;&#160;&#160; Write-Host($part1 + $DC[0] + $part2 + $part3 + $DC[0] + $part4 + $myStoreKey + $part5);</span>               <br /><span id="mypre">&#160;&#160; </span>              <br /><span id="mypregrey">}</span>               <br /></td>         </tr>       </tbody></table>   </div> </div>]]></content:encoded>
    </item>
    <item>
      <title>PowerShell to Automate Azure Storage Account Creation</title>
      <link>https://docs.microsoft.com/archive/blogs/brunoterkaly/powershell-to-automate-azure-storage-account-creation</link>
      <pubDate>Tue, 19 Aug 2014 18:40:23 GMT</pubDate>
      <dc:creator><![CDATA[BrunoTerkaly]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/brunoterkaly/2014/08/19/powershell-to-automate-azure-storage-account-creation/</guid>
      <description><![CDATA[Why would you want to click through a portal for 30 minutes if you could just create everything...]]></description>
      <content:encoded><![CDATA[  <div class="markdown-body">   <p>Why would you want to click through a portal for 30 minutes if you could just create everything programmatically? That's what inspired me to write some code. Getting Powershell setup is easy:</p>    <p><a href="https://azure.microsoft.com/en-us/documentation/articles/install-configure-powershell/">https://azure.microsoft.com/en-us/documentation/articles/install-configure-powershell/</a></p>    <p>Here is the output from running the provisioning process:</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8357.image001_0CB5D363.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8357.image001_5F00_0CB5D363.jpg"><img title="image001" style="display: inline;" alt="image001" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/0456.image001_thumb_7CA9955C.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/0456.image001_5F00_thumb_5F00_7CA9955C.jpg" width="600" height="232" /></a> </p>    <p><em>Figure 1: Provisioning Storage Accounts</em> </p>    <p>The code is crazy easy, as long as you remember the storage account name needs to be lower case. You'll get a weird error if you forget that.</p>    <h2 id="Getting_data_center_locations_is_easy" style="color: darkblue;">Getting data center locations is easy</h2>    <p>The command is <strong>Get-AzureLocation</strong></p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4186.image002_02F06BEB.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4186.image002_5F00_02F06BEB.jpg"><img title="image002" style="display: inline;" alt="image002" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/5584.image002_thumb_52C92127.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/5584.image002_5F00_thumb_5F00_52C92127.jpg" width="600" height="407" /></a> </p>    <p><em>Figure 2: The awesome PowerShell IDE</em> </p>    <p>You will get all the data centers and capabilities with one command. How awesome is that?</p>    <p><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/8750.image003_5BB8B366.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/8750.image003_5F00_5BB8B366.jpg"><img title="image003" style="display: inline;" alt="image003" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/13/13/metablogapi/4454.image003_thumb_28E8ACF2.jpg" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-13-13-metablogapi/4454.image003_5F00_thumb_5F00_28E8ACF2.jpg" width="600" height="220" /></a> </p>    <p><em>Figure 3: The Output of Get-AzureLocation</em> </p>    <h2 id="Provisioning_PowerShell_Code" style="color: darkblue;">Provisioning PowerShell Code</h2>    <div id="brunoSnippet" style="margin: 0px; padding: 0px; border: 1px solid silver; width: 97.5%; text-align: left; line-height: 10pt; overflow: scroll; font-family: &quot;Consolas&quot;, &quot;Bitstream Vera Sans Mono&quot;, &quot;Courier New&quot;, courier, monospace; font-size: 9pt; cursor: text; direction: ltr; background-color: white;">     <table id="codeSnippet" style="margin: 0px; padding: 0px; border: 0px currentcolor; width: 100%; text-align: left; color: black; line-height: 11pt; overflow: visible; font-size: 9pt; direction: ltr;"><tbody>         <tr>           <td id="hdr" style="padding: 0px 0px 0px 10px; text-align: left; color: rgb(204, 0, 0); line-height: 1.2em; font-size: 14pt; font-weight: 600;" colspan="2"> Provisioning Storage Accounts</td>         </tr>          <tr id="myrowgrey" style="margin: 0em; padding: 0px; width: 18px; text-align: right; color: black; font-size: 9pt; font-weight: bolder; vertical-align: top; border-right-color: rgb(0, 255, 255); border-right-width: 3px; border-right-style: solid; direction: ltr; background-color: white;">           <td id="col1" style="width: 18px; text-align: right; color: rgb(175, 175, 175); font-size: 9pt; font-weight: bolder; border-right-color: rgb(0, 229, 0); border-right-width: 3px; border-right-style: solid; background-color: white;"><span id="mypre">1</span>               <br /><span id="mypre">2</span>               <br /><span id="mypre">3</span>               <br /><span id="mypre">4</span>               <br /><span id="mypre">5</span>               <br /><span id="mypre">6</span>               <br /><span id="mypre">7</span>               <br /><span id="mypre">8</span>               <br /><span id="mypre">9</span>               <br /><span id="mypre">10</span>               <br /><span id="mypre">11</span>               <br /><span id="mypre">12</span>               <br /><span id="mypre">13</span>               <br /><span id="mypre">14</span>               <br /><span id="mypre">15</span>               <br /><span id="mypre">16</span>               <br /><span id="mypre">17</span>               <br /></td>            <td id="col2" style="margin: 0em; padding: 0px; text-align: left; color: black; overflow: visible; font-size: 9pt; font-weight: bolder; vertical-align: top; white-space: nowrap; direction: ltr; background-color: white;"><span id="mypre">$DataCenterList = @(</span>               <br /><span id="mypregrey">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalysoutheastasia&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;Southeast Asia&quot;</span>)</span>               <br /><span id="mypre">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalyenortheurope&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;North Europe&quot;</span>)</span>               <br /><span id="mypregrey">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalyeastus&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;East US&quot;</span>)</span>               <br /><span id="mypre">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalywestus&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;West US&quot;</span>)</span>               <br /><span id="mypregrey">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalyjapaneast&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;Japan East&quot;</span>)</span>               <br /><span id="mypre">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ,@(<span style="color: rgb(255, 0, 255);">&quot;terkalycentralus&quot;</span>, <span style="color: rgb(255, 0, 255);">&quot;Central US&quot;</span>)</span>               <br /><span id="mypregrey">&#160;&#160;&#160;&#160;&#160;&#160;&#160; )</span>               <br /><span id="mypre"></span>              <br /><span id="mypregrey">ForEach($DC in $DataCenterList) {</span>               <br /><span id="mypre"></span>              <br /><span id="mypregrey">&#160;&#160;&#160; Write-Host(<span style="color: rgb(255, 0, 255);">&quot;Provisioning &quot;</span> + $DC[1]);</span>               <br /><span id="mypre">&#160;&#160;&#160; Write-Host(<span style="color: rgb(255, 0, 255);">&quot; Description &quot;</span> + $DC[0]);</span>               <br /><span id="mypregrey">&#160;&#160;&#160; Start-Sleep -s 1</span>               <br /><span id="mypre"></span>              <br /><span id="mypregrey">&#160;&#160;&#160; New-AzureStorageAccount -StorageAccountName $DC[0] -Location $DC[1]</span>               <br /><span id="mypre">}</span>               <br /></td>         </tr>       </tbody></table>   </div> </div>  <h3>Conclusion </h3>  <p>It is really that easy to loop through an array and provision storage accounts all over the world. </p>]]></content:encoded>
    </item>
  </channel>
</rss>