TWIL: April 17, 2022

This week was all about Azure Container Apps, one of the new services offered in Azure with a special focus on microservices with a serverless model. I also highlight a few interesting podcasts on different topics, from Azure Front Door, to code generation, through Photino and how to debug async code.


.NET Rocks

Episode 1788: Debugging Async Code with Isadora Rodopoulos
How do you debug asynchronous code? Carl and Richard talk to Isadora Rodopoulos about her debugging asynchronous code series of videos and the tools available today to help with debugging. Different people approach debugging in different ways – there’s no one way to solve any given problem. But Isadora digs into the critical challenges of asynchronous code, not being sure of the order of execution, managing when messages get lost and detecting the transient problems that come from async code!

Episode 1789: Web Apps to Desktop Apps using Photino with Otto Dobretsberger
How do you make web apps into desktop apps? Carl and Richard talk to Otto Dobretsberger about Photino, a fork from Steve Sanderson’s WebWindow project that will compile your web application into a cross-platform desktop application for Windows, macOS, and Linux. Otto talks about keeping Photino extremely lightweight, many times smaller than other desktop framework approaches. The typical approach is using the SPA of your choice – Angular, Vue, or React, and then compiling it into the desktop form. Great for making reliable off-line applications and onto dedicated kiosk-style hardware!

The Azure Podcast

Episode 419: Azure Front Door
We are fortunate to have Abhishek Tiwari, from the Azure Networking team, join us again on the podcast, this time to discuss the Front Door service.

Episode 420: Infrastructure as Code
Microsoft MVP, Director of Solution Architecture at WTW and all things Azure expert, Sam Cogan, joins us for an in-depth discussion on Infrastructure as Code. He shares his views and give us valuable tips for having a good IaC strategy.


Episode 828: Modern Code Generation with Jordan Adler
Jordan Adler is Head of Developer Engineering at OneSignal and has a deep interest in code generation. He has helped migrate large systems from Python 2 or Python 3 using code generation and code transformation. Using tools like Yellicode, Python Future, and others, Jordan’s team has been able to accelerate software development. We’ll also talk about OpenAPI-generator, a tool that takes OpenAPI/Swagger and generates idiomatic SDKs in any language.

Azure Architecture

Choose an Azure compute service
Azure offers a number of ways to host your application code. The term compute refers to the hosting model for the computing resources that your application runs on. The following flowchart will help you to choose a compute service for your application.

Azure Container Apps

One of the new Azure services that allows you to run microservices and containerized applications in a serverless model. I’ve been trying it out and I feel like it has a lot of potential, so I ended up going though all of its official documentation. Here are some of the most important bits.

Comparing Container Apps with other Azure container options
There are many options for teams to build and deploy cloud native and containerized applications on Azure. This article will help you understand which scenarios and use cases are best suited for Azure Container Apps and how it compares to other container options on Azure.

Quickstart: Deploy your first container app
The Azure Container Apps Preview service enables you to run microservices and containerized applications on a serverless platform. With Container Apps, you enjoy the benefits of running containers while you leave behind the concerns of manually configuring cloud infrastructure and complex container orchestrators. In this quickstart, you create a secure Container Apps environment and deploy your first container app.

Azure Container Apps environments
Individual container apps are deployed to a single Container Apps environment, which acts as a secure boundary around groups of container apps. Container Apps in the same environment are deployed in the same virtual network and write logs to the same Log Analytics workspace. You may provide an existing virtual network when you create an environment.

Containers in Azure Container Apps
Azure Container Apps manages the details of Kubernetes and container orchestrations for you. Containers in Azure Container Apps can use any runtime, programming language, or development stack of your choice.

Revisions in Azure Container Apps
A revision is an immutable snapshot of a container app. The first revision is automatically created when you deploy your container app. New revisions are automatically created when a container app’s template configuration changes. While revisions are immutable, they’re affected by changes to global configuration values, which apply to all revisions.

Application lifecycle management in Azure Container Apps
The Azure Container Apps application lifecycle revolves around revisions. When you deploy a container app, the first revision is automatically created. More revisions are created as containers change, or any adjustments are made to the template section of the configuration. A container app flows through three phases: deployment, update, and deactivation.

Microservices with Azure Containers Apps
Microservice architectures allow you to independently develop, upgrade, version, and scale core areas of functionality in an overall system. Azure Container Apps provides the foundation for deploying microservices featuring: Independent scaling, versioning, and upgrades, service discovery and native Dapr integration.

Observability in Azure Container Apps
Azure Container Apps provides built-in observability features that give you a holistic view of the behavior, performance, and health of your running container apps.

Health probes in Azure Container Apps
Health probes in Azure Container Apps are based on Kubernetes health probes. You can set up probes using either TCP or HTTP(S) exclusively.

Managed identities in Azure Container Apps
A managed identity from Azure Active Directory (Azure AD) allows your container app to access other Azure AD-protected resources. Your container app can be granted two types of identities: a system-assigned identity or a user-assigned identity.

Monitor an app in Azure Container Apps
Azure Container Apps gathers a broad set of data about your container app and stores it using Log Analytics. This article describes the available logs, and how to write and view logs.

Tutorial: Deploy a Dapr application to Azure Container Apps using the Azure CLI
Dapr (Distributed Application Runtime) is a runtime that helps build resilient, stateless, and stateful microservices. In this tutorial, a sample Dapr application is deployed to Azure Container Apps.

Cool Stuff

Map the Cloud
Interesting website that allows you to map the regions and edge cities of the main cloud providers.

Have fulfilling week!

Photo by frank mckenna on Unsplash