Products Consulting About Blog Contact Us Česky

Blog

Engineering insights from SaaSForge — cloud-native architecture, observability, GenAI, and building SaaS products.

Observing and Optimizing Your GraphQL API

Observing and Optimizing Your GraphQL API

Part 7 of the Production GraphQL series — federation with a GraphQL router, client identification, operation-level metrics, error classification, schema analytics, and performance optimization for your DGS API.

  • GraphQL
  • Netflix DGS
  • Observability
  • Performance
  • Federation
Read more arrow_forward
Type-Safe GraphQL on the Frontend

Type-Safe GraphQL on the Frontend

Part 6 of the Production GraphQL series — how to carry type safety from your DGS backend all the way to Vue components using GraphQL Code Generator, typed document nodes, tiered fragments, and a shared operations package.

  • GraphQL
  • TypeScript
  • Vue.js
  • Code Generation
  • Frontend
Read more arrow_forward
DGS at Scale: Testing, Schema Evolution, and Federation

DGS at Scale: Testing, Schema Evolution, and Federation

Part 5 of the Production GraphQL series — unit testing DGS components with Spock, evolving your GraphQL schema without breaking clients, and federating multiple services into a unified graph.

  • GraphQL
  • Netflix DGS
  • Testing
  • Federation
  • Java
Read more arrow_forward
Virtual Threads Did Not Kill WebFlux

Virtual Threads Did Not Kill WebFlux

Java 21 virtual threads solve thread scalability for blocking code. WebFlux solves backpressure, streaming, and event-driven composition. They are not competitors — they solve different problems, and the 'WebFlux is dead' take is dangerously wrong.

  • Java
  • Virtual Threads
  • Spring WebFlux
  • Project Reactor
  • Spring Boot
Read more arrow_forward
Real-time and Reactive Patterns with Netflix DGS

Real-time and Reactive Patterns with Netflix DGS

Part 4 of the Production GraphQL series — GraphQL subscriptions over WebSocket, choosing between Mono and CompletableFuture for data fetchers, and AOP-based observability for your GraphQL API.

  • GraphQL
  • Netflix DGS
  • WebSocket
  • Spring WebFlux
  • Observability
Read more arrow_forward
Stop Demolishing the House to Change the Furniture: Why GitOps Beats Push-Based Deployment

Stop Demolishing the House to Change the Furniture: Why GitOps Beats Push-Based Deployment

Push-based deployment with Terraform and Helm reprocesses your entire infrastructure to update one container tag. Locked state buckets, stuck Helm releases, and developer bottlenecks are the real cost. GitOps with Flux CD separates what changes often from what changes rarely.

  • Flux CD
  • GitOps
  • Kubernetes
  • Terraform
  • DevOps
Read more arrow_forward
Securing Your GraphQL API with Netflix DGS

Securing Your GraphQL API with Netflix DGS

Part 3 of the Production GraphQL series — authentication and authorization with @PreAuthorize, error sanitization to prevent information leakage, and query depth and complexity limits to stop abuse.

  • GraphQL
  • Netflix DGS
  • Spring Security
  • Java
  • API Security
Read more arrow_forward
Testing Axon 5 Aggregates with Spock: A Practical Guide

Testing Axon 5 Aggregates with Spock: A Practical Guide

How to test Axon 5 aggregate state machines using Spock and AxonTestFixture — from creation commands to guard clause rejections, with practical patterns for event chaining, timestamp handling, and injected services.

  • Axon Framework
  • CQRS
  • Event Sourcing
  • Spock
  • Testing
  • Java
Read more arrow_forward
Solving N+1 with Data Loaders and Field Resolvers

Solving N+1 with Data Loaders and Field Resolvers

Part 2 of the Production GraphQL series — how DGS data loaders batch database calls to eliminate the N+1 problem, when to use MappedBatchLoader vs BatchLoader, and pagination patterns for GraphQL APIs.

  • GraphQL
  • Netflix DGS
  • Spring Boot
  • Java
  • Performance
Read more arrow_forward
Schema-First GraphQL with Netflix DGS

Schema-First GraphQL with Netflix DGS

Part 1 of the Production GraphQL series — how Netflix DGS and Spring for GraphQL merged into one stack, schema-first development patterns, code generation, and the three-layer type system that keeps your API maintainable.

  • GraphQL
  • Netflix DGS
  • Spring Boot
  • Java
  • API Design
Read more arrow_forward
The Silent Metadata Gap: Why Your Axon 5 Events Have No User Attribution

The Silent Metadata Gap: Why Your Axon 5 Events Have No User Attribution

Command metadata doesn't automatically propagate to events in Axon Framework 5. Here's how CorrelationDataProvider fixes the silent data loss — and why it's so hard to catch.

  • Axon Framework
  • CQRS
  • Event Sourcing
  • Spring Boot
  • Java
Read more arrow_forward
Your MCP Server Works Locally. Then Kubernetes Kills the Session.

Your MCP Server Works Locally. Then Kubernetes Kills the Session.

How we debugged intermittent 'Session not found' errors in a Spring AI MCP server on GKE — and why switching to stateless transport is the right answer for Kubernetes deployments.

  • MCP
  • Kubernetes
  • Spring AI
  • GKE
  • Java
Read more arrow_forward
Replacing Flux Bootstrap with the Flux Operator: GitOps on Autopilot Mode

Replacing Flux Bootstrap with the Flux Operator: GitOps on Autopilot Mode

How we migrated from the traditional Flux bootstrap approach to the Flux Operator on GKE Autopilot, managed entirely with Terraform — and why a single FluxInstance CRD replaces 660KB of generated YAML.

  • Flux CD
  • GitOps
  • Kubernetes
  • Terraform
  • GKE
Read more arrow_forward
Propagating User Identity in Axon 5 Query Handlers

Propagating User Identity in Axon 5 Query Handlers

Why ReactiveSecurityContextHolder is always empty inside Axon query handlers, three approaches we considered, and the Axon MetaData solution that keeps query objects clean.

  • Axon Framework
  • CQRS
  • Spring WebFlux
  • Spring Security
  • Java
Read more arrow_forward
Migrating from Axon Framework 4 to 5: What We Learned

Migrating from Axon Framework 4 to 5: What We Learned

A hands-on account of migrating a CQRS/ES application from Axon Framework 4.12 to 5.0 — the API upheaval, replacing sagas with stateful event handlers, and the reactive payoff.

  • Axon Framework
  • CQRS
  • Event Sourcing
  • Spring Boot
  • Java
Read more arrow_forward
Why OpenTelemetry Beats Vendor-Locked APM Agents

Why OpenTelemetry Beats Vendor-Locked APM Agents

Vendor-locked APM agents create costly dependencies. Learn why OpenTelemetry is the better path — and how to auto-instrument your Kubernetes workloads with the OTel Operator's Instrumentation CRD.

  • OpenTelemetry
  • Observability
  • Kubernetes
  • Cloud-Native
Read more arrow_forward