<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Kenneth Ham</title>
    <description>Duty . Honor . Country</description>
    <link></link>
    <atom:link href="https://kennetham.com/feed.xml" rel="self" type="application/rss+xml" />
    
      <item>
        <title>&lt;b&gt;NTUC UFLX&lt;/b&gt; Workshop - Introduction to AI Chat Bots</title>
        
        
        <description>&lt;p&gt;I had the privileged to be invited by &lt;a href=&quot;https://www.ntuc.org.sg/wps/portal/up2/home/events/eventdetails?WCM_GLOBAL_CONTEXT=/content_library/ntuc/home/membership/progression/events/33b14edb-5b67-4897-b750-1be4bd4c7cc6&quot;&gt;NTUC UFLX&lt;/a&gt; to speak to the general public on Artificial Intelligence and Chat bots. I spoke two weeks back on &lt;a href=&quot;https://www.ntuc.org.sg/wps/portal/up2/home/eservices?ext=portal&amp;amp;product=event&amp;amp;extProdId=11766535&quot;&gt;AI-as-a-Service: How to integrate chatbots into your business&lt;/a&gt;, held at &lt;a href=&quot;http://padang.co/level3/&quot;&gt;Level3&lt;/a&gt; in collaboration with &lt;a href=&quot;http://padang.co&quot;&gt;Padang &amp;amp; Co&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Here is how Level3 looks like:&lt;br /&gt;&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/events/ntuc_uflx/IMG_20170830_172647.jpg&quot; alt=&quot;Level3 Reception&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Level3 Reception&lt;/h4&gt;
		  

		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/events/ntuc_uflx/IMG_20170830_172630.jpg&quot; alt=&quot;Level3 Unicorn Float&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Level3 Unicorn Float&lt;/h4&gt;
		  

		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/events/ntuc_uflx/IMG_20170830_171857.jpg&quot; alt=&quot;Level3 Open Event Space&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Level3 Open Event Space&lt;/h4&gt;
		  

		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/events/ntuc_uflx/IMG_20170830_171852.jpg&quot; alt=&quot;Unilever Offices&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Unilever Offices&lt;/h4&gt;
		  

		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/events/ntuc_uflx/IMG_20170830_171846.jpg&quot; alt=&quot;Co-working Space at Level3&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Co-working Space at Level3&lt;/h4&gt;
		  

		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;I had a private tour around Level3 co-working space, it’s a really nice place, good place to network, catch up with work and away from the city life.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Moving on, there were about a crowd of 20 who turned up spanning across different industries from IT to Marketing to students, etc. It was a good audience who had interest in knowing more about AI and chat bots.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
In summary, I shared on what is Artificial Intelligence (A) and Chat bots all about, why was there a sudden hype about AI and chat bots? I shared some of the use cases and future trends of where AI and chat bots could move towards independently or as a single entity. Following which, we took some time to discuss on issues at their respective workplace which could in turn use a chat bot for such scenarios. Finally, before ending the session, we dived slightly deeper into the brains behind chat bots and what drives chat bots to be “smart”.
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
I’ll be doing a series on Conversation-as-a-Platform in the next couple of months, and will be sharing some of the in-depth topics through blog and workshops.&lt;br /&gt;&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/events/ntuc_uflx/IMG-20170913-WA0011.jpg&quot; alt=&quot;Introduction to NTUC UFLX&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Introduction to NTUC UFLX&lt;/h4&gt;
		  

		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/events/ntuc_uflx/IMG-20170913-WA0009.jpg&quot; alt=&quot;Introduction to AI&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Introduction to AI&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Understanding the general audience&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/events/ntuc_uflx/IMG-20170913-WA0008.jpg&quot; alt=&quot;Overview&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Overview&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Sharing a brief overview of topics to be covered&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/events/ntuc_uflx/DSC_3888.jpg&quot; alt=&quot;What is AI?&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;What is AI?&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Explaining the concepts behind AI&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/events/ntuc_uflx/DSC_3887.jpg&quot; alt=&quot;AI Talk&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;AI Talk&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;More engaging with the audience on AI &amp;amp; Chat bots&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;I’ve attached the powerpoint presentation below for preview.&lt;/p&gt;
&lt;iframe src=&quot;https://kennethamgj-my.sharepoint.com/personal/kennetham_kennetham_com/_layouts/15/WopiFrame.aspx?sourcedoc={a4e40f9e-d51c-4280-92a6-2e9a96983df2}&amp;amp;action=embedview&amp;amp;wdAr=1.7777777777777777&quot; width=&quot;610px&quot; height=&quot;367px&quot; align=&quot;center&quot; frameborder=&quot;0&quot;&gt;これは、&lt;a target=&quot;_blank&quot; href=&quot;https://office.com/webapps&quot;&gt;Office Online&lt;/a&gt; の機能を利用した、&lt;a target=&quot;_blank&quot; href=&quot;https://office.com&quot;&gt;Microsoft Office&lt;/a&gt; の埋め込み型のプレゼンテーションです。&lt;/iframe&gt;
&lt;p&gt;Download: &lt;a href=&quot;https://kennethamgj-my.sharepoint.com/personal/kennetham_kennetham_com/_layouts/15/guestaccess.aspx?docid=0a4e40f9ed51c428092a62e9a96983df2&amp;amp;authkey=ARlYniWKixr4oR3R_-cPdE0&quot;&gt;How to Integrate Chat Bots into your business&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Cheers!&lt;/p&gt;
</description>
        
        <pubDate>Thu, 14 Sep 2017 10:00:00 +0000</pubDate>
        <link>https://kennetham.com/blog/2017/09/14/introduction-to-ai-chatbots-ntuc/</link>
        <guid isPermaLink="true">https://kennetham.com/blog/2017/09/14/introduction-to-ai-chatbots-ntuc/</guid>
      </item>
    
      <item>
        <title>&lt;b&gt;Microsoft MVP&lt;/b&gt; Award Kit is here!</title>
        
        
        <description>&lt;p&gt;It’s finally here! My &lt;a href=&quot;https://mvp.microsoft.com/en-us/PublicProfile/5002749?fullName=Kenneth%20%20Ham&quot;&gt;Microsoft Most Valuable Professional (MVP)&lt;/a&gt; Award Kit arrived today!&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/microsoft/mvp/IMG_20170912_201013.jpg&quot; alt=&quot;Microsoft MVP&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft MVP&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Azure MVP&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
So, what does it entail?&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/microsoft/mvp/IMG_20170912_195928.jpg&quot; alt=&quot;Microsoft MVP&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft MVP&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Top Box&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/microsoft/mvp/IMG_20170912_200134.jpg&quot; alt=&quot;Microsoft MVP&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft MVP&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Front Facing Box&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/microsoft/mvp/IMG_20170912_201300.jpg&quot; alt=&quot;Microsoft MVP&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft MVP&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Certificate&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/microsoft/mvp/IMG_20170912_201215.jpg&quot; alt=&quot;Microsoft MVP&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft MVP&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Certificate&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/microsoft/mvp/IMG_20170912_200701.jpg&quot; alt=&quot;Microsoft MVP&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft MVP&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;MVP Award&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
There are a number of items inside the huge box.&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Award Certificate signed by Microsoft CEO, Satya Nadella&lt;/li&gt;
  &lt;li&gt;MVP Badge&lt;/li&gt;
  &lt;li&gt;MVP stickers&lt;/li&gt;
  &lt;li&gt;MVP Lapel Pin&lt;/li&gt;
  &lt;li&gt;MVP Medal&lt;/li&gt;
  &lt;li&gt;MVP FY Award Ring&lt;/li&gt;
  &lt;li&gt;MVP Important Information
&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In my previous &lt;a href=&quot;https://kennetham.com/blog/2017/09/04/microsoft-azure-mvp/&quot;&gt;article&lt;/a&gt;, I shared about some of the benefits you get as a MVP. The upcoming MVP Community Connect held in South Korea during Novemeber will be a good chance to meet Southeast Asia’s MVPs! I can’t wait to fly with Microsoft to various countries to hold talks &amp;amp; workshops for various communities around the world!&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Cheers!&lt;/p&gt;
</description>
        
        <pubDate>Tue, 12 Sep 2017 21:00:00 +0000</pubDate>
        <link>https://kennetham.com/blog/2017/09/12/microsoft-mvp-award-kit/</link>
        <guid isPermaLink="true">https://kennetham.com/blog/2017/09/12/microsoft-mvp-award-kit/</guid>
      </item>
    
      <item>
        <title>Microsoft Azure MVP</title>
        
        
        <description>&lt;p&gt;It’s finally here! I received an email from Microsoft that I am awarded the prestigious &lt;a href=&quot;https://mvp.microsoft.com/en-us/PublicProfile/5002749?fullName=Kenneth%20%20Ham&quot;&gt;Microsoft Most Valuable Professional (MVP) Award&lt;/a&gt;. I was awarded in the area of Microsoft Azure for my expertise, community engagements, as well as business engagements in Azure &amp;amp; AI.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/microsoft/mvp/Microsoft_Azure_MVP.png&quot; alt=&quot;Microsoft MVP&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft MVP&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Azure MVP&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
I’m really proud that Microsoft recognizes what I do for the community. It has been a long journey with Microsoft. I remembered it all began in 2008, going through a series of interviews before being selected as a Microsoft Student Partner. Similar to MVP, MSP reaches out to students within our campus. Ever since then, I’ve been working on various projects with Microsoft, locally and globally, to evangelize on various technologies and products.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Today, marks a new milestone, I’m really excited and honored to be a part of this amazing community. So, what’s next?&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
&lt;b&gt;NDA&lt;/b&gt; - Being a MVP, I had to sign an electronic NDA and behavior guidelines which provide MVPs the opportunity to have direct access with Microsoft Product Groups and some behind-the-scenes stuff.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Distribution Lists&lt;/b&gt; - This is one of the coolest thing after signing the eNDA. It’s getting access to internal distribution lists with lots of fun people, insights and technical discussions on Microsoft products. Being in the midst of some of the brightest minds around the world, it’s one of the best avenues to soak in deep technical discussions and the understanding the thought process / solutions.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;MSDN Subscription&lt;/b&gt; - MVP get MSDN subscription to access a whole range of Microsoft product license and USD$150/month Azure Credits.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Office 365 E3 Subscription&lt;/b&gt; - MVP get Office 365 E3 subscription, offering cloud-powered connection and control to Microsoft Office applications and tools anywhere across your devices for powerful collaboration. Microsoft Office MVPs receive a 25 seat subscription, whereas for the rest of the MVP receive a 5 seat subscription.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
These are some of the offerings &amp;amp; benefits of being a MVP! There are lots more which I wouldn’t list especially those like extended Azure credits.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
I can’t wait for more exciting journey with Microsoft MVP!&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Cheers!&lt;/p&gt;
</description>
        
        <pubDate>Mon, 04 Sep 2017 12:00:00 +0000</pubDate>
        <link>https://kennetham.com/blog/2017/09/04/microsoft-azure-mvp/</link>
        <guid isPermaLink="true">https://kennetham.com/blog/2017/09/04/microsoft-azure-mvp/</guid>
      </item>
    
      <item>
        <title>Free Microsoft eBooks Giveaway</title>
        
        
        <description>&lt;p&gt;Microsoft Director of Sales Excellence, &lt;a href=&quot;https://social.msdn.microsoft.com/profile/Eric+Ligman&quot;&gt;Eric Ligman&lt;/a&gt; is giving away millions of Microsoft eBooks to “Thank you” for being a reader of his blog as well as a partner of Microsoft!&lt;/p&gt;

&lt;p&gt;Grab yours today! &lt;a href=&quot;https://blogs.msdn.microsoft.com/mssmallbiz/2017/07/11/largest-free-microsoft-ebook-giveaway-im-giving-away-millions-of-free-microsoft-ebooks-again-including-windows-10-office-365-office-2016-power-bi-azure-windows-8-1-office-2013-sharepo/&quot;&gt;Microsoft Free eBooks Giveaway&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;
</description>
        
        <pubDate>Wed, 19 Jul 2017 12:00:00 +0000</pubDate>
        <link>https://kennetham.com/blog/2017/07/19/free-microsoft-ebooks-giveaway/</link>
        <guid isPermaLink="true">https://kennetham.com/blog/2017/07/19/free-microsoft-ebooks-giveaway/</guid>
      </item>
    
      <item>
        <title>Unpacking the magic behind Azure Bot Service (Part 2)</title>
        
        
        <description>&lt;h1 id=&quot;recap&quot;&gt;Recap&lt;/h1&gt;

&lt;p&gt;Previously I’ve shared on the what Azure Bot Service is and unpacking the services running behind Azure Bot Service. Today, we’ll be exploring more towards creating our own Bot Service with Azure services.&lt;/p&gt;

&lt;h2 id=&quot;azure-resources&quot;&gt;Azure resources&lt;/h2&gt;

&lt;p&gt;When you create a bot by using the Azure Bot Service templates (Basic, Form, Language Understanding, Proactive or Q&amp;amp;A), several Azure resources are automatically created and added to your resource group. By default, these Azure resources are already configured to enable a very simple proactive messaging scenario.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Resource&lt;/th&gt;
      &lt;th&gt;Description&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Azure Storage&lt;/td&gt;
      &lt;td&gt;Used to create the queue.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Azure Function App&lt;/td&gt;
      &lt;td&gt;A &lt;code class=&quot;highlighter-rouge&quot;&gt;queueTrigger&lt;/code&gt; is an Azure Function that is triggered whenever there is a message pushed in the queue. It communicates to the Azure Bot Service by using &lt;a href=&quot;https://docs.botframework.com/en-us/restapi/directline3/#navtitle&quot; target=&quot;_blank&quot;&gt;Direct Line&lt;/a&gt;. This function uses botframework binding to send the message as part of the trigger’s payload. The function forwards the user’s message as-is from the queue.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Azure Bot Service&lt;/td&gt;
      &lt;td&gt;Your bot. Contains the logic that receives the message from user, adds the message to the Azure queue, receives triggers from Azure Function, and sends back the message it received via trigger’s payload.&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;process-overview&quot;&gt;Process overview&lt;/h2&gt;

&lt;p&gt;This is the architecture diagram on how triggered events work and how user messages are handled end-to-end.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/azure-bot-proactive-diagram.png&quot; alt=&quot;Microsoft Azure&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Bot Service Overview&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Step 1 - The process begins when the user sends a message to your bot via Bot Framework Servers.&lt;br /&gt;
Step 2 - The bot receives the message from the user.&lt;br /&gt;
Step 3 - The bot adds the message to the Azure Storage Queue.&lt;br /&gt;
Step 4 - The bot notifies the user (via the Bot Framework Servers) that the message has been queued.&lt;br /&gt;
Step 5 - The &lt;code class=&quot;highlighter-rouge&quot;&gt;queueTrigger&lt;/code&gt; Function will be triggered automatically after the message has been added to the queue storage.&lt;br /&gt;
Step 6 - The message is removed from the queue storage and sent back with the attached recipient info via DirectLine endpoint.&lt;br /&gt;
Step 7 - The bot receives the message from the trigger function.&lt;br /&gt;
Step 8 - The bot sends a proactive message to the user.&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;code-walkthrough&quot;&gt;Code Walkthrough&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/Microsoft/bot-framework-docs/blob/master/articles/includes/code/azure-bot-service-template-proactive.js#handleMessageFromFunction&quot; target=&quot;_blank&quot;&gt;Javascript&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/Microsoft/bot-framework-docs/blob/master/articles/includes/code/azure-bot-service-template-proactive.cs#handleMessageFromFunction&quot; target=&quot;_blank&quot;&gt;C#&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Now that you have seen the resources required to build Bot Service, let’s try to deploy the resources on our own. However, that being said, the manual creation requires some additional work to be done. The breakdown is as follows:&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Step 1 - Create an Azure Function to host your bot server.&lt;br /&gt;
Step 2 - Create a Storage account with Queue Storage for &lt;code class=&quot;highlighter-rouge&quot;&gt;queueTrigger&lt;/code&gt;.&lt;br /&gt;
Step 3 - Create an Azure Function to receive the &lt;code class=&quot;highlighter-rouge&quot;&gt;queueTrigger&lt;/code&gt; from Queue and send the message to Bot Framework.&lt;br /&gt;
Step 4 - Link Bot Framework credentials to Bot Function.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2 id=&quot;whats-different&quot;&gt;What’s different?&lt;/h2&gt;

&lt;p&gt;Let’s break down the process. Based on the architecture diagram below, Bot Service places the entire template or bot server codes into Azure Function. Inside the Bot Function codes, each message that is received from Bot Framework is queued into Azure Queue Storage. Subsequently, the other Function will be used to trigger on new message in queue, sending it directly to Bot Framework via DirectLine. Additionally, you could use Visual Studio Team Services (VSTS) or Git repository to ensure continous integration to your Functions or App Service. This is Azure Bot Service’s deployment.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/azure_bot_service_architecture.png&quot; alt=&quot;Microsoft Azure&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Bot Service Architecture&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;We decided to dive deeper into our research and explore an alternative solution.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 id=&quot;why-did-i-thought-of-that&quot;&gt;&lt;b&gt;Why did I thought of that?&lt;/b&gt;&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;I wanted to keep Azure Function doing just one task – which is to forward the message to my existing App Service that runs my bot server. Without disrupting the current architecture, I wanted a solution that could achieve just that. Hence, I came up with this idea.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
The architecture diagram below uses &lt;i&gt;&lt;u&gt;TWO&lt;/u&gt;&lt;/i&gt; Azure Functions and an App Service to function the bot. The only difference here is, instead of putting the entire bot logic and bot codes in a Function, we deploy that to Azure App Service. User messages get sent to Microsoft Bot Framework will be send a post request of the message to Azure Function. Azure Function will forward the message to the App Service. Here, App Service will process the business logic and then trigger the reply to Azure Queue Storage. From this point on, it functions the same as the earlier scenario.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/bot_architecture.png&quot; alt=&quot;Microsoft Azure&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;New Bot Service Design Architecture&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;h1 id=&quot;issue-1&quot;&gt;Issue 1:&lt;/h1&gt;

&lt;p&gt;If you attempt to forward the message to App Service, there are a few things to take note of:&lt;br /&gt;&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Ensure that you require the &lt;code class=&quot;highlighter-rouge&quot;&gt;https&lt;/code&gt; module&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;Posting &lt;b&gt;ONLY&lt;/b&gt; Body request will not work. You will need to also capture the &lt;i&gt;Authorization Headers&lt;/i&gt; from Bot Framework and forward that to App Service as well&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A sample gist is provided here, &lt;a href=&quot;https://gist.github.com/kennetham/bda6601a9a740d5666905da31794ae37&quot; target=&quot;_blank&quot;&gt;Azure Function Gist&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;issue-2&quot;&gt;Issue 2:&lt;/h1&gt;

&lt;p&gt;For the second Azure Function which is used to send the message back to Bot Framework via DirectLine, you have to configure under Function Apps &lt;code class=&quot;highlighter-rouge&quot;&gt;Platform features&lt;/code&gt;.&lt;br /&gt;&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/Function_App_Platform_Config.png&quot; alt=&quot;Microsoft Azure&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Function Apps Platform features configuration&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Click on &lt;code class=&quot;highlighter-rouge&quot;&gt;Application Settings&lt;/code&gt;. You must add the DirectLine Secret Key here as &lt;code class=&quot;highlighter-rouge&quot;&gt;AzureWebJobsBotFrameworkDirectLineSecret&lt;/code&gt; together with the secret key under &lt;code class=&quot;highlighter-rouge&quot;&gt;Value&lt;/code&gt;. This secret key can be retrieved from Bot Framework Channel Settings under DirectLine.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/Function_Apps_Application_Settings.png&quot; alt=&quot;Microsoft Azure&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Application Settings&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;By default, you should be able to enter your DirectLine Key under Bot Framework Output which should be retrieved by the Function. However, as to the date of testing, Bot Framework output is still in &lt;i&gt;Preview&lt;/i&gt;, hence it might not work as designed yet.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/DirectLine_Function_App.png&quot; alt=&quot;Microsoft Azure&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;DirectLine Key in Bot Framework Output&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
Now, here are the “secrets” behind building Azure Bot Service manually. Feel free to try it out!&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Moving on from here, you might have further questions and thoughts on, which architecture is better, which design serves me better, hich architecture would you recommend, what’s the speed consideration and so on. I will discuss these thoughts in another article.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Cheers!&lt;/p&gt;

</description>
        
        <pubDate>Mon, 03 Jul 2017 15:00:00 +0000</pubDate>
        <link>https://kennetham.com/blog/2017/07/03/unpacking-the-magic-behind-azure-bot-service-part-2/</link>
        <guid isPermaLink="true">https://kennetham.com/blog/2017/07/03/unpacking-the-magic-behind-azure-bot-service-part-2/</guid>
      </item>
    
      <item>
        <title>Unpacking the magic behind Azure Bot Service</title>
        
        
        <description>&lt;p&gt;&lt;a href=&quot;https://azure.microsoft.com/en-us/services/bot-service/&quot;&gt;Azure Bot Service&lt;/a&gt; is an intelligent , serverless bot service that scales on demand. It is an integrated environment that is purpose-built for bot development, enabling developers to build, connect, test, deploy, and manage bots, all from one place. Powered by &lt;a href=&quot;https://botframework.com&quot;&gt;Microsoft Bot Framework&lt;/a&gt; and &lt;a href=&quot;https://azure.microsoft.com/en-us/services/functions/&quot;&gt;Azure Functions&lt;/a&gt;, which means that your bot will run in a serverless environment on Azure that will scale based upon demand.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Azure Bot Service is an integrated environment that utilizes the following services:&lt;br /&gt;&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://azure.microsoft.com/en-us/services/app-service/&quot;&gt;Azure App Service&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://azure.microsoft.com/en-us/services/functions/&quot;&gt;Azure Functions&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://azure.microsoft.com/en-us/services/storage/&quot;&gt;Azure Storage&lt;/a&gt; - Primarily Queue Storage for Queue Function Trigger&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://azure.microsoft.com/en-us/services/application-insights/&quot;&gt;Azure Application Insights&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://botframework.com&quot;&gt;Microsoft Bot Framework&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;br /&gt;
Here are the steps to create a Bot Service. Bot Service is currently in &lt;i&gt;Preview&lt;/i&gt;.&lt;br /&gt;&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/Bot_Service.png&quot; alt=&quot;Microsoft Azure - Bot Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - Bot Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Create a Bot Service&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/Create_Bot_Service.png&quot; alt=&quot;Microsoft Azure - Bot Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - Bot Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Create a Bot Service&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Once your Bot Service has been deployed, you can create a new bot. This process essentially is to authenticate your bot with the Bot Framework using Microsoft App ID and Password. This step is now integrated into Bot Service, hence, reducing the time to configure from various endpoints.&lt;br /&gt;&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/Configure_Bot_Service.png&quot; alt=&quot;Microsoft Azure - Bot Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - Bot Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Configure Bot Service&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Inside Azure Bot Service App, we can observe that besides the “&lt;i&gt;Develop&lt;/i&gt;” tab which allow developers to quickly develop and test their bot right off from Azure Portal, the other tabs are basically integrated from Bot Framework. Developers can also set up continous integration seamlessly with different deployment options.&lt;br /&gt;&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/Bot_Service_Environment.png&quot; alt=&quot;Microsoft Azure - Bot Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - Bot Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Bot Service Integrated Environment&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;What’s important here is the services that were created automatically after creating and deploying the Bot Service.&lt;br /&gt;&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;App Service&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;Functions&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;Application Insights - This is the only service residing in &lt;i&gt;South Central US&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;Storage account&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_bot_service/Bot_Service_RG.png&quot; alt=&quot;Microsoft Azure - Bot Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - Bot Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Bot Service Resource Group&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;
The above steps to create Azure Bot Service spins of a couple of services automatically. As we mentioned in &lt;a href=&quot;https://kennetham.com/blog/2017/06/23/azure-governance-with-azure-quickstart-templates/&quot;&gt;previous article&lt;/a&gt; that you could easily spin up Azure services via Azure Resource Manager (ARM) scripts. Similarly, Azure Bot Service probably has a customized ARM script to collectively spin off multiple resources and services in the region specified automatically.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
However, the only difference in writing your own ARM script to spin off these services vs Azure Bot Service is with the integrated environment that Azure Bot Service provides. It provides development of your bot codes with a provided template and an editor; it also comes together with Bot Framework’s functionalities.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
One thing to note is, Bot Framework is still residing in the US region, hence, for all other regions, your message would be delivered to the US and back to your region. Expect slight delay and latency.&lt;br /&gt;&lt;/p&gt;
&lt;h6&gt;&lt;i&gt;*Bot Framework will soon be made available in other regions&lt;/i&gt;&lt;/h6&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h1 id=&quot;why-would-you-want-to-create-these-services-manually-from-scratch&quot;&gt;Why would you want to create these services manually from scratch?&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;The answer is pretty simple.&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;I want to have control over my services.&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;I want to have control over my architecture.&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
So last Friday, my intern and I took the entire day to reverse engineer the Bot Service’s deployment. We started by understanding what services were deployed, then how were the services connected, how can we replicate that, and eventually executing that ourselves. One point to note is, Azure Bot Service is in and of itself a powerful platform. We were recreating the process to understand what goes behind it and should we would like to take control over the services then how would the services communicate with one another. Hence, achieving the same result without any dependencies. In the next article, I’ll share more on how we did it and the secrets behind Azure Bot Service!&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Cheers!&lt;/p&gt;
</description>
        
        <pubDate>Sat, 01 Jul 2017 21:00:00 +0000</pubDate>
        <link>https://kennetham.com/blog/2017/07/01/unpacking-the-magic-behind-azure-bot-service/</link>
        <guid isPermaLink="true">https://kennetham.com/blog/2017/07/01/unpacking-the-magic-behind-azure-bot-service/</guid>
      </item>
    
      <item>
        <title>Azure Traffic Manager vs Azure Load Balancer</title>
        
        
        <description>&lt;p&gt;Recently, there was a question posted on &lt;a href=&quot;https://social.msdn.microsoft.com/Forums/azure/en-US/7bc101fc-544a-4299-abbd-2109caef20ff/load-balancing-between-two-logic-apps-exposed-as-service?forum=azurelogicapps#72997398-d8a7-4aa5-bef4-d6869db29244&quot;&gt;MSDN Forums&lt;/a&gt; regarding “&lt;i&gt;Load balancing between two Logic Apps exposed as service&lt;/i&gt;”. I’ve provided some insights to the differences between Azure Traffic Manager and Azure Load Balancer, in this article, I’ll go slightly deeper to what exactly are the differences and when to use them.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h1 id=&quot;azure-traffic-manager&quot;&gt;Azure Traffic Manager&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://azure.microsoft.com/en-us/services/traffic-manager/?cdn=enable&quot;&gt;Azure Traffic Manager&lt;/a&gt; is a cloud load balancing that aims to improve app performance by automatically load balancing incoming traffic across datacenters. It allows you to control the distribution of user traffic for service endpoints in different datacenters. Service endpoints supported by Traffic Manager include Azure VMs, Web Apps, and cloud services. You can also use Traffic Manager with external, non-Azure endpoints. Traffic Manager operates at a DNS level.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Essentially, if you have an application that is hosted in various regions in Azure and you would like to improve availability and maximum global performance, Traffic Manager serves as a distribution mean to distribute client traffic to the closest available endpoint. There are various &lt;a href=&quot;https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-routing-methods&quot;&gt;routing methods&lt;/a&gt; of approach to distribute your clients.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
There are four traffic routing methods available in Traffic Manager:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;b&gt;Priority&lt;/b&gt;: Select Priority when you want to use a primary service endpoint for all traffic, and provide backups in case the primary or the backup endpoints are unavailable.&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Weighted&lt;/b&gt;: Select Weighted when you want to distribute traffic across a set of endpoints, either evenly or according to weights, which you define.&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Performance&lt;/b&gt;: Select Performance when you have endpoints in different geographic locations and you want end users to use the “closest” endpoint in terms of the lowest network latency.&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;b&gt;Geographic&lt;/b&gt;: Select Geographic so that users are directed to specific endpoints (Azure, External, or Nested) based on which geographic location their DNS query originates from. This empowers Traffic Manager customers to enable scenarios where knowing a user’s geographic region and routing them based on that is important. Examples include complying with data sovereignty mandates, localization of content &amp;amp; user experience and measuring traffic from different regions.&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_trafficmanager_v_loadbalancer/dns-configuration.png&quot; alt=&quot;Microsoft Azure - Traffic Manager&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - Traffic Manager&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;DNS Configuration&lt;/p&gt;
		  

		  
		  	&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-overview&quot; title=&quot;Visit Website&quot; class=&quot;icon image&quot;&gt;Visit Website&lt;/a&gt;
		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;This is a quick overview how clients connect using Traffic Manager.&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_trafficmanager_v_loadbalancer/flow.png&quot; alt=&quot;Microsoft Azure - Traffic Manager&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - Traffic Manager&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Traffic Manager Flow&lt;/p&gt;
		  

		  
		  	&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-overview&quot; title=&quot;Visit Website&quot; class=&quot;icon image&quot;&gt;Visit Website&lt;/a&gt;
		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;h1 id=&quot;azure-load-balancer&quot;&gt;Azure Load Balancer&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://azure.microsoft.com/en-us/services/load-balancer/&quot;&gt;Azure Load Balancer&lt;/a&gt; delivers high availability and network performance to your applications. It is a Layer 4 (TCP, UDP) load balancer that distributes incoming traffic among healthy instances of services defined in a load-balanced set.&lt;br /&gt;&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_trafficmanager_v_loadbalancer/arm-lb.png&quot; alt=&quot;Microsoft Azure - Load Balancer&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - Load Balancer&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;VM Load Balancing&lt;/p&gt;
		  

		  
		  	&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-overview&quot; title=&quot;Visit Website&quot; class=&quot;icon image&quot;&gt;Visit Website&lt;/a&gt;
		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;The load balancer load balance incoming traffic to the virtual machines. You could configure to load balance traffic between virtual machines in a virtual network, between virtual machines in cloud services, or between on-premises computers and virtual machines in a cross-premises virtual network. This configuration is known as internal load balancing.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
There are two types of load balancers available, &lt;b&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-internet-overview&quot;&gt;Internet Load Balancer&lt;/a&gt;&lt;/b&gt; and &lt;b&gt;&lt;a href=&quot;https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-internal-overview&quot;&gt;Internal Load Balancer&lt;/a&gt;&lt;/b&gt;.&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;internet-load-balancer&quot;&gt;Internet Load Balancer&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;Internet Load Balancer maps the public IP address and port number of incoming traffic to the private IP address and port number of the virtual machine and vice versa for the response traffic from the virtual machine. Load balancing rules allow you to distribute specific types of traffic between multiple virtual machines or services. For example, you can spread the load of web request traffic across multiple web servers or web roles.&lt;br /&gt;&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_trafficmanager_v_loadbalancer/internet-lb.png&quot; alt=&quot;Microsoft Azure - Internet Load Balancer&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - Internet Load Balancer&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Internet Load Balancing&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;h2 id=&quot;internal-load-balancer&quot;&gt;Internal Load Balancer&lt;br /&gt;&lt;/h2&gt;
&lt;p&gt;Unlike the internet load balancer, the internal load balancer (ILB) directs traffic only to resources inside the cloud service or using VPN to access the Azure infrastructure. This enables internal line of business (LOB) applications to run in Azure and be accessed from within the cloud or from resources on-premises.&lt;br /&gt;&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_trafficmanager_v_loadbalancer/internal-lb.png&quot; alt=&quot;Microsoft Azure - Internal Load Balancer&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - Internal Load Balancer&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Internet facing multi-tier applications&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h1 id=&quot;can-traffic-manager-coexist-with-azure-load-balancer&quot;&gt;Can Traffic Manager coexist with Azure Load Balancer?&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;Yes, absolutely! They can coexist. It is definitely ideal to use both Traffic Manager and Load Balancer together. With our earlier understanding, Azure Traffic Manager is a global load balancer (eg. DNS load balancing) and Azure Load Balancer is a local load balancer. Hence, it will be a good strategy to architect your cloud solution to load balance using both Traffic Manager and Load Balancer of your VMs or cloud applications.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h1 id=&quot;when-should-i-use-traffic-manager&quot;&gt;When should I use Traffic Manager?&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;Ideally, since it’s a global load balancer, and unless you have high global client traffic, you wouldn’t be using Traffic Manager. For situations where you have deployed your web applications to multiple regions and want to route traffic of your clients to the closest available endpoint together with the designed routing method, your application will improve in high availability and maximum global performance.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
One of the most important questions that have been asked a couple of times, and I’ve personally tested it out myself.&lt;br /&gt;&lt;/p&gt;
&lt;h1 id=&quot;can-i-configure-my-cdn-endpoint-as-an-external-endpoint-in-traffic-manager&quot;&gt;Can I configure my CDN endpoint as an external endpoint in Traffic Manager?&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;This question is legit and reasonable of its own. The question is, why do architects or even developers think of this approach? Why was this question raised so many times? Why should I even be concern?&lt;br /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://social.msdn.microsoft.com/Forums/security/en-US/e34c4782-eba6-4be6-af7c-7cd4ff22644a/how-to-use-azure-cdn-as-endpoint-for-traffic-manager?forum=azurecdn&quot;&gt;MSDN - How to use Azure CDN as endpoint for Traffic Manager&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/22965122/can-i-point-an-azure-cdn-at-an-azure-traffic-manager&quot;&gt;StackOverflow - Can I point an Azure CDN at an Azure Traffic Manager&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;br /&gt;
The answer to that is pretty straightforward. If I have my web application hosted in 3 different regions, (eg. EU, US, ASIA), and on top of that configured CDN endpoints to these applications. I would want traffic manager to distribute my CDN endpoint as the priority target endpoint. As we have mentioned in the earlier articles that CDN accelerates global delivery of static content, and one of the top reasons many chose to do so is because if the servers go down for some reasons, the load balancer will still be able to distribute the content via Azure CDN Endpoints instead. Any downtime wouldn’t have affected high traffic or volume of customers visiting the application.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Now, answering the earlier question, configuring CDN endpoint as an external endpoint in Traffic Manager doesn’t work. To why did it not work, I have no answer to that, however, if you manage to get that working, please do let me know.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Cheers!&lt;/p&gt;
</description>
        
        <pubDate>Fri, 30 Jun 2017 10:00:00 +0000</pubDate>
        <link>https://kennetham.com/blog/2017/06/30/azure-traffic-manager-azure-load-balancer/</link>
        <guid isPermaLink="true">https://kennetham.com/blog/2017/06/30/azure-traffic-manager-azure-load-balancer/</guid>
      </item>
    
      <item>
        <title>&lt;b&gt;How to speed up websites with Azure Content Delivery Network&lt;/b&gt;</title>
        
        
        <description>&lt;p&gt;Here at &lt;a href=&quot;https://jungleelement.com&quot;&gt;Jungle Element&lt;/a&gt;, &lt;a href=&quot;https://treatsure.co&quot;&gt;Treatsure&lt;/a&gt;, &lt;a href=&quot;https://corsivalab.com&quot;&gt;Corsiva Lab&lt;/a&gt;, as well as this &lt;a href=&quot;https://kennetham.com&quot;&gt;site&lt;/a&gt;, leverages on Azure Content Delivery Network (CDN) to accelerate delivery of content. These sites are powered by Windows Azure App Service and Azure CDN.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h1 id=&quot;what-is-content-delivery-network&quot;&gt;What is Content Delivery Network?&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;Content Delivery Network caches static web content at strategically placed locations to provide maximum throughput for delivering content to users, hence, the ability to accelerate delivery of content. Furthermore, it offers a global solution for delivering high-bandwidth content by caching the content at physical nodes, also known as Edge Servers around the world.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://azure.microsoft.com/en-us/services/cdn/&quot;&gt;Azure CDN&lt;/a&gt; itself has a robust security that is backed by massive storage and compute capacity with many edge servers globally. The CDN is able to handle sudden traffic spikes and heave loads. Azure CDN helps you to stay up and running by identifying, absorbing, and blocking security threats to absorb distributed denial-of-service (DDoS) attacks. Besides that, Azure CDN includes the highest certification by the FedRAMP Joint Authorization Board (JAB).&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h1 id=&quot;why-should-i-use-a-cdn&quot;&gt;Why should I use a CDN?&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;Firstly, your site gets better performance and user experience for end users. CDN reduces multiple round-trips required to load content. CDN will be able to distribute user requests and serve content from edge servers, hence, minimizing traffic being sent to the origin server. Lastly, with CDN’s global distribution, end users globally will be able to receive the cached static web content much quicker from the nearest edge servers located near them.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h1 id=&quot;how-it-works&quot;&gt;How it works?&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;I will walkthrough the steps I took to setup CDN for the various company websites including my own web, and how easy it is to configure them.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;Head over to &lt;a href=&quot;https://portal.azure.com&quot;&gt;Windows Azure&lt;/a&gt; and login with your credentials. If you had followed my earlier article on &lt;b&gt;&lt;a href=&quot;https://kennetham.com/blog/2017/06/09/hosting-websites-with-azure-app-service-and-continuous-deployment/&quot;&gt;Hosting Websites with Windows Azure App Service and Continuous Deployment&lt;/a&gt;&lt;/b&gt;, you should already have your website running on Azure App Service. Proceed to your App Service page, navigate to “Networking”, you should see the following screen.&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_cdn/App_Service_CDN.jpg&quot; alt=&quot;Microsoft Azure - CDN&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - CDN&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;CDN Setting in App Service&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_cdn/Azure_CDN.jpg&quot; alt=&quot;Microsoft Azure - CDN&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - CDN&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Select Azure CDN in App Service&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;You will be presented with Azure Content Delivery Network page where you can create a new CDN Endpoint.&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_cdn/Create_Azure_CDN.jpg&quot; alt=&quot;Microsoft Azure - CDN&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - CDN&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Create Azure CDN Endpoint&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;In my example, I’ll use an existing CDN profile.&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_cdn/Azure_CDN_Existing_Endpoint.jpg&quot; alt=&quot;Microsoft Azure - CDN&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - CDN&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Create Azure CDN Endpoint&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Or, you could also create a new CDN profile with its own Endpoint which points it to the Origin hostname.&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_cdn/Azure_CDN_Endpoint.jpg&quot; alt=&quot;Microsoft Azure - CDN&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - CDN&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Create Azure CDN Endpoint&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;When your CDN is deployed, you will see your CDN under “Endpoints”. Here you get to manage your CDN Endpoints.&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_cdn/CDN_Endpoints.jpg&quot; alt=&quot;Microsoft Azure - CDN&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - CDN&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Azure CDN Endpoint&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Click on your CDN Endpoint, you can verify your Origin. The Origin shows where your CDN Endpoint is referencing the website from, primarily from your web applications.&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_cdn/CDN_Origin.jpg&quot; alt=&quot;Microsoft Azure - CDN&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - CDN&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Azure CDN Origin&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;You can also add your own custom domains and set HTTPS on your CDN endpoints. SSL DigiCert will be provided by Verizon Digital Media Services, free for one custom domain.&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/azure_cdn/CDN_Custom_Domains.jpg&quot; alt=&quot;Microsoft Azure - CDN&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - CDN&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Azure CDN Custom Domains&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Azure CDN serves much more than just websites, you can even use the CDN to serve static content from your application!&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Cheers!&lt;/p&gt;
</description>
        
        <pubDate>Tue, 27 Jun 2017 20:00:00 +0000</pubDate>
        <link>https://kennetham.com/blog/2017/06/27/how-to-speed-up-websites-with-azure-content-delivery-network/</link>
        <guid isPermaLink="true">https://kennetham.com/blog/2017/06/27/how-to-speed-up-websites-with-azure-content-delivery-network/</guid>
      </item>
    
      <item>
        <title>Azure Governance with Azure Quickstart Templates</title>
        
        
        <description>&lt;p&gt;&lt;a href=&quot;https://azure.microsoft.com/en-us/resources/templates/&quot;&gt;Azure Quickstart Templates&lt;/a&gt; allows you to deploy Azure resources through the Azure Resource Manager (ARM) with community contributed templates. Azure Resource Manager allows you to provision your applications together with various Azure Services using a declarative template. In a single template, you can deploy multiple services along with their dependencies.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h1 id=&quot;how-to-use-azure-quickstart-templates&quot;&gt;How to use Azure Quickstart Templates?&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;You can find Azure Quickstart Templates on &lt;a href=&quot;https://github.com/Azure/azure-quickstart-templates&quot;&gt;Github&lt;/a&gt;!&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;With ARM capabilities, these are some of the most requested features for Azure Government. This enables the modern management of many more of your cloud resources. The ARM deployment offers much more granular control of our access and permission. This allows enterprise configurators or engineers to be able to build templates quicker for deployment and ease up the deployment timing as compared to traditional hosting where it could take days if not weeks to deploy an application with many services running such as SQL DB, Redis Cache, Network Security etc.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
There are &lt;em&gt;2 ways&lt;/em&gt; to go about deploying a template.&lt;br /&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Deploy using the Quickstart Templates provided by the community&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;Deploy a custom template with customized services&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;deployment-options&quot;&gt;Deployment Options&lt;br /&gt;&lt;/h2&gt;
&lt;h3 id=&quot;deploy-with-deploy-to-azure-link&quot;&gt;Deploy with &lt;em&gt;“Deploy to Azure”&lt;/em&gt; link&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Most of the quickstart templates come with a “Deploy to Azure” button that allows a one-click deployment to Windows Azure.&lt;br /&gt;&lt;/p&gt;

&lt;h3 id=&quot;deploy-with-powershell&quot;&gt;Deploy with Powershell&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;Once you are logged into Azure, you can deploy the templates under &lt;a href=&quot;https://azure.microsoft.com/en-us/documentation/articles/resource-group-template-deploy/&quot;&gt;Resource Group Template Deploy&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;deploy-with-custom-templates&quot;&gt;Deploy with Custom Templates&lt;br /&gt;&lt;/h3&gt;
&lt;p&gt;You could also deploy your own template to Azure. You could start a blank template provided by Microsoft &lt;a href=&quot;https://github.com/Azure/azure-quickstart-templates/tree/master/100-blank-template&quot;&gt;here&lt;/a&gt;. The template consists of &lt;em&gt;3 files&lt;/em&gt; (&lt;em&gt;the blank template provides without Powershell deployment&lt;/em&gt;):&lt;br /&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;em&gt;deploy.ps1&lt;/em&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;azuredeploy.json&lt;/em&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;azuredeploy.parameters.json&lt;/em&gt;&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;metadata.json&lt;/em&gt;&lt;br /&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h4 id=&quot;deployps1&quot;&gt;“deploy.ps1”&lt;br /&gt;&lt;/h4&gt;
&lt;p&gt;This is a Powershell script to execute the deployment with the templates provided. It consists of your resource group name, subscription ID, and location.&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;azuredeployjson&quot;&gt;“azuredeploy.json”&lt;br /&gt;&lt;/h4&gt;
&lt;p&gt;This file consists of the resources and services you would like to put together for your deployment. For example, you could indicate that you would like a Storage account, Network Security Group, Virtual Machine, and App Service to be spinned up.&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;azuredeployparametersjson&quot;&gt;“azuredeploy.parameters.json”&lt;br /&gt;&lt;/h4&gt;
&lt;p&gt;This file consists of the parameters to your resources. For example, the resource group, name of the resource, location of the resource, pricing tier etc.&lt;br /&gt;&lt;/p&gt;

&lt;h4 id=&quot;metadatajson&quot;&gt;“metadata.json”&lt;br /&gt;&lt;/h4&gt;
&lt;p&gt;This file consist of the template’s metadata information.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
This should provide a quick overview of what Azure Templates could achieve with Azure Resource Manager. This helps companies to have granular control and permission over Azure resources and its applications, yet at the same time, ensuring different degree of compliance on Azure.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Cheers!&lt;/p&gt;
</description>
        
        <pubDate>Fri, 23 Jun 2017 09:00:00 +0000</pubDate>
        <link>https://kennetham.com/blog/2017/06/23/azure-governance-with-azure-quickstart-templates/</link>
        <guid isPermaLink="true">https://kennetham.com/blog/2017/06/23/azure-governance-with-azure-quickstart-templates/</guid>
      </item>
    
      <item>
        <title>Hosting websites with Azure App Service and Continuous Deployment</title>
        
        
        <description>&lt;p&gt;A couple of days ago my intern at &lt;a href=&quot;https://treatsure.co&quot;&gt;Treatsure&lt;/a&gt; asked me “How do I deploy a website from Github to Azure?”. I remembered playing with this feature on Azure Classic Portal a couple of years ago trying to host static website on Windows Azure. Today, given the new Azure Portal, I’ll provide a detailed walkthrough of the steps required to get started.&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;what-is-azure-app-service&quot;&gt;What is Azure App Service?&lt;br /&gt;&lt;/h1&gt;
&lt;p&gt;App Service Web Apps is a fully managed compute platform that is optimized for hosting websites and web applications. This platform-as-a-service (PaaS) offering of Microsoft Azure lets you focus on your business logic while Azure takes care of the infrastructure to run and scale your apps. For most scenarios, Web Apps is the best choice. For microservice architecture, consider &lt;a href=&quot;https://azure.microsoft.com/services/service-fabric/&quot;&gt;Service Fabric&lt;/a&gt;, and if you need more control over the VMs that your code runs on, consider Azure &lt;a href=&quot;https://azure.microsoft.com/services/virtual-machines/&quot;&gt;Virtual Machines&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
Azure App Service makes it easier and convenient for developers to configure continuous deployment on Azure between Github (Public Repository) and Azure Websites. However, today, I’ll be walking through connecting to Github (Private Repository) instead. One of the biggest advantages is that, any changes will be pulled instantenously and synchronized with your source codes. &lt;a href=&quot;https://github.com/projectkudu/kudu&quot;&gt;Kudu&lt;/a&gt; is the engine behind git/hg deployments, WebJobs, and various other features in Azure Web Sites. It can also run outside of Azure.&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
To create a website on Azure, let’s start by creating a new App Service. Follow the steps below.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/New_App.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Create New App Service&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Select &lt;b&gt;&lt;i&gt;“Web + Mobile”&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Web_Mobile.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Create New App Service&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Select &lt;b&gt;&lt;i&gt;“Web App”&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/WebApp.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Create New Web App&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;You will be presented with this screen. Here are the options to configure your Web App. In my scenario, I chose an App Name that reflects &lt;i&gt;mysite.azurewebsites.net&lt;/i&gt;. Select your subscription. Since we’re on &lt;a href=&quot;https://bizspark.microsoft.com&quot;&gt;BizSpark&lt;/a&gt;, therefore, our subscription is tied to &lt;i&gt;“Visual Studio Enterprise: Bizspark”&lt;/i&gt; subscription. Following which, you can create your own resource group, and since we have our own resource group, we’ll be using ours. Resource groups are a great way to manage all your resources centrally at one location.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Create_WebApp.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Create New App Service&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Choose your &lt;b&gt;App Service Plan/location&lt;/b&gt;. I’ve set it to Southeast Asia. It is recommended to set your location closest to your country. Also, you can decide the pricing tier that fit your needs. For websites in general, I recommend either &lt;i&gt;S1 Standard&lt;/i&gt; or &lt;i&gt;B1 Basic&lt;/i&gt; tier. Moreover as a startup, since we do not have high traffic load, I’ve set it to &lt;b&gt;B1 Basic Tier&lt;/b&gt;, which is good enough at the moment. You could then automatically scale up or scale out with Azure.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/App_Service_Plan.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;New App Service Plan&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/New_App_Service_Plan.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;New App Service Plan&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Once your App Service is deployed, you can now access your app service. We’ll set it to access a private git repository.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/App_Service_Deployed.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;App Service Deployed&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Overview.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;App Service Overview&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Select &lt;b&gt;Deployment Option&lt;/b&gt;. Choose &lt;i&gt;Local Git Repository&lt;/i&gt;. You could choose other options such as Github, Bitbucket, etc. Github authenticates with your Github account and will pull from Public Repositories only. Although it will show you a list of repositories in your Github, private repositories will not be accessible by App Service. Whereas, &lt;i&gt;Local Git Repository&lt;/i&gt; creates a git repository in app service and creates continuous deployment with Kudu to pull on webhook trigger from Github.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Deployment_Option.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Deployment option&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Local_Git_Repository.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Choose Source&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;I’ve set up with Github and Local Git Repository initially and didn’t capture the screenshot for Local Git Repository, however, upon selecting &lt;i&gt;Local Git Repository&lt;/i&gt;, you should see something similar to the one below. This option can be found under &lt;i&gt;“Deployment Credentials”&lt;/i&gt; as well. Please enter your desired deployment username and password, and ensure that you keep them safe.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Deployment_Credentials.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Deployment Credentials&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Now let’s configure Github to allow App Service to pull from your repository. Head over to your Github Repository and select &lt;i&gt;“Settings”&lt;/i&gt; &amp;gt; &lt;i&gt;“Webhooks”&lt;/i&gt; &amp;gt; &lt;i&gt;Add Webhook&lt;/i&gt;. I’ve already linked up one webhook, and you could link up as many webhooks as you want to different services.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Github_Settings.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Github Settings&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Github_Webhook.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Github - Add Webhook&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Then, configure your webhook to the following format. In Azure Portal, under your App Service website, find the &lt;i&gt;Deployment Trigger URL&lt;/i&gt; under &lt;i&gt;“Properties”&lt;/i&gt;. Copy &amp;amp; paste that information into Github’s Webhook &lt;i&gt;Payload URL&lt;/i&gt;. Ensure that the content type is &lt;code class=&quot;highlighter-rouge&quot;&gt;application/x-www-form-urlencoded&lt;/code&gt;. Leave the default settings unless you want to customize them, otherwise proceed to add webhook.&lt;/p&gt;

&lt;div class=&quot;language-text highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;https://$deploy-user:Password@mysite.scm.azurewebsites.net/deploy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/App_Service_Properties.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;App Service Properties - Deployment Trigger URL&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Configure_Webhook.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Github - Configure Webhook&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;We’re almost there! We need to setup the deployment key to allow access in order to deploy to App Service. Click on &lt;i&gt;Deploy Keys&lt;/i&gt; &amp;gt; &lt;i&gt;Add deploy key&lt;/i&gt;. To get the deploy key, simply go to &lt;code class=&quot;highlighter-rouge&quot;&gt;https://$deploy-user:Password@mysite.scm.azurewebsites.net/api/sshkey?ensurePublicKey=1&lt;/code&gt; with the credentials you set earlier. Copy &amp;amp; paste the SSH-RSA deployment key from our App Service to our private repository in Github.&lt;/p&gt;

&lt;p&gt;You should see something like that:&lt;br /&gt;
*only copy the content inside the &lt;code class=&quot;highlighter-rouge&quot;&gt;&quot;&lt;/code&gt;&lt;br /&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ssh&quot;&gt;&quot;ssh-rsa AAAAG12345CDEFG...&quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;If you have successfully added your deploy key, you should see that your key has been added!&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Deploy_Keys.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Github - Deploy Keys&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Add_Deploy_Keys.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Github - Add Deploy Keys&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;Once you’ve set that, you’re done and good to go! To validate and test that your continuous deployment is fully functional, push an update to your git repository and review the deployment history for your site in Azure Portal under &lt;i&gt;Deployment Options&lt;/i&gt;. Deployment logs can be found by clicking on the log itself.&lt;/p&gt;

&lt;div class=&quot;media image&quot; data-animation=&quot;fadeInUp&quot;&gt;
	
		&lt;img src=&quot;/assets/images/blog/app_service/Deployment_Options_deployed.jpg&quot; alt=&quot;Microsoft Azure - App Service&quot; /&gt;
	

	
		&lt;div class=&quot;caption&quot; data-animation=&quot;fadeInUp&quot;&gt;
		  
		  	&lt;h4&gt;Microsoft Azure - App Service&lt;/h4&gt;
		  

		  
		  	&lt;p&gt;Website deployed!&lt;/p&gt;
		  

		  
		&lt;/div&gt;
	
&lt;/div&gt;

&lt;p&gt;I hope this walkthrough helps you create your first website hosting with Azure! If you face any issues, don’t hesitate to leave a comment or ping me!&lt;/p&gt;

&lt;p&gt;Cheers!&lt;/p&gt;
</description>
        
        <pubDate>Fri, 09 Jun 2017 09:00:00 +0000</pubDate>
        <link>https://kennetham.com/blog/2017/06/09/hosting-websites-with-azure-app-service-and-continuous-deployment/</link>
        <guid isPermaLink="true">https://kennetham.com/blog/2017/06/09/hosting-websites-with-azure-app-service-and-continuous-deployment/</guid>
      </item>
    
  </channel>
</rss>
