İçeriğe geç
Muhammet Şafak
en

Uzmanlık

Go geliştiricisi — performans ve dayanıklılığın dili

Go, başka bir dilin alternatifi değil — bir problem sınıfının cevabı. Cross-platform derlenen, performanslı, hafif ve kararlı bir araç ya da servis geliştirmem gerektiğinde ilk başvuru noktam.

Başlangıç
2018 Başlangıç
yıl
8 yıl
yazı
19 yazı
proje
4 proje

Go ekosisteminde ben

Tam hikâye: Hakkımda

Go benim için başka bir dilin alternatifi değil, belirli bir problem sınıfının cevabı. Karşı tarafta kurulum istemeyen, uzun süre ayakta kalan ve kaynağı ucuz kullanan bir servis ya da araç gerektiğinde ilk başvuru noktam burası.

Dili probleme göre seçiyorum, sevdiğim için değil. Sistem tasarımının kendisini maliyetleriyle birlikte sade.dev tarafında yazıyorum.

Go ile ne geliştiriyorum

Ortak noktaları tek işi olan, uzun süre ayakta kalan ve kaynağı ucuz kullanan süreçler olmaları.

  • Mikroservisler

    Tek sorumluluğu olan, kendi başına ölçeklenen ve ayrı dağıtılan servisler.

  • Consumer ve worker'lar

    Kuyruktaki işi günlerce kesintisiz tüketen, arka planda çalışan süreçler.

  • HTTP API'lar

    Web ve mobili aynı anda besleyen servisler; önce standart kütüphane, gerektiğinde Gin ya da Fiber.

  • Komut satırı araçları

    Tek dosya olarak dağıtılan, karşı tarafta kurulum gerektirmeyen programlar.

Neden Go

01 Tek dosya
go build tek bir çalıştırılabilir üretiyor. Karşı tarafta ayrıca kurulması gereken bir yorumlayıcı ya da bağımlılık dizini kalmıyor — ne sunucuda, ne konteyner imajında, ne de bir başkasının makinesinde.
02 Cross-platform
Aynı kaynak Linux, macOS ve Windows için tek komutla derleniyor. Hedef değiştiğinde kod değişmiyor.
03 Eşzamanlılık dilin içinde
goroutine ve channel modeli, paralel çalışan bir consumer'ı üçüncü parti bir kütüphaneye devretmeden yazmayı mümkün kılıyor.
04 Öngörülebilirlik
Sade sözdizimi ve açık hata yönetimi, kodu altı ay sonra okuyan kişinin işini kolaylaştırıyor — ki bu kişi çoğu zaman işi devralan ekip oluyor.

Standart kütüphaneyle çözülen işe paket almıyorum

Go tarafındaki işlerin ömrü çoğu zaman yazıldıkları günden uzun oluyor ve bunu mümkün kılan şey yalnızca dil değil, kısa tutulan bağımlılık listesi. Her bağımlılık, ileride başkasının bakmak zorunda kalacağı bir yüzey demek; davranışı gizleyen bir yapı da aynı sınıfta bir borç.

Teslim işin diğer yarısı

Bir servisi ya da aracı yazmak yarısı; ikinci yarısı olmadan yazılan şey yalnız benim makinemde çalışır. Go tarafındaki işlerde bu ikinci yarıyı da kuruyorum.

  • Çapraz derleme

    Aynı kaynaktan üç hedef için çıktı — Linux, macOS, Windows.

  • Sürüm gömme

    Sürüm bilgisi derleme anında ldflags ile ikilinin içine giriyor.

  • İmzalı çıktı

    Dağıtılan ikili imzalanıyor; karşı taraf ne indirdiğini doğrulayabiliyor.

  • Kurulum yolu

    Kurulum bir dosya indirme adımı değil, paket yöneticisine düşen tek komut.

Aracın karşı tarafı

Aracı kullanan kişi çoğu zaman onu yazan kişi değil; yüzeyi ona göre kuruyorum.

  • Okunabilir komut ağacı

    Komutun ne yaptığı, yardım metnine bakmadan adından anlaşılmalı.

  • Tahmin edilebilir bayraklar

    Aynı bayrak her komutta aynı anlama geliyor; sürpriz davranış bir hata sınıfıdır.

  • Ne yapılacağını söyleyen hata

    Hata mesajı neyin yanlış olduğunu değil, kullanıcının bundan sonra ne yapması gerektiğini söylüyor. Aynı ölçü servis tarafında da geçerli.

Her işin dili Go değil

Ağır iş kuralları, olgun bir yönetim paneli ya da geniş bir paket ekosistemi isteyen bir ürün için PHP ve Laravel hâlâ daha hızlı yol aldırıyor. Dili probleme göre seçiyorum, sevdiğim için değil — polyglot çalışmanın asıl maliyeti yeni dil öğrenmek değil, bağlam değiştirmek.

Bu alandaki son yazılar

Tümünü gör

Bu alanda geliştirdiklerim

Tüm Labs kayıtları

Diff'i makineden çıkarmadan bir modele denetleten, sağlayıcıdan bağımsız Go CLI; CommitBrief ürününe dönüştü.

Şu an ne yapıyor

Diff hiç makineden çıkmadan yerel kod incelemesi yapıyor; `Provider` arayüzü sayesinde Anthropic, OpenAI, Gemini ve Ollama aynı sözleşmeyle takılıyor. İmzalı binary'ler yayında — diff'ini bir bulut sağlayıcısına vermek istemeyen herkes kurabilir.

Açık kaynak Go Cobra go-git +4 daha
Ocak 2026 — Nisan 2026

Bu alanda üretime çıkan işler

Tüm projeler
CommitBrief CLI çıktısı — terminalde renkli severity kartları halinde listelenmiş kod inceleme bulguları

CommitBrief

Devam ediyor

Founder & Developer

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.

Go Cobra go-git +8 daha
Nisan 2026 — Devam ediyor

Bu alanda sorulanlar

Bu eksende 9 soru yanıtlandı.

Tüm sorular

Birlikte kullandığım teknolojiler

  • Cobra

    Komut ağacı ve flag yüzeyi.

  • go-git

    Commit tabanlı işlemler; çalışma ağacı gerektiğinde git binary'sine düşüyorum.

  • Goreleaser

    Çapraz derleme, imzalı binary ve Homebrew/Scoop dağıtımı.

  • Gin

    HTTP servisi standart kütüphaneyi aşınca ilk baktığım router.

  • Fiber

    Aynı işin Express alışkanlığından gelenlere tanıdık gelen alternatifi.

Sık sorulanlar

7 soru

  • Go'yu kaç yıldır kullanıyorsun?

    2018'den bu yana, 8 yıldır. Bu sürenin tamamı PHP'nin yanında geçti: Go bende bir dilin yerini almadı, belirli bir problem sınıfının cevabı olarak duruyor.

  • Go'yu neden öğrendin?

    Polyglot olmak bir hedef değildi; belirli bir problem sınıfı için doğru cevabın elimde olmamasıydı. Go statically typed, derleniyor, standart kütüphanesi geniş ve sözdizimi kasıtlı olarak sade. PHP'yi onunla değiştirmeyi hiç düşünmedim — derinliğim orada kaldı, Go genişliği temsil etti.

  • Go ile ne geliştiriyorsun?

    Mikroservisler, kuyruktan iş tüketen consumer ve worker'lar, HTTP API'lar ve komut satırı araçları. Ortak noktaları tek işi olan, uzun süre ayakta kalan ve kaynağı ucuz kullanan süreçler olmaları. Bu sitede Go etiketli 19 yazı var.

  • Web servisi de yazıyor musun, yoksa yalnız CLI mı?

    İkisini de. HTTP tarafında önce standart kütüphaneyle başlıyorum; `net/http` bir API'yi üretime çıkarmaya çoğu zaman yetiyor. Middleware zinciri, rota gruplama ya da hazır bağlama gerektiğinde Gin veya Fiber giriyor.

  • Teslim tarafında ne yapıyorsun?

    İşin yarısı orada. Çapraz derleme, sürüm bilgisinin ldflags ile ikiliye gömülmesi, imzalanmış çıktı ve kurulum yolu — bunlar olmadan yazılan şey yalnız benim makinemde çalışır.

  • Go ile PHP arasında nasıl geçiş yapıyorsun?

    Bedeli var ve onu yazdım: polyglot bir kod tabanını sürdürmenin asıl maliyeti dil öğrenmek değil, bağlam değiştirmek. İki dilin aynı anda açık olduğu günlerde hata oranım yükseliyor.

  • Kaç projede Go kullandın?

    Bu sitede kayıtlı projelerin 4 tanesinde Go var: kimisinde baştan sona, kimisinde servis ya da SDK tarafında.

Birlikte çalışalım

Bu ekosistemde bir işiniz varsa, ne yaptığınızı anlatın; nasıl kurulacağını konuşalım.

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi