Modern applications, especially cloud applications running on right-sized infrastructure, rely heavily on efficient resource management, but “efficiency” doesn’t always mean “low usage.” High CPU or memory consumption can be either a red flag or a sign of optimal performance, depending on the context. In this post, we’ll explore when to celebrate high resource usage—and when to panic—with a focus on .NET applications.
Continue reading “Understanding High CPU and Memory Usage: When to Act and When to Relax”Category: Architecture
Monkeys, bananas and WHY
Once in a while, it happens when I come across a situation where people do things without truly understanding why they do what they do. To lighten the mood after a series of ‘Spanish inquisition’ why questions, I like to tell this anecdote.

Transitive Dependencies Gone Wild: Why Your .NET Microservice Isn’t Running What You Think
While working in a fairly large .NET microservice landscape I came across the following assumption-shattering situation, which led me down a nuget-versioning rabbit hole.
Continue reading “Transitive Dependencies Gone Wild: Why Your .NET Microservice Isn’t Running What You Think”From Layers to Rings – Hexagonal Architectures Explained (by Silas Graffy)
This article is a proper English translation of Von Schichten zu Ringen – Hexagonale Architekturen erklärt by Silas Graffy. I found it to be one of the best explanations and motivations for the architecture style, but the ‘Chrome Autotranslation’ was severely lacking.
In summary:
- Classical layered architectures do not work: they put the database as a foundation and they tend to evolve into ‘everything talks to everything spaghetti’.
- In the mid-90’s, building on the Dependency Inversion Principle, Alistair Cockburn coined the hexagonal architecture: it decouples the core application logic from external concerns (such as databases).
- Because six sides was rather random, the name was changed in 2005 to Ports and Adapters.
- If we add the internal/external notion, we arrive at the Onion Architecture (Jeffrey Palermo in 2008).
- This inspired Clean Architecture (Robert C. Martin in 2012), as a more generalized form of the Onion Architecture.
Enjoy the read.
Continue reading “From Layers to Rings – Hexagonal Architectures Explained (by Silas Graffy)”Exploring options for building REST APIs with C# and deploying to Azure
Somebody asked me, what is the difference between a C# REST API running as a Web App on an App Service as a container and a C# REST API running as a HTTP Function on an App Service or a Consumption Plan?
There are lots of aspects in this question, so let’s unpack this a bit first.
First, let’s talk about the various ways we can build REST APIs in .NET.
Then, we’ll talk about how you can deploy these, either as code or as a container.
Last, we’ll explore – if you end up with a container – which Azure service best fits your needs.
Frequently Overlooked Architectural Characteristics (Video Review)
This video is well worth the watch, as it summarizes what quality attributes are frequently overlooked.
Continue reading “Frequently Overlooked Architectural Characteristics (Video Review)”Getting Non-Functional Requirements from Business People
As an architect in the world of software development, I’ve often encountered business stakeholders who, despite their expertise in their respective domains, find themselves out of depth when discussing the nitty-gritty of software requirements. The challenge isn’t their lack of understanding; it’s about bridging the gap between their business needs and the technical solutions we can provide.
In this blog post, I’ll share a couple of conversations starters for each of the ISO 25010 quality attributes (also known as non-functional requirements), which will eventually drive a lot of the software architecture and associated cost.
Continue reading “Getting Non-Functional Requirements from Business People”