<?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>DEV Community: Kóredé Bashir</title>
    <description>The latest articles on DEV Community by Kóredé Bashir (@bashirk).</description>
    <link>https://dev.to/bashirk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F253408%2Fd57bd439-ed42-4572-aca2-3a4b5150199c.png</url>
      <title>DEV Community: Kóredé Bashir</title>
      <link>https://dev.to/bashirk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bashirk"/>
    <language>en</language>
    <item>
      <title>Revolutionizing Outbound Sales: Why I Built a Natural Language Lead Generation MCP Server</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Fri, 28 Feb 2025 18:09:15 +0000</pubDate>
      <link>https://dev.to/bashirk/revolutionizing-outbound-sales-why-i-built-a-natural-language-lead-generation-mcp-server-1i7i</link>
      <guid>https://dev.to/bashirk/revolutionizing-outbound-sales-why-i-built-a-natural-language-lead-generation-mcp-server-1i7i</guid>
      <description>&lt;p&gt;Imagine a tool that lets you generate high-quality leads simply by using keywords. This is why I built this lead generation MCP server.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Why: Breaking Down Outbound’s Barriers
&lt;/h2&gt;

&lt;p&gt;Outbound lead generation has always been a challenge. Even with a steady flow of inbound leads, reaching out to prospects manually or with cumbersome tools often means spending more time wrestling with technology than actually closing deals. I built this server because I believe that generating outbound leads should be as simple as saying, “Find me leads in enterprise SaaS.” No more complex setups, no more technical headaches—just natural language turning into actionable leads.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Evolution of AI-Driven Lead Generation
&lt;/h2&gt;

&lt;p&gt;Large language models (LLMs) have already transformed how we interact with information. But what if they could do more than just chat? What if they could plug into your business workflows and turbocharge your lead generation process? Enter MCP for LLMs, a next-generation framework designed to empower Claude, our cutting-edge LLM, to leverage sophisticated lead gen tools.&lt;/p&gt;

&lt;p&gt;At its core, MCP (Model Communication Protocol) is all about providing a standardized, protocol-compliant way for LLMs to communicate with external services. The Claude team has harnessed the power of MCP to build a lead generation server that not only aggregates leads but enriches them, caches data intelligently, and scales under real-world conditions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Under the Hood: Technology That Makes It Happen
&lt;/h2&gt;

&lt;p&gt;The project is powered by a robust tech stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MCP Python SDK v2.1.0&lt;/strong&gt;: Ensuring our communications are protocol-compliant and lightning-fast.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crawl4AI v0.4.3bx&lt;/strong&gt;: Delivering intelligent web crawling capabilities to fetch data from multiple sources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python 3.10+&lt;/strong&gt;: Leveraging the latest Python features to handle high concurrency with AsyncIO.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This combination creates a production-grade system capable of managing everything from UUID-based lead tracking to multi-source data aggregation and enterprise-grade error handling.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Peek Into the Architecture
&lt;/h3&gt;

&lt;p&gt;The architecture is as modular as it is powerful. Think of it like an orchestra where each component plays a specific role:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;graph TD
    A[Client] --&amp;gt; B[MCP Server]
    B --&amp;gt; C{Lead Manager}
    C --&amp;gt; D[Google CSE]
    C --&amp;gt; E[Crawl4AI]
    C --&amp;gt; F[Hunter.io]
    C --&amp;gt; G[Clearbit]
    C --&amp;gt; H[LinkedIn Scraper]
    C --&amp;gt; I[(Redis Cache)]
    C --&amp;gt; J[Lead Store]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the MCP server is the central hub that connects Claude to various lead generation and enrichment services. Whether it's scraping LinkedIn for potential contacts or tapping into third-party APIs like Hunter.io and Clearbit, every data point is efficiently orchestrated and delivered to your AI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Empowering Claude with Real-World Data
&lt;/h2&gt;

&lt;p&gt;The true innovation lies in how MCP for LLMs bridges the gap between AI and actionable business insights. By integrating with this lead generation server, Claude can now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Initiate Lead Searches&lt;/strong&gt;: Using natural language commands, Claude can trigger lead generation processes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enrich Leads Automatically&lt;/strong&gt;: The system gathers additional data—from contact details to social profiles—making every lead more valuable.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor and Adapt&lt;/strong&gt;: Real-time monitoring ensures that Claude always has the latest information, ready to guide your next business move.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not just about automation; it's about intelligent automation. With Claude's deep understanding of language and context, coupled with the raw power of MCP and Crawl4AI, businesses can expect smarter, faster, and more accurate lead generation than ever before.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Prototype to Production
&lt;/h2&gt;

&lt;p&gt;Developing a robust system is one thing—scaling it for real-world applications is another. The Claude team has tackled this challenge head-on. By embracing asynchronous programming with AsyncIO and integrating smart caching strategies using Redis and aiocache, the system supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;High Throughput&lt;/strong&gt;: Handling over 120 lead generation requests per minute.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Enrichment at Scale&lt;/strong&gt;: Efficiently processing enrichment operations from services like Clearbit and Hunter.io.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resilience and Reliability&lt;/strong&gt;: With enterprise-grade error handling and caching, downtime is minimized even under heavy loads.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For developers and business leaders alike, MCP for LLMs represents a pivotal moment in the evolution of AI-driven automation. By enabling Claude to interact seamlessly with advanced lead generation tools, the future of sales and marketing looks smarter, faster, and infinitely more efficient.&lt;/p&gt;




&lt;h3&gt;
  
  
  Installation &amp;amp; Configuration: Ready for Production
&lt;/h3&gt;

&lt;p&gt;To ensure this tool is as accessible as possible, I designed it with a straightforward setup. Whether you’re deploying it on a local machine or using Docker for a production environment, the installation process is streamlined:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For Production:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create virtual environment&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; venv .venv &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;source&lt;/span&gt; .venv/bin/activate

&lt;span class="c"&gt;# Install production dependencies&lt;/span&gt;
pip &lt;span class="nb"&gt;install &lt;/span&gt;mcp crawl4ai[all] aiocache aiohttp uvloop

&lt;span class="c"&gt;# Set up browser dependencies for web crawling&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; playwright &lt;span class="nb"&gt;install &lt;/span&gt;chromium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or deploy with Docker using a simple &lt;code&gt;Dockerfile&lt;/code&gt; that packages everything you need for high-performance lead generation.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Future of Outbound Sales
&lt;/h2&gt;

&lt;p&gt;This lead generation server is only the beginning. It’s the first step toward making outbound sales as intuitive and efficient as inbound. The roadmap includes AI-powered lead scoring and distributed crawling clusters to further optimize and scale outbound campaigns.&lt;/p&gt;

&lt;p&gt;By transforming natural language into actionable leads, we’re not just automating outbound sales—we’re reimagining the process. Founders can now focus on strategy and closing deals while our system handles the heavy lifting behind the scenes.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Join KobotAI on this journey to revolutionize outbound sales. With natural language interfaces and cutting-edge AI integration, the future of lead generation is here, and it’s more accessible than ever.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Check out the open source repo for our lead gen MCP server &lt;a href="https://github.com/bashirk/inbound-mcp" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;br&gt;
Happy coding, and here’s to making sales smarter, faster, and more human!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Add a Static IP to an AWS EC2 Instance</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Wed, 22 Jun 2022 14:26:29 +0000</pubDate>
      <link>https://dev.to/bashirk/how-to-add-a-static-ip-to-an-aws-ec2-instance-2hea</link>
      <guid>https://dev.to/bashirk/how-to-add-a-static-ip-to-an-aws-ec2-instance-2hea</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;AWS Elastic Compute Cloud (EC2) is a popular option for cloud computing services. It offers virtual servers (or instances) as well as security, networking, and storage options. EC2 can launch as many or as few virtual servers as you need, depending on your projects. &lt;/p&gt;

&lt;p&gt;Using EC2 offers multiple benefits, including the ability to run your applications in the cloud and to create virtual machines (VMs) with whatever configurations you might need. The infrastructure is scalable, with over 500 instances, and EC2 supports developing macOS and machine learning applications.&lt;/p&gt;

&lt;p&gt;EC2 works with static (aka elastic) IP addresses. Whenever a resource on a network is assigned an IP address, that IP address is either dynamic—meaning it’s assigned by the network it’s connected to and changes periodically—or static, meaning it never changes. An elastic IP address in EC2 is public, so it’s reachable from the internet. Because it’s set to your AWS account, an elastic IP address can be remapped to another instance as needed in case of bugs or other issues. A custom IP address can also be added to your account rather than use one from AWS.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Elastic IP addresses are provided via a Dynamic Host Configuration Protocol (DHCP). These IP addresses are persistent, meaning they will not change when the VM is restarted or shut down. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this tutorial, I'll walk you through how to configure an elastic IP address with an AWS EC2 instance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;This article doesn't have many prerequisites, it is a tutorial which will assume you already have an AWS EC2 instance provisioned already, that is ready to be associated with an elastic IP address. In case you do not already have an AWS EC2 instance running, please create one before proceeding with the rest of this guide. &lt;/p&gt;

&lt;p&gt;Let's dive right in! &lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Choosing Elastic IP
&lt;/h3&gt;

&lt;p&gt;From the AWS console, navigate to EC2 by clicking &lt;strong&gt;Compute&lt;/strong&gt;. This should take you straight to your EC2 dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6jr0nhd8kry7paj9i6b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6jr0nhd8kry7paj9i6b.png" alt="Navigate to dashboard"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On your dashboard, click on &lt;strong&gt;Elastic IPs&lt;/strong&gt; under &lt;strong&gt;Network &amp;amp; Security&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkxm9o61jq4virnlnx5z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flkxm9o61jq4virnlnx5z.png" alt="Elastic IPs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Creating New IP
&lt;/h3&gt;

&lt;p&gt;Click on &lt;strong&gt;Allocate Elastic IP address&lt;/strong&gt; to create a new static IP address.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjq0dio3v91775bicbnu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjq0dio3v91775bicbnu.png" alt="Allocate IP"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Proceed by clicking &lt;strong&gt;Allocate&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4rt8skv7ldx3vzzwmnr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk4rt8skv7ldx3vzzwmnr.png" alt="IP options"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcpxf1snfjnbv8i1t3hs1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcpxf1snfjnbv8i1t3hs1.png" alt="Click to proceed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Assigning IP to EC2 Instance
&lt;/h3&gt;

&lt;p&gt;Once the allocation request is successful, assign the static IP to your EC2 instance.&lt;/p&gt;

&lt;p&gt;On the elastic IP view, select the IP you just allocated and click the &lt;strong&gt;Actions&lt;/strong&gt; dropdown.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fueo1rmgchl1udavz6cz6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fueo1rmgchl1udavz6cz6.png" alt="Actions menu"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the &lt;strong&gt;View details&lt;/strong&gt; button to reveal the info page on the elastic IP.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvjix5i0s9phvyq6p0d4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhvjix5i0s9phvyq6p0d4.png" alt="Elastic IP details"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On this page, click the &lt;strong&gt;Associate Elastic IP address&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwd4xtj31ezlpa2q6euxt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwd4xtj31ezlpa2q6euxt.jpg" alt="Associate IP address"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Associating IP to Instance
&lt;/h3&gt;

&lt;p&gt;Search for your instance ID from the &lt;strong&gt;Instance&lt;/strong&gt; field.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmif4rxklg7fvgtviiixz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmif4rxklg7fvgtviiixz.jpg" alt="Locate instance ID"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the instance ID and scroll down to click the &lt;strong&gt;Associate&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwdqvdbotyylb86lllfmw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwdqvdbotyylb86lllfmw.jpg" alt="Associate IP"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Checking The Instance View
&lt;/h3&gt;

&lt;p&gt;Your elastic IP address has now been associated with your EC2 instance. Head to your instance view by clicking on your instance ID. The address of your static IP is now displayed on the view.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftisjwezake8fzvzz9d2k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftisjwezake8fzvzz9d2k.jpg" alt="IP associated successfully"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Connecting to The Instance
&lt;/h3&gt;

&lt;p&gt;Connect to your EC2 instance with the newly associated static IP. On your instance view, click &lt;strong&gt;Connect&lt;/strong&gt;. A view with connection details can now be seen. If you’re using a Linux or Mac system, open up your terminal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmk0jkjupz065o6fgxe4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxmk0jkjupz065o6fgxe4.jpg" alt="Instance summary"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select &lt;em&gt;SSH&lt;/em&gt; on the connect view. This tutorial connects via SSH through PowerShell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frsjvig43fgkw3r7ni4ab.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frsjvig43fgkw3r7ni4ab.jpg" alt="Connect to instance"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Set permissions on private key if you haven’t already by pasting one of the below commands in your terminal or CLI:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option A: Linux&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;

&lt;span class="nb"&gt;chmod &lt;/span&gt;400 vpckey.pem


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;set permission on Linux for an EC2 instance private key&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqs2ksxpg1ol6599eq8m4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqs2ksxpg1ol6599eq8m4.jpg" alt="Set permissions on Linux for private key"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Option B: Windows (PowerShell)&lt;/strong&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;ICACLS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"vpckey.pem"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/grant:r&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"bashirk:(F)"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/C&lt;/span&gt;&lt;span class="w"&gt;


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;set permission on Windows for an EC2 instance private key&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7ttfoukak9qdrakro6t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7ttfoukak9qdrakro6t.jpg" alt="Set permissions on Windows for private key"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can copy-paste the second command shown on your instance description to connect to your remote instance:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4hvve4nks3pahiwjuon.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm4hvve4nks3pahiwjuon.jpg" alt="Connect to EC2 instance"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter &lt;em&gt;Yes&lt;/em&gt; to proceed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq626x0ohcwwjsv6e2h50.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq626x0ohcwwjsv6e2h50.jpg" alt="CLI connected to instance"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The instance is now connected, as shown below, this was validated by confirming the present working directory with the command &lt;code&gt;pwd&lt;/code&gt;. Please proceed with building whatever solution you want to deploy on your EC2 instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvg0niifr946ke7bhd633.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvg0niifr946ke7bhd633.jpg" alt="Connected EC2 instance"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Limits on Elastic IPs
&lt;/h3&gt;

&lt;p&gt;According to this AWS documentation on service quotas, “Your AWS account has default quotas, formerly referred to as limits, for each AWS service.”&lt;br&gt;
The important thing to understand is that static IPs on EC2 instances have a limit of five IPs per region per account, so you can’t allocate more than five static IPs in the same AWS region. If you already have up to five elastic IPs, you can either delete one or select a new AWS region before allocating a new IP.&lt;/p&gt;

&lt;p&gt;If you need to confirm your elastic IP address limit, head over to your EC2 dashboard. Select &lt;strong&gt;Limits&lt;/strong&gt; from the left pane and type in &lt;em&gt;IP&lt;/em&gt; in the search box. You should immediately see the &lt;strong&gt;EC2-VPC Elastic IPs&lt;/strong&gt; limit. Click on it for more details about the limit quota.&lt;/p&gt;

&lt;p&gt;Remember, the good thing about elastic IPs is they don’t change or expire, unless they are disassociated from an instance and released.&lt;/p&gt;

&lt;p&gt;Request an increase to your quota from the &lt;a href="https://console.aws.amazon.com/servicequotas/" rel="noopener noreferrer"&gt;Service Quotas Console&lt;/a&gt; if the need arises.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this tutorial, you learned how to set up an elastic IP address and connect it remotely with your AWS EC2 instance. As you saw, this is a simple process that gives you more control over your EC2 instance and allows you to choose your own IP address for as long as you need it.&lt;/p&gt;

&lt;p&gt;If you have any questions, feel free to reach out to me on Twitter: @&lt;a href="https://twitter.com/agbacoder" rel="noopener noreferrer"&gt;John Doe&lt;/a&gt; or &lt;a href="https://linkedin.com/in/bashir-korede" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The Proven Way to Become a Cloud Engineer in 2022!</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Sat, 22 Jan 2022 07:52:11 +0000</pubDate>
      <link>https://dev.to/bashirk/the-proven-way-to-become-a-cloud-engineer-in-2022-46cm</link>
      <guid>https://dev.to/bashirk/the-proven-way-to-become-a-cloud-engineer-in-2022-46cm</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3MO_IBcS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azure-training.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3MO_IBcS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azure-training.png" alt="Azure DevOPs" width="400" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yeah right! It's 2022, and the first month of the new year (and the year 2022) is running to an end already. &lt;em&gt;"Why not dive right into cloud computing?"&lt;/em&gt; - Yes, I know what you've been thinking 😉&lt;/p&gt;

&lt;p&gt;As it stands, cloud computing is the &lt;a href="https://thenextweb.com/hardfork/2020/01/13/blockchain-linkedin-solidity-ethereum-cryptocurrency-jobs-recruitment/"&gt;hottest skill to have, right after blockchain, and obviously was in the last decade&lt;/a&gt; - and that shouldn't change this decade. At the very crux of cloud computing is DevOps (more details on this later). Since cloud is the new crazy, why not learn cloud computing &lt;strong&gt;the right way&lt;/strong&gt; this year?&lt;/p&gt;

&lt;p&gt;And Microsoft Azure is arguably your best bet, if you're looking to give cloud computing a shot. In this article, I would be sharing great insights on how you can get started with Azure and become an Azure Cloud Engineer this year, 2022. But before going forward...&lt;/p&gt;

&lt;h2&gt;
  
  
  What exactly do I mean by DevOps?
&lt;/h2&gt;

&lt;p&gt;The word &lt;strong&gt;DevOps&lt;/strong&gt; basically means &lt;strong&gt;&lt;em&gt;Development Operations&lt;/em&gt;&lt;/strong&gt;, and it's all about the developments and operations required in getting a software from development stage to a release stage. It's also a model around the development and operations needed to improve the collaboration process between the engineers of a software. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--77UoTd8D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/devops.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--77UoTd8D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/devops.png" alt="DevOps explained" width="880" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DevOps essentially helps during the need to have some incremental and frequent changes in software features. A DevOps Engineer could now be said to be that person who works with software developers/engineers to facilitate the proper construction, testing, and release of each feature of a software by streamlining and automating the deployment and infrastructure management processes. Hope that wasn't too hard to grab, biko? 😀&lt;/p&gt;

&lt;p&gt;To get started as a Cloud or DevOps Engineer, you definitely need an Arsenal (not the s**thole football club LOL) which includes weapons. A first and notable weapon that should be ever-present in your arsenal is a cloud subscription, come in the Azure Cloud credits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Your free Azure credits
&lt;/h2&gt;

&lt;p&gt;As stated above, the very first thing to have in your arsenal, as an Azure Cloud Engineer, is an Azure subscription with credits which you could get for free by signing up &lt;a href="https://azure.microsoft.com/en-us/free/students/"&gt;here&lt;/a&gt; for students, and &lt;a href="https://azure.microsoft.com/en-us/offers/ms-azr-0044p/"&gt;here&lt;/a&gt; for non-students. The Azure subscription includes a wide range of free services which can be used in any configurations as you deem fit. After getting your free Azure credits, the very next thing is to get ready to enrich your arsenal - by...&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting with the fundamentals
&lt;/h2&gt;

&lt;p&gt;No better way to get started with learning Azure, and the Azure stack, than starting with the very fundamentals of Azure. The Azure Fundamentals learning path on &lt;a href="https://docs.microsoft.com/en-us/learn/paths/azure-fundamentals/"&gt;Microsoft Learn&lt;/a&gt; contains well-prepared modules that would guide you from what an Azure subscription is, to how to get started with provisioning and managing your first virtual machine. &lt;/p&gt;

&lt;p&gt;You can get started with Azure Fundamentals, &lt;a href="https://docs.microsoft.com/en-us/learn/paths/azure-fundamentals/"&gt;here&lt;/a&gt;. After you've gotten your head wrapped around these fundamentals, it's high time to...&lt;/p&gt;

&lt;h2&gt;
  
  
  Become a Microsoft Learn fanboy/fangirl
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xR5fZCDi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/mslearn.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xR5fZCDi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/mslearn.jpeg" alt="MS Learn" width="701" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/learn/"&gt;Microsoft Learn&lt;/a&gt; is an online education platform announced at Microsoft Ignite 2018. Microsoft Learn provides free learning resources on various Microsoft technologies, including Azure. The platform provides hands-on learning opportunity so that learners like you could develop skills through practical and interactive labs available on the platform. As you have observed, the Microsoft Learn platform houses the Azure Fundamentals you're advised to pass through as a beginner Cloud Engineer (don't fret, most expert Cloud Engineers started with this same learning path on Microsoft Learn).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0y35xRTy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/mslearn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0y35xRTy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/mslearn.png" alt="MS Learn" width="443" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microsoft Learn is absolutely free, contains in-browser access to Microsoft tools, and also includes multiple learning paths on amazing Microsoft technologies - not excluding Azure. In addition to MS Learn, the amazing people at Microsoft have provided insightful documentations on each and every Microsoft technologies available to the public, but it's not enough to just consume the documentations, as you must...&lt;/p&gt;

&lt;h2&gt;
  
  
  Read, and BE BETTER than, the docs
&lt;/h2&gt;

&lt;p&gt;As stated in the previous module, Microsoft provides amazing contents on all technologies released by the company, which doesn't exclude Azure. Microsoft Azure is a platform for multiple cloud services from Microsoft, and I'll be listing a number of those services below - including links to their respective documentations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/guides/developer/azure-developer-guide"&gt;Getting Started Guide for Azure Developers&lt;/a&gt;: This doc is a guide that helps developers get started faster with Azure and its underlying tools.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/samples/browse/?products=azure"&gt;Code Samples&lt;/a&gt;: This doc provides seamless samples to developer tools and technologies offering from Microsoft. You can explore the various code samples and get started with building stuffs on Azure in real time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/resources/templates"&gt;Azure Quickstart Templates&lt;/a&gt;: With this resource, you would get access to community contributed templates that empowers you to get more done in no time. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/migration/migration-journey"&gt;Azure Migration Center&lt;/a&gt;: With this resource, you get all the tools and resources that are required to migrate apps, data, and infrastructure at your own pace.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/architecture"&gt;Azure Architecture Center&lt;/a&gt;: This doc contains guidance for building end-to-end solutions on Microsoft Azure, which contains the Azure Architecture Center best practices, design patterns, scenario guides, and reference implementations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/architecture/framework"&gt;Azure Architecture Framework&lt;/a&gt;: The Azure Architecture Framework helps you to build on the pillars that ensure a successful cloud solution which is built on these five pillars of architecture excellence: Cost, DevOps, Resiliency, Scalability, and Security. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/architecture/guide"&gt;Application Architecture Guide&lt;/a&gt;: This doc details the Azure Application Architecture Guide which presents a structured approach for designing applications on Azure that are scalable, resilient, and highly available. It is based on proven practices that we have learnt from customer engagements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/architecture/patterns"&gt;Azure Cloud Design Patterns&lt;/a&gt;: This doc details the Azure Cloud Design Patterns which are useful for building reliable, scalable, secure applications in the cloud. Each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. Most of the patterns include code samples or snippets that show how to implement the pattern on Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/architecture/aws-professional"&gt;Azure for AWS Professionals&lt;/a&gt;: This content helps if you're coming from an Amazon Web Services (AWS) background - a different cloud platform. It helps AWS professionals understand the basics of Microsoft Azure accounts, platform, and services. It also covers key similarities and differences between the AWS and Azure platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/overview/azure-hybrid"&gt;Azure Hybrid&lt;/a&gt;: This resource is for learning about the Azure Hybrid Cloud with features and services like Azure Stack, Azure Arc, and many more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-in/services/azure-sentinel/"&gt;Azure Sentinel&lt;/a&gt;: This resource provides insights into the Azure Sentinel service which is an organization's birds-eye view across the enterprise. Azure Sentinel allows enterprises to put the cloud, and large-scale intelligence from decades of Microsoft security experience, to work. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/overview/security"&gt;Azure Security&lt;/a&gt;: This resource provides insights into learning about security on Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/overview/trusted-cloud/compliance"&gt;Azure Compliance&lt;/a&gt;: This resource provides an overview of compliance in Microsoft Azure, which includes more than 90 compliance offerings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/overview/trusted-cloud/privacy"&gt;Azure Privacy&lt;/a&gt;: This resource provides insights into learning about data privacy and protection in Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/pricing"&gt;Azure Pricing&lt;/a&gt;: This resource includes insights into how Azure pricing works.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/support/plans"&gt;Azure Support Plans&lt;/a&gt;: This resource helps in exploring the range of Azure support options and helps in determining the plan that best fits your Azure activities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/cloud-adoption-framework/decision-guides"&gt;Architectural Decision Guides&lt;/a&gt;: This resource is the guide which helps in the Cloud Adoption Framework, which includes describing patterns and models that help when creating cloud governance design guidance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/index"&gt;Cloud Adoption Framework&lt;/a&gt;:  This documentation provides useful insights into the Cloud Adoption Framework offering from Microsoft, which is the One Microsoft approach to cloud adoption in Azure - consolidating, and sharing best practices from Microsoft employees, partners, and customers. The framework gives customers a set of tools, guidance, and narratives that help shape technology, business, and people strategies for driving desired business outcomes during their adoption effort. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/cloud-adoption-framework/operating-model"&gt;Cloud Operating model&lt;/a&gt;: This documentation helps during the establishment of an operating model for the cloud.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/pricing/tco/calculator"&gt;TCO Calculator&lt;/a&gt;: This resource helps in the estimation of the cost savings you can realize by migrating your workloads to Azure.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Microsoft Azure Certified
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fW3_S1L_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurecert.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fW3_S1L_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurecert.png" alt="Azure Cert" width="743" height="413"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aside the badges and trophies you would earn while learning about Azure on Microsoft Learn, another great way to verify and validate your newly-earned skills is by taking Microsoft certification exams on Azure. By taking the Azure exams, you are definitely helping yourself to finding the right structure to a rewarding career path. The Microsoft Azure Certifications page can be found here, and each certification costs $80. Now, there is a free way to bypass this payment (tell no one I told you). This hack would be revealed to you soon enough, keep reading - and don't tell me you're tired 🙄&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fr5c3EX6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/microsoftcert.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fr5c3EX6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/microsoftcert.png" alt="Azure Certified" width="600" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Azure Cloud bandwagon
&lt;/h2&gt;

&lt;p&gt;In order to excel in a chosen field, it is pertinent to study the traits of the present people in that field and get mentorship when necessary. A good way to get mentorship, and study the real traits of real people, is by joining a local community of real people. There are various communities around the Microsoft Azure cloud platform, a simple internet search would simply help in this case. But if you're hesitant to spend 10 seconds of your time searching the internet, below is a list of some online and offline communities that you could join:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You've already spent your 10 seconds scrolling down 😜&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.microsoft.com/en-us/ignite-the-tour/"&gt;Microsoft Ignite: The Tour&lt;/a&gt;: Now talking about the hack I mentioned (the free way to take an Azure certification), Microsoft Ignite: The Tour which brings the very best of Microsoft &lt;a href="https://www.microsoft.com/en-us/ignite"&gt;Ignite&lt;/a&gt; to a city near you, provides technical training led by Microsoft experts and your community. You’ll learn new ways to build solutions, migrate and manage infrastructure, and connect with local industry leaders and peers. All attendees at both Ignite and Ignite: The Tour will be given a free certification exam, subject to certain exceptions, to help you continue skilling up and prove your technical expertise to employers and peers. More details &lt;a href="https://docs.microsoft.com/en-us/learn/certifications/microsoft-ignite-free-certification-exam-offer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://techcommunity.microsoft.com/t5/azure/ct-p/Azure"&gt;The Azure Online Community&lt;/a&gt;: This is definitely your goto community for best practices and the latest news on Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/azure"&gt;The Azure DEV Community&lt;/a&gt;: This is a curated content on how-to posts from the Azure Developer Advocates on the DEV Community platform.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.meetup.com/pro/azuretechcommunities"&gt;Local Azure Tech Communities&lt;/a&gt;: This is a curated lists of offline Azure communities present on Meetup. You can find a local Azure meetup happening around a city, by searching the name of such city.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://global.azurebootcamp.net/"&gt;Global Azure Bootcamp&lt;/a&gt;: This is a worldwide and a 100 percent community-driven event organized by MVPs, regional directors, and user group leaders around the world who work in collaboration to deliver the largest one-day, global Azure event.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://channel9.msdn.com/Shows/Azure-Friday/"&gt;Azure Friday&lt;/a&gt;: Join Scott Hanselman every Friday as he engages one-on-one with the engineers who build the services that power Microsoft Azure as they demo capabilities, answer Scott's questions, and share their insights.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;...this isn't all, and these lists (documentations and communities) would definitely be updated - as I lay my hands on more information.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR?
&lt;/h2&gt;

&lt;p&gt;Here's a bullet list of all things covered in this article;&lt;/p&gt;

&lt;p&gt;• Get Your free Azure credits&lt;/p&gt;

&lt;p&gt;• Start with the fundamentals on Microsoft Learn&lt;/p&gt;

&lt;p&gt;• Become a Microsoft Learn fanboy/fangirl&lt;/p&gt;

&lt;p&gt;• Read the Azure docs&lt;/p&gt;

&lt;p&gt;• Get Microsoft Azure Certified&lt;/p&gt;

&lt;p&gt;• Join an Azure Cloud Community&lt;/p&gt;

&lt;p&gt;This blog post is basically put together to give you a broader insight into the Azure cloud platform, and how you can dive more quickly into being a Cloud Engineer this year 2022 - if this is on your bucket list.&lt;/p&gt;

&lt;p&gt;If you had a swell time reading this, check out my article on Azure Quantum - and it's underlying resource offerings , &lt;a href="https://dev.to/bashirk/azure-quantum-here-s-a-gentle-dive-2dcf"&gt;here&lt;/a&gt;. Do also feel free to shout me out around any broken links or any resources I could have added to the contents in this article. Cheers!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Azure Front Door: An Overview</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Sat, 06 Feb 2021 20:23:27 +0000</pubDate>
      <link>https://dev.to/bashirk/azure-front-door-overview-1m8f</link>
      <guid>https://dev.to/bashirk/azure-front-door-overview-1m8f</guid>
      <description>&lt;p&gt;This is a gentle brief of the &lt;strong&gt;Azure Front Door&lt;/strong&gt; service offering from Microsoft Azure. Azure Front Door, as the appellation implies, serves as a tunnel that routes connection to your backend networks &lt;em&gt;scalably&lt;/em&gt;. The service isn't really for everyone, as it's mostly useful for large enterprise applications that handle a huge influx of incoming connection requests to their backend resources, where the performance of these resources is equally paramount.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Azure Front Door&lt;/em&gt;&lt;/strong&gt; is a member of the load balancing family; but shouldn't be mistaken with the &lt;a href="https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-overview" rel="noopener noreferrer"&gt;Azure Load Balancer service&lt;/a&gt;; &lt;strong&gt;&lt;em&gt;Front Door&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;Load Balancer&lt;/em&gt;&lt;/strong&gt; both help ensure network performance for the &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;Azure&lt;/a&gt; cloud offering. The &lt;em&gt;load balancing family&lt;/em&gt; includes a number of other services like; &lt;a href="https://azure.microsoft.com/en-us/services/cdn" rel="noopener noreferrer"&gt;Azure Content Delivery Network&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/azure/traffic-manager/traffic-manager-overview" rel="noopener noreferrer"&gt;Azure Traffic Manager&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/en-us/azure/application-gateway/overview" rel="noopener noreferrer"&gt;Azure Application Gateway&lt;/a&gt;, and some other third party services like Citrix, Cloudflare, F5, Kemp etc. All of these ensure your software applications run &lt;em&gt;efficiently&lt;/em&gt; even when there's a huge influx of requests to your application, as long as the incoming requests are distributed evenly. Similarly to &lt;em&gt;Azure Traffic Manager&lt;/em&gt;, Azure Front Door is resilient to failures, including failures to an Azure region.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Interestingly&lt;/em&gt;, Azure Front Door was initially released in 2013 in a bid to ensure that Microsoft service offerings like Office 365 are enhanced in performance, before being rolled out to the general public in 2018. Front Door does not just help with load balancing, it also ensures the high availability of your application. You can tunnel multiple websites through Azure Front Door.&lt;/p&gt;

&lt;p&gt;With Front Door, you are assured of a wide range of traffic-routing methods through the &lt;a href="https://docs.microsoft.com/en-us/azure/networking/microsoft-global-network" rel="noopener noreferrer"&gt;Microsoft Global Network&lt;/a&gt; that spans across over &lt;strong&gt;50&lt;/strong&gt; Azure regions, &lt;em&gt;Azure Front Door&lt;/em&gt; uses a &lt;a href="https://www.cloudflare.com/learning/ddos/what-is-layer-7/" rel="noopener noreferrer"&gt;Layer 7&lt;/a&gt; (HTTP/HTTPS layer) content switching technology by implementing an AnyCast protocol with &lt;em&gt;split TCP&lt;/em&gt;. Ensuring successful directs of requests at the application layer. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fevm6hpjsyklx8b3cswwb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fevm6hpjsyklx8b3cswwb.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure Front Door always facilitates the routing of client requests to the most available resource. Front Door offers an array of &lt;em&gt;request-routing&lt;/em&gt; methods and resource health monitoring options in order to satisfy the various application needs as well as cases of automatic failovers. &lt;/p&gt;

&lt;p&gt;The Front Door service enables you to define, manage, and monitor the global routing for your web traffic by enhancing resource &lt;em&gt;performance&lt;/em&gt; and &lt;em&gt;reliability&lt;/em&gt; through a quick global failover process.&lt;/p&gt;

&lt;p&gt;The routing of requests with Azure Front Door works in a way that the servers do not replicate the same content, but the servers effectively “pass the baton” amongst themselves, this allows for the increment in performance. To put that into context, say, there are four servers serving contents from an application; by using Azure Front Door, &lt;strong&gt;&lt;em&gt;Server 1&lt;/em&gt;&lt;/strong&gt; could be in charge of supplying images and graphic contents, &lt;strong&gt;&lt;em&gt;Server 2&lt;/em&gt;&lt;/strong&gt; could be in charge of delivering static contents to the site visitors using scripting and contents like CSS and HTML, while &lt;strong&gt;&lt;em&gt;Server 3&lt;/em&gt;&lt;/strong&gt; could be the one allowing a user to buy specific items on the site, and &lt;strong&gt;&lt;em&gt;Server 4&lt;/em&gt;&lt;/strong&gt; could be delivering the contents related to payment processing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjujvvvi1jzfwlt9ljms6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjujvvvi1jzfwlt9ljms6.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;As you have probably noticed, Front Door allows for much more complex systems of application and content delivery based on real resource usage. &lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;p&gt;For details around the pricing and cost calculation of the &lt;em&gt;Azure Front Door&lt;/em&gt; service, you can peep that &lt;a href="https://azure.microsoft.com/pricing/details/frontdoor/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>sre</category>
      <category>devops</category>
      <category>cloud</category>
    </item>
    <item>
      <title>How I Passed the Azure Developer Associate Certification Exam</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Sun, 13 Sep 2020 07:33:23 +0000</pubDate>
      <link>https://dev.to/bashirk/how-i-passed-the-azure-developer-associate-certification-exam-4402</link>
      <guid>https://dev.to/bashirk/how-i-passed-the-azure-developer-associate-certification-exam-4402</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;If you are looking at writing your Azure Developer Associate exam, and gaining the Azure Developer Certification, then this guide right here should come in really handy.&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F87dezmpj1xlfpwnh5jj4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F87dezmpj1xlfpwnh5jj4.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;In this guide, I will be telling you how I studied for, and passed, my &lt;em&gt;Azure Developer Associate certification&lt;/em&gt; exam - and how you can too. As a part of this telling on how I passed the exam, you will be learning what to expect in the exam, and how my experience can help you pass the exam at your first go.&lt;/p&gt;

&lt;p&gt;Going forward, I would like to give you a quick run-through of the &lt;strong&gt;Microsoft certification&lt;/strong&gt; program, as this took me quite some time before I figured out how the certification works. And as such, I would like to save you the time and stress by telling you all about the Microsoft Azure certification program in just about a minute.&lt;/p&gt;

&lt;p&gt;As an addition, I published a blog post on &lt;a href="https://dev.to/bashirk/the-proven-way-to-become-a-cloud-engineer-in-2020-3ic3"&gt;The Proven Way to Become a Cloud Engineer&lt;/a&gt; which also explains, in great details, the Microsoft Azure role-based certification.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frs3qfq05bnyild1x2gvp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frs3qfq05bnyild1x2gvp.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The role-based Azure certifications and also the new role-based Azure certifications are a new and good way to become an expert in Microsoft Azure. Any of these role-based certifications' paths map to your job role in your organization and it overly depends on how many years of experience you have.&lt;/p&gt;

&lt;p&gt;In previous times, the Microsoft certification program used to have the &lt;strong&gt;&lt;em&gt;MCSE&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;MCSA&lt;/em&gt;&lt;/strong&gt; kind of certifications. In order to get your &lt;em&gt;MCSE&lt;/em&gt; certification, there are some predefined set of exams you need to pass, but this really isn't the best experience for professionals.&lt;/p&gt;

&lt;p&gt;Right now, if you are an expert in Azure administration and your job role is to develop and deploy solutions on Microsoft Azure and hybrid environments, then the certification path for you is to get your Azure Developer Associate certification path.&lt;/p&gt;

&lt;p&gt;By taking this exam (&lt;em&gt;Microsoft Azure Developer Associate Exam&lt;/em&gt;), you get a step closer to being a certified &lt;strong&gt;Azure DevOps Expert&lt;/strong&gt;, which is an expert-level certification in Microsoft Azure. Because after passing your exam, you only need to pass the AZ-400 exam to get the expert certification - Azure DevOps Expert.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyl6o12qdwyxeegvxbd2o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyl6o12qdwyxeegvxbd2o.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;According to the &lt;a href="https://docs.microsoft.com/en-us/learn/certifications/azure-developer" rel="noopener noreferrer"&gt;Azure Developer certification page&lt;/a&gt;: &lt;strong&gt;&lt;em&gt;Azure Developers partner with cloud solution architects, cloud DBAs, cloud administrators, and clients to implement solutions.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Exam Structure
&lt;/h2&gt;

&lt;p&gt;Now let's talk about how this important certification has its exam contents organized;&lt;/p&gt;

&lt;p&gt;The Azure Developer Associate Exam covers everything you can ever think of when it comes to monitoring and optimizing Azure solutions, implementing Azure security, and developing solutions on top of Azure. Frankly, there are a couple of things you need to know and understand, before going for the Azure Developer Associate Exam.&lt;/p&gt;

&lt;p&gt;For the Azure Developer exam, Microsoft expects you to have a minimum of &lt;em&gt;two&lt;/em&gt; years of experience developing solutions on Azure, while also consuming most of the services Azure offers. Ideally, you should have &lt;strong&gt;practical experience&lt;/strong&gt; in at least, one or two of the four skill areas that this certification exam covers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Develop Azure compute solutions (&lt;em&gt;25-30%&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Develop for Azure storage (&lt;em&gt;10-15%&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Implement Azure security (&lt;em&gt;15-20%&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Monitor, troubleshoot, and optimize Azure solutions (&lt;em&gt;10-15%&lt;/em&gt;)&lt;/li&gt;
&lt;li&gt;Connect to and consume Azure services and third-party services (&lt;em&gt;25-30%&lt;/em&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Exam Format
&lt;/h2&gt;

&lt;p&gt;When you take the Azure Developer Associate Exam, you should be expecting to have &lt;strong&gt;&lt;em&gt;three&lt;/em&gt;&lt;/strong&gt; types of questions. This, below, is the format as at the time of putting this content together.&lt;/p&gt;

&lt;p&gt;The first question format is the &lt;strong&gt;lab format&lt;/strong&gt;, which starts with a business case. Where you are provided with a real-world scenario and you sure have to read through the long business scenario, after reading through the scenario, you get a couple of questions. You can go back and forth, as long as you are still within the business case section. Once you finish these questions related to the business case section, you cannot go back anymore. So you have to go back and forth to review the questions, before proceeding.&lt;/p&gt;

&lt;p&gt;Next up, you will get a couple more questions asking you about a business scenario and asking you if a specific solution can help solve the stated business scenario or not. This type of questions carry a YES or NO, where you get to select either to provide an answer. As an example, you might get a question telling you that &lt;strong&gt;&lt;em&gt;a company needs to deploy a .Net application, for processing pictures, to an AKS cluster, the pictures must pass quality checks before they hit storage&lt;/em&gt;&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;And then the exam engine asks you something like; &lt;strong&gt;&lt;em&gt;the application gets uploaded using a dockerfile with commands for quality tests. Would this satisfy the business need?&lt;/em&gt;&lt;/strong&gt; (YES or NO).&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Spoiler; that wasn't a real exam question.&lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;p&gt;And finally, you get the normal questions (&lt;em&gt;this question format contains the most exam questions&lt;/em&gt;). This is where you will have a question and you would be given four answers where you have to choose one correct answer from the list of answers. In some cases, you would have to drag and drop options to provide a solution to a question. For these questions, you will be asked to choose, say 3 out of 5 possible actions and then re-list them in the correct order. As a sample case, you will be asked &lt;strong&gt;&lt;em&gt;how a developer would deploy a function app using helm&lt;/em&gt;&lt;/strong&gt;. You would be given like 6 possible actions, three of them are correct, and you have to list them in the correct order. In this case, you might choose (&lt;strong&gt;&lt;em&gt;Setup Azure Kubernetes Service with az aks create&lt;/em&gt;&lt;/strong&gt;) then (&lt;strong&gt;&lt;em&gt;prepare function for deployment&lt;/em&gt;&lt;/strong&gt;) then (&lt;strong&gt;&lt;em&gt;perform a deployment with helm deploy&lt;/em&gt;&lt;/strong&gt;).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The labs, the questions format with the fewer questions, carry more points than the ones with more questions. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;My advise here would be to focus on understanding the very steps needed to implement services, checkout the exam objective for pointers. &lt;/p&gt;

&lt;p&gt;For my preparation, I focused on the &lt;strong&gt;Develop Azure compute solutions&lt;/strong&gt; and &lt;strong&gt;Connect to and consume Azure services and third-party services&lt;/strong&gt; objectives, as these are where my strength - with Azure Developer services - really lies, these objectives include similar questions to the questions around &lt;em&gt;Azure Functions&lt;/em&gt; and &lt;em&gt;Helm&lt;/em&gt;. Focusing on these two objectives also made me understand both the &lt;strong&gt;&lt;em&gt;Develop for Azure Storage&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;Implement Azure security&lt;/em&gt;&lt;/strong&gt; objectives to a reasonable extent.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Advise
&lt;/h2&gt;

&lt;p&gt;Focus on the weighted objectives (&lt;em&gt;objectives with the higher percentage ratio&lt;/em&gt;), they carry your keys to success. You might also want to fully understand &lt;strong&gt;&lt;em&gt;Azure Functions&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;AKS&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;Azure Table Storage&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;developing function apps with blob triggers&lt;/em&gt;&lt;/strong&gt; (comes in really handy).&lt;/p&gt;

&lt;p&gt;As a study plan, I made use of two &lt;em&gt;Pluralsight free weekends&lt;/em&gt;, that's about 6 days - to binge most of these topics, inorder to refresh my knowledge on subject areas around those objectives.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;Microsoft Azure Developer Associate Exam&lt;/em&gt; does not require you to be an expert in the DevOps services within Azure, but rather requires you to know how some of these DevOps tools work and when to use what - given a business scenario.&lt;/p&gt;

&lt;p&gt;You should also focus on what roles (&lt;strong&gt;RBACs&lt;/strong&gt;) are required to accomplish specific tasks in Azure as you might have questions asking about what roles are needed to accomplish specific tasks in Azure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Your best friend in this exam is your practical experience! And the &lt;em&gt;&lt;a href="https://microsoft.com/learn" rel="noopener noreferrer"&gt;Microsoft Learn&lt;/a&gt;&lt;/em&gt; platform would give you just that! I used this a whole lot. You should check out the Microsoft Learn contents for the Azure Developer Associate Exam &lt;a href="https://docs.microsoft.com/en-gb/learn/certifications/azure-developer" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I do wish you the very best of luck in your Microsoft Azure Developer Associate Exam certification journey. Please do leave a comment if you find this content helpful, and share, to help others find this resource and better prepare them for the exam.&lt;/p&gt;

&lt;p&gt;Please remember to come back and share your experience, if you eventually take this exam. At least this is what I expect you to do to help others pass the exam too. The shared positive and negative experience. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;DISCLAIMER: I wrote this exam TWICE, failed the first time (and passed the second time with a score of 840!). See a screenshot of my &lt;em&gt;score report&lt;/em&gt; below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxaynov5mbvw1eaq2c98e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fxaynov5mbvw1eaq2c98e.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And you can &lt;a href="https://www.youracclaim.com/badges/adb8931d-fe23-4849-adba-85564b177d36/public_url" rel="noopener noreferrer"&gt;click on this link to view my badge on Acclaim.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>developer</category>
    </item>
    <item>
      <title>Manipulating GitHub Wiki Data With Azure Functions</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Mon, 07 Sep 2020 22:04:06 +0000</pubDate>
      <link>https://dev.to/bashirk/manipulating-github-wiki-data-with-azure-functions-3968</link>
      <guid>https://dev.to/bashirk/manipulating-github-wiki-data-with-azure-functions-3968</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iUHcV2X8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurefunc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iUHcV2X8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurefunc.png" alt="Azure Functions" width="572" height="537"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Image: Daily Host News' blog&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;This article is part of &lt;a href="https://aka.ms/ServerlessSeptember2020"&gt;#ServerlessSeptember&lt;/a&gt;. You'll find other helpful articles, detailed tutorials, and videos in this all-things-Serverless content collection. New articles from community members and cloud advocates are published every week from Monday to Thursday through September.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Find out more about how Microsoft Azure enables your Serverless functions at &lt;a href="https://docs.microsoft.com/azure/azure-functions/?WT.mc_id=servsept20-devto-cxaall"&gt;https://docs.microsoft.com/azure/azure-functions/&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this article, I will be walking you through how to create and setup a webhook on GitHub, connect the webhook with a newly created API via an Azure Function code which would enable the API to listen to GitHub Wiki update events (&lt;a href="https://developer.github.com/v3/activity/events/types/#gollumevent"&gt;Gollum events&lt;/a&gt;, in this case).  &lt;/p&gt;

&lt;p&gt;You would also learn how to update their function code to parse information from the GitHub webhook payload, and hence display the results from the payload.&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Getting Started&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Our first step here would be to deploy a function app, to do this you need to check off some basic requirements needed to get your function in the cloud, which are listed below.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Requirements&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;• Basic knowledge of &lt;a href="https://azure.microsoft.com/en-us/services/functions/"&gt;Azure Functions&lt;/a&gt;&lt;br&gt;
• Basic knowledge of JavaScript&lt;br&gt;
• An &lt;a href="https://aka.ms/azure4students"&gt;Azure Subscription&lt;/a&gt;&lt;br&gt;
• A &lt;a href="https://github.com"&gt;GitHub&lt;/a&gt; account&lt;/p&gt;

&lt;p&gt;After getting the requirements stated above, sign in to the &lt;a href="https://portal.azure.com"&gt;Azure Portal&lt;/a&gt; and create a new resource, as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l0rv42Sg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.34.36%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l0rv42Sg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.34.36%2520PM.png" alt="Create a resource" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Click on the + icon to create a resource&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the following blade, click on the &lt;strong&gt;Compute&lt;/strong&gt; option to reveal the &lt;strong&gt;Function App&lt;/strong&gt; resource we would be using to deploy our function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SL8tpbKa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.35.59%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SL8tpbKa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.35.59%2520PM.png" alt="Function App" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The Azure Functions resource&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the next blade, you'll be required to provide how you want your Function App to be provisioned; just as below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jZ5gzdSb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.39.43%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jZ5gzdSb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.39.43%2520PM.png" alt="Function App Name" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Enter a unique appname, this is also the Function App's URL&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Click on &lt;strong&gt;Create new&lt;/strong&gt; to create a new resource group. I didn't create a resource group, because I do have a resource group already - which houses all the functions I've ever created on my Azure subscription.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fwzT1lK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.40.01%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fwzT1lK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.40.01%2520PM.png" alt="Azure Functions" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Storage and Plan type&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Select Node.js as runtime, as we would be working with JavaScript. Then hit &lt;strong&gt;Hosting&lt;/strong&gt; to move to the next blade&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On this next blade, &lt;em&gt;since we're not really working with storage in this tutorial&lt;/em&gt;, a storage account would automatically be created for you with the consumption plan I mentioned in the first part. Leave everything as is here, then click &lt;strong&gt;Review + create&lt;/strong&gt;. But, do ensure the Windows OS option is selected. Very Important!&lt;/p&gt;

&lt;p&gt;The following blade would be the option to review all the information you have provided Azure to provision your Function App instance. Review thoroughly, before hitting &lt;strong&gt;Create&lt;/strong&gt;. Mine looks like this, below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vA-LDoSY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.40.42%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vA-LDoSY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.40.42%2520PM.png" alt="Review" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Review of my Function App instance&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When you're done with reviewal, and after creating the Function App instance - you can monitor the progress of your Function App deployment from notifications (that "bell" icon). When the resource deployment is complete, click &lt;strong&gt;Go to resource&lt;/strong&gt; to reveal the newly created Function App instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WvAOHCFu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.47.18%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WvAOHCFu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.47.18%2520PM.png" alt="Azure resource" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Go to your deployed resource&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While on the overview page of your Function App (remember that this instance can hold multiple functions - JavaScript functions, 'cause of our runtime), click on the &lt;strong&gt;+&lt;/strong&gt; icon on the left pane to add a new function to your Function App.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fJdJOJGf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.47.48%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fJdJOJGf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.47.48%2520PM.png" alt="Azure Functions New" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Click on the + icon&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On the following screen, click the &lt;strong&gt;In-portal&lt;/strong&gt; development environment option before hitting &lt;strong&gt;Continue&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VXAUuFHL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.48.22%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VXAUuFHL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.48.22%2520PM.png" alt="Azure Functions New" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Select In-portal, then continue&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;NOTE: There are various Azure Functions templates which all serve different purposes. In this Serverless guide, just the &lt;strong&gt;Webhook + API&lt;/strong&gt; template (which also includes the &lt;strong&gt;HTTPTrigger&lt;/strong&gt; template) would be covered.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;• Going forward, select the &lt;strong&gt;Webhook + API&lt;/strong&gt; option, then click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VzToI9dz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.48.30%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VzToI9dz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.48.30%2520PM.png" alt="Azure Functions New" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Select Webhook + API&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The next screen that comes up after clicking &lt;strong&gt;Create&lt;/strong&gt; is an overview of your newly created function, with an in-portal development environment for editing and compiling your code.&lt;/p&gt;

&lt;p&gt;As a start, we would be testing this code out - before going forward with reconstructing the function code to suit the project we would be creating in this article.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lnMQ3iNI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.52.06%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lnMQ3iNI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.52.06%2520PM.png" alt="Azure Functions New" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;An overview of the newly created function&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And to begin with, click on the &lt;strong&gt;Get function URL&lt;/strong&gt; button to reveal the URL for your HTTP-triggered function code (yeah, we just deployed a code snippet in the cloud). This URL includes an authentication key for accessing the content of the deployed block of code which has been included in the copied URL. Paste this URL in a new tab on your browser to access the content of your function code.&lt;/p&gt;

&lt;p&gt;When the URL page loads up, the first screen you are greeted with is an exception with a message, as shown below. A comprehensive detail on the error can be found in your &lt;em&gt;logs&lt;/em&gt; from your in-portal environment. To clear the error message, pass in a parameter - as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SU7J1RvS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25206.03.18%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SU7J1RvS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25206.03.18%2520PM.png" alt="First Demo" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Add a name=any random letters&amp;amp; parameter, as shown, to clear the error message&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;NOTE: The &lt;em&gt;&amp;amp;&lt;/em&gt; operator before the &lt;em&gt;code&lt;/em&gt; parameter helps in passing multiple parameters to an API&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After passing in the &lt;strong&gt;name&lt;/strong&gt; parameter, you should be greeted with a page similar to the one below!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LLaaovTY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25206.03.28%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LLaaovTY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25206.03.28%2520PM.png" alt="Second Demo" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Hello World! You just successfully deployed a function&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;To reveal the bindings for your created function, click on the &lt;strong&gt;View files&lt;/strong&gt; panel - on the right side of the portal. Then click the &lt;em&gt;function.json&lt;/em&gt; file to reveal the input (trigger) and output bindings - these are denoted with &lt;em&gt;in&lt;/em&gt; and &lt;em&gt;out&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;There's also a &lt;strong&gt;Test&lt;/strong&gt; option on the right pane, where you can include and compile code to test for edge cases in your function. BTW,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  What Do These Function Bindings Do?
&lt;/h2&gt;

&lt;p&gt;The code snippet below should be the same as the code in your &lt;em&gt;function.json&lt;/em&gt; file. And the description of what this code does is stated below this snippet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"bindings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="err"&gt;//binding&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;input/trigger&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;starts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;here&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"authLevel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"function"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"httpTrigger"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"direction"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"in"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"req"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="err"&gt;//binding&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;output&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;starts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;here&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"direction"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"out"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"res"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As can be seen, the code is in JSON format which is written in key/value (&lt;strong&gt;"key": "value"&lt;/strong&gt;) pairs - this should give you a proper sense of how the description of the code snippet above would go.&lt;/p&gt;

&lt;p&gt;The first key from the input trigger binding is &lt;strong&gt;authLevel&lt;/strong&gt; which describes the security (authentication) level for your function, there are only three values (or levels, in this context) that can be passed to this key, which are; the &lt;em&gt;function&lt;/em&gt;, &lt;em&gt;anonymous&lt;/em&gt;, and, &lt;em&gt;admin&lt;/em&gt; levels.&lt;/p&gt;

&lt;p&gt;• The &lt;em&gt;anonymous&lt;/em&gt; level means that a function does not require a security (authentication) code to execute or provide responses to requests.&lt;/p&gt;

&lt;p&gt;• The &lt;em&gt;function&lt;/em&gt; level - used in our trigger - means that a function does require a security (authentication) code to execute or provide responses to requests. The trigger binding default value.&lt;/p&gt;

&lt;p&gt;• The &lt;em&gt;admin&lt;/em&gt; level - used in our trigger - means that a function does require a master security (authentication) code to execute or provide responses to requests, which means that only a user with administrative access (with the master code) to the Function App that hosts the function can execute the said function.&lt;/p&gt;

&lt;p&gt;Moving on, the second key from the input binding is &lt;strong&gt;type&lt;/strong&gt;, which indicates the kind of event that the function would be handling - in our case, HTTP-triggered events - hence, the &lt;em&gt;httpTrigger&lt;/em&gt; value.&lt;/p&gt;

&lt;p&gt;The third key from this same input binding is &lt;strong&gt;direction&lt;/strong&gt; which denotes the kind of binding in the first bindings block, in this case &lt;em&gt;in&lt;/em&gt; for input.&lt;/p&gt;

&lt;p&gt;The last key from the input binding is the &lt;strong&gt;name&lt;/strong&gt; key, which accepts the variable name used in the function code, for the request (input) or response (output) bodies, as value.&lt;/p&gt;

&lt;p&gt;Now, the output binding has three default keys; &lt;strong&gt;type&lt;/strong&gt;, &lt;strong&gt;direction&lt;/strong&gt;, and &lt;strong&gt;name&lt;/strong&gt;; which define the response provided by your function. More key/value pairs can definitely be added to suit your function definition.&lt;/p&gt;

&lt;p&gt;The first key from the output trigger binding is &lt;strong&gt;type&lt;/strong&gt; which indicates the kind of value that the function would be processing - in this case, http,  since we would be sending responses to a webhook or the web.&lt;/p&gt;

&lt;p&gt;The second key from this same output binding is &lt;strong&gt;direction&lt;/strong&gt; which denotes the kind of binding in the second bindings block, in this case &lt;em&gt;out&lt;/em&gt; for output.&lt;/p&gt;

&lt;p&gt;The last key, also, from the output binding is the &lt;strong&gt;name&lt;/strong&gt; key, which also accepts the variable name used in the function code, for the request (input) or response (output) bodies, as value.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Next Up&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We would be creating and setting up a webhook on GitHub, connect this webhook with our newly created API (we would be making changes to the function code) to listen to Wiki update events (&lt;a href="https://developer.github.com/v3/activity/events/types/#gollumevent"&gt;Gollum events&lt;/a&gt;). &lt;/p&gt;

&lt;p&gt;As a reminder, webhooks offer a lightweight mechanism for apps to be notified by another service when something of interest happens via an HTTP endpoint. A webhook can be used to trigger an Azure function, and then analyze the message, to determine what exactly has happened and how best to respond to the event.&lt;/p&gt;

&lt;p&gt;What you want to do at this point is to sign in to your GitHub account and create a new repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MvlR4hDo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.50.00%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MvlR4hDo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.50.00%2520PM.png" alt="Create a repo" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Create a new repository&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Create a new public repository by clicking the &lt;strong&gt;New&lt;/strong&gt; button and provide a meaningful name, something like &lt;em&gt;AzureWebhookTest&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E2zjuZyY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.51.00%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E2zjuZyY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.51.00%2520PM.png" alt="Create a Wiki" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Wiki creation page&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VctdQhTq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.51.26%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VctdQhTq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.51.26%2520PM.png" alt="Create a Wiki" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Add basic texts, and save&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Next, select the &lt;strong&gt;Wiki&lt;/strong&gt; and &lt;em&gt;Create the first page&lt;/em&gt;, add some basic texts before clicking &lt;strong&gt;Save page&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nix_GYRZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.52.54%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nix_GYRZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.52.54%2520PM.png" alt="Create a Webhook" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Add a webhook&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Next up, set up a webhook by going back to the &lt;strong&gt;Settings&lt;/strong&gt; tab, select &lt;strong&gt;Webhooks&lt;/strong&gt; then &lt;strong&gt;Add a webhook&lt;/strong&gt;. You'd need to set a payload to the URL for your function, similar to this below:&lt;/p&gt;

&lt;p&gt;https://.azurewebsites.net/api/HttpTrigger1?code=&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eoRxEaIa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.54.42%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eoRxEaIa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.54.42%2520PM.png" alt="Set a configuration" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Webhook configurations&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There's a section that says; &lt;em&gt;Which events would you like to trigger this webhook?&lt;/em&gt; do select the option labeled &lt;strong&gt;Let me select individual events&lt;/strong&gt;. Do also change Content type to &lt;em&gt;application/json&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DHw5NfyV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.55.35%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DHw5NfyV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.55.35%2520PM.png" alt="Set a configuration" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;More webhook configurations&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Be certain to select the Wiki checkbox. No other check boxes should be selected. Also at the bottom of the Webhooks page, ensure &lt;em&gt;Active&lt;/em&gt; is checked and select &lt;em&gt;Add webhook&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MdughBRr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.58.36%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MdughBRr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25206.58.36%2520PM.png" alt="Verify Webhook" width="880" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can now verify that everything is going according to plan, when the &lt;em&gt;Webhooks&lt;/em&gt; page is displayed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Webhooks are basically HTTP callbacks that are triggered by specific events, and are always defined by users. An HTTP request is made to the URL configured for the webhook, by the source site, when an event occurs.&lt;/p&gt;

&lt;p&gt;Setting up a webhook is a two-way process. a) You can specify how you want your webhook to behave through GitHub and what events it should listen to. b) You can also set up your function in Azure Functions to receive and manage the payload received from the webhook.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Testing the Project&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To test out the newly created Webhooks project, go back to the Wiki tab from your repository, select the created page, edit and input some texts - say, &lt;em&gt;Hello World&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3KLMxxe3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25207.03.24%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3KLMxxe3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25207.03.24%2520PM.png" alt="Test Webhook" width="880" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the &lt;em&gt;Save Page&lt;/em&gt; button to save this edit. Now to add a payload to the URL for your function app's function, goto &lt;em&gt;Settings&lt;/em&gt;, and select &lt;em&gt;Edit&lt;/em&gt;. Then scroll down to the &lt;em&gt;Recent Deliveries&lt;/em&gt; section.&lt;/p&gt;

&lt;p&gt;Select the latest delivery entry by clicking on the options &lt;em&gt;...&lt;/em&gt; button. After expansion, you should see the Header information, which includes the Event Type, similar to this below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Request&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;URL:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://introfunc.azurewebsites.net/api/HttpTrigger&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt;?code=aUjXIpqdJ&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="err"&gt;ZHPQuB&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="err"&gt;SzFegxGJu&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="err"&gt;nAXmsQBnmkCpJ&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="err"&gt;RYxleRaoxJ&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="err"&gt;cQ%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;D%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;D&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Request&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;method:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;POST&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;content-type:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;application/json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Expect:&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;span class="err"&gt;User-Agent:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;GitHub-Hookshot/&lt;/span&gt;&lt;span class="mi"&gt;16496&lt;/span&gt;&lt;span class="err"&gt;cb&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;X-GitHub-Delivery:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="err"&gt;ed&lt;/span&gt;&lt;span class="mi"&gt;46280-6&lt;/span&gt;&lt;span class="err"&gt;ab&lt;/span&gt;&lt;span class="mi"&gt;3-11e9-8&lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="err"&gt;-f&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="mi"&gt;14922&lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="mi"&gt;239&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;X-GitHub-Event:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;gollum&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Webhooks require a couple of configuration options before you can use them. We'll go through each of these settings next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Payload URL&lt;/em&gt;&lt;br&gt;
The payload URL is the URL of the server that will receive the webhook POST requests. Each event type has a specific payload format. That payload contains information about the event that triggered the webhook.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Content Type&lt;/em&gt;&lt;br&gt;
Webhooks can be delivered using two different content types: &lt;br&gt;
a)The application/json content type delivers the JSON payload directly as the body of the POST request.&lt;br&gt;
a) The application/x-www-form-urlencoded content type sends the JSON payload as a form parameter, called payload.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You'll also see that the payload contains information indicating that your wiki page was edited. The payload contains pages, repository, and sender sections.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Wrapping Up&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w_CFtN80--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25207.13.27%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w_CFtN80--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/assets/Screenshot%25202020-01-27%2520at%25207.13.27%2520PM.png" alt="Final Test Webhook" width="880" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you'll see a response message generated by your Azure function app. This response message should be same as this: &lt;em&gt;Please pass a name on the query string or in the request body.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Finally, let us update our function to parse information from the payload, and return the output.&lt;/p&gt;

&lt;p&gt;To do this, navigate to the &lt;strong&gt;index.js&lt;/strong&gt; of your function app, then replace the current &lt;em&gt;if...else&lt;/em&gt; block in the function body with the following code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;The current page is &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;, The action taken is &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pages&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nx"&gt;action&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;, and the event type for the action is &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;x-github-event&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;status&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;The&lt;/span&gt; &lt;span class="nx"&gt;payload&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;Wiki&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="nx"&gt;is&lt;/span&gt; &lt;span class="nx"&gt;invalid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;)
    }
}

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hit &lt;strong&gt;Save&lt;/strong&gt; after this update. We can now run a final test to see everything working.&lt;/p&gt;

&lt;p&gt;To do this head over to your GitHub repo settings, then select &lt;strong&gt;Webhooks&lt;/strong&gt;, select &lt;strong&gt;Edit&lt;/strong&gt; and navigate to &lt;strong&gt;Recent deliveries&lt;/strong&gt;, then select the latest delivery by clicking the ellipsis &lt;strong&gt;...&lt;/strong&gt;, and select &lt;strong&gt;Redeliver&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At this stage, if you see a pop up asking if you want to redeliver the payload, select &lt;strong&gt;Yes&lt;/strong&gt;. Now when you select the &lt;strong&gt;Response&lt;/strong&gt; tab, you should be seeing a response (parsed by the function) similar to the below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;The current page is Home, The action taken is edited, and the event type for the action is gollum
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In this article, I walked you through how to setup an Azure Function app, create and setup a webhook on GitHub, connect this webhook with the created Function app to listen to Wiki update events (&lt;a href="https://developer.github.com/v3/activity/events/types/#gollumevent"&gt;Gollum events&lt;/a&gt;, in this case), and parse data from your payload with your Azure Function app. &lt;/p&gt;

&lt;p&gt;With this knowledge, you can now parse any content or information from your webhook payload with your function code.&lt;/p&gt;

&lt;p&gt;I do hope you've enjoyed reading this as much as I did putting it into writing, you can find me on Twitter: &lt;a href="https://twitter.com/_bashirk"&gt;@_bashirk&lt;/a&gt;, if you want more contents like this. Cheers!&lt;/p&gt;

</description>
      <category>azure</category>
      <category>serverless</category>
      <category>cloud</category>
    </item>
    <item>
      <title>FIXED: Azure - Resource provider not registered for the subscription</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Wed, 19 Aug 2020 12:01:00 +0000</pubDate>
      <link>https://dev.to/bashirk/fixed-azure-resource-provider-not-registered-for-the-subscription-5hhn</link>
      <guid>https://dev.to/bashirk/fixed-azure-resource-provider-not-registered-for-the-subscription-5hhn</guid>
      <description>&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;If you have been following any tutorial around creating bots on Azure, and you hit the weird roadblock that tells you;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

Resource provider Microsoft.BotService not registered for the subscription


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2Fazure_webapp_node%2Fraw%2Fassets%2FScreenshot%25202020-08-19%2520at%252011.57.24%2520AM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2Fazure_webapp_node%2Fraw%2Fassets%2FScreenshot%25202020-08-19%2520at%252011.57.24%2520AM.png" alt="'Resource Provider error'"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fret not, 'cause you have just stumbled on the fix!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;Now, let us walk through the fix together. &lt;/p&gt;

&lt;p&gt;First off, head over to &lt;em&gt;Subscriptions&lt;/em&gt; (you can search for this from the Azure &lt;a href="https://portal.azure.com" rel="noopener noreferrer"&gt;portal&lt;/a&gt;), then you should select the specific &lt;em&gt;Subscription&lt;/em&gt; that shows you that error.&lt;/p&gt;

&lt;p&gt;Now that you're inside that subscription, search for &lt;strong&gt;Resource Providers&lt;/strong&gt;. There would definitely be a lot of providers here, so just do a &lt;strong&gt;filter by name&lt;/strong&gt; for &lt;strong&gt;&lt;em&gt;Bot&lt;/em&gt;&lt;/strong&gt;, now should see the sneaky cause of the bug;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr2zalil5ras1kvg6hhh3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr2zalil5ras1kvg6hhh3.png" alt="'Microsoft.Bot'"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In my case, the Microsoft.BotService Request Provider already indicates &lt;em&gt;Registered&lt;/em&gt; - and yes, I still see the bug. If it shows &lt;em&gt;Unregistered&lt;/em&gt;, you do have to register the provider by clicking the &lt;em&gt;Register&lt;/em&gt; button above the Request Provider. And if it already has a &lt;strong&gt;Registered&lt;/strong&gt; green tick (like mine), what we both want to do here is unregister the provider, then register it again. That should work. Simple, innit?&lt;/p&gt;

&lt;h2&gt;
  
  
  The Conclusion
&lt;/h2&gt;

&lt;p&gt;And there you have your fix to the &lt;em&gt;Resource provider not registered bug&lt;/em&gt;. This fix is the way to hard-refresh Request Providers in Azure, works for all Request Providers - not just the Microsoft Bot Service.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>cloud</category>
      <category>bots</category>
    </item>
    <item>
      <title>Links to My Written Works</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Mon, 06 Jul 2020 21:53:15 +0000</pubDate>
      <link>https://dev.to/bashirk/links-to-my-written-works-cgk</link>
      <guid>https://dev.to/bashirk/links-to-my-written-works-cgk</guid>
      <description>&lt;p&gt;&lt;a href="https://dev.to/bashirk"&gt;https://dev.to/bashirk&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Link to my &lt;em&gt;undergraduate research&lt;/em&gt; paper&lt;/strong&gt;; &lt;a href="https://drive.google.com/file/d/1SeYDT9gsicKA1O-WR4rjzLlCnDPBwXfl/view?usp=sharing"&gt;Research paper&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Link to my &lt;em&gt;undergraduate research&lt;/em&gt; documentation&lt;/strong&gt;; Research project &lt;a href="https://drive.google.com/file/d/1Ro_JCG58DKo6q2uoC46M3r71hkndmynQ/view?usp=sharing"&gt;documentation&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Links to my blog posts&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/bashirk/the-proven-way-to-become-a-cloud-engineer-in-2020-3ic3"&gt;The Proven Way to Become a Cloud Engineer&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://dev.to/bashirk/azure-quantum-here-s-a-gentle-dive-2dcf"&gt;A Gentle Dive into Azure Quantum&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://dev.to/bashirk/the-painless-way-to-deploying-your-nodejs-app-on-azure-part-1-14fi"&gt;Part 1: Painless Way to Deploying a NodeJS App&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://dev.to/bashirk/the-painless-way-to-deploying-your-nodejs-app-on-azure-part-2-5151"&gt;Part 2: Painless Way to Deploying a NodeJS App&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-4hah"&gt;Part 1: A Gentle Introduction to Serverless Computing&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-part-2-3b3j"&gt;Part 2: A Gentle Introduction to Serverless Computing&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-part-3-2nn8"&gt;Part 3: A Gentle Introduction to Serverless Computing&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://devcakure.github.io/Learning-Resources/"&gt;DevC Akure Learning Resources GitHub Page&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://github.com/DevCAkure/Learning-Resources/"&gt;DevC Akure Learning Resources repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Others;&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://dev.to/bashirk/managing-azure-subscriptions-and-resources-part-1-1hl2"&gt;https://dev.to/bashirk/managing-azure-subscriptions-and-resources-part-1-1hl2&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://medium.com/@bashirk/managing-azure-subscriptions-and-resources-part-1-b9bac3f39654"&gt;https://medium.com/@bashirk/managing-azure-subscriptions-and-resources-part-1-b9bac3f39654&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://medium.com/@bashirk/managing-azure-subscriptions-and-resources-part-2-b54b51cccca3"&gt;https://medium.com/@bashirk/managing-azure-subscriptions-and-resources-part-2-b54b51cccca3&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://medium.com/@bashirk/a-surefire-way-to-becoming-a-successful-microsoft-student-partner-367eed28c19a"&gt;https://medium.com/@bashirk/a-surefire-way-to-becoming-a-successful-microsoft-student-partner-367eed28c19a&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://dev.to/bashirk"&gt;https://dev.to/bashirk&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://medium.com/@bashirk"&gt;https://medium.com/@bashirk&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://scotch.io/bashirk"&gt;https://scotch.io/bashirk&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What is serverless? A Gentle Introduction to Azure Functions (Part 3)</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Wed, 11 Mar 2020 17:33:56 +0000</pubDate>
      <link>https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-part-3-2nn8</link>
      <guid>https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-part-3-2nn8</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2Fazure_webapp_node%2Fraw%2Fassets%2Fazurefunc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2Fazure_webapp_node%2Fraw%2Fassets%2Fazurefunc.png" alt="Azure Functions"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: Daily Host News' blog&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the third part of my series on an introduction to serverless computing and Azure Functions. In this part, I would be walking you through how to create and setup a webhook on GitHub, connect this webhook with our newly created API (we would be making changes to the function code) to listen to Wiki update events (&lt;a href="https://developer.github.com/v3/activity/events/types/#gollumevent" rel="noopener noreferrer"&gt;Gollum events&lt;/a&gt;, in this case). &lt;/p&gt;

&lt;p&gt;In the &lt;a href="https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-part-2-3b3j"&gt;previous part&lt;/a&gt;, I covered the downsides of serverless computing and Azure Functions - I walked you through deploying a function code in the cloud using Azure Functions.&lt;/p&gt;

&lt;p&gt;It is worthy to note that, webhooks offer a lightweight mechanism for apps to be notified by another service when something of interest happens via an HTTP endpoint. A webhook can be used to trigger an Azure function, and then analyze the message, to determine what exactly has happened and how best to respond.&lt;/p&gt;

&lt;p&gt;In order to follow along with this guide, you'd need to have a checklist of these below.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Requirements&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;• Basic knowledge of Azure Functions, which is covered in the &lt;a href="https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-4hah"&gt;first part&lt;/a&gt; of this article&lt;br&gt;
• Basic knowledge of JavaScript&lt;br&gt;
• An Azure Subscription,  &lt;a href="https://aka.ms/azure4students" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;br&gt;
• A &lt;a href="https://github.com" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; account&lt;/p&gt;

&lt;p&gt;After you've gotten set up with the requirements stated above, sign in to your &lt;a href="https://github.com" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.50.00%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.50.00%2520PM.png" alt="Create a repo"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Create a new repository&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Create a new public repository by clicking the &lt;strong&gt;New&lt;/strong&gt; button and provide a meaningful name, something like &lt;em&gt;AzureWebhookTest&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.51.00%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.51.00%2520PM.png" alt="Create a Wiki"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Wiki creation page&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.51.26%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.51.26%2520PM.png" alt="Create a Wiki"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Add basic texts, and save&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Next, select the &lt;strong&gt;Wiki&lt;/strong&gt; and &lt;em&gt;Create the first page&lt;/em&gt;, add some basic texts before clicking &lt;strong&gt;Save page&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.52.54%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.52.54%2520PM.png" alt="Create a Webhook"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Add a webhook&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Next up, set up a webhook by going back to the &lt;strong&gt;Settings&lt;/strong&gt; tab, select &lt;strong&gt;Webhooks&lt;/strong&gt; then &lt;strong&gt;Add a webhook&lt;/strong&gt;. You'd need to set a payload to the URL for your function, similar to this below:&lt;/p&gt;

&lt;p&gt;https://.azurewebsites.net/api/HttpTrigger1?code=&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.54.42%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.54.42%2520PM.png" alt="Set a configuration"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Webhook configurations&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;There's a section that says; &lt;em&gt;Which events would you like to trigger this webhook?&lt;/em&gt; do select the option labeled &lt;strong&gt;Let me select individual events&lt;/strong&gt;. Do also change Content type to &lt;em&gt;application/json&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.55.35%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.55.35%2520PM.png" alt="Set a configuration"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;More webhook configurations&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Be certain to select the Wiki checkbox. No other check boxes should be selected. Also at the bottom of the Webhooks page, ensure &lt;em&gt;Active&lt;/em&gt; is checked and select &lt;em&gt;Add webhook&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.58.36%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25206.58.36%2520PM.png" alt="Verify Webhook"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can now verify that everything is going according to plan, when the &lt;em&gt;Webhooks&lt;/em&gt; page is displayed.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Webhooks are basically HTTP callbacks that are triggered by specific events, and are always defined by users. An HTTP request is made to the URL configured for the webhook, by the source site, when an event occurs.&lt;/p&gt;

&lt;p&gt;Setting up a webhook is a two-way process. a) You can specify how you want your webhook to behave through GitHub and what events it should listen to. b) You can also set up your function in Azure Functions to receive and manage the payload received from the webhook.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Testing the Project&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To test out the newly created Webhooks project, go back to the Wiki tab from your repository, select the created page, edit and input some texts - say, &lt;em&gt;Hello World&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25207.03.24%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25207.03.24%2520PM.png" alt="Test Webhook"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the &lt;em&gt;Save Page&lt;/em&gt; button to save this edit. Now to add a payload to the URL for your function app's function, goto &lt;em&gt;Settings&lt;/em&gt;, and select &lt;em&gt;Edit&lt;/em&gt;. Then scroll down to the &lt;em&gt;Recent Deliveries&lt;/em&gt; section.&lt;/p&gt;

&lt;p&gt;Select the latest delivery entry by clicking on the options &lt;em&gt;...&lt;/em&gt; button. After expansion, you should see the Header information, which includes the Event Type, similar to this below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Request&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;URL:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://introfunc.azurewebsites.net/api/HttpTrigger&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt;?code=aUjXIpqdJ&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="err"&gt;ZHPQuB&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="err"&gt;SzFegxGJu&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="err"&gt;nAXmsQBnmkCpJ&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="err"&gt;RYxleRaoxJ&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="err"&gt;cQ%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;D%&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="err"&gt;D&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Request&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;method:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;POST&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;content-type:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;application/json&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;Expect:&lt;/span&gt;&lt;span class="w"&gt; 
&lt;/span&gt;&lt;span class="err"&gt;User-Agent:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;GitHub-Hookshot/&lt;/span&gt;&lt;span class="mi"&gt;16496&lt;/span&gt;&lt;span class="err"&gt;cb&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;X-GitHub-Delivery:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="err"&gt;ed&lt;/span&gt;&lt;span class="mi"&gt;46280-6&lt;/span&gt;&lt;span class="err"&gt;ab&lt;/span&gt;&lt;span class="mi"&gt;3-11e9-8&lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="mi"&gt;19&lt;/span&gt;&lt;span class="err"&gt;-f&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="mi"&gt;14922&lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="mi"&gt;239&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;X-GitHub-Event:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;gollum&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Webhooks require a couple of configuration options before you can use them. We'll go through each of these settings next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Payload URL&lt;/em&gt;&lt;br&gt;
The payload URL is the URL of the server that will receive the webhook POST requests. Each event type has a specific payload format. That payload contains information about the event that triggered the webhook.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Content Type&lt;/em&gt;&lt;br&gt;
Webhooks can be delivered using two different content types: &lt;br&gt;
a)The application/json content type delivers the JSON payload directly as the body of the POST request.&lt;br&gt;
a) The application/x-www-form-urlencoded content type sends the JSON payload as a form parameter, called payload.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You'll also see that the payload contains information indicating that your wiki page was edited. The payload contains pages, repository, and sender sections.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25207.13.27%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fbashirk%2FAzureWebhookTest%2Fraw%2Fassets%2FScreenshot%25202020-01-27%2520at%25207.13.27%2520PM.png" alt="Final Test Webhook"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, you'll see a response message generated by your Azure function app. This response message should be same as this: &lt;em&gt;Please pass a name on the query string or in the request body.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What's Next?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In this part, I walked you through how to create and setup a webhook on GitHub, connect this webhook with our newly created API (we would be making changes to the function code) to listen to Wiki update events (&lt;a href="https://developer.github.com/v3/activity/events/types/#gollumevent" rel="noopener noreferrer"&gt;Gollum events&lt;/a&gt;, in this case). &lt;/p&gt;

&lt;p&gt;In the next/last &lt;a href="https://dev.to/bashirk/manipulating-github-wiki-data-with-azure-functions-3968"&gt;part&lt;/a&gt;, I'll walk you through how to update your function to parse information from the GitHub webhook payload, and hence display the results.&lt;/p&gt;

&lt;p&gt;See you on the other side. Cheers! 😺&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>azure</category>
      <category>cloud</category>
      <category>architecture</category>
    </item>
    <item>
      <title>What is Serverless? A Gentle Introduction to Azure Functions (Part 2)</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Wed, 29 Jan 2020 00:32:43 +0000</pubDate>
      <link>https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-part-2-3b3j</link>
      <guid>https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-part-2-3b3j</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iUHcV2X8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurefunc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iUHcV2X8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurefunc.png" alt="Azure Functions" width="572" height="537"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: Daily Host News' blog&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the second of a four-part series on an introduction to serverless computing and Azure Functions. In this part, I would be walking you through deploying a function code in the cloud using Azure Functions. In the &lt;a href="https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-4hah"&gt;previous part&lt;/a&gt;, I covered an introduction to serverless computing and Azure Functions - and also covered the very advantages of running code functions on a serverless platform. I'll also be covering the downsides of the serverless platform in this part. Before going forward, I'd like to tell you about...&lt;/p&gt;
&lt;h2&gt;
  
  
  The Downsides of Serverless
&lt;/h2&gt;

&lt;p&gt;As discussed in the first part of this series, there are a number of negatives to working with Azure Functions. These downsides do have workarounds, which I would also be talking about. Before then, here's the very first negative of working with serverless;&lt;/p&gt;

&lt;p&gt;• Rate of Execution: Azure Functions might not be your best bet, if you want your function to be run by multiple clients - as this might seem costly. You may want to consider hosting your entire project by &lt;a href="https://dev.to/bashirk/managing-azure-subscriptions-and-resources-part-1-1hl2"&gt;provisioning a Virtual Machine (VM)&lt;/a&gt;, after estimating your usage and calculating your total cost - you can do that &lt;a href="https://azure.microsoft.com/en-us/pricing/tco/calculator/"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;During auto-scaling, just a single function app instance can be created every 10 seconds, which can be up to 200 instances in total. It is worthy to note, that, each created instance can service multiple executions. And, there is no actual set limit on how much traffic a single instance can handle. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;In Layman's terms, you can create 200 function apps within 2000 seconds. Note that, within a single Function App, you can have many functions (that perform different tasks) running.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;• Time of Execution: Azure Functions might again not be your best bet, if an app timeout of 5 minutes isn't ideal for your project - as the default timeout for functions is 5 minutes. This timeout is configurable to a tune of 10 minutes though, so if your function requires more than 10 minutes to run, you might want to consider &lt;a href="https://dev.to/bashirk/managing-azure-subscriptions-and-resources-part-1-1hl2"&gt;provisioning a VM&lt;/a&gt;. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;NOTE: If your service is launched through an HTTP request and you do expect the return value as an HTTP response, the timeout for this is restricted to 2.5 minutes. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Moreso, there's an option called Durable Functions that allows you to orchestrate the executions of multiple functions without any timeout. Tadaa! :happy: This isn't covered in this article though. Sorry!&lt;/p&gt;
&lt;h2&gt;
  
  
  &lt;strong&gt;Getting Started with Deployment&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To get started with deploying a function app, there are some basic requirements needed to get your function in the cloud, which are listed below.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Requirements&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;• Basic knowledge of Azure Functions, which is covered in the &lt;a href="https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-4hah"&gt;first part&lt;/a&gt; of this article&lt;br&gt;
• Basic knowledge of JavaScript&lt;br&gt;
• An Azure Subscription,  &lt;a href="https://aka.ms/azure4students"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After getting the requirements stated above, sign in to the &lt;a href="https://portal.azure.com"&gt;Azure Portal&lt;/a&gt; and create a new resource, as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l0rv42Sg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.34.36%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l0rv42Sg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.34.36%2520PM.png" alt="Create a resource" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Click on the + icon to create a resource&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the following blade, click on the &lt;strong&gt;Compute&lt;/strong&gt; option to reveal the &lt;strong&gt;Function App&lt;/strong&gt; resource we would be using to deploy our function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SL8tpbKa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.35.59%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SL8tpbKa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.35.59%2520PM.png" alt="Function App" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The Azure Functions resource&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the next blade, you'll be required to provide how you want your Function App to be provisioned; just as below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jZ5gzdSb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.39.43%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jZ5gzdSb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.39.43%2520PM.png" alt="Function App Name" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Enter a unique appname, this is also the Function App's URL&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Click on &lt;strong&gt;Create new&lt;/strong&gt; to create a new resource group. I didn't create a resource group, because I do have a resource group already - which houses all the functions I've ever created on my Azure subscription.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fwzT1lK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.40.01%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fwzT1lK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.40.01%2520PM.png" alt="Azure Functions" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Storage and Plan type&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Select Node.js as runtime, as we would be working with JavaScript. Then hit &lt;strong&gt;Hosting&lt;/strong&gt; to move to the next blade&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On this next blade, &lt;em&gt;since we're not really working with storage in this tutorial&lt;/em&gt;, a storage account would automatically be created for you with the consumption plan I mentioned in the first part. Leave everything as is here, then click &lt;strong&gt;Review + create&lt;/strong&gt;. But, do ensure the Windows OS option is selected. Very Important!&lt;/p&gt;

&lt;p&gt;The following blade would be the option to review all the information you have provided Azure to provision your Function App instance. Review thoroughly, before hitting &lt;strong&gt;Create&lt;/strong&gt;. Mine looks like this, below;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vA-LDoSY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.40.42%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vA-LDoSY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.40.42%2520PM.png" alt="Review" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Review of my Function App instance&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When you're done with reviewal, and after creating the Function App instance - you can monitor the progress of your Function App deployment from notifications (that "bell" icon). When the resource deployment is complete, click &lt;strong&gt;Go to resource&lt;/strong&gt; to reveal the newly created Function App instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WvAOHCFu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.47.18%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WvAOHCFu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.47.18%2520PM.png" alt="Azure resource" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Go to your deployed resource&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While on the overview page of your Function App (remember that this instance can hold multiple functions - JavaScript functions, 'cause of our runtime), click on the &lt;strong&gt;+&lt;/strong&gt; icon on the left pane to add a new function to your Function App.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fJdJOJGf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.47.48%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fJdJOJGf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.47.48%2520PM.png" alt="Azure Functions New" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Click on the + icon&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On the following screen, click the &lt;strong&gt;In-portal&lt;/strong&gt; development environment option before hitting &lt;strong&gt;Continue&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VXAUuFHL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.48.22%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VXAUuFHL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.48.22%2520PM.png" alt="Azure Functions New" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Select In-portal, then continue&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;NOTE: There are various Azure Functions templates which all serve different purposes. In this Serverless guide, just the &lt;strong&gt;Webhook + API&lt;/strong&gt; template (which also includes the &lt;strong&gt;HTTPTrigger&lt;/strong&gt; template) would be covered.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;

&lt;p&gt;• Going forward, select the &lt;strong&gt;Webhook + API&lt;/strong&gt; option, then click &lt;strong&gt;Create&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VzToI9dz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.48.30%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VzToI9dz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.48.30%2520PM.png" alt="Azure Functions New" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Select Webhook + API&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The next screen that comes up after clicking &lt;strong&gt;Create&lt;/strong&gt; is an overview of your newly created function, with an in-portal development environment for editing and compiling your code.&lt;/p&gt;

&lt;p&gt;As a start, we would be testing this code out - before going forward with reconstructing the function code to suit the project we would be creating in this article.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lnMQ3iNI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.52.06%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lnMQ3iNI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25205.52.06%2520PM.png" alt="Azure Functions New" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;An overview of the newly created function&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And to begin with, click on the &lt;strong&gt;Get function URL&lt;/strong&gt; button to reveal the URL for your HTTP-triggered function code (yeah, we just deployed a code snippet in the cloud). This URL includes an authentication key for accessing the content of the deployed block of code which has been included in the copied URL. Paste this URL in a new tab on your browser to access the content of your function code.&lt;/p&gt;

&lt;p&gt;When the URL page loads up, the first screen you are greeted with is an exception with a message, as shown below. A comprehensive detail on the error can be found in your &lt;em&gt;logs&lt;/em&gt; from your in-portal environment. To clear the error message, pass in a parameter - as shown below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SU7J1RvS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25206.03.18%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SU7J1RvS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25206.03.18%2520PM.png" alt="First Demo" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Add a name=any random letters&amp;amp; parameter, as shown, to clear the error message&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;NOTE: The &lt;em&gt;&amp;amp;&lt;/em&gt; operator before the &lt;em&gt;code&lt;/em&gt; parameter helps in passing multiple parameters to an API&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;After passing in the &lt;strong&gt;name&lt;/strong&gt; parameter, you should be greeted with a page similar to the one below!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LLaaovTY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25206.03.28%2520PM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LLaaovTY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/AzureWebhookTest/raw/master/Screenshot%25202020-01-27%2520at%25206.03.28%2520PM.png" alt="Second Demo" width="880" height="514"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Hello World! You just successfully deployed a function&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;To reveal the bindings for your created function, click on the &lt;strong&gt;View files&lt;/strong&gt; panel - on the right side of the portal. Then click the &lt;em&gt;function.json&lt;/em&gt; file to reveal the input (trigger) and output bindings - these are denoted with &lt;em&gt;in&lt;/em&gt; and &lt;em&gt;out&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;There's also a &lt;strong&gt;Test&lt;/strong&gt; option on the right pane, where you can include and compile code to test for edge cases in your function. BTW,&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  What Do These Function Bindings Do?
&lt;/h2&gt;

&lt;p&gt;The code snippet below should be the same as the code in your &lt;em&gt;function.json&lt;/em&gt; file. And the description of what this code does is stated below this snippet.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"bindings"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="err"&gt;//binding&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;input/trigger&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;starts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;here&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"authLevel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"function"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"httpTrigger"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"direction"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"in"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"req"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;

    &lt;/span&gt;&lt;span class="err"&gt;//binding&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;output&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;starts&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;here&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"direction"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"out"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
            &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"res"&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As can be seen, the code is in JSON format which is written in key/value (&lt;strong&gt;"key": "value"&lt;/strong&gt;) pairs - this should give you a proper sense of how the description of the code snippet above would go.&lt;/p&gt;

&lt;p&gt;The first key from the input trigger binding is &lt;strong&gt;authLevel&lt;/strong&gt; which describes the security (authentication) level for your function, there are only three values (or levels, in this context) that can be passed to this key, which are; the &lt;em&gt;function&lt;/em&gt;, &lt;em&gt;anonymous&lt;/em&gt;, and, &lt;em&gt;admin&lt;/em&gt; levels.&lt;/p&gt;

&lt;p&gt;• The &lt;em&gt;anonymous&lt;/em&gt; level means that a function does not require a security (authentication) code to execute or provide responses to requests.&lt;/p&gt;

&lt;p&gt;• The &lt;em&gt;function&lt;/em&gt; level - used in our trigger - means that a function does require a security (authentication) code to execute or provide responses to requests. The trigger binding default value.&lt;/p&gt;

&lt;p&gt;• The &lt;em&gt;admin&lt;/em&gt; level - used in our trigger - means that a function does require a master security (authentication) code to execute or provide responses to requests, which means that only a user with administrative access (with the master code) to the Function App that hosts the function can execute the said function.&lt;/p&gt;

&lt;p&gt;Moving on, the second key from the input binding is &lt;strong&gt;type&lt;/strong&gt;, which indicates the kind of event that the function would be handling - in our case, HTTP-triggered events - hence, the &lt;em&gt;httpTrigger&lt;/em&gt; value.&lt;/p&gt;

&lt;p&gt;The third key from this same input binding is &lt;strong&gt;direction&lt;/strong&gt; which denotes the kind of binding in the first bindings block, in this case &lt;em&gt;in&lt;/em&gt; for input.&lt;/p&gt;

&lt;p&gt;The last key from the input binding is the &lt;strong&gt;name&lt;/strong&gt; key, which accepts the variable name used in the function code, for the request (input) or response (output) bodies, as value.&lt;/p&gt;

&lt;p&gt;Now, the output binding has three default keys; &lt;strong&gt;type&lt;/strong&gt;, &lt;strong&gt;direction&lt;/strong&gt;, and &lt;strong&gt;name&lt;/strong&gt;; which define the response provided by your function. More key/value pairs can definitely be added to suit your function definition.&lt;/p&gt;

&lt;p&gt;The first key from the output trigger binding is &lt;strong&gt;type&lt;/strong&gt; which indicates the kind of value that the function would be processing - in this case, http,  since we would be sending responses to a webhook or the web.&lt;/p&gt;

&lt;p&gt;The second key from this same output binding is &lt;strong&gt;direction&lt;/strong&gt; which denotes the kind of binding in the second bindings block, in this case &lt;em&gt;out&lt;/em&gt; for output.&lt;/p&gt;

&lt;p&gt;The last key, also, from the output binding is the &lt;strong&gt;name&lt;/strong&gt; key, which also accepts the variable name used in the function code, for the request (input) or response (output) bodies, as value.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What's Next?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In this part, I walked you through deploying a function code in the cloud using Azure Functions. In the next/last part, I would be walking you through how to create and setup a webhook on GitHub, connect this webhook with our newly created API (we would be making changes to the function code) to listen to Wiki update events (&lt;a href="https://developer.github.com/v3/activity/events/types/#gollumevent"&gt;Gollum events&lt;/a&gt;, in this case).&lt;/p&gt;

&lt;p&gt;See you on the other side. 😺 Cheers!&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>azure</category>
      <category>cloud</category>
      <category>architecture</category>
    </item>
    <item>
      <title>What is Serverless? A Gentle Introduction to Azure Functions (Part 1)</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Sun, 26 Jan 2020 18:53:46 +0000</pubDate>
      <link>https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-4hah</link>
      <guid>https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-4hah</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iUHcV2X8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurefunc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iUHcV2X8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurefunc.png" alt="Azure Functions" width="572" height="537"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: Daily Host News' blog&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This is the first of a four-part series on an introduction to serverless computing and Azure Functions. In this part, I would be covering an introduction to serverless computing and Azure Functions - while also covering the very advantages of running code functions on a serverless platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What Really Is Serverless?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;To start with, &lt;strong&gt;serverless&lt;/strong&gt; is all the talk around cloud computing these days, and wrapping your heads around this new model in cloud computing (yeah, been around since 2017) might seem confusing - at first. &lt;/p&gt;

&lt;p&gt;Then again, &lt;em&gt;"Peace, be still"&lt;/em&gt;. Serverless is just another word, as serverless doesn't necessarily mean architectures without server infrastructures, it only depicts architectures using less server infrastructures. Think of serverless as a &lt;em&gt;WiFi&lt;/em&gt; connection, the term wireless - &lt;a href="https://www.webopedia.com/TERM/W/Wi_Fi.html"&gt;Wireless Fidelity&lt;/a&gt; - doesn't inquire that there are zero wires in the infrastructures leading to a WiFi connection. It just literally means that there are few wired connections that have been put into place.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JPtoVA6d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azuretweet.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JPtoVA6d--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azuretweet.png" alt="Azure Functions Event" width="180" height="180"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: &lt;a class="mentioned-user" href="https://dev.to/azurefunctions"&gt;@azurefunctions&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this article, I'll be talking more about the Azure Functions stack and also get you in sync with the amazing benefits of running a serverless architecture like Azure Functions. More importantly, I'll be diving more into the Azure Functions service offering, and subsequently get you to build a serverless app before the end of this article (this would be covered in the next part though).&lt;/p&gt;

&lt;p&gt;To start with, serverless can basically be described as a &lt;em&gt;Functions-as-a-Service&lt;/em&gt; (&lt;strong&gt;FaaS&lt;/strong&gt;) platform where you get to deploy some functions of your code, or software projects, separately in the cloud and get charged only when requests that aree being put through to these functions get processed (when the functions return responses, literally). &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That is, you only pay for the time when your block of code (function) runs, which is due to the Azure Functions Consumption Plan (I'll come back to this later). &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N4iqDhUq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurefunc_event.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N4iqDhUq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurefunc_event.png" alt="Azure Functions Eventt" width="727" height="422"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: Chsakell's blog&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Meaning, Azure would only charge you for the function being run (even if you have a million functions deployed) which would be in direct response to the request from the users of this function. Consider this a micro-pricing plan. Cool, ain't it? 😉&lt;/p&gt;

&lt;p&gt;As a refresher, functions - generally - are reusable blocks of code that perform specific tasks. Now, Azure Functions are simple event-driven ways to run these blocks of code (normal functions) in the cloud. Yeah right, this was nearly impossible in the early days of cloud computing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7XMnQaJX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurefunc_events.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7XMnQaJX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurefunc_events.png" alt="Azure Functions" width="789" height="389"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Source: Towards Data Science's blog&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Azure Functions are event-driven, in the sense that they require specific triggers or actions to be put to work before they return outputs (could be HTTP GET requests, in this sense). Just as normal functions would behave, a function would need to be invoked or triggered from a state of inertia before it becomes active. &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Advantages of Azure Functions&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;At this point, it is pertinent to highlight the many advantages of going the serverless route over provisioning a normal virtual machine, and managing accordingly, while working with functions. With Azure Functions, you can write code logic in any language of your choice and you also get an automatic scaling of your function, that is, there are no servers to manage on your end. &lt;/p&gt;

&lt;p&gt;Well, listed below are a few of the advantages Azure Functions have over provisioning virtual machines while working with functions.&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;&lt;em&gt;Moderate Infrastructure Scaling&lt;/em&gt;&lt;/strong&gt;: With Azure Functions, you get charged only on the requests processed by your functions. Why do I keep iterating this point? "Suppose you've provisioned VM servers and configured them with enough resources to handle your peak load times. When the load is light, you are potentially paying for infrastructure you're not using. Serverless computing (like Azure Functions) helps solve the allocation problem by scaling up or down automatically, and you're only billed when your function is processing work." Which in turn, helps save cost.&lt;/p&gt;

&lt;p&gt;• &lt;strong&gt;&lt;em&gt;Driven by Events or Triggers&lt;/em&gt;&lt;/strong&gt;: Azure Functions are event driven, as stated in the paragraphs before this. Azure Functions get executed in direct response to events (triggers), which could be just a single trigger or call to submit an image or body of texts to an API.&lt;/p&gt;

&lt;p&gt;There's an approach in serverless computing which helps simplify a function definition by allowing you to declare bindings (to indicate where the data attached to your function is coming from) which could be either an input or an output. Input bindings could also be called triggers, since they help in making sure your functions come alive (start running). &lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;With this input/trigger binding, you essentially don't need to write a script to watch queues nor storage, you only focus on writing function code that work. A trigger binding can definitely be configured to perfectly suit your needs. As an addition, an output binding determines which part of your functions your data would be sent to. You configure a trigger as part of the function definition. &lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;p&gt;This approach simplifies your code by allowing you to declare where the data comes from (trigger/input binding) and where it goes (output binding). You don't need to write code to watch queues, blobs, hubs, etc. You can focus purely on the business logic.&lt;/p&gt;

&lt;p&gt;While serverless logic always make sense while working with functions, there are a number of disadvantages to working with Azure Functions which would be discussed in the &lt;a href="https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-part-2-3b3j"&gt;following part&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In addition, we would also be building and deploying a function code to the cloud using Azure Functions, for a practical look into serverless.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;TL;DR?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;• An Azure Function is MAINLY useful for deploying blocks of code (functions, that perform specific tasks) in the cloud, while ONLY paying for requests processed by these functions. Shikenah 😉&lt;/p&gt;

&lt;p&gt;See you on the &lt;a href="https://dev.to/bashirk/what-is-serverless-a-gentle-introduction-to-azure-functions-part-2-3b3j"&gt;other side&lt;/a&gt;. Cheers! 😺&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>azure</category>
      <category>cloud</category>
      <category>architecture</category>
    </item>
    <item>
      <title>The Proven Way to Become a Cloud Engineer in 2020</title>
      <dc:creator>Kóredé Bashir</dc:creator>
      <pubDate>Sat, 25 Jan 2020 14:53:04 +0000</pubDate>
      <link>https://dev.to/bashirk/the-proven-way-to-become-a-cloud-engineer-in-2020-3ic3</link>
      <guid>https://dev.to/bashirk/the-proven-way-to-become-a-cloud-engineer-in-2020-3ic3</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3MO_IBcS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azure-training.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3MO_IBcS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azure-training.png" alt="Azure DevOPs"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yeah right! It's 2020, and the first month of the new decade (and the year 2020) is running to an end already. &lt;em&gt;"Why not dive right into cloud computing?"&lt;/em&gt; - Yes, I know what you've been thinking 😉&lt;/p&gt;

&lt;p&gt;As it stands, cloud computing is the &lt;a href="https://thenextweb.com/hardfork/2020/01/13/blockchain-linkedin-solidity-ethereum-cryptocurrency-jobs-recruitment/"&gt;hottest skill to have, right after blockchain, and obviously was in the last decade&lt;/a&gt; - and that shouldn't change this decade. At the very crux of cloud computing is DevOps (more details on this later). Since cloud is the new crazy, why not learn cloud computing &lt;strong&gt;the right way&lt;/strong&gt; this year?&lt;/p&gt;

&lt;p&gt;And Microsoft Azure is arguably your best bet, if you're looking to give cloud computing a shot. In this article, I would be sharing great insights on how you can get started with Azure and become an Azure Cloud Engineer this year, 2020. But before going forward...&lt;/p&gt;

&lt;h2&gt;
  
  
  What exactly do I mean by DevOps?
&lt;/h2&gt;

&lt;p&gt;The word &lt;strong&gt;DevOps&lt;/strong&gt; basically means &lt;strong&gt;&lt;em&gt;Development Operations&lt;/em&gt;&lt;/strong&gt;, and it's all about the developments and operations required in getting a software from development stage to a release stage. It's also a model around the development and operations needed to improve the collaboration process between the engineers of a software. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--77UoTd8D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/devops.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--77UoTd8D--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/devops.png" alt="DevOps explained"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;DevOps essentially helps during the need to have some incremental and frequent changes in software features. A DevOps Engineer could now be said to be that person who works with software developers/engineers to facilitate the proper construction, testing, and release of each feature of a software by streamlining and automating the deployment and infrastructure management processes. Hope that wasn't too hard to grab, biko? 😀&lt;/p&gt;

&lt;p&gt;To get started as a Cloud or DevOps Engineer, you definitely need an Arsenal (not the s**thole football club LOL) which includes weapons. A first and notable weapon that should be ever-present in your arsenal is a cloud subscription, come in the Azure Cloud credits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Your free Azure credits
&lt;/h2&gt;

&lt;p&gt;As stated above, the very first thing to have in your arsenal, as an Azure Cloud Engineer, is an Azure subscription with credits which you could get for free by signing up &lt;a href="https://azure.microsoft.com/en-us/free/students/"&gt;here&lt;/a&gt; for students, and &lt;a href="https://azure.microsoft.com/en-us/offers/ms-azr-0044p/"&gt;here&lt;/a&gt; for non-students. The Azure subscription includes a wide range of free services which can be used in any configurations as you deem fit. After getting your free Azure credits, the very next thing is to get ready to enrich your arsenal - by...&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting with the fundamentals
&lt;/h2&gt;

&lt;p&gt;No better way to get started with learning Azure, and the Azure stack, than starting with the very fundamentals of Azure. The Azure Fundamentals learning path on &lt;a href="https://docs.microsoft.com/en-us/learn/paths/azure-fundamentals/"&gt;Microsoft Learn&lt;/a&gt; contains well-prepared modules that would guide you from what an Azure subscription is, to how to get started with provisioning and managing your first virtual machine. &lt;/p&gt;

&lt;p&gt;You can get started with Azure Fundamentals, &lt;a href="https://docs.microsoft.com/en-us/learn/paths/azure-fundamentals/"&gt;here&lt;/a&gt;. After you've gotten your head wrapped around these fundamentals, it's high time to...&lt;/p&gt;

&lt;h2&gt;
  
  
  Become a Microsoft Learn fanboy/fangirl
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xR5fZCDi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/mslearn.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xR5fZCDi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/mslearn.jpeg" alt="MS Learn"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/learn/"&gt;Microsoft Learn&lt;/a&gt; is an online education platform announced at Microsoft Ignite 2018. Microsoft Learn provides free learning resources on various Microsoft technologies, including Azure. The platform provides hands-on learning opportunity so that learners like you could develop skills through practical and interactive labs available on the platform. As you have observed, the Microsoft Learn platform houses the Azure Fundamentals you're advised to pass through as a beginner Cloud Engineer (don't fret, most expert Cloud Engineers started with this same learning path on Microsoft Learn).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0y35xRTy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/mslearn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0y35xRTy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/mslearn.png" alt="MS Learn"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Microsoft Learn is absolutely free, contains in-browser access to Microsoft tools, and also includes multiple learning paths on amazing Microsoft technologies - not excluding Azure. In addition to MS Learn, the amazing people at Microsoft have provided insightful documentations on each and every Microsoft technologies available to the public, but it's not enough to just consume the documentations, as you must...&lt;/p&gt;

&lt;h2&gt;
  
  
  Read, and BE BETTER than, the docs
&lt;/h2&gt;

&lt;p&gt;As stated in the previous module, Microsoft provides amazing contents on all technologies released by the company, which doesn't exclude Azure. Microsoft Azure is a platform for multiple cloud services from Microsoft, and I'll be listing a number of those services below - including links to their respective documentations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/guides/developer/azure-developer-guide"&gt;Getting Started Guide for Azure Developers&lt;/a&gt;: This doc is a guide that helps developers get started faster with Azure and its underlying tools.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/samples/browse/?products=azure"&gt;Code Samples&lt;/a&gt;: This doc provides seamless samples to developer tools and technologies offering from Microsoft. You can explore the various code samples and get started with building stuffs on Azure in real time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/resources/templates"&gt;Azure Quickstart Templates&lt;/a&gt;: With this resource, you would get access to community contributed templates that empowers you to get more done in no time. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/migration/migration-journey"&gt;Azure Migration Center&lt;/a&gt;: With this resource, you get all the tools and resources that are required to migrate apps, data, and infrastructure at your own pace.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/architecture"&gt;Azure Architecture Center&lt;/a&gt;: This doc contains guidance for building end-to-end solutions on Microsoft Azure, which contains the Azure Architecture Center best practices, design patterns, scenario guides, and reference implementations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/architecture/framework"&gt;Azure Architecture Framework&lt;/a&gt;: The Azure Architecture Framework helps you to build on the pillars that ensure a successful cloud solution which is built on these five pillars of architecture excellence: Cost, DevOps, Resiliency, Scalability, and Security. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/architecture/guide"&gt;Application Architecture Guide&lt;/a&gt;: This doc details the Azure Application Architecture Guide which presents a structured approach for designing applications on Azure that are scalable, resilient, and highly available. It is based on proven practices that we have learnt from customer engagements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/architecture/patterns"&gt;Azure Cloud Design Patterns&lt;/a&gt;: This doc details the Azure Cloud Design Patterns which are useful for building reliable, scalable, secure applications in the cloud. Each pattern describes the problem that the pattern addresses, considerations for applying the pattern, and an example based on Microsoft Azure. Most of the patterns include code samples or snippets that show how to implement the pattern on Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/architecture/aws-professional"&gt;Azure for AWS Professionals&lt;/a&gt;: This content helps if you're coming from an Amazon Web Services (AWS) background - a different cloud platform. It helps AWS professionals understand the basics of Microsoft Azure accounts, platform, and services. It also covers key similarities and differences between the AWS and Azure platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/overview/azure-hybrid"&gt;Azure Hybrid&lt;/a&gt;: This resource is for learning about the Azure Hybrid Cloud with features and services like Azure Stack, Azure Arc, and many more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-in/services/azure-sentinel/"&gt;Azure Sentinel&lt;/a&gt;: This resource provides insights into the Azure Sentinel service which is an organization's birds-eye view across the enterprise. Azure Sentinel allows enterprises to put the cloud, and large-scale intelligence from decades of Microsoft security experience, to work. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/overview/security"&gt;Azure Security&lt;/a&gt;: This resource provides insights into learning about security on Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/overview/trusted-cloud/compliance"&gt;Azure Compliance&lt;/a&gt;: This resource provides an overview of compliance in Microsoft Azure, which includes more than 90 compliance offerings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/overview/trusted-cloud/privacy"&gt;Azure Privacy&lt;/a&gt;: This resource provides insights into learning about data privacy and protection in Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/pricing"&gt;Azure Pricing&lt;/a&gt;: This resource includes insights into how Azure pricing works.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/support/plans"&gt;Azure Support Plans&lt;/a&gt;: This resource helps in exploring the range of Azure support options and helps in determining the plan that best fits your Azure activities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/cloud-adoption-framework/decision-guides"&gt;Architectural Decision Guides&lt;/a&gt;: This resource is the guide which helps in the Cloud Adoption Framework, which includes describing patterns and models that help when creating cloud governance design guidance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/azure/cloud-adoption-framework/index"&gt;Cloud Adoption Framework&lt;/a&gt;:  This documentation provides useful insights into the Cloud Adoption Framework offering from Microsoft, which is the One Microsoft approach to cloud adoption in Azure - consolidating, and sharing best practices from Microsoft employees, partners, and customers. The framework gives customers a set of tools, guidance, and narratives that help shape technology, business, and people strategies for driving desired business outcomes during their adoption effort. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/cloud-adoption-framework/operating-model"&gt;Cloud Operating model&lt;/a&gt;: This documentation helps during the establishment of an operating model for the cloud.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/pricing/tco/calculator"&gt;TCO Calculator&lt;/a&gt;: This resource helps in the estimation of the cost savings you can realize by migrating your workloads to Azure.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Get Microsoft Azure Certified
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fW3_S1L_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurecert.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fW3_S1L_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/azurecert.png" alt="Azure Cert"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aside the badges and trophies you would earn while learning about Azure on Microsoft Learn, another great way to verify and validate your newly-earned skills is by taking Microsoft certification exams on Azure. By taking the Azure exams, you are definitely helping yourself to finding the right structure to a rewarding career path. The Microsoft Azure Certifications page can be found here, and each certification costs $80. Now, there is a free way to bypass this payment (tell no one I told you). This hack would be revealed to you soon enough, keep reading - and don't tell me you're tired 🙄&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fr5c3EX6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/microsoftcert.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fr5c3EX6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bashirk/azure_webapp_node/raw/assets/microsoftcert.png" alt="Azure Certified"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Join the Azure Cloud bandwagon
&lt;/h2&gt;

&lt;p&gt;In order to excel in a chosen field, it is pertinent to study the traits of the present people in that field and get mentorship when necessary. A good way to get mentorship, and study the real traits of real people, is by joining a local community of real people. There are various communities around the Microsoft Azure cloud platform, a simple internet search would simply help in this case. But if you're hesitant to spend 10 seconds of your time searching the internet, below is a list of some online and offline communities that you could join:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You've already spent your 10 seconds scrolling down 😜&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.microsoft.com/en-us/ignite-the-tour/"&gt;Microsoft Ignite: The Tour&lt;/a&gt;: Now talking about the hack I mentioned (the free way to take an Azure certification), Microsoft Ignite: The Tour which brings the very best of Microsoft &lt;a href="https://www.microsoft.com/en-us/ignite"&gt;Ignite&lt;/a&gt; to a city near you, provides technical training led by Microsoft experts and your community. You’ll learn new ways to build solutions, migrate and manage infrastructure, and connect with local industry leaders and peers. All attendees at both Ignite and Ignite: The Tour will be given a free certification exam, subject to certain exceptions, to help you continue skilling up and prove your technical expertise to employers and peers. More details &lt;a href="https://docs.microsoft.com/en-us/learn/certifications/microsoft-ignite-free-certification-exam-offer"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://techcommunity.microsoft.com/t5/azure/ct-p/Azure"&gt;The Azure Online Community&lt;/a&gt;: This is definitely your goto community for best practices and the latest news on Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/azure"&gt;The Azure DEV Community&lt;/a&gt;: This is a curated content on how-to posts from the Azure Developer Advocates on the DEV Community platform.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.meetup.com/pro/azuretechcommunities"&gt;Local Azure Tech Communities&lt;/a&gt;: This is a curated lists of offline Azure communities present on Meetup. You can find a local Azure meetup happening around a city, by searching the name of such city.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://global.azurebootcamp.net/"&gt;Global Azure Bootcamp&lt;/a&gt;: This is a worldwide and a 100 percent community-driven event organized by MVPs, regional directors, and user group leaders around the world who work in collaboration to deliver the largest one-day, global Azure event.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://channel9.msdn.com/Shows/Azure-Friday/"&gt;Azure Friday&lt;/a&gt;: Join Scott Hanselman every Friday as he engages one-on-one with the engineers who build the services that power Microsoft Azure as they demo capabilities, answer Scott's questions, and share their insights.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;...this isn't all, and these lists (documentations and communities) would definitely be updated - as I lay my hands on more information.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR?
&lt;/h2&gt;

&lt;p&gt;Here's a bullet list of all things covered in this article;&lt;/p&gt;

&lt;p&gt;• Get Your free Azure credits&lt;/p&gt;

&lt;p&gt;• Start with the fundamentals on Microsoft Learn&lt;/p&gt;

&lt;p&gt;• Become a Microsoft Learn fanboy/fangirl&lt;/p&gt;

&lt;p&gt;• Read the Azure docs&lt;/p&gt;

&lt;p&gt;• Get Microsoft Azure Certified&lt;/p&gt;

&lt;p&gt;• Join an Azure Cloud Community&lt;/p&gt;

&lt;p&gt;This blog post is basically put together to give you a broader insight into the Azure cloud platform, and how you can dive more quickly into being a Cloud Engineer this year 2020 - if this is on your bucket list.&lt;/p&gt;

&lt;p&gt;If you had a swell time reading this, check out my article on Azure Quantum - and it's underlying resource offerings , &lt;a href="https://dev.to/bashirk/azure-quantum-here-s-a-gentle-dive-2dcf"&gt;here&lt;/a&gt;. Do also feel free to shout me out around any broken links or any resources I could have added to the contents in this article. Cheers!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PS&lt;/strong&gt;: &lt;em&gt;This post is a part of my #25DaysOfAzure challenge; a challenge around learning about Azure daily - while also sharing my knowledge along the line. This challenge is a celebration of my birthdate, January 25. You could take on my challenge too&lt;/em&gt;. 😉&lt;/p&gt;

</description>
      <category>azure</category>
      <category>devops</category>
      <category>cloud</category>
      <category>career</category>
    </item>
  </channel>
</rss>
