<?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: Paul Onteri</title>
    <description>The latest articles on DEV Community by Paul Onteri (@paulonteri).</description>
    <link>https://dev.to/paulonteri</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%2F274841%2F9faea05f-d40f-48ab-baa3-df8985e95a65.png</url>
      <title>DEV Community: Paul Onteri</title>
      <link>https://dev.to/paulonteri</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paulonteri"/>
    <language>en</language>
    <item>
      <title>How to Bulk Upload Images from your Website to Pinterest Automatically</title>
      <dc:creator>Paul Onteri</dc:creator>
      <pubDate>Sun, 30 Jan 2022 05:34:30 +0000</pubDate>
      <link>https://dev.to/paulonteri/how-to-bulk-upload-images-from-your-website-to-pinterest-automatically-31be</link>
      <guid>https://dev.to/paulonteri/how-to-bulk-upload-images-from-your-website-to-pinterest-automatically-31be</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kzQ_s6nS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hcocw91xuqfjl5jiwi1i.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kzQ_s6nS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hcocw91xuqfjl5jiwi1i.jpeg" alt="Pinterest is Awesome" width="550" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pinterest has a feature that allows business accounts to connect a website's RSS feed and auto-post to a Pinterest board.&lt;/p&gt;

&lt;p&gt;Wait for up to 24 hours to see your first Pins created in the board. As your RSS feed is updated, Pins will continue to be made on a daily schedule.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create an RSS Feed
&lt;/h2&gt;

&lt;p&gt;Pinterest currently supports RSS 2. and RSS 1. (RDF) formats. They don’t support Atom.&lt;/p&gt;

&lt;p&gt;Create an RSS Feed that resides at a path in your website for example at &lt;code&gt;/feed.xml&lt;/code&gt; that will be used in the next steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example Feed
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;rss&lt;/span&gt; &lt;span class="na"&gt;xmlns:media=&lt;/span&gt;&lt;span class="s"&gt;"http://search.yahoo.com/mrss/"&lt;/span&gt; &lt;span class="na"&gt;version=&lt;/span&gt;&lt;span class="s"&gt;"2.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;channel&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Example E-Commerce Store Products&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;description&amp;gt;&lt;/span&gt;Ea dolore culpa adipisicing nostrud est reprehenderit aliqua cupidatat laboris. Exercitation irure quis et cillum commodo quis magna commodo minim nulla mollit magna cillum. Reprehenderit minim ipsum elit dolore elit dolore consequat ipsum occaecat nostrud. Fugiat mollit et nisi et. Et nulla excepteur adipisicing irure est Lorem ipsum eiusmod sit. Fugiat Lorem est officia dolor pariatur est Lorem mollit in aute sint.&lt;span class="nt"&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;link&amp;gt;&lt;/span&gt;https://www.example.com/products/&lt;span class="nt"&gt;&amp;lt;/link&amp;gt;&lt;/span&gt;

        &lt;span class="c"&gt;&amp;lt;!-- ... --&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;item&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Tempor voluptate ipsum id proident minim duis aute voluptate amet elit magna ad ullamco occaecat.&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;description&amp;gt;&lt;/span&gt;Elit reprehenderit reprehenderit nostrud fugiat labore sint laboris eu id sint in commodo occaecat. Reprehenderit tempor minim ut non esse qui eiusmod dolor occaecat. Sint duis fugiat eiusmod cupidatat duis nisi ad aliquip duis officia velit et do ad. Occaecat laborum ipsum ex consequat esse non aute culpa proident cupidatat minim do. Et proident aute sint aliquip minim mollit.&lt;span class="nt"&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;link&amp;gt;&lt;/span&gt;https://www.example.com/products/product-one&lt;span class="nt"&gt;&amp;lt;/link&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;media:content&lt;/span&gt; &lt;span class="na"&gt;url=&lt;/span&gt;&lt;span class="s"&gt;"https://www.example.com/images/product-one.webp"&lt;/span&gt; &lt;span class="na"&gt;medium=&lt;/span&gt;&lt;span class="s"&gt;"image"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;item&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Duis ea consectetur pariatur commodo in qui.&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;description&amp;gt;&lt;/span&gt;Magna ad fugiat reprehenderit anim qui minim reprehenderit. Deserunt adipisicing anim nulla commodo nulla minim officia duis Lorem dolore. Consectetur enim nisi reprehenderit ad nisi labore officia. Magna laboris id veniam mollit qui commodo duis sint. Tempor cupidatat non consequat consectetur anim mollit ex qui pariatur cillum.&lt;span class="nt"&gt;&amp;lt;/description&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;link&amp;gt;&lt;/span&gt;https://www.example.com/products/plan/product-two&lt;span class="nt"&gt;&amp;lt;/link&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;media:content&lt;/span&gt; &lt;span class="na"&gt;url=&lt;/span&gt;&lt;span class="s"&gt;"https://www.example.com/images/product-two.webp"&lt;/span&gt; &lt;span class="na"&gt;medium=&lt;/span&gt;&lt;span class="s"&gt;"image"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/item&amp;gt;&lt;/span&gt;
        &lt;span class="c"&gt;&amp;lt;!-- ... --&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;/channel&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/rss&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Verify Domain
&lt;/h2&gt;

&lt;p&gt;Verify a domain in which the RSS Feed is hosted.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Cm1ER-_M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/htr2n1o5k6efwse8lbof.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Cm1ER-_M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/htr2n1o5k6efwse8lbof.png" alt="Verify a domain in which the RSS Feed is hosted" width="880" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the down arrow at the top-right corner of Pinterest&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Settings&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Claim&lt;/strong&gt; from the menu on the left&lt;/li&gt;
&lt;li&gt;Under Websites, click &lt;strong&gt;Connect RSS Feed&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;This option will only appear if you have a &lt;a href="https://help.pinterest.com/business/article/claim-your-website"&gt;claimed website&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Connect your RSS feed
&lt;/h2&gt;

&lt;p&gt;Add the path to your RSS feed to Pinterest.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the down arrow at the top-right corner of Pinterest&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Settings&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Bulk Create Pins&lt;/strong&gt; from the menu on the left.

&lt;ul&gt;
&lt;li&gt;This option will only appear if you have a &lt;a href="https://help.pinterest.com/business/article/claim-your-website"&gt;claimed website&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Auto-publish&lt;/strong&gt;, click &lt;strong&gt;Connect RSS Feed&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Paste your RSS feed URL into the field&lt;/li&gt;
&lt;li&gt;Choose the board you want to publish from the dropdown menu or create a new board&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Save&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://help.pinterest.com/en-gb/business/article/claim-your-website"&gt;https://help.pinterest.com/en-gb/business/article/claim-your-website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://help.pinterest.com/en/business/article/auto-publish-pins-from-your-rss-feed"&gt;https://help.pinterest.com/en/business/article/auto-publish-pins-from-your-rss-feed&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rss</category>
      <category>webdev</category>
      <category>digitalmarketing</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>You don't have Imposter Syndrome (as a beginner)</title>
      <dc:creator>Paul Onteri</dc:creator>
      <pubDate>Sat, 01 Jan 2022 04:23:39 +0000</pubDate>
      <link>https://dev.to/paulonteri/you-dont-have-imposter-syndrome-as-a-beginner-7fa</link>
      <guid>https://dev.to/paulonteri/you-dont-have-imposter-syndrome-as-a-beginner-7fa</guid>
      <description>&lt;p&gt;Get the original version of this article here: &lt;a href="https://paulonteri.com/blog/beginners-syndrome" rel="noopener noreferrer"&gt;https://paulonteri.com/blog/beginners-syndrome&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;During my time as a &lt;a href="https://developers.google.com/community/gdsc" rel="noopener noreferrer"&gt;Google Developer Student Clubs&lt;/a&gt; (GDSC) Lead, a lot of my fellow students who were just starting out with various tech related concepts often approached me with various problems. A lot of them were in the form of &lt;em&gt;"I just got started with technology $x$. How do I get started working on / completing projects or applying for jobs? I feel like I still suck at it, and have imposter syndrome."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How can an absolute beginner be a fake / an imposter? Imposter syndrome had become a very common term, especially on &lt;a href="https://twitter.com/search?q=imposter%20syndrome" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, that everyone thought the difficulties they encountered when starting out were signs of imposter syndrome. It's very likely people starting out might have beginner syndrome instead.&lt;/p&gt;

&lt;p&gt;Why you might not have imposter syndrome as a beginner. Let’s talk about it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Imposter Syndrome?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Impostor_syndrome" rel="noopener noreferrer"&gt;Imposter Syndrome&lt;/a&gt; is the overwhelming feeling that you don't deserve your success and accomplishments. You become convinced that you're not as intelligent, creative or talented as you may seem or people may see you to be. And you suspect that your achievements are down to &lt;a href="https://en.wikipedia.org/wiki/Beginner%27s_luck" rel="noopener noreferrer"&gt;luck&lt;/a&gt;, good timing, or just being "in the right place at the right time." One of your biggest fears is that one day you'll be exposed as a &lt;a href="https://en.wikipedia.org/wiki/Theranos" rel="noopener noreferrer"&gt;fraud&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You may feel that you need to work harder because of your perceived inadequacies, to avoid being "unmasked." This may even lead to further success and recognition – and feeling like an even bigger fraud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Beginner Syndrome
&lt;/h2&gt;

&lt;p&gt;Learning to do anything worthwhile when you’re just starting out is &lt;a href="https://qr.ae/pGz3G2" rel="noopener noreferrer"&gt;hard&lt;/a&gt;. Freaking out about not knowing anything is totally normal, and every budding beginner feels &lt;strong&gt;overwhelmed by the sheer magnitude of all that they don’t know&lt;/strong&gt;. This is not Imposter Syndrome, this is Reality.&lt;/p&gt;

&lt;p&gt;Those feelings of inadequacy are just “beginner’s fear.” Trying something new can induce so much anxiety that it causes many to quit something they may have dreamed of starting for years. Not knowing how/where to start, how to catch up to the experts, things feeling very difficult, e.t.c - All this is normal for a beginner.&lt;/p&gt;

&lt;h2&gt;
  
  
  Impossible for beginners to have Imposter Syndrome
&lt;/h2&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%2Fvqi1275s5iohp9hc0uc4.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%2Fvqi1275s5iohp9hc0uc4.png" alt="baby with crayons"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An actual imposter’s sole goal is to be what they’re not. They hide behind a mask, and they base their strategy on deceit and dishonesty. In addition, &lt;strong&gt;experiencing imposter syndrome means you have accomplished something in the specific area you are experiencing it in.&lt;/strong&gt; Most of us feel like we’re imposters, but we’re just beginners, we’re just starting out.&lt;/p&gt;

&lt;p&gt;Imposter syndrome is more of “somebody who doesn’t feel like they know what they are expected to know” and beginner syndrome is “not knowing much and not being expected by others to know much”, &lt;strong&gt;technically impossible to be an imposter&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;small&gt;The Dunning-Kruger Effect. Credits: expertprogrammanagement.com&lt;/small&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%2Fj808a7ua3hv3u9cqvq4j.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%2Fj808a7ua3hv3u9cqvq4j.png" alt="The Dunning-Kruger Effect"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imposter syndrome usually shows up in the middle, and beginner syndrome in the complete beginning of The &lt;strong&gt;&lt;em&gt;Dunning-Kruger effect&lt;/em&gt;&lt;/strong&gt; chart. The chart explains how the less someone knows about the topic, the more confident (and sometimes arrogant) they are about their understanding of it (this comes right after beginner’s syndrome). Imposter syndrome describes the opposite: it manifests when people who are experts on a topic do not feel confident in their understanding and show modesty. While it is common for us to experience such feelings, they’re signs that we are often unable to accurately assess our own competence. Note that in the beginning, both confidence and competence are very low. This is what encompasses beginner’s syndrome.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nobody tells this to people who are beginners
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Nobody tells this to people who are beginners. I wish someone told me. All of us who do creative work, we get into it because we have good taste. But there is this gap. For the first couple years you make stuff, it’s just not that good. It’s trying to be good, it has potential, but it’s not. But your taste, the thing that got you into the game, is still killer. And your taste is why your work disappoints you. A lot of people never get past this phase, they quit. Most people I know who do interesting, creative work went through years of this. We know our work doesn’t have this special thing that we want it to have. We all go through this. And if you are just starting out or you are still in this phase, you gotta know its normal and the most important thing you can do is do a lot of work. Put yourself on a deadline so that every week you will finish one story. It is only by going through a volume of work that you will close that gap, and your work will be as good as your ambitions. And I took longer to figure out how to do this than anyone I’ve ever met. It’s gonna take awhile. It’s normal to take awhile. You’ve just gotta fight your way through.&lt;/p&gt;

&lt;p&gt;~ Ira Glass&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;All beginners should realise that there is a tonne of stuff they don't know, their confidence is low and this is not a sign of imposter syndrome.&lt;br&gt;
However, they are also not expected to know that much and will typically not be punished for not knowing.&lt;/p&gt;

&lt;p&gt;The easiest way to deal with the above problems is to learn, practice, be dedicated and &lt;a href="http://www.paulgraham.com/hwh.html" rel="noopener noreferrer"&gt;work hard&lt;/a&gt; enough to overcome the obstacles (that almost all beginners do encounter).&lt;/p&gt;

&lt;h2&gt;
  
  
  More reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.wisdomgeek.com/self-help/life-tips/the-beginner-syndrome" rel="noopener noreferrer"&gt;https://www.wisdomgeek.com/self-help/life-tips/the-beginner-syndrome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.verywellmind.com/imposter-syndrome-and-social-anxiety-disorder-4156469" rel="noopener noreferrer"&gt;https://www.verywellmind.com/imposter-syndrome-and-social-anxiety-disorder-4156469&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://chiamakaikeanyi.dev/starting-out-as-a-newbie-in-the-tech-industry" rel="noopener noreferrer"&gt;https://chiamakaikeanyi.dev/starting-out-as-a-newbie-in-the-tech-industry&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://paulonteri.com/blog/beginners-syndrome" rel="noopener noreferrer"&gt;https://paulonteri.com/blog/beginners-syndrome&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>impostersyndrome</category>
      <category>beginnersynndrome</category>
      <category>learning</category>
    </item>
    <item>
      <title>Serverless Python on Azure: Django with App Service</title>
      <dc:creator>Paul Onteri</dc:creator>
      <pubDate>Sun, 13 Sep 2020 16:19:19 +0000</pubDate>
      <link>https://dev.to/msambassadorske/serverless-python-on-azure-django-on-app-service-3fa</link>
      <guid>https://dev.to/msambassadorske/serverless-python-on-azure-django-on-app-service-3fa</guid>
      <description>&lt;p&gt;Over time, one of the most tiresome and non-rewarding tasks to some developers I know is the setup, maintenance and scaling of servers. Something often goes wrong.&lt;/p&gt;

&lt;p&gt;Don't get me wrong, some developers like &lt;a href="https://paulonteri.com/"&gt;me&lt;/a&gt; enjoy that process. &lt;br&gt;
However, it doesn't scale well and the repetition of tasks can get tiring. &lt;/p&gt;

&lt;p&gt;Doing all of this on your own can take some time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operating system maintenance&lt;/li&gt;
&lt;li&gt;Capacity Provisioning - increase or reduce servers(or capacity) to handle different traffic&lt;/li&gt;
&lt;li&gt;Availability and fault tolerance&lt;/li&gt;
&lt;li&gt;Load balancing&lt;/li&gt;
&lt;li&gt;Networking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's not a wonder that many companies like &lt;strong&gt;Netflix, Uber, CodePen,&lt;/strong&gt; etc are using Serverless technology.&lt;/p&gt;



&lt;p&gt;This article will cover the basics of deploying a basic Django(Python) application to Azure App Service, a serverless offering by Microsoft Azure. This will allow you to stop stressing or even &lt;strong&gt;stop thinking about servers&lt;/strong&gt; in your development lifecycle.&lt;/p&gt;



&lt;p&gt;What we'll cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is Serverless anyway? 👀&lt;/li&gt;
&lt;li&gt;Azure App Service&lt;/li&gt;
&lt;li&gt;Django Application setup

&lt;ol&gt;
&lt;li&gt;Setting up a basic Django application&lt;/li&gt;
&lt;li&gt;Pushing the code to GitHub&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Deploying to Azure App Service

&lt;ol&gt;
&lt;li&gt;Provisioning the target Azure App Service&lt;/li&gt;
&lt;li&gt;Deploy to App Service from GitHub&lt;/li&gt;
&lt;li&gt;Your App is now Deployed! &lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;What Next?&lt;/li&gt;
&lt;li&gt;Shameless Plug 😭😭&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;Prerequisites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic web development understanding.&lt;/li&gt;
&lt;li&gt;Experience with git and GitHub. &lt;a href="https://blog.usejournal.com/how-to-contribute-to-open-source-software-with-git-github-2b3be6e36c82?gi=3b86c4b3e2f7"&gt;Here's a simple guide&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Basic Python and Django experience. (If you'll follow the exact steps under the app setup)&lt;/li&gt;
&lt;li&gt;An Azure Account. (If you'll deploy)&lt;/li&gt;
&lt;/ul&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VtlqhcsW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8o7bnj9s72wge8ma8evz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VtlqhcsW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8o7bnj9s72wge8ma8evz.jpg" alt="Servers" width="880" height="534"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Serverless anyway? 👀
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Serverless&lt;/strong&gt; is a cloud systems architecture that involves no servers, virtual machines, or containers to provision or manage.&lt;br&gt;
Your cloud provider dynamically manages the allocation and provisioning of servers.&lt;/p&gt;

&lt;p&gt;This allows you to build and run applications and services without thinking about servers.&lt;/p&gt;

&lt;p&gt;This reduces the time and money spent on DevOps, allowing developers to &lt;strong&gt;focus on the actual coding&lt;/strong&gt;. Sweet 👌&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Focus on your application, not the infrastructure”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;PS, the application will still be running on servers, it's just that you are not the one managing them. &lt;/p&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cYXWfCAS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/cf80upkxtj89x2hbwca2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cYXWfCAS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/cf80upkxtj89x2hbwca2.png" alt="Azure App Service" width="880" height="522"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Azure App Service
&lt;/h2&gt;

&lt;p&gt;Azure App Service is a service for hosting web applications, REST APIs, and mobile back ends. You can develop in your favourite language, be it Python, Node.js, .NET, etc without managing infrastructure. Applications run and scale with ease on both Windows and Linux-based environments. &lt;/p&gt;

&lt;p&gt;In English, it basically a hosting service that allowing you to host your app or backend without thinking about the server(s).&lt;br&gt;
Find out more &lt;a href="https://azure.microsoft.com/en-us/services/app-service/"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  Django Application setup
&lt;/h2&gt;

&lt;p&gt;You can skip this step by cloning the code from here:&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/paulonteri"&gt;
        paulonteri
      &lt;/a&gt; / &lt;a href="https://github.com/paulonteri/django_azure"&gt;
        django_azure
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Serverless Python on Azure: Django hosted on Azure App Service
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Django on Azure&lt;/h1&gt;
&lt;p&gt;The web application used as an example in my writing of the article on &lt;strong&gt;Serverless Python on Azure: Django hosted on Azure App Service&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
Tech&lt;/h2&gt;
&lt;p&gt;Written in Python3 and Django 3.1.1.&lt;/p&gt;
&lt;h2&gt;
Setup&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;First, clone the repository:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/django_azure/core.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; django_azure&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Create a virtual environment to install dependencies in and activate it:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;mkvirtualenv &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;envname&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-c1"&gt;source&lt;/span&gt; &lt;span class="pl-k"&gt;&amp;lt;&lt;/span&gt;envname&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt;/bin/activate&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Install requirements in the virtual environment created:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;pip install -r requirements.txt&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Run database migrations with this command&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;python3 manage.py migrate&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Run server to ensure everything is working properly.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight highlight-source-shell position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;python3 manage.py runserver&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
Article Introduction&lt;/h2&gt;
&lt;p&gt;Over time, one of the most tiresome and non-rewarding tasks to some developers I know is the setup, maintenance and scaling of servers. Something often goes wrong.&lt;/p&gt;
&lt;p&gt;Don't get me wrong, some developers like &lt;a href="https://paulonteri.com/" rel="nofollow"&gt;me&lt;/a&gt; enjoy that process
However, it doesn't scale well and the repetition of tasks can get tiring.&lt;/p&gt;
&lt;p&gt;Doing all…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/paulonteri/django_azure"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Basic Application Setup
&lt;/h3&gt;

&lt;p&gt;We are going to use the basic Django starter for this.&lt;/p&gt;

&lt;p&gt;If you have Django installed, create a new project with the command: &lt;code&gt;django-admin startproject &amp;lt;yourprojectname&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In my case:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ django-admin startproject django_azure
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Test that your application is ok by starting the application by running migrations and running the server(from your app's directory):&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ python3 manage.py migrate
$ python3 manage.py runserver
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;That should give you the default Django starter page running by default on port 8000 of localhost:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2mBvHMRK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dl9p4tnhhmtxc1581bhr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2mBvHMRK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dl9p4tnhhmtxc1581bhr.png" alt="Django starter page" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;The commands I ran:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZGIolAev--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ctvjflcvfllk2r6aqdf4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZGIolAev--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ctvjflcvfllk2r6aqdf4.png" alt="Paul Onteri's terminal" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;For the purposes of this, change your &lt;code&gt;ALLOWED_HOSTS&lt;/code&gt; setting to allow all hosts:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALLOWED_HOSTS = ['*']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;A more secure way of doing this is to add the following host to your allowed hosts: &lt;code&gt;&amp;lt;instance-name&amp;gt;.azurewebsites.net&lt;/code&gt;&lt;br&gt;
In my case:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ALLOWED_HOSTS = ['django-on-azure.azurewebsites.net']
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;We should also create a requirements file that will be used to list our python dependencies. By convention, it's named &lt;code&gt;requirements.txt&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;In the root of the project directory create a new file called &lt;code&gt;requirements.txt&lt;/code&gt; and add the dependencies your Django app is using in my case (Django default):&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;asgiref==3.2.10
Django==3.1.1
pytz==2020.1
sqlparse==0.3.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;If you are running your app in a virtual environment, just run the following command instead:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ pip freeze &amp;gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Pushing the Code to GitHub
&lt;/h3&gt;

&lt;p&gt;We are going to initialize our repository, make a commit(s) and push the code to GitHub. This will help in the deployment process.&lt;/p&gt;

&lt;p&gt;If you aren't well familiar with git and GitHub kindly &lt;a href="https://blog.usejournal.com/how-to-contribute-to-open-source-software-with-git-github-2b3be6e36c82"&gt;use &lt;strong&gt;this article&lt;/strong&gt; as a guide&lt;/a&gt;.&lt;/p&gt;
&lt;h4&gt;
  
  
  Start by creating a &lt;a href="https://github.com/new"&gt;new GitHub repo&lt;/a&gt;.
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cBmhwPML--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1j1zoobj736jy9hp1tkq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cBmhwPML--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1j1zoobj736jy9hp1tkq.png" alt="Alt Text" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Set up the git repo locally
&lt;/h4&gt;

&lt;p&gt;Initialize the project directory as a git repository:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Add all the files in your new local repository. This stages them for a commit.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git add *
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Commit the files that you've staged in your local repository.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git commit -m "first commit"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;In Terminal, add the URL for the remote(GitHub) repository where your local repository will be pushed in the next step with the command: &lt;code&gt;git remote add origin &amp;lt;remote &lt;br&gt;
Repository Url&amp;gt;&lt;/code&gt; &lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git remote add origin &amp;lt;remoterepositoryURL&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;In my case:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git remote add origin https://github.com/paulonteri/django_azure.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The remote Repository Url can be found from the GitHub repo you created as shown below:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7cjKAzJo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vkmdbghc77ffcwaj5ngd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7cjKAzJo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vkmdbghc77ffcwaj5ngd.png" alt="Alt Text" width="880" height="235"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Push the changes in your local repository to GitHub.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git push -u origin master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The commands I ran:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_b83dZTJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/etc9fasenv3j67a255c6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_b83dZTJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/etc9fasenv3j67a255c6.png" alt="Paul Onteri's terminal" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UHBp7RVA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vjo9w32ytcvm7kyhlk84.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UHBp7RVA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vjo9w32ytcvm7kyhlk84.png" alt="Cloud Computing" width="820" height="424"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Deploying to Azure App Service
&lt;/h2&gt;

&lt;p&gt;FYI, this 2-5 minute process is a &lt;strong&gt;one-time thing&lt;/strong&gt;.&lt;br&gt;
You set it up once and your website/app will be updated automatically whenever you push code to GitHub.&lt;/p&gt;
&lt;h3&gt;
  
  
  Provision the target Azure App Service
&lt;/h3&gt;

&lt;p&gt;Navigate to your &lt;a href="https://portal.azure.com/#home"&gt;Azure Portal&lt;/a&gt; then search for the term 'App Services' then click on the App Services item.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0kN5jUEj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jqi8lmli5zuxhtskrws3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0kN5jUEj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jqi8lmli5zuxhtskrws3.png" alt="App Services Search" width="880" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once in the &lt;a href=""&gt;App Services section&lt;/a&gt;, click on the 'Create app service' button. Then create your web app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zXgEyYDv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qmtk1ir9rexsahxinbj5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zXgEyYDv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/qmtk1ir9rexsahxinbj5.png" alt="Alt Text" width="880" height="455"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Configuration:
&lt;/h4&gt;

&lt;p&gt;The following is the configuration I used:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kw3Y5DDs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fovbv6o4jbzuj0gxurf8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kw3Y5DDs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/fovbv6o4jbzuj0gxurf8.png" alt="Provision Azure App Service" width="880" height="1017"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;
  
  
  Subscription
&lt;/h4&gt;

&lt;p&gt;This lets you manage deployed resources and costs. &lt;br&gt;
A &lt;code&gt;resource group&lt;/code&gt; is a collection of resources that share the same lifecycle, permissions, and policies. Use resource groups like folders to organize and manage all your resources.&lt;br&gt;
Configuration:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Subscription: default
Resource Group: created a new one
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Instance Details
&lt;/h4&gt;

&lt;p&gt;The &lt;code&gt;name&lt;/code&gt; is basically a name. What you'd like to name your app. &lt;br&gt;
Under &lt;code&gt;publish&lt;/code&gt; you decide whether you are going to push code or a docker image. in our case it's code.&lt;br&gt;
The &lt;code&gt;runtime stack&lt;/code&gt; lets you define the underlying programming language for your app, in our case, Python.&lt;br&gt;
The &lt;code&gt;region&lt;/code&gt; is the geographic location where your app will be hosted.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Name: django-on-azure
Publish: Code
Runtime stack: Python 3.7
Operating System: Linux
Region: Central US
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  App Service Plan
&lt;/h4&gt;

&lt;p&gt;This lets you define the compute resources, features and costs that will be associated with your app.&lt;br&gt;
Be careful to choose an appropriate &lt;code&gt;Sku and size&lt;/code&gt; as some of them might get pretty expensive. &lt;br&gt;
I would suggest starting with the 'Dev / Test' packages to find the &lt;strong&gt;Free&lt;/strong&gt; option. To change the &lt;code&gt;Sku and size&lt;/code&gt;, click on 'Change size' to bring the 'Spec Picker', like so;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P_Hnh5e0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/eu8lyw8dyix67f3i14ft.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P_Hnh5e0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/eu8lyw8dyix67f3i14ft.png" alt="Azure App Service Spec Picker" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Configuration:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Linux Plan &amp;lt;Region&amp;gt; : created a new one

Sku and size: Free F1, 1 GB memory
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Once done, click on the &lt;strong&gt;'Review + Create'&lt;/strong&gt; button.&lt;/p&gt;

&lt;p&gt;Then click create.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nueJLovP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kvs4vvnok3ptz4888krh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nueJLovP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kvs4vvnok3ptz4888krh.png" alt="Azure App Service review &amp;amp; create" width="880" height="1017"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That will lead you to such a page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gNzOLz98--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8d1hxembclscvihh1q8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gNzOLz98--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8d1hxembclscvihh1q8l.png" alt="Azure App Service created" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under the next steps, click on &lt;strong&gt;'Go to resource'&lt;/strong&gt; to manage your service.&lt;/p&gt;





&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--MRSBPeYJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v4znbwr19epteivav8g5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MRSBPeYJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/v4znbwr19epteivav8g5.jpg" alt="Deploy to app service from GitHub" width="880" height="625"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Deploy to Azure App Service from GitHub
&lt;/h3&gt;

&lt;p&gt;From your resource's dashboard search for the term 'Deployment' then click the &lt;strong&gt;'Deployment Center'&lt;/strong&gt; button from the sidebar(menu).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4clOTGF2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rpuu1jrq1h4z78m6ksyj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4clOTGF2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/rpuu1jrq1h4z78m6ksyj.png" alt="resource dashboard" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You'll see a list of &lt;strong&gt;Source Control&lt;/strong&gt; services that can be used.&lt;br&gt;
Since our code is hosted on GitHub, click GitHub then continue. This might ask you to connect your GitHub account.&lt;/p&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m2nPSMxI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jx851c0lz71pp26odnq4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m2nPSMxI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/jx851c0lz71pp26odnq4.png" alt="build providers" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, we'll see a bunch of &lt;strong&gt;build providers&lt;/strong&gt; &lt;br&gt;
These are the services we can use to automatically build and deploy our web app code. In my opinion, the easiest method, that is also free, is by setting up continuous integration(CI) with GitHub Actions. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Continuous Integration (CI)&lt;/strong&gt; is a development practice where developers integrate code frequently, preferably several times a day. Each integration can then be verified by an automated build and automated tests then deployed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Let's select &lt;strong&gt;GitHub Actions&lt;/strong&gt; and click continue.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;GitHub Actions&lt;/strong&gt; are workflows that can handle common build tasks, like continuous delivery and continuous integration. That means that you can use an action to compress images, test your code, and push the code to your hosting platform, etc. Learn more &lt;a href="https://github.com/features/actions"&gt;here&lt;/a&gt;. In this case, we'll use GitHub actions to automatically deploy our code to Azure App Engine.&lt;/p&gt;
&lt;/blockquote&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xziLNROO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/85e87m8jj7nyc3udzc2l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xziLNROO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/85e87m8jj7nyc3udzc2l.png" alt="GitHub Configuration" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next step will involve configuring the details of the GitHub repository you set up for the web app. Fill in the details then go to the last step.&lt;/p&gt;



&lt;p&gt;Under summary, you confirm that all the details you had provided are correct then click &lt;strong&gt;Finish&lt;/strong&gt;&lt;/p&gt;



&lt;p&gt;Your code is now automatically being deployed from GitHub to Azure App Service.&lt;/p&gt;

&lt;p&gt;If you navigate to your GitHub repository, you'll notice that there is a new file that has been added under the '.github/workflows' folder. If you didn't manage to create a GitHub repo, you can check out the one &lt;a href="https://github.com/paulonteri/django_azure"&gt;I created here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ixogv9Yd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dp717d04jt45oqoojdra.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ixogv9Yd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dp717d04jt45oqoojdra.png" alt="paulonteri/django_azure GitHub Repo" width="880" height="411"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a &lt;strong&gt;GitHub Actions workflow file&lt;/strong&gt;&lt;br&gt;
To see the workflow in action, got to the Actions tab in your Github Repository then click on it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aBzDPOLO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mirauad4dh2uhg1s9yg2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aBzDPOLO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/mirauad4dh2uhg1s9yg2.png" alt="paulonteri/django_azure GitHub Actions" width="880" height="291"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;You will be able to see live logs of every workflow step/ job from there. Once it's done, your web app will be live.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EQPCDLWf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nyt4ykv0t5zowqetgrcz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EQPCDLWf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nyt4ykv0t5zowqetgrcz.png" alt="paulonteri/django_azure GitHub Actions progress" width="880" height="333"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Your App is now &lt;strong&gt;Deployed!&lt;/strong&gt; 😎
&lt;/h3&gt;

&lt;p&gt;Like a boss!&lt;/p&gt;

&lt;p&gt;Navigate to &lt;code&gt;https://&amp;lt;instance-name&amp;gt;.azurewebsites.net&lt;/code&gt; to see it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CYTGUntS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gv88fxi8r0hx76kqeh20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CYTGUntS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/gv88fxi8r0hx76kqeh20.png" alt="App is now deployed" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Anytime you push code to your repo, this process will happen &lt;strong&gt;automatically&lt;/strong&gt; and your live app will be updated. You set it up once and almost &lt;strong&gt;never worry about it again&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's that easy!&lt;/p&gt;


&lt;h2&gt;
  
  
  What Next?
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Learn how to deploy to Azure App Service from VS Code 🔥&lt;/li&gt;
&lt;li&gt;Learn about some other Serverless technology like &lt;strong&gt;Azure Functions&lt;/strong&gt; - it has a very generous monthly &lt;strong&gt;free tier&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Check out the &lt;a href="https://www.meetup.com/MS-Ambassadors-KE/"&gt;Microsoft Student Ambassadors, Kenya&lt;/a&gt; page for more articles, events and generally anything tech!&lt;/li&gt;
&lt;li&gt;Last and definitely not least, Try to empower every person and every organization on the planet to achieve more!&lt;/li&gt;
&lt;/ol&gt;



&lt;p&gt;Thank you for reaching the end of the article!&lt;/p&gt;

&lt;p&gt;I hope you learned something.&lt;/p&gt;
&lt;h2&gt;
  
  
  Shameless Plug 😭
&lt;/h2&gt;

&lt;p&gt;I ❤️ anything around Software Development.&lt;/p&gt;

&lt;p&gt;I currently work as a Frontend Dev at a company called Inuua Tujenge, working with React, React Native and Django (Python &amp;amp; JavaScript) almost daily.&lt;/p&gt;

&lt;p&gt;Feel free to &lt;a href="https://paulonteri.com/"&gt;connect with me&lt;/a&gt;. 👌&lt;/p&gt;

&lt;p&gt;Check out my most recent project - a &lt;a href="https://runcode.paulonteri.com/"&gt;&lt;strong&gt;Remote Code Execution Engine&lt;/strong&gt;&lt;/a&gt;, similar to the ones used for coding on HackerRank and Leetcode.&lt;br&gt;
It currently supports Python, JavaScript, Java, Go, C#, etc.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--566lAguM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/paulonteri"&gt;
        paulonteri
      &lt;/a&gt; / &lt;a href="https://github.com/paulonteri/remote-code-execution-environment"&gt;
        remote-code-execution-environment
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Have you ever wondered how code execution on competitive programming websites like leetcode works? Code that runs code. Tried implementing that.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
&lt;a href="https://runcode.paulonteri.com" rel="nofollow"&gt;Remote Code Execution App&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;Remote code execution app built with JavaScript (React, NodeJS &amp;amp; Express).&lt;/p&gt;
&lt;p&gt;Try out the live system &lt;a href="https://runcode.paulonteri.com/#/" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/45426293/87253451-02cdf280-c484-11ea-83fd-2c59000da265.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eG6LA8QO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/45426293/87253451-02cdf280-c484-11ea-83fd-2c59000da265.png" width="90%"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Have you ever wondered how Remote Code Execution works?&lt;/p&gt;
&lt;p&gt;This happens on sites like HackerRank &amp;amp; competitive programming websites. You write some code then it's executed on another computer(server). The results are then shown to you.&lt;/p&gt;
&lt;p&gt;I tried implementing that.&lt;/p&gt;
&lt;p&gt;Feel free to go through the code, fix bugs, add new features, e.t.c&lt;/p&gt;

&lt;h2&gt;
Local Setup&lt;/h2&gt;
&lt;h3&gt;
Requirements&lt;/h3&gt;
&lt;p&gt;For development, you will only need Node.js and a node global package, Yarn, installed in your environement.&lt;/p&gt;
&lt;h3&gt;
Node&lt;/h3&gt;
&lt;p&gt;Just go on &lt;a href="https://nodejs.org/" rel="nofollow"&gt;official Node.js website&lt;/a&gt; and follow the installation instructions
Also, be sure to have &lt;code&gt;git&lt;/code&gt; available in your PATH, &lt;code&gt;npm&lt;/code&gt; might need it (You can find git &lt;a href="https://git-scm.com/" rel="nofollow"&gt;here&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;If the installation was successful, you should be able to run the following command.&lt;/p&gt;
&lt;div class="snippet-clipboard-content position-relative overflow-auto"&gt;&lt;pre&gt;&lt;code&gt;$ node --version
v8.11.3
$ npm --version
6.1.0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/paulonteri/remote-code-execution-environment"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;Thanks for your valuable time.&lt;/p&gt;

&lt;p&gt;Peace!&lt;/p&gt;

</description>
      <category>azure</category>
      <category>python</category>
      <category>django</category>
      <category>serverless</category>
    </item>
  </channel>
</rss>
