<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Azure on Beneath Abstraction</title>
    <link>https://www.beneathabstraction.com/tags/azure/</link>
    <description>Recent content in Azure on Beneath Abstraction</description>
    <image>
      <title>Beneath Abstraction</title>
      <url>https://www.beneathabstraction.com/images/logo.png</url>
      <link>https://www.beneathabstraction.com/images/logo.png</link>
    </image>
    <generator>Hugo -- 0.157.0</generator>
    <language>en</language>
    <lastBuildDate>Sat, 16 Nov 2024 10:43:40 +1100</lastBuildDate>
    <atom:link href="https://www.beneathabstraction.com/tags/azure/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Running Sidecar Containers in Azure App Service: An experiment with Dapr</title>
      <link>https://www.beneathabstraction.com/post/sidecar-appservice/</link>
      <pubDate>Sat, 16 Nov 2024 10:43:40 +1100</pubDate>
      <guid>https://www.beneathabstraction.com/post/sidecar-appservice/</guid>
      <description>&lt;h3 id=&#34;running-sidecar-containers-in-azure-app-service-an-experiment-with-dapr&#34;&gt;Running Sidecar Containers in Azure App Service: An experiment with Dapr&lt;/h3&gt;
&lt;p&gt;Today I decided to try Azure App Service&amp;rsquo;s new ability to run &lt;strong&gt;sidecar containers&lt;/strong&gt;.&lt;br&gt;
My goal, To create a simple .NET API, run it in Azure App Service, and pair it with Dapr as a sidecar container and use it for state management. Locally, Dapr would connect to a local Redis docker container, and once deployed to Azure, it would seamlessly switch to Azure Cache for Redis.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Simplified Microservice Deployment with Azure Container Apps and Dapr</title>
      <link>https://www.beneathabstraction.com/post/microservice-deployment-with-azure-container-apps/</link>
      <pubDate>Mon, 07 Oct 2024 21:45:08 +1000</pubDate>
      <guid>https://www.beneathabstraction.com/post/microservice-deployment-with-azure-container-apps/</guid>
      <description>&lt;h3 id=&#34;introduction&#34;&gt;Introduction&lt;/h3&gt;
&lt;p&gt;In this blog post we look into a scalable and flexible platform to run microservices on Azure without the complexity of managing infrastructure. &lt;strong&gt;Azure Container Apps&lt;/strong&gt; allows you to run containerized microservices and integrating &lt;strong&gt;Dapr (Distributed Application Runtime)&lt;/strong&gt; can simplify the communication between services, manage state, and handle pub/sub messaging. This blog also shows how to set up Azure Container Apps, and how to deploy Dapr-enabled microservices that communicate with each other.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Configuring Azure Application Gateway for API Management Traffic Routing</title>
      <link>https://www.beneathabstraction.com/post/appgatewayurlrewrite/</link>
      <pubDate>Sat, 02 Dec 2023 14:00:48 +1100</pubDate>
      <guid>https://www.beneathabstraction.com/post/appgatewayurlrewrite/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Azure Application Gateway provides a powerful solution for load balancing, SSL termination, and URL-based routing. In this blog post, we will discuss a common scenario
where we need to forward traffic to two different Azure API Management instances based on the incoming URL, distinguishing between non-production and production environments.&lt;/p&gt;
&lt;h2 id=&#34;problem-statement&#34;&gt;Problem Statement&lt;/h2&gt;
&lt;p&gt;Consider a scenario where you have two separate instances of Azure API Management (Sku: any non consumption tier): one for non-production/testing (nonprod) and the other for production (prod).
The requirement is to route incoming traffic through an Azure Application Gateway, forwarding requests to the appropriate API Management instance based on the path specified in the URL.
Specifically, requests with the path /nonprod/* should be directed to the non-production API Management instance, while requests without this path should be forwarded to the production instance.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Exposing Azure Storage container via SFTP</title>
      <link>https://www.beneathabstraction.com/post/azurestoragesftp/</link>
      <pubDate>Mon, 13 Jun 2022 12:05:53 +1000</pubDate>
      <guid>https://www.beneathabstraction.com/post/azurestoragesftp/</guid>
      <description>&lt;h2 id=&#34;context&#34;&gt;Context&lt;/h2&gt;
&lt;p&gt;While most of the application integration patterns are moving towards real-time, near-real-time and stream based solutions, there are still requirement to have batch file based data movement. These requirements are often for reporting or data warehousing scenario or while integrating with a legacy system.
While there are many products that help setup SFTP server, Azure was missing a SaaS offering for hosted SFTP server, like Amazon&amp;rsquo;s AWS Transfer on top of S3.
To host SFTP in Azure the customer has to setup their own SFTP workload either using a VM hosting an SFTP server and mounting the blob storage as a VM disk or hosting the SFTP server as a container on services like ACI and mounting the storage account.
While hosting an SFTP VM is not a complex task, but it adds to the organization&amp;rsquo;s maintenance list, to keep it up and running, securing it and patching updates while maintaining uptime.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Client Certificate authentication using Azure API Management</title>
      <link>https://www.beneathabstraction.com/post/clientcertauthapim/</link>
      <pubDate>Sun, 27 Feb 2022 20:03:08 +1100</pubDate>
      <guid>https://www.beneathabstraction.com/post/clientcertauthapim/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;APIs have become so popular that almost all websites and applications rely on APIs to get data from server. Often user impersonation is used to authenticate as well as authorize access to the resource exposed by an API, but there are also use cases where application itself needs data from an API for functioning. Currently the most used authentication mechanism is OAuth, where identity management is performed by a third provider and both the client and resource server trusts this identity provider. While this works well, there is also another way to authenticate when the interaction is purely machine to machine, and works based on  SSL certificates and is called Client Certificate Authentication.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloning a Azure Function App</title>
      <link>https://www.beneathabstraction.com/post/functionappclone/</link>
      <pubDate>Thu, 10 Feb 2022 14:22:48 +1100</pubDate>
      <guid>https://www.beneathabstraction.com/post/functionappclone/</guid>
      <description>&lt;p&gt;Recently I had a requirement to make a copy of a Function App from the production version to support a POC implementation of an solution upgrade.&lt;/p&gt;
&lt;p&gt;One option was to deploy the Release branch which had the version same as in PROD (we already made updates to that function app post release, so DEV was already a lot of commits ahead). The challenge with this approach was, since we did not had a hotfix release, there were no Pipelines setup for Release branch. So we had to setup a pipeline, give the pipeline service account access to the POC resource group, then actually triggering the deployment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Policy Execution in Azure APIM.</title>
      <link>https://www.beneathabstraction.com/post/apimpolicyexecution/</link>
      <pubDate>Wed, 27 Oct 2021 18:50:46 +1100</pubDate>
      <guid>https://www.beneathabstraction.com/post/apimpolicyexecution/</guid>
      <description>&lt;h2 id=&#34;what-are-apim-policies&#34;&gt;What are APIM Policies?&lt;/h2&gt;
&lt;p&gt;APIM policies are statements executed by Azure APIM to modify the behavior of API request, response and exception flows. The logic/conditions written as part of the policies are executed at various stages of API execution like,  &lt;em&gt;request received (inbound)&lt;/em&gt;, &lt;em&gt;before request sent to backend service/API (backend)&lt;/em&gt;, &lt;em&gt;before sending  response to requester (outbound)&lt;/em&gt; and &lt;em&gt;in case of any exceptions during the request processing (on-error)&lt;/em&gt;. Policies are defined as an XML format with different tag to define the execution stage and the actual policy.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Move azure resources between resource groups</title>
      <link>https://www.beneathabstraction.com/post/moveresources/</link>
      <pubDate>Tue, 12 Oct 2021 17:20:59 +1100</pubDate>
      <guid>https://www.beneathabstraction.com/post/moveresources/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;
&lt;p&gt;While working with Azure cloud platform, often there will be instances where resources needs moving across resource groups for maintenance reasons or because of re-organising of products. There might even cases where the resource may need to be moved across subscriptions.&lt;/p&gt;
&lt;h2 id=&#34;solution&#34;&gt;Solution&lt;/h2&gt;
&lt;p&gt;In Azure resources can be moved across resource groups from the portal UI or Azure CLI or powershell or from the rest APIs. Moving the resource using the portal UI is as easy as going through a wizard like steps and clicking finish at the end of it. The process also validates if the resource can be moved or not, for example an Azure SQL Database cannot be moved without moving the SQL Server instance, and when a SQL Server instance is moved across, all the databases gets moved automatically.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Deploying &#39;JUST&#39; the modified ARM templates</title>
      <link>https://www.beneathabstraction.com/post/selectedarmdeployment/</link>
      <pubDate>Sun, 05 Sep 2021 10:00:46 +1000</pubDate>
      <guid>https://www.beneathabstraction.com/post/selectedarmdeployment/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;
&lt;p&gt;The project has a bunch of ARM templates as part of IAC scripts and more often only couple, if not few templates get modified. But when deploying using Azure pipeline all the templates gets deployed. Even though ARM template deployment support incremental mode, if a templates is deployed with exact same properties, the resource gets recreated. The project does not want to recreate all the templates when only a few are changed. Currently there is no out-of-the-box tasks that support this behavior (&lt;em&gt;or I could not find any&lt;/em&gt;). &lt;a href=&#34;https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/deployment-modes&#34;&gt;Deployment Mode Reference&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Identity in Microsoft Azure - Modern Authentication</title>
      <link>https://www.beneathabstraction.com/post/securingusingazure-part2/</link>
      <pubDate>Sun, 01 Aug 2021 18:06:02 +1000</pubDate>
      <guid>https://www.beneathabstraction.com/post/securingusingazure-part2/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Continuing from the &lt;a href=&#34;https://www.beneathabstraction.com/content/post/securingusingazure-part1&#34;&gt;previous post&lt;/a&gt;, the new generation of authentication mechanism was created to satisfy the new generation of application, starting from apps that run just in the browser to apps that run on micro-controllers. This new generation of authentication mechanism called as the modern authentication protocols are built on top of the OAuth protocol and taking inspiration from SAML.
In the below article the term IDP refers to the Identity provider, the external service that is responsible for authenticating a user and issuing authorization tokens. This service is both trusted by the client app as well as the resource api.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Identity in Microsoft Azure - A bit of history</title>
      <link>https://www.beneathabstraction.com/post/securingusingazure-part1/</link>
      <pubDate>Sat, 24 Jul 2021 19:16:16 +1000</pubDate>
      <guid>https://www.beneathabstraction.com/post/securingusingazure-part1/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Authentication has been an important component in the world of IT from the time companies required their employees to prove their identity to use the company&amp;rsquo;s computing resources whether it was to execute its business processes or accessing email or file. During the earlier days employees used to login to their computers using a username and password, which was stored in a central server like an active directory (in case of Microsoft tech stack). With the active directory credentials employees where able to use to login to both their windows computers as well as the email application both of which were in the same network. This approach worked well for many years until the softwares and services that the companies used where no longer within their network.&lt;br&gt;
While active directory protocols like NTLM or Kerberos could work across external networks via technologies like VPN it was complex to setup and maintain such an infrastructure while keeping all the connection secure and stable. Also with growing number of users/services and the pace at which the growth occurred, these technologies were not designed to scale at that pace. Hence new Authentication mechanisms were needed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Cloud Resume Challenge - Azure Serverless </title>
      <link>https://www.beneathabstraction.com/post/azureserverlessresume/</link>
      <pubDate>Mon, 28 Jun 2021 10:18:48 +1100</pubDate>
      <guid>https://www.beneathabstraction.com/post/azureserverlessresume/</guid>
      <description>&lt;p&gt;I recently came across the site &lt;a href=&#34;https://cloudresumechallenge.dev/&#34;&gt;https://cloudresumechallenge.dev/&lt;/a&gt; and decided to give it a try using Azure services. To start simple I decided to ignore the DB, CDN part etc and just have the the UI and the middler layer of the app. Below is the high level architecture.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.beneathabstraction.com/blogimages/ResumeApp_arch.png&#34; alt=&#34;Blog Arch &#34;  /&gt;
&lt;/p&gt;
&lt;p&gt;The front end of the app will be hosted a static web site in Azure Blob storage. Backend will be an Azure function that will feed the resume data to the frontend over HTTP, the azure function will be a HTTP triggered function.
Currently the resume data in JSON format hardcoded in the Azure Function code. As an upgrade to the app, the JSON data can be moved to a CosmosDB instance and put an Azure CDN in front of the UI to deliver content fast to users.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Implementing Custom Feature flags - Your own logic to shutoff a feature - Azure App Configuration </title>
      <link>https://www.beneathabstraction.com/post/azurecustomfeatureflags/</link>
      <pubDate>Tue, 22 Jun 2021 10:18:48 +1100</pubDate>
      <guid>https://www.beneathabstraction.com/post/azurecustomfeatureflags/</guid>
      <description>&lt;p&gt;This is a continuation from the &lt;a href=&#34;../azurefeatureflags&#34;&gt;previous article&lt;/a&gt; on feature flags implemented using Azure App configuration service to maintain the flags. Just to reiterate, feature management can be implemented using config files but this article is trying to implement feature flags connecting to Azure App configuration service.&lt;/p&gt;
&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&#34;../azurefeatureflags&#34;&gt;previous article&lt;/a&gt; described about implementing a boolean feature flag to turn on/off a feature. In this article I am trying to implement a custom feature flag. Microsoft provides few predefined custom feature flags or feature filters (as they are called) Targeting, TimeWindow, and Percentage (more about it &lt;a href=&#34;https://docs.microsoft.com/en-us/azure/azure-app-configuration/howto-feature-filters-aspnet-core&#34;&gt;here&lt;/a&gt;), which covers most usecases, however, there might be situations where you find the predefined ones falling short. In this article I am building a filter ground up with a made up custom logic.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Implementing Feature flags using azure </title>
      <link>https://www.beneathabstraction.com/post/azurefeatureflags/</link>
      <pubDate>Sun, 16 May 2021 10:00:48 +1100</pubDate>
      <guid>https://www.beneathabstraction.com/post/azurefeatureflags/</guid>
      <description>&lt;p&gt;Feature flag is a very popular practice in modern application development, which is used to specifically hide features implemented that are not yet ready to be used by wider audience, and when ready can be enabled by a flip of a switch. The flags can also be used as a kill switch for application feature when it not working as expected.&lt;/p&gt;
&lt;p&gt;With feature flags implemented, it would be effective to have the features enabled or disabled from a location outside of the application infrastructure or configuration, this way we can have features spanning across applications be controlled via a centralized flag. Azure has feature management as part of the Azure App configuration service which can manage feature flags and maintain it separate from your hosting model and will act as a centralized repository for feature flags. Microsoft also provides libraries for different programing languages to consume Azure App Configuration service. More about it can be &lt;a href=&#34;https://docs.microsoft.com/en-us/azure/azure-app-configuration/manage-feature-flags&#34;&gt;found here&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Azure for integration and process automation</title>
      <link>https://www.beneathabstraction.com/post/azureintegration/</link>
      <pubDate>Sun, 21 Jun 2020 18:52:19 +1100</pubDate>
      <guid>https://www.beneathabstraction.com/post/azureintegration/</guid>
      <description>&lt;h2 id=&#34;problem&#34;&gt;Problem&lt;/h2&gt;
&lt;p&gt;Businesses run on multiple applications and services, how well the business runs is often impacted on how efficiently data is distributed to the correct task. Automating this flow of data is a way to streamline the business. The problem here is to choose the right technology  for this data integration and process automation.&lt;/p&gt;
&lt;h2 id=&#34;objective&#34;&gt;Objective&lt;/h2&gt;
&lt;p&gt;This article is describing the azure technologies that are available during time of writing to solve the business need.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
