Technical articles

Practical insights on .NET, Azure, microservices, and software engineering — by Nova Globen AB.

API Gateway Patterns in .NET Core and Azure

Different clients (web, mobile, IoT) often require different data shapes and aggregation levels. The BFF pattern addresses this by creating specialized gateways tailored to each client type, optimizing the data format and payload size for specific use cases.

api gateway patterns
Read article →

CQRS with Separate Read/Write Models in .NET Core

By maintaining distinct models for reading and writing data, CQRS enables independent optimization of each side based on their specific requirements. The write model focuses on business logic and data consistency, while the read model is optimized for query performance through de

cqrs separate read
Read article →

Data Consistency Patterns in Distributed Systems and .NET Core

In distributed systems, maintaining data consistency across multiple data stores or services is a fundamental challenge. The dual write problem occurs when you need to update two separate systems atomically but lack a distributed transaction mechanism. If one write succeeds and t

data consistency patterns
Read article →

Distributed Tracing in .NET Core and Azure

In distributed systems where a single user request flows through multiple microservices, databases, and external APIs, understanding system behavior becomes exponentially more complex. Traditional logging provides isolated snapshots from individual components, but fails to reveal

distributed tracing dotnet
Read article →

Event Sourcing in .NET Core

Event Sourcing is an architectural pattern where instead of storing only the current state of an entity, you store the complete sequence of events that led to that state. The current state is derived by replaying these events from the beginning. This approach fundamentally change

event sourcing dotnet
Read article →

Performance Optimization in .NET and Azure

Performance optimization is critical for building scalable, responsive applications. In distributed .NET systems, optimization strategies span multiple layers: from HTTP response caching and in-memory caching to distributed caching and database query optimization. With .NET 9 and

performance optimization dotnet
Read article →

Security Best Practices in .NET Core and Azure

Security is paramount in modern distributed systems, especially when deploying to cloud platforms like Azure. A comprehensive security strategy encompasses multiple layers: authentication and authorization, secure service-to-service communication, API protection through rate limi

security best practices
Read article →

Service Mesh in .NET core

A service mesh is a dedicated infrastructure layer that handles service-to-service communication in microservices architectures. It provides observability, traffic management, security, and resilience without requiring changes to application code. Service meshes use sidecar proxi

service mesh dotnet
Read article →

Contract Stability and Versioning in .NET and Azure

In distributed systems, APIs serve as contracts between services and their consumers. As systems evolve, maintaining stable contracts while introducing new features becomes a critical challenge. Breaking changes can cascade failures across dependent services, causing production o

contract stability versioning
Read article →

Deployment Strategies in .NET Core and Azure

Deploying distributed systems to production requires sophisticated strategies that minimize downtime, reduce risk, and enable rapid rollback when issues arise. Modern deployment strategies like blue-green and canary deployments have evolved from the painful lessons of traditional

deployment strategies dotnet
Read article →

Distributed Transactions in .NET Core and Azure

Distributed transactions in .NET Core allow operations across multiple databases or resource managers to be treated as a single atomic unit. This ensures data consistency by committing or rolling back all operations together.

distributed transactions dotnet
Read article →

Feature Toggles & Feature Management in .NET and Azure

Feature toggles (also known as feature flags) enable runtime control of application functionality without deploying new code. This is essential for progressive rollouts, A/B testing, canary releases, and safe deployments in modern cloud-native applications.

feature toggles dotnet
Read article →

Service Communication Patterns in .NET Core and Azure

Modern distributed applications require robust communication patterns to ensure reliability, scalability, and maintainability. This guide explores proven patterns and anti-patterns for service communication in .NET and Azure, helping you build resilient microservices architecture

service communication patterns
Read article →

Service Discovery in Modern .NET Applications and Azure

Service discovery enables microservices to locate and communicate with each other dynamically without hardcoding endpoints. As services scale up or down, restart, or move between hosts, service discovery ensures seamless connectivity by maintaining an up-to-date registry of avail

service discovery dotnet
Read article →

Shared Libraries Management in .NET and Azure

Shared libraries are essential infrastructure components in microservices architectures, but they require careful design to avoid creating tight coupling between services. This guide explores best practices for managing shared libraries in .NET 9, leveraging modern tooling like .

shared libraries management
Read article →

Ensuring Thread Safety — .NET core-centric

Multiple threads (or async tasks) touching the same mutable data can corrupt state or produce surprises. The safest strategy is to design so sharing doesn’t happen; when it must, control access tightly.

threads safety dotnet
Read article →