TWIL: July 25, 2021

One more week has gone by, and a lot of learning as well. Below are my highlights from this past week.


Podcasts

.NET Rocks

Episode 1745: CUPID with Dan North
You have probably heard of the SOLID principles of object-oriented programming which are intended to make software designs more understandable, flexible and maintainable. SOLID is an acronym for the following five principles:

  • Single-responsibility principle
  • Open-closed principle
  • Liskov substitution principle (aka Design by Contract)
  • Interface segregation principle
  • Dependency inversion principle

In this awesome episode, Dan North explains how these principles could be reinterpreted into CUPID:

  • Composable
  • Unique philosophy
  • Predictable
  • Idiomatic
  • Domain-based

Episode 1749: htmx with Carson Gross
In this episode, Carson Gross talks about a small Javascript library called htmx that extends HTML through attributes and allows almost any element and event to trigger an API call using one of the HTTP verbs. It seems to be a really powerful and yet simple solution to improve web applications without requiring a steep learning curve such as Angular.


Architecture Articles

For this week’s architecture articles, I bring you four interesting links.

HATEOS (Hypermedia as the Engine of Application State)
If you are designing an API, you should definitely know what is HATEOS and its benefits.

Introduction to Event-Driven Architecture
Great article explaining what is the Event-Driven Architecture paradigm and why it fits well in a Microservices architecture.

Kafka vs RabbitMQ: Which is the right messaging tool for you?
One is an event-streaming platform and the other is a message queueing broker, but they are usually competitors when designing decoupled solutions. This article does a pretty good job comparing them.

How Reddit Solved DevOps’ ‘Three-Stooges-in-a-Door’ Problem
Article about how Reddit solved the “Thundering Herd” problem (for example, when a sudden peak of requests renders a website unable to serve any of them) by deduplicating the requests at the microservice level.


Microservice Security

This week I was studying authorization patterns in microservice architectures, and that’s why most of my learning is around that topic. Below are some of the most interesting posts I found.

Security Patterns for Microservice Architectures

Microservices and Its Security Patterns

Microservices Authentication and Authorization Solutions

Microservices Security Cheat Sheet

Authentication & Authorization in Microservices Architecture – Part I

Authentication and Authorization in Microservices: How to Implement It?

Authentication and Authorization in Microservices

How to Implement Microservices Authorization with OPA

Open Policy Agent

Istio Security

How a Service Mesh Can Help With Microservices Security


Azure Services

Microsoft Azure is a very large platform, with a huge breadth of services. Sometimes just getting to know what exists and what new services have launched can be a real challenge. Here’s what I’ve been reading this week.

Mapping of On-Premises Security Controls Versus Services Offered by Major Cloud Providers
Although my focus is on Microsoft Azure, I feel it is essential to understand how the services of each provider map to their competitors. This article presents such a map (updated on July 13th, 2021) with a focus on security services and controls.

What is Azure Files?
If you need to share files across cloud and on-premises environments, or for application lift-and-shift scenarios, Azure Files is a compeling services.

Azure Bicep
This is a really cool project. Bicep is a Domain Specific Language (DSL) to deploy Azure resources declaratively. It is an abstraction over ARM templates, and Bicep code is transpiled to standard ARM template JSON files. Think of it as an evolution to ARM Templates.

Azure Purview
A fully managed, unified data governance service, which can scan and classify data from on-premises and multicloud data sources. This hybrid data can then be effortlessly discovered by everyone using Purview Data Catalog, making it also an invaluable tool for compliance.

Microsoft Dataverse
Microsoft Dataverse, previously known as Common Data Service, is a data storage service in the cloud meant to support a business-focused definition of an organization’s data for use within applications. It is a flexible and scalable table-based data storage solution, managed by Microsoft and globally distributed, with a tight integration with the Power Platform.

I wanted to understand which Azure services were available on-premises, through Azure Stack Hub, and specifically if Azure Event Hubs was one of those, so I went through the following articles to find out.

Azure Stack Hub overview

Differences between global Azure, Azure Stack Hub, and Azure Stack HCI

Overview of Event Hubs on Azure Stack Hub


Cool Stuff

Building Minimal APIs In .NET 6
Do you think .NET is too complex for the microservice you are trying to build? Well, Microsoft agreed with you and has introduced the Minimal API concept into .NET 6 (Preview). It takes away all that stuff you don’t need and you end up with just the bare bones.

Microsoft Planner: How I manage tasks automatically
I really like articles like this one. Manuel is describing is experience in automating the process of publishing his TWIL posts, using Planner to store the links and descriptions for the articles he reads and using Power Automate to generate the final post.

Power Automate: The power of copy-paste
A great time saver for anyone using Power Automate, the “My Clipboard” feature is sort of a hidden gem (it’s not that hidden actually, but I never used it). Great stuff.


Design Patterns

Here’s a new batch of design patterns for your enjoyment. I’m thinking about organizing all these patterns into a simple catalog on this website… Do you think that would be useful? (I know there are already a bunch of other pattern-focused websites out there).

Pipes and Filters Pattern

Idempotency Patterns

Compensating Transaction pattern

Compute Resource Consolidation pattern

Competing Consumers pattern

10 Design Patterns every Software Architect and Software Engineer must know


Have a great week!

Photo by Gery Wibowo on Unsplash