Architecture
120 articles
Why the Domain Fades From View in Web Development, and Why It Eventually Comes Back
Understand what a domain really means, why it works as an architectural boundary, and the structural reasons the domain fades from view in web development.
Hands-On API Learning
Hands-On API Learning
Good Code, Bad Code
Good Code, Bad Code
Where Should You Store SPA Tokens? A BFF + Session Authentication Design
Explains where to store access tokens in an SPA (the danger of localStorage), a BFF + session design that keeps tokens out of the browser, and why starting token-less is often enough.
What is the Big Picture of Service-to-Service Authentication? mTLS, Token Exchange, SPIFFE, and Zero Trust
Organizes service-to-service authentication in microservices across three layers: network, token, and identity foundation. Covers mTLS, Token Exchange (RFC 8693), SPIFFE, Zero Trust (NIST SP 800-207), and BeyondProd.
Comparing API Styles: REST, GraphQL, gRPC, Webhooks, WebSocket, and Messaging
Six common API styles, REST, GraphQL, gRPC, Webhooks, WebSocket, and Messaging, compared side by side. This article organizes them by communication model, lays out each style's overview, design considerations, and pros and cons, and gives guidance for choosing. A map for picking a style in API design.
When to Use GraphQL: Adoption Criteria and Trade-offs
When should you adopt GraphQL? This guide covers its core ideas (a typed schema, a single endpoint, fetching exactly what you need), where it fits and where it does not, the trade-offs, operational concerns such as N+1, and how it compares with REST and gRPC.
When to Use gRPC: Adoption Criteria and Trade-offs
When should you adopt gRPC? This guide covers its core ideas (RPC, HTTP/2, Protocol Buffers), where it fits and where it does not, the trade-offs, operational concerns, and how it compares with REST and GraphQL.
Comparing API Versioning Strategies: Path, Query, Header, and Payload
A concise comparison of four API versioning strategies — path, query parameter, header, and message payload — covering their pros, cons, and best fit.
What Is EventStorming
Learn EventStorming, a workshop technique born from domain-driven design that uses sticky notes to rapidly map a business domain and build shared understanding between developers and domain experts.
Production-Ready Microservices: Building Standardized Systems Across an Engineering Organization
A book that organizes the requirements microservices must satisfy to be production-ready, presented as a standardization checklist.
Accidental Complexity and the Absence of Decision Records
How accidental complexity emerges, and why the absence of ADRs and Design Docs makes it hard to tell what is essential from what is accidental.
Three Common Patterns for Distributed Transactions — 2PC, Saga, and Outbox
A concise comparison of the three canonical distributed transaction patterns in microservices — 2PC, Saga, and Outbox — covering their mechanics, trade-offs, and when to use each.
Architecture Modernization: Socio-technical alignment of software, strategy, and structure
Architecture Modernization: Socio-technical alignment of software, strategy, and structure
Fundamentals of Software Architecture, 2nd Edition: An Engineering Approach
Fundamentals of Software Architecture, 2nd Edition: An Engineering Approach
The Abstraction Trap in Architecture Design
Why sharing domain logic can quietly turn into architectural debt, while technical concerns can safely be shared — with nuance around authorization and PII-sensitive logging.
Viability Conditions for Building a Platform
How do you decide whether to build an internal platform? This article organizes the viability conditions from the perspectives of core/supporting/generic subdomains, comparison with external services, leverage, and organizational capacity, and examines how far domain analysis alone can take you.
What's the Difference Between Product Development and Platform Development?
Exploring how product development and platform development differ across three dimensions — decision criteria, design philosophy, and investment perspective.
Migrating bmf-tech.com from gobel to gohan — A Full Static Site Transition
The complete process of migrating bmf-tech.com from a self-built headless CMS (gobel) with MySQL and Vue.js to a fully static site on gohan, hosted on Cloudflare Pages. Covers 700+ articles, English slug generation, image migration, redirects, and a Go-based preflight checker.
Engineering in the AI Era: Evolution from Prompts to Autonomous Systems
Master Prompt as Code, PromptOps, LLM-as-Judge evaluation, Context Engineering, and Agentic Engineering for AI.