<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>GoBackend.dev</title>
    <link>https://gobackend.dev</link>
    <description>Practical guides on Go, APIs, PostgreSQL, microservices, cloud, testing and performance. Learn Go by building production systems.</description>
    <language>en-us</language>
    <atom:link href="https://gobackend.dev/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Designing a Production-Ready Go Backend: Architecture, Reliability and Operations</title>
      <link>https://gobackend.dev/architecture/production-ready-go-backend</link>
      <guid isPermaLink="true">https://gobackend.dev/architecture/production-ready-go-backend</guid>
      <description>How the pieces of a production Go backend fit together: application architecture, reliability patterns, data, messaging, security, observability, and deployment — plus when to choose a monolith, modular monolith, or microservices.</description>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <category>architecture</category>
    </item>
    <item>
      <title>Scaling PostgreSQL for Go Applications: Read Replicas, Connection Pools and Query Performance</title>
      <link>https://gobackend.dev/postgresql/scaling-postgresql-go-applications</link>
      <guid isPermaLink="true">https://gobackend.dev/postgresql/scaling-postgresql-go-applications</guid>
      <description>A practical order of operations for scaling PostgreSQL under a growing Go service: query optimization first, then pooling, then read replicas — and why the order matters.</description>
      <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
      <category>postgresql</category>
    </item>
    <item>
      <title>Advanced Go Concurrency: Worker Pools, Backpressure and Bounded Concurrency</title>
      <link>https://gobackend.dev/go/advanced-go-concurrency</link>
      <guid isPermaLink="true">https://gobackend.dev/go/advanced-go-concurrency</guid>
      <description>Why unbounded goroutines don&apos;t scale: semaphore-based bounded concurrency, backpressure, errgroup, goroutine leaks, and a real benchmark comparing the two.</description>
      <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
      <category>go</category>
    </item>
    <item>
      <title>Database Transactions in Go: Isolation Levels, Locks and Real-World Failures</title>
      <link>https://gobackend.dev/postgresql/database-transactions-go</link>
      <guid isPermaLink="true">https://gobackend.dev/postgresql/database-transactions-go</guid>
      <description>PostgreSQL transaction isolation levels in Go, explained through a real race condition: lost updates, SELECT FOR UPDATE, and why app-level locking isn&apos;t enough.</description>
      <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
      <category>postgresql</category>
    </item>
    <item>
      <title>Kubernetes for Go Developers: Deploying a Production-Ready Go API</title>
      <link>https://gobackend.dev/cloud/kubernetes-go-api</link>
      <guid isPermaLink="true">https://gobackend.dev/cloud/kubernetes-go-api</guid>
      <description>What actually happens when Kubernetes sends your Go process SIGTERM, and the Deployment, Service, probe, and resource config a production Go API needs.</description>
      <pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate>
      <category>cloud</category>
    </item>
    <item>
      <title>Securing Go REST APIs: Authentication, Authorization and Common Attack Surfaces</title>
      <link>https://gobackend.dev/security/securing-go-rest-api</link>
      <guid isPermaLink="true">https://gobackend.dev/security/securing-go-rest-api</guid>
      <description>Practical Go API security: authentication vs authorization, JWT and refresh tokens, object-level authorization, SQL injection, CORS, and a production checklist.</description>
      <pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate>
      <category>security</category>
    </item>
    <item>
      <title>Circuit Breakers in Go: Preventing Cascading Failures</title>
      <link>https://gobackend.dev/microservices/circuit-breaker-go</link>
      <guid isPermaLink="true">https://gobackend.dev/microservices/circuit-breaker-go</guid>
      <description>Implementing a circuit breaker in Go to stop cascading failures — closed/open/half-open states, and why combining it with retries incorrectly makes things worse.</description>
      <pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate>
      <category>microservices</category>
    </item>
    <item>
      <title>Idempotent Consumers in Go: Handling Duplicate Messages Safely</title>
      <link>https://gobackend.dev/distributed-systems/idempotent-consumers-go</link>
      <guid isPermaLink="true">https://gobackend.dev/distributed-systems/idempotent-consumers-go</guid>
      <description>Why message consumers must assume duplicate delivery, and how to implement deduplication in Go and PostgreSQL without a race condition.</description>
      <pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate>
      <category>distributed-systems</category>
    </item>
    <item>
      <title>Event-Driven Architecture with Go: Events, Consumers and Failure Handling</title>
      <link>https://gobackend.dev/microservices/event-driven-architecture-go</link>
      <guid isPermaLink="true">https://gobackend.dev/microservices/event-driven-architecture-go</guid>
      <description>Designing event-driven Go services: commands vs events, consumer groups, ordering, and why every consumer must handle duplicate delivery.</description>
      <pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate>
      <category>microservices</category>
    </item>
    <item>
      <title>Distributed Locks in Go: Redis, PostgreSQL and the Problems You Need to Understand</title>
      <link>https://gobackend.dev/distributed-systems/distributed-locks-go</link>
      <guid isPermaLink="true">https://gobackend.dev/distributed-systems/distributed-locks-go</guid>
      <description>Implementing distributed locks in Go with Redis and PostgreSQL advisory locks — lock ownership, TTLs, fencing tokens, and why a naive SET-based lock is unsafe.</description>
      <pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate>
      <category>distributed-systems</category>
    </item>
    <item>
      <title>Load Testing a Go API: Finding the Real Bottleneck</title>
      <link>https://gobackend.dev/performance/load-testing-go-api</link>
      <guid isPermaLink="true">https://gobackend.dev/performance/load-testing-go-api</guid>
      <description>Load testing a Go API with k6: throughput, p50/p95/p99 latency, and a systematic way to find whether the bottleneck is the app, the database, or the network.</description>
      <pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate>
      <category>performance</category>
    </item>
    <item>
      <title>Observability for Go Microservices: Logs, Metrics and Traces</title>
      <link>https://gobackend.dev/microservices/go-microservices-observability</link>
      <guid isPermaLink="true">https://gobackend.dev/microservices/go-microservices-observability</guid>
      <description>The three pillars of observability for Go microservices — structured logs, Prometheus metrics, and distributed traces — and how they differ from monitoring.</description>
      <pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate>
      <category>microservices</category>
    </item>
    <item>
      <title>Building Background Workers in Go with Goroutines and Channels</title>
      <link>https://gobackend.dev/go/go-background-workers</link>
      <guid isPermaLink="true">https://gobackend.dev/go/go-background-workers</guid>
      <description>A production-oriented worker pool in Go: bounded concurrency, graceful shutdown, panic recovery, and why &apos;go process(job) for every job&apos; is dangerous.</description>
      <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
      <category>go</category>
    </item>
    <item>
      <title>The Outbox Pattern with Go and PostgreSQL</title>
      <link>https://gobackend.dev/microservices/outbox-pattern-go-postgresql</link>
      <guid isPermaLink="true">https://gobackend.dev/microservices/outbox-pattern-go-postgresql</guid>
      <description>Solving the dual-write problem between PostgreSQL and a message broker with the transactional outbox pattern, implemented in Go.</description>
      <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
      <category>microservices</category>
    </item>
    <item>
      <title>Idempotency in APIs: Preventing Duplicate Payments and Requests</title>
      <link>https://gobackend.dev/backend/api-idempotency-go</link>
      <guid isPermaLink="true">https://gobackend.dev/backend/api-idempotency-go</guid>
      <description>Implementing idempotency keys in Go and PostgreSQL to prevent duplicate payments and orders when clients retry after a timeout.</description>
      <pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
    </item>
    <item>
      <title>Retries, Timeouts and Backoff in Go: Building Resilient Services</title>
      <link>https://gobackend.dev/microservices/go-retries-timeouts-backoff</link>
      <guid isPermaLink="true">https://gobackend.dev/microservices/go-retries-timeouts-backoff</guid>
      <description>A practical HTTP client with timeouts, exponential backoff, and jitter — and why retries should never be applied blindly to every request.</description>
      <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
      <category>microservices</category>
    </item>
    <item>
      <title>Caching in Go: Redis, Cache-Aside and Cache Invalidation</title>
      <link>https://gobackend.dev/backend/caching-go-redis</link>
      <guid isPermaLink="true">https://gobackend.dev/backend/caching-go-redis</guid>
      <description>A practical cache-aside implementation in Go with Redis: TTLs, cache stampedes, invalidation strategies, and when caching is the wrong call.</description>
      <pubDate>Mon, 13 Apr 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
    </item>
    <item>
      <title>API Rate Limiting in Go: Token Bucket, Middleware and Distributed Limits</title>
      <link>https://gobackend.dev/backend/api-rate-limiting-go</link>
      <guid isPermaLink="true">https://gobackend.dev/backend/api-rate-limiting-go</guid>
      <description>Rate limiting a Go API in practice: token bucket vs sliding window, an in-memory middleware implementation, and why it breaks across multiple replicas.</description>
      <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
    </item>
    <item>
      <title>PostgreSQL Connection Pooling in Go: pgxpool Explained</title>
      <link>https://gobackend.dev/postgresql/postgresql-connection-pooling-go</link>
      <guid isPermaLink="true">https://gobackend.dev/postgresql/postgresql-connection-pooling-go</guid>
      <description>How pgxpool connection pooling actually works in Go: MaxConns, MinConns, connection lifetimes, pool exhaustion, and why raising MaxConns isn&apos;t always the fix.</description>
      <pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate>
      <category>postgresql</category>
    </item>
    <item>
      <title>Building a Go API with Clean Architecture Without Overengineering</title>
      <link>https://gobackend.dev/backend/go-clean-architecture</link>
      <guid isPermaLink="true">https://gobackend.dev/backend/go-clean-architecture</guid>
      <description>A practical take on Clean Architecture in Go: handler/service/repository separation, dependency direction, and knowing when to stop adding abstractions.</description>
      <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
    </item>
    <item>
      <title>Testing Go Backend Applications: Unit, Integration and HTTP Tests</title>
      <link>https://gobackend.dev/testing/testing-go-backend</link>
      <guid isPermaLink="true">https://gobackend.dev/testing/testing-go-backend</guid>
      <description>A practical testing strategy for Go backend services: table-driven unit tests, httptest for handlers, mocks for services, and integration tests against a real PostgreSQL database.</description>
      <pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate>
      <category>testing</category>
    </item>
    <item>
      <title>Profiling Go Applications with pprof</title>
      <link>https://gobackend.dev/performance/pprof-go</link>
      <guid isPermaLink="true">https://gobackend.dev/performance/pprof-go</guid>
      <description>Profile CPU, memory, and goroutines in a running Go HTTP service with net/http/pprof, and learn to read the profiles to find real performance problems.</description>
      <pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate>
      <category>performance</category>
    </item>
    <item>
      <title>REST vs gRPC for Go Microservices</title>
      <link>https://gobackend.dev/microservices/rest-vs-grpc-go</link>
      <guid isPermaLink="true">https://gobackend.dev/microservices/rest-vs-grpc-go</guid>
      <description>A practical comparison of REST/JSON and gRPC for Go microservices, with a decision matrix covering performance, streaming, debugging, and browser compatibility.</description>
      <pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate>
      <category>microservices</category>
    </item>
    <item>
      <title>Go Microservices: A Practical Project Structure</title>
      <link>https://gobackend.dev/microservices/go-microservice-project-structure</link>
      <guid isPermaLink="true">https://gobackend.dev/microservices/go-microservice-project-structure</guid>
      <description>A practical, minimal project structure for Go microservices: service boundaries, internal packages, configuration, migrations, and Docker — without over-engineering.</description>
      <pubDate>Mon, 23 Feb 2026 00:00:00 GMT</pubDate>
      <category>microservices</category>
    </item>
    <item>
      <title>EXPLAIN ANALYZE in PostgreSQL: How to Find Slow Queries</title>
      <link>https://gobackend.dev/postgresql/postgresql-explain-analyze</link>
      <guid isPermaLink="true">https://gobackend.dev/postgresql/postgresql-explain-analyze</guid>
      <description>How to read PostgreSQL EXPLAIN ANALYZE output to diagnose slow queries: sequential vs index vs bitmap scans, join strategies, row estimates, and buffers.</description>
      <pubDate>Mon, 16 Feb 2026 00:00:00 GMT</pubDate>
      <category>postgresql</category>
    </item>
    <item>
      <title>PostgreSQL Indexes: A Practical Guide for Backend Engineers</title>
      <link>https://gobackend.dev/postgresql/postgresql-indexes</link>
      <guid isPermaLink="true">https://gobackend.dev/postgresql/postgresql-indexes</guid>
      <description>A practical guide to PostgreSQL indexing for backend engineers: B-tree, GIN, composite and partial indexes, selectivity, overhead, and when indexes hurt performance.</description>
      <pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate>
      <category>postgresql</category>
    </item>
    <item>
      <title>Building a Production-Ready REST API with Go</title>
      <link>https://gobackend.dev/backend/production-go-rest-api</link>
      <guid isPermaLink="true">https://gobackend.dev/backend/production-go-rest-api</guid>
      <description>A clean, minimal-abstraction project structure for production Go REST APIs: routing, configuration, handlers, services, repositories, validation, error handling, logging, middleware, and health checks.</description>
      <pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate>
      <category>backend</category>
    </item>
    <item>
      <title>Graceful Shutdown in Go HTTP Servers</title>
      <link>https://gobackend.dev/go/graceful-shutdown-go</link>
      <guid isPermaLink="true">https://gobackend.dev/go/graceful-shutdown-go</guid>
      <description>Implement graceful shutdown for Go HTTP servers: handling SIGTERM and SIGINT, draining active requests, shutdown timeouts, and Kubernetes readiness.</description>
      <pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate>
      <category>go</category>
    </item>
    <item>
      <title>Go Interfaces: Design Small, Testable Components</title>
      <link>https://gobackend.dev/go/interfaces-in-go</link>
      <guid isPermaLink="true">https://gobackend.dev/go/interfaces-in-go</guid>
      <description>Design small, focused Go interfaces for dependency injection, mocking, and testable backend code, with realistic service and repository examples.</description>
      <pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate>
      <category>go</category>
    </item>
    <item>
      <title>Context in Go: Cancellation, Deadlines and Request Propagation</title>
      <link>https://gobackend.dev/go/context-in-go</link>
      <guid isPermaLink="true">https://gobackend.dev/go/context-in-go</guid>
      <description>Understand Go&apos;s context.Context: cancellation, deadlines, timeouts and request-scoped propagation, with practical HTTP and database examples.</description>
      <pubDate>Mon, 12 Jan 2026 00:00:00 GMT</pubDate>
      <category>go</category>
    </item>
  </channel>
</rss>