# Muhammet Şafak — Yazılım Mühendisi, Sistem Mimarı ve Araştırmacı

> Yazılım mühendisi, sistem mimarı ve mühendislik araştırmacısı Muhammet Şafak. Dağıtık sistemler, yazılım mimarisi ve tekrarlanabilir ölçümler üzerine yazılar; 2014’ten bugüne bir geliştirme günlüğü.

- Rol: Yazılım Mühendisi · Sistem Mimarı · Mühendislik Araştırmacısı
- Konum: İstanbul, Türkiye
- Kaynak: https://muhammetsafak.com/tr/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
## Üretimdeki yazılım sistemlerini tasarlıyor, kuruyor ve inceliyorum.

**Yazılım Mühendisi · Sistem Mimarı · Mühendislik Araştırmacısı**

2008’den bu yana yazılım geliştiriyorum; bugün odağım yüksek trafikli dağıtık sistemlerin mimarisi, ölçeklenebilirliği ve güvenilirliği. Kararların ardındaki gerekçeyi, gerçek projelerden çıkardığım dersleri ve herkesin tekrarlayabileceği ölçümleri burada paylaşıyorum.

- Konum: İstanbul, Türkiye
- Deneyim: 2008’den beri (18+ yıl)
- Odak: Dağıtık Sistemler

## Hakkımda

2008’den bu yana yazılım geliştiriyorum. Bugün Bulutklinik’te Staff Engineer olarak yüksek trafikli dağıtık sistemlerin mimarisi, ölçeklenebilirliği ve güvenilirliği üzerinde çalışıyorum. İşim üç alana yayılıyor: üretimde çalışan sistemler kurmak, bu sistemlerin sınırlarını ve ödünleşimlerini tasarlamak, davranışlarını deney ve ölçümle incelemek. PHP, Go, Python ve JavaScript/TypeScript ile çalışıyorum; teknolojiyi dile değil probleme göre seçiyorum. Kalan zamanımda açık kaynak araçlar ve altyapı yazılımları geliştiriyorum.

Beni ilgilendiren, bir mühendislik kararının ardındaki gerekçe: bir tasarım neden çalışıyor, neye mal oluyor, nerede kırılıyor ve hangi koşullarda makul bir seçim olarak kalıyor. Araştırmalarımı yöntemi, ortamı, sonuçları ve sınırlarıyla yayımlıyorum; amaç evrensel bir kazanan ilan etmek değil, başkalarının inceleyip tekrarlayabileceği bulgular üretmek.

[Hakkımda sayfasına git](https://muhammetsafak.com/tr/hakkimda/)

## Keşfet

- **Blog** — https://muhammetsafak.com/tr/blog/ (Markdown: https://muhammetsafak.com/tr/blog.md)
- **Sor Bakalım** — https://muhammetsafak.com/tr/sor-bakalim/ (Markdown: https://muhammetsafak.com/tr/sor-bakalim.md)
- **Kitaplar** — https://muhammetsafak.com/tr/kitaplar/ (Markdown: https://muhammetsafak.com/tr/kitaplar.md)
- **Portfolyo** — https://muhammetsafak.com/tr/portfolyo/ (Markdown: https://muhammetsafak.com/tr/portfolyo.md)
- **Research** — https://muhammetsafak.com/tr/research/ (Markdown: https://muhammetsafak.com/tr/research.md)
- **Labs** — https://muhammetsafak.com/tr/labs/ (Markdown: https://muhammetsafak.com/tr/labs.md)
- **Uzmanlık** — https://muhammetsafak.com/tr/uzmanlik/ (Markdown: https://muhammetsafak.com/tr/uzmanlik.md)
- **Özgeçmiş** — https://muhammetsafak.com/tr/ozgecmis/ (Markdown: https://muhammetsafak.com/tr/ozgecmis.md)
- **İletişim** — https://muhammetsafak.com/tr/iletisim/ (Markdown: https://muhammetsafak.com/tr/iletisim.md)

## Öne Çıkan Projeler

Üzerinde çalıştığım ve sürdürdüğüm bazı ürün ve projeler.

- **[BabelQueue](https://muhammetsafak.com/tr/portfolyo/babelqueue/)** — BabelQueue, farklı dillerde yazılmış servislerin aynı kuyruğu serileştirme kilidine takılmadan paylaşmasını sağlayan, dilden bağımsız bir mesaj kuyruğu standardıdır. PHP'nin serialize()'ı gibi dile özgü formatlar yerine; her dilin doğal olarak okuyabildiği, schema_version 1'de dondurulmuş katı bir JSON zarfı tanımlar. Redis ve RabbitMQ üzerinde, sidecar ya da broker eklentisi olmadan, %2'nin altında ek yük hedefiyle çalışır.
- **[CommitBrief](https://muhammetsafak.com/tr/portfolyo/commitbrief/)** — CommitBrief, git diff'leri üzerinde LLM destekli yerel kod incelemesi yapan, sağlayıcıdan bağımsız bir Go CLI aracıdır. Staged/unstaged değişikliklerden tek bir commit'e ya da PR tarzı üç noktalı aralıklara kadar her kapsamı; terminalden çıkmadan, diff'i dışarı sızdırmadan ve özelleştirilebilir proje kurallarıyla denetler.
- **[Ragmux](https://muhammetsafak.com/tr/portfolyo/ragmux/)** — Ragmux, uygulamanız ile OpenAI, Anthropic, Gemini, DeepSeek ve Ollama gibi sağlayıcılar arasında duran, kendi sunucunuzda çalışan tek binary'lik bir AI gateway'idir. Tek bir OpenAI uyumlu API sunar, bir doküman havuzu bağlanmış projelerde her isteğe RAG bağlamını kendisi ekler ve sağlayıcı kimlik bilgisini uygulamadan uzakta, şifreli tutar. Kullanıcılar, bağlantılar, projeler, dokümanlar, vektörler ve metriklerin tamamı pgvector'lü tek bir PostgreSQL'de durur — Redis yok, ayrı bir vektör veritabanı yok.
- **[Contextator](https://muhammetsafak.com/tr/portfolyo/contextator/)** — Contextator, bir projenin dokümanını nerede duruyorsa oradan alıp — bağlı bir klasör, bir git deposu, yüklenmiş bir arşiv, bir Obsidian kasası ya da bir Notion çalışma alanı — tek bir MCP ucunun arkasında aranabilir kılan, kendi sunucunuzda çalışan çok kiracılı bir doküman sunucusudur. Her proje kendi URL'ini ve kendi doküman koleksiyonunu alır; embedding'ler varsayılan olarak makinenin CPU'sunda üretilir ve doküman üçüncü bir tarafa hiç gitmez.
- **[QueryProxy](https://muhammetsafak.com/tr/portfolyo/queryproxy/)** — QueryProxy, geliştiricilerin üretim veritabanına kimlik bilgisi almadan erişebilmesi için geliştirdiğim self-hosted bir sorgu onay portalıdır. Yazılan SQL çözümlenerek denetlenir, bir DBA onayından geçtikten sonra kuyrukta çalışır, sonuçlar diske yazılırken maskelenir ve her adım değiştirilemez bir denetim kaydına düşer.

## Son Yazılar

Yazılım, mimari ve ürün geliştirme üzerine son içeriklerim.

- [Yedek kalkmadı: bir kesintinin saat saat günlüğü](https://muhammetsafak.com/tr/blog/yedek-kalkmadi-bir-kesintinin-saat-saat-gunlugu/) — 8 Ekim sabahı tüm sistem dört dakikada düştü, Ankara'daki yedek kalkmadı. Kriz masasında neye öncelik verdik, geriye ne kaldı?
- [2026'da geliştirme ortamım: editör, terminal ve akış](https://muhammetsafak.com/tr/blog/2026da-gelistirme-ortamim/) — Yıllar içinde sadeleşen bir geliştirme ortamı: editör, terminal ve yapay zekâ araçları; hangi araçları neden tuttuğum ve çoğu yeniliği neden denemediğim.
- [Üçüncü MCP sunucusu makuldü, sonrakiler değildi](https://muhammetsafak.com/tr/blog/proje-basina-mcp-sunucusu-kurmayi-birakmak/) — Ajana projenin dokümanını vermek için MCP doğru cevaptı. Proje sayısı artınca sunucuların kendisi bakım gerektiren bir yüke dönüştü.

## Sık sorulanlar

Bana en sık sorulanlar: nasıl başladım, neyle yazıyorum ve neye göre karar veriyorum.

### Yazılım geliştirme macerasına nasıl başladın?

Bilgisayarla 2000 yılında, ailemin aldığı bir IBM ile tanıştım. Çok geçmeden fark ettim ki beni asıl mutlu eden şey bilgisayarı kullanmak değil, onunla bir şeyler üretmekti; o üretme ve oluşturma duygusu inanılmaz tatmin ediciydi. Yazılım geliştirme yolculuğum oradan başladı.

### Hangi programlama dillerini ve frameworkleri kullanıyorsun?

PHP, Go ve JavaScript dillerine hâkimim ve üçünü de aktif olarak kullanıyorum. Python'u ise dar bir alanda kullanıyorum: betik, veri dönüştürme ve otomasyon. Frameworklerden Laravel ve Symfony, Gin ve Fiber, Node.js tarafındakiler kullandığım araçlar arasında. Odağım dilde ya da frameworkte değil, çözülecek sorunda.

### Hangi programlama dilini ya da frameworkü kullanacağına nasıl karar veriyorsun?

Bunun tek bir cevabı yok, ama kararı veren birkaç ana parametre var: MVP için verilen süre, ekipteki diğer geliştiricilerin bilgi ve deneyimi, bir de ürünün kendine özgü ihtiyaçları. Ekipte Go bilen yoksa o ürün Go ile yazılmamalıdır. Aynı şekilde, görevi tek bir cURL ya da SOAP isteği atmaktan ibaret olan bir consumer/worker için PHP Laravel yazmam.

### Bu site nedir, niçin var?

Burası bildiğim ve deneyimlediğim şeyleri detaylıca paylaştığım kişisel bir internet mecrası. Reklam ya da başka bir kazanç kaygısı taşımadan deneyimlerimi rahatça aktarabileyim diye var.

### Yapay zekâyı kullanıyor musun?

2023'ten beri yapay zekâyı aktif olarak, bir itki kuvveti gibi kullanıyorum. Kod tabanı incelemek, kod yazmak gibi zaman alan angarya işlerin çoğunda Agentic AI araçları hızlandırıcı olarak iyi iş çıkarıyor.

### Kaç yıldır yazılım geliştiriyorsun?

2008 yılından beri yazılım geliştirici olarak geçimimi sağlıyorum; yani 18 yıldır bu işi profesyonel olarak yapıyorum.

### Hangi alanda yazılım geliştiriyorsun?

Uzmanlaştığım alan web yazılımları ve CLI araçları. Sistemlerin backend tarafını tasarlamaktan ve yazmaktan daha fazla keyif alıyorum.

### Geliştirici misin, mühendis mi, mimar mı?

Bu işe geliştirici olarak başladım. Yıllar içinde neredeyse tüm domainlerde aktif geliştirme yaptım; ürettiğim mühendislik çözümleriyle yazılımları daha iyi, daha güçlü ve dayanıklı hâle getirdim. Bugünse yüksek trafikli sistemlerin mimarisini hedeflerine uygun olarak belirliyor ve uyguluyorum. Üçü birbirinin alternatifi değil, üst üste binen katmanlar.

### Hangi domainlerde görev aldın?

HealthTech, FinTech ve EdTech domainlerinde lead/main geliştirici olarak görev aldım; karar alma ve uygulama süreçlerinin ikisinde de aktif rol üstlendim.
