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
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.
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).
Compensating Transaction pattern
Compute Resource Consolidation pattern
10 Design Patterns every Software Architect and Software Engineer must know
Have a great week!
Photo by Gery Wibowo on Unsplash