SDLC in the AI Era with Spec-Driven Development
Learn how spec-driven development turns AI from a coding shortcut into a governed delivery system for reliable, traceable .NET and Azure software.
Read article →Practical insights on .NET, Azure, microservices, and software engineering — by Nova Globen AB.
Learn how spec-driven development turns AI from a coding shortcut into a governed delivery system for reliable, traceable .NET and Azure software.
Read article →What started as a simple interview assignment evolved into a comprehensive exploration of modern .NET architecture, distributed systems design, and enterprise-grade observability. In this article, I'll walk you through building a production-ready Library Management System that de
Read article →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.
Read article →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
Read article →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
Read article →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
Read article →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
Read article →This series of guides serves as both a learning resource for those new to microservices and a reference for experienced practitioners seeking to adopt .NET latest capabilities and Azure best practices and explores the essential patterns, practices, and tools for successfully impl
Read article →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
Read article →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
Read article →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
Read article →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
Read article →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
Read article →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.
Read article →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.
Read article →When to choose gRPC over REST? and how gRPC, REST, and other alternatives compare—especially in .NET core and the .NET Aspire stack.
Read article →Resilience in software architecture refers to an application's ability to recover from failures and continue functioning. In distributed systems and microservices, this means gracefully handling network issues, service outages, transient errors, and slow responses without cascadi
Read article →DDD provides the theoretical foundation for defining service boundaries through bounded contexts — explicit boundaries within which a particular domain model is defined and applicable.
Read article →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
Read article →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
Read article →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 .
Read article →How do you protect APIs from over-fetching/under-fetching? Why for REST: narrow DTOs, includes, and projections and for broader needs consider GraphQL?
Read article →Materialized read models can make pagination much faster, but they help indirectly. They reduce the per-page work (joins/aggregates/shaping), so your keyset/seek query touches fewer pages and uses a tight covering index. The seek/cursor pattern still does the heavy li
Read article →Rock-solid pagination story for 100M+ rows on .NET 9 / EF Core 9 with Azure SQL / SQL Server (plus notes for Cosmos DB). Patterns that hold up at scale: keyset/seek pagination, stable sort keys, page tokens, and index- & filter-friendly queries.
Read article →A practical, opinionated guide to contracts vs DTOs vs entities, how to model them with records, when to map (and how), plus a comparison of Mappers, and finally whether T4 codegen is worth it today.
Read article →A detailed comparison of Azure App Configuration and Azure Key Vault, since they serve different but complementary roles in cloud-native applications.
Read article →Service Locator is an anti-pattern where you inject IServiceProvider and manually resolve dependencies
Read article →Big picture of resilient HTTP calls—what it is, why it matters, and how to do it well in .NET/Azure with a sample.
Read article →The practical way to decide between synchronous and asynchronous in .NET Core, plus quick examples.
Read article →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.
Read article →Approach to versioning REST APIs by header-based versioning, backward-compatibility, deprecation policy; shared contracts via OpenAPI and consumer communication.
Read article →Idempotency = same request run N times ⇒ same effect & same response.
Read article →Vertical Slice = organize by feature (Request → Handler → Persistence → Tests in one folder). Fast, low-ceremony, great for CRUD and independent modules.
Read article →