Skip to content

architecture

68 posts

architecture
DynamoDB for Identity Reads, OpenSearch for Search: The Zero-ETL Read Model

Keep identity reads in DynamoDB, route arbitrary sort, filters, facets, and full text to a zero-ETL OpenSearch read model, and know when one PostgreSQL beats both.

dynamodb · aws · architecture +2

Dogwood: Temporal Authorization for AI Agents

How AWS Dogwood adds temporal conditions to Cedar policies, lowers them back to plain Cedar, and enforces agent guardrails at the Amazon Bedrock AgentCore gateway.

authorization · security · ai-agents +2

Choosing a Serverless Internal Service Layer7/7

Before building an internal service layer, decide whether you need one: what it costs per call, the volume where VPC Lattice wins, and when direct invoke still beats it.

aws · aws-cdk · lambda +4

gRPC, Protobuf, and the Wire Format Your Gateway Allows6/7

A private REST API structurally cannot carry gRPC, and every AWS surface that speaks gRPC excludes Lambda targets. What to keep from gRPC, and what to drop.

aws · aws-cdk · lambda +4

Building the Layer with a Private API Gateway5/7

The private REST API, the resource policy that switches it on, per-route AWS_IAM grants, the two CDK stacks, and signing the call from a Node 22 Lambda.

aws · aws-cdk · lambda +4

Identity and Encryption Between Serverless Services4/7

SigV4 proves which service is calling and nothing about which user it is for. How to propagate a verified subject, and what the transport actually encrypts.

aws · aws-cdk · lambda +4

Multi-Account: Cross-Account Calls and the Data Perimeter3/7

Same-account, the resource policy and the caller's identity policy are an OR. Cross-account they become an AND, and silence denies. What that changes in the perimeter.

aws · aws-cdk · lambda +4

How the Layer Fails: Throttles, Retries, and Loops2/7

API Gateway shares one throttle bucket with your front door, never retries a Lambda integration, and cannot see loops through itself. What you have to rebuild.

aws · aws-cdk · lambda +4

Observability, and Where Service Meshes Are Heading1/7

The access log already names the caller, route, and latency. Per-route metrics are not free, the user token needs masking, and AWS is switching off its own mesh.

aws · aws-cdk · lambda +4

Should Stateful Resources Live in a Separate CDK Stack?

A lifecycle test for CDK stack layout: give a resource its own long-lived stack when it outlives any single deployer, then reach it by a well-known name.

aws-cdk · infrastructure-as-code · typescript +3

Server-Driven UI for Native Mobile Apps

Server-Driven UI is the mobile analog of server-side composition. The hard part is not JSON rendering but a versioned component contract that survives old app versions.

mobile · react-native · architecture

How to Reduce Lead Time from Commit to Production

How high-performing teams shrink the lead time from code-complete to live in production, without trading away security or code quality. A guide for tech leads.

ci-cd · devops · dora-metrics +2

Shift-Left Security: Removing the Review-Queue Bottleneck

How high-performing teams keep security review from becoming a lead-time bottleneck: shift-left automation, risk-based gates, a paved road, dependency cadence.

ci-cd · devops · security +3

Mobile API Versioning with a BFF: Shipping When You Can't Roll Back the Client

A mobile binary can't be rolled back and old versions linger, so safety and speed move server-side: a BFF, consumer-driven contracts, and backward-compatible versioning.

mobile · api-design · testing +1

Golden Paths for a Frontend Platform: Scaffolding, Shared Packages, and a Task CLI

How a frontend platform team makes the right way the easy way: golden-path scaffolding, versioned shared packages, and a task CLI that removes per-team drift.

platform-engineering · developer-experience · build-tools +1

Hexagonal Architecture for a Presentation Service vs BFF

A presentation service is the thin backend behind a UI fragment. Ports-and-adapters keeps it from rotting into glue code by pointing dependencies inward.

architecture · nodejs · typescript +3

Server-Side Micro-Frontend Composition: One Page, Many Teams

Server-side micro-frontend composition lets independent teams own fragments of one page. The hard part is the ownership boundary and the versioned consistency contract.

build-tools · architecture · nextjs +2

Code Architecture by Init Amortization: Lean on Lambda, Heavy Only When Earned

Match architecture weight to each runtime's init-amortization: lean handlers on single-purpose Lambda, more on a Lambdalith, full OOP/DI only on long-lived runtimes.

architecture · lambda · serverless +3

AWS Lambda: Single-Purpose Functions vs Lambdalith

How to slice AWS Lambda functions: default to single-purpose, treat the single-domain Lambdalith as an earned exception, and the platform forces that decide it.

lambda · serverless · architecture +2

How Aurora Serverless v2 Works: Architecture Deep Dive

What Aurora Serverless v2 is under the hood: the shared storage layer, ACU-driven compute, the Caspian substrate, scale-to-zero, and mixed-mode clusters.

aws · data-storage-orm · architecture +1

WebAssembly Use Cases: Browser, WASI Server, and Edge Compute

A stack-agnostic map of WebAssembly's three bets (browser performance, server-side WASI, edge compute) so you can tell which one a Wasm talk is about.

webassembly · edge-computing · architecture

wasmCloud and NATS: Making the Event Bus Portable

An exploration thesis: vendor lock-in in event-driven systems lives in the bus topology, not the runtime, and wasmCloud plus NATS make the bus portable.

webassembly · messaging · event-driven +3

Optimistic UI vs Decoupled Flows: UX Patterns for Async Backends

A pragmatic guide for designers working with async backends: three interaction patterns, when to use each, and four anti-patterns to push back against.

event-driven · state-management · design-patterns +2

Zapier MCP Permission Control: Scoping AI Agent API Access

How Zapier MCP gives AI agents action-level whitelisting, credential isolation, and human-in-the-loop approval, a managed alternative to custom scoped proxies.

mcp · security · ai-agents +4

Claude Code Skills and Context Window Bloat: A Token Budget Guide

Copying Claude Code configurations causes context window bloat, degraded tool selection, and mismatched workflows. Build setups intentionally with token budget math.

developer-experience · ai-tools · productivity +2

AWS Cognito + Verified Permissions for SaaS Authorization4/4

Build SaaS authorization with AWS Cognito and Verified Permissions, covering Cedar policies, multi-tenant patterns, JWT flow, and cost in TypeScript.

authorization · aws · authentication +4

OpenFGA vs SpiceDB vs Cerbos vs OPA vs AWS Verified Permissions: Which Authorization Platform to Choose3/4

A vendor-neutral evaluation of AWS Verified Permissions, SpiceDB, OpenFGA, Cerbos, and OPA, with architecture patterns, cost analysis, and a decision framework.

authorization · security · architecture +4

Cedar vs Rego vs OpenFGA: Policy Language Comparison2/4

A deep comparison of Cedar, Rego, OpenFGA DSL, and Cerbos YAML/CEL policy languages: syntax, performance, formal verification, tooling, and TypeScript integration.

authorization · security · architecture +2

SpiceDB vs Auth0 FGA: Relationship-Based Authorization Compared1/4

A deep technical comparison of SpiceDB and Auth0 FGA (OpenFGA), two Zanzibar-inspired systems with different trade-offs in schema, consistency, deployment, and scale.

authorization · security · architecture +3

Authentication vs Authorization: Fundamentals and Why Permissions Break6/6

Authentication vs authorization, common permission pitfalls, the fail-closed principle, and the goals every permission system should meet.

typescript · nextjs · authorization +2

Centralizing Authorization with a Service Layer5/6

Refactor scattered permission checks into a centralized service layer, add Next.js middleware guards, and build a defense-in-depth authorization architecture.

typescript · nextjs · authorization +2

Role-Based Access Control: Type-Safe RBAC in TypeScript4/6

Build a type-safe RBAC system in TypeScript, create a unified can() function, sync permissions across UI and backend, and learn when RBAC reaches its limits.

typescript · nextjs · authorization +2

Attribute-Based Access Control in TypeScript: Building an ABAC Policy Engine3/6

Build an ABAC policy engine in TypeScript with the builder pattern, conditional permissions, and type-safe policy evaluation that replaces RBAC's limitations.

typescript · nextjs · authorization +2

Advanced ABAC: Field-Level Permissions and DB Integration2/6

Extend ABAC with environment-based rules, field-level read and write permissions, and automatic database query filtering that eliminates duplicate permission logic.

typescript · nextjs · authorization +2

Multi-Tenant Authorization in TypeScript: CASL vs Custom ABAC1/6

Add multi-tenant isolation to your permission system, evaluate CASL as a library alternative, and use decision frameworks to choose the right authorization architecture.

typescript · nextjs · authorization +3

MCP vs Direct API Access for AI Agents: When to Skip the MCP Layer

Why production teams replace broad MCP access with scoped API proxies. Atlassian, Google Workspace, and Notion via FastAPI proxy, CLI wrapper, and n8n.

mcp · api-design · python +4

MCP Server RBAC, Tool Composition, and Multi-Agent Workflow Patterns

Enterprise patterns for Model Context Protocol: tool composition, multi-agent orchestration, role-based access control, and production observability.

mcp · ai-adoption-strategy · authorization +4

TypeScript AI SDK Comparison: Vercel AI SDK vs OpenAI Agents SDK for Agent Development

A practical comparison of TypeScript AI SDKs for building agents: Vercel AI SDK, OpenAI Agents SDK, and AWS Bedrock, with code examples and decision frameworks.

typescript · ai-tools · serverless +4

SOLID Principles in JavaScript: Practical Guide with TypeScript and React

How SOLID principles apply to modern JavaScript: practical examples with TypeScript, React hooks, and functional patterns, plus when they're overkill.

typescript · javascript · react +4

Caching Strategies: From Local Memory to Distributed Systems

A practical guide to multi-tier caching: in-memory, Redis, and CDN layers, cache-aside vs write-through, ElastiCache vs MemoryDB, and stampede prevention.

caching · redis · aws +4

AI Agent Security: Guardrails and Defense Patterns for Production Systems

Securing AI agents in production with AWS Bedrock Guardrails, defense-in-depth, and patterns that prevent prompt injection, tool misuse, and multi-agent attacks.

ai-agents · aws-bedrock · security +3

SNS/SQS Cross-Account Fan-Out: Building Multi-Account Event Distribution in AWS

Implement secure cross-account event distribution with Amazon SNS and SQS: IAM policies, KMS encryption, AWS CDK, and common production pitfalls.

aws · sns · sqs +6

AI Agent Architecture Patterns: ReAct, Plan-and-Execute, Multi-Agent

The architectural evolution from rule-based chatbots to autonomous AI agents, covering ReAct, Plan-and-Execute, and multi-agent patterns in TypeScript.

ai-agents · llm · architecture +2

Aurora vs RDS: When to Choose Amazon Aurora (Architecture and Cost)

A guide to Aurora architecture, I/O cost analysis, and when to choose it over RDS, with migration strategies and real-world decision frameworks.

aws · data-storage-orm · postgresql +3

AWS CDK Project Structure: Service-Based vs Domain-Based Organization

When to use service-based, domain-based, feature-based, or layer-based organization in AWS CDK projects, with decision frameworks and common pitfalls.

aws-cdk · typescript · infrastructure-as-code +3

Choosing IoT Messaging Protocols for Logistics: MQTT, AMQP, ZeroMQ, CoAP, and DDS Compared

A technical comparison of MQTT, AMQP, ZeroMQ, CoAP, and DDS for IoT logistics: fleet tracking, cold chain monitoring, and real-time device communication.

messaging · industry-trends · real-time +2

Creational Design Patterns in TypeScript: Singleton, Factory, Builder, Prototype2/2

How Singleton, Factory, Builder, and Prototype patterns evolved in TypeScript: when ES modules replace singletons and when factory functions beat classes.

typescript · design-patterns · architecture +1

Structural Design Patterns in React and TypeScript1/2

How Decorator, Adapter, Facade, Composite, and Proxy patterns evolved in React and TypeScript: when HOCs give way to hooks and how adapters isolate third-party APIs.

typescript · react · design-patterns +2

Domain-Driven Design: Introduction and Fundamentals

A comprehensive introduction to Domain-Driven Design: core concepts, building blocks, strategic patterns, and when and how to apply DDD in practice.

domain-driven-design · architecture · design-patterns +2

Event Storming: A Practical Guide to Understanding Complex Domains

A hands-on guide to Event Storming: what it is, how to facilitate sessions effectively, and when to use this workshop technique for domain modeling.

domain-driven-design · architecture · agile +1

Building CRM Systems with Event-Driven Architecture

A practical guide to implementing customer relationship management using event sourcing, CQRS, and event-driven patterns for marketing automation and consent management

event-driven · architecture · microservices +3

What Is a Key-Value Store? Choosing the Right Solution

A foundational guide to key-value storage: what it is, where it fits, why teams choose it, and which solutions ship with which technology stacks.

redis · dynamodb · caching +4

How to Write a Technical RFC: Section-by-Section Guide

A section-by-section guide to technical RFCs: what each part has to establish, what reviewers look for, and where proposals stall in review.

rfc · documentation · architecture +3

Lewis Deep Democracy in Engineering Teams: Beyond False Consensus

How Arnold Mindell's Deep Democracy principles transform technical decision-making, build psychological safety, and ensure every voice strengthens architecture.

psychological-safety · team-management · team-dynamics +4

Migrating from Microservices Back to a Modular Monolith

Recognizing distributed monoliths, strategic service consolidation, and the honest reality of moving back to a modular monolith when complexity grows.

microservices · architecture · distributed-systems +2

From RFC to Production: What They Don't Tell You About Implementation

Where RFC designs diverge from production reality, using notification systems as the worked example, and how to tell useful adaptation from architectural drift.

rfc · production · debugging +4

Building a Scalable User Notification System: Architecture and Database Design1/1

Design patterns, database schemas, and architectural decisions for building enterprise notification systems that handle millions of users

typescript · postgresql · architecture +4

How to Write an Effective RFC: A Guide for Engineers

Practical guidance on RFC structure, stakeholder review, and turning technical debates into decisions a team actually keeps.

rfc · documentation · architecture +3

AWS Lambda Cost Optimization: VPC, Layers, and Advanced Patterns1/1

Advanced AWS Lambda patterns and cost optimization: Lambda Layers, VPC configuration, cross-account execution, and architectural decisions.

lambda · serverless · cost-optimization +5

Middy Alternatives: Building a Custom AWS Lambda Middleware Framework2/2

When a Lambda fleet outgrows Middy's static middleware model, how a project-specific engine handles per-request config, and what owning one costs

lambda · middleware · performance +6

AWS Lambda Middleware with Middy - Clean Code and Best Practices1/2

Discover how Middy transforms Lambda development with middleware patterns, moving from repetitive boilerplate to clean, maintainable serverless functions

lambda · middleware · serverless +5

Circuit Breaker Pattern: Building Resilient Microservices That Don't Cascade Failures

Implementing the Circuit Breaker pattern in TypeScript: three states, timeout sizing against P99 latency, and threshold defaults per dependency type

architecture · design-patterns · reliability +1

CQRS with AWS Lambda, EventBridge, and DynamoDB

A practical CQRS implementation with AWS Lambda, EventBridge, and DynamoDB, covering event sourcing, eventual consistency, and distributed debugging.

architecture · dynamodb · event-driven +3

How to Choose a Database: SQL vs NoSQL vs NewSQL vs Edge

Choose the right database across SQL, NoSQL, NewSQL, and edge options: the trade-offs of each category, selection criteria, and a decision framework.

data-storage-orm · postgresql · redis +6

Documentation as Infrastructure: Scaling Knowledge Across Engineering Teams

Documentation debt can slow teams faster than technical debt. A guide to treating docs as critical infrastructure and scaling knowledge across engineering teams.

documentation · rfc · team-management +3

Kafka vs SQS vs EventBridge: Choosing Event-Driven Tools

A deep dive into event-driven tools: Kafka, SQS, and EventBridge, message delivery patterns, DLQ strategies, and their AWS, Azure, and GCP equivalents.

architecture · cloud-providers · messaging +4

Monolith to Microservices in Node.js: A Migration Guide

A practical guide to evolving Node.js monoliths into event-driven serverless functions, with migration strategies and proven architectural patterns.

event-driven · architecture · nodejs +1

Multi-Account AWS Architecture: Event-Driven Systems at Scale

Multi-account AWS architecture patterns for resilient event-driven systems: account structure, EventBridge routing, and cross-service communication.

aws · eventbridge · multi-account +5