Skip to content
Mohammed Kharbotli

~/blog

Blog

Notes on backend engineering, distributed systems, databases, and running software in production.

9 posts · rss

Pinned

  • Welcome

    A personal space where I share my work and write about PHP, Symfony, backend architecture, reliability, security, and practical software engineering.

2026

  • Before Adding PHP-FPM Workers, Find Out What’s Actually Slow

    Learn how to diagnose and fix PHP-FPM performance bottlenecks under real production traffic instead of blindly scaling replicas. This guide covers checking FPM status, enabling slow logs, inspecting container resources, and sizing workers based on evidence.

    #php #docker #containers #performance #production #devops

  • When Symfony Messenger Is the Wrong Tool

    Symfony Messenger is powerful, but not every slow operation needs a queue. I explore six situations where asynchronous processing creates more problems than it solves, covering transactions, retries, idempotency, and simpler alternatives with practical PHP examples.

    #php #symfony #software-architecture #best-practices #backend-development

  • Why Moving Code into a Service Doesn’t Improve the Design by Itself

    Moving code into a service can shrink a controller without fixing the design. This article looks at responsibilities, dependencies, transaction boundaries, side effects, and tests that show whether a refactor created a meaningful boundary.

    #php #symfony #software-architecture #refactoring #doctrine #clean-code

  • Why I Shift Security Decisions Left, Not Just Security Checks

    Shifting security left means more than running scanners earlier. It means making authorization, data-flow, and execution decisions early enough to shape the design before they become expensive to change.

    #security #shift-left #secure-design #threat-modeling #authorization #software-architecture #backend-development #devsecops

  • Why Adding Redis Doesn’t Automatically Fix Performance

    Redis can improve PHP application performance, but only when it addresses a measured bottleneck. This article looks at inefficient read paths, cache hit costs, stampedes, fallback behavior, and how to decide whether caching will actually improve the system.

    #php #redis #caching #performance #symfony #doctrine #scalability