Ekim 18 2026

AI Ajanlarında ‘Judgment-First’ Yaklaşımı: Otomasyonu Denetleyen İnsan Karar Mekanizması

Son bir yıldır teknoloji dünyasında herkes aynı hayali satıyor: Bir ai agents ordusu kuracaksınız, siz kahvenizi yudumlarken onlar kod yazacak, testleri geçecek ve prodüksiyona deploy edecek. Kulağa harika geliyor değil mi? Ancak işin mutfağına girdiğinizde gerçekler biraz can yakıyor. Test sunucusunu yanlışlıkla silen veya sonsuz döngüye girip kredi kartı limitinizi eriten bir yapay zekayla karşılaştığınızda, otonomluğun aslında ne kadar tekinsiz bir lüks olduğunu anlıyorsunuz. İşte tam bu kırılma noktasında karşımıza yeni bir paradigma çıkıyor: Judgment-First yaklaşımı.

Bu makalede, kod yazımı ve devops süreçlerinde otonom ajanları başıboş bırakmak yerine, insan muhakemesini (yani judgment mekanizmasını) merkeze alan dengeli bir ai workflow nasıl kurulur, birlikte inceliyoruz.

“Bırakın Yapsın” Yanılgısı ve Prompt Engineering Sınırları

Bir süredir sadece iyi bir prompt engineering yaparak her sorunu çözebileceğimiz söylendi. “Sen kıdemli bir yazılımcısın, hata yapma” yazdığınızda modelin gerçekten kusursuz çalışacağına inandık. Ancak Large Language Models (LLM) olasılıksal makinelerdir; deterministik değillerdir. Yani aynı prompt, dokuz kez doğru çalışan bir kodu onuncu denemede çökertebilir.

Yapay zekanın “karar alma” (judgment) yetisi yoktur; sadece bir sonraki en olası kelimeyi tahmin etme yeteneği vardır. Kodun çalışması ile o kodun şirket kültürüne, güvenlik standartlarına ve iş mantığına uyması bambaşka şeylerdir. Bu yüzden kontrolsüz otomasyon yerine, ajanın sadece “öneri getirdiği”, insanın ise “onayladığı” bir mimari kurmak zorundayız.

[Görsel: Bir terminal ekranında sol tarafta otonom ajanın önerdiği Git diff çıktısı, sağ tarafta ise geliştiricinin onayını bekleyen interaktif CLI onay kutusu]

Judgment-First Mimarisi Nasıl Çalışır?

Geleneksel bir ai workflow döngüsünde ajan görevi alır, planlar, adımları yürütür ve bitirir. Judgment-First modelinde ise bu süreç kritik kontrol noktalarıyla (checkpoint) bölünür:

  • Keşif ve Taslak: Ajan bağlamı toplar, problemi analiz eder ve çözüm için bir plan sunar. Henüz hiçbir kod veya ayar değişmez.
  • İnsan Değerlendirmesi: Geliştirici ajanın planını inceler. Yanlış varsayımlar burada elenir.
  • Sınırlı İcra: Ajan sadece onaylanan adımı, izole bir ortamda (sandbox) çalıştırır.
  • Doğrulama ve Kabul: Nihai diff veya sistem değişikliği insan tarafından tekrar kontrol edilip ana dala birleştirilir.

Özellikle devops süreçlerinde bu yaklaşım hayat kurtarır. Bir ajana Terraform dosyalarını doğrudan uygulama yetkisi vermek yerine, plan çıktısını alıp Slack üzerinden onayınıza sunmasını sağlamak tipik bir “judgment” katmanıdır.

# Örnek: Ajanın doğrudan çalıştırması yerine plan çıktısı üretmesi
terraform plan -out=tfplan.binary
# Ajan bu noktada durur ve insan operatöre diff özetini iletir:
# "3 kaynak eklenecek, 1 veritabanı SİLİNECEK. Onaylıyor musunuz? (e/h)"

Gerçek Dünya Testi: LangGraph ve CrewAI ile Doğrulama

Geçtiğimiz haftalarda kendi projelerimden birinde LangGraph kullanarak basit bir hata ayıklama ajanı kurdum. Sisteme iki farklı yaklaşım uyguladım:

İlk senaryoda ajan tam yetkiliydi. Kod tabanındaki hatayı buldu, bir bağımlılığı güncelledi ve testleri çalıştırmadan doğrudan repoya commit attı. Sonuç? Paket uyumsuzluğu yüzünden build patladı. İkinci senaryoda ise araya bir insan onay fonksiyonu (human-in-the-loop) ekledim. Ajan güncelleme önerdiğinde terminal bana sordu. Bağımlılığın ana sürüm atladığını fark edip işlemi reddettim ve ajana “minor sürümü sabitle” direktifini verdim. Sorunsuz çözüldü.

[Görsel: LangGraph akış şemasında ‘Agent Execution’ ve ‘Tool Call’ arasına yerleştirilmiş kırmızı renkli ‘Human Approval Gate’ diyagramı]

Tam Otonom vs. Judgment-First Yaklaşımı

İki yaklaşım arasındaki farkı netleştirmek için artı ve eksilere bir göz atalım:

Kriter Tam Otonom Ajanlar Judgment-First Ajanlar
Hız Çok yüksek (aralıksız çalışır) Orta (insan onayına bağlıdır)
Hata Maliyeti Yüksek (prodüksiyon riskleri taşır) Düşük (hatalar kapıda yakalanır)
Maliyet / Token Tüketimi Sonsuz döngü riski yüksektir Denetimli ve öngörülebilirdir
Geliştirici Güveni Düşük (paranoya yaratır) Yüksek (kontrol geliştiricidedir)

Araçlar, Fiyatlar ve Ücretsiz Alternatifler

Bu doğrulama katmanını sıfırdan yazmak zorunda değilsiniz. Ekosistemde hem açık kaynaklı hem de ücretli birçok seçenek mevcut:

  • LangGraph (LangChain): Python ve JS kütüphanesi. Tamamen açık kaynak ve ücretsizdir (self-hosted). Human-in-the-loop (kesme noktaları) yeteneği şu an sektör standardı düzeyinde.
  • CrewAI: Kolay kurulur, ajanlar arası görev dağılımı yapar. Temel kütüphane ücretsiz, kurumsal Enterprise sürümü kullanıcı başına aylık 25 dolardan başlıyor.
  • n8n: Eğer kod yazmadan bir ai workflow kurmak istiyorsanız ideal. Kendi sunucunuzda çalıştırmak (Community Edition) ücretsiz; bulut versiyonu ise aylık 20 euro civarından başlıyor. Araya onay mailleri veya webhook eklemek çocuk oyuncağı.
  • GitHub Actions Environments: Kod süreçlerinizde ekstra maliyet ödemeden “Required Reviewers” özelliğini kullanarak yapay zekanın PR’larını insan onayına bağlayabilirsiniz (Genel repolarda ücretsiz).

Sonuç: Direksiyonu Tamamen Bırakmayın

Ajanların yetenekleri her ay katlanarak artıyor, bunda şüphe yok. Ancak en sofistike LLM bile sisteminizin iş hedeflerini, teknik borçlarını ve kullanıcı reflekslerini sizin kadar anlayamaz.

Yapay zekayı harika bir stajyer gibi düşünün: Hızlı araştırır, ilk taslağı yıldırım gibi çıkarır, rutin angaryayı sırtlar. Ancak kontratı imzalamadan veya prodüksiyona çıkmadan önce evrakın üzerinden bir çift tecrübeli gözün geçmesi şarttır. Judgment-First yaklaşımı, sizi hem yapay zeka trenini kaçırmaktan hem de o trenin altında kalmaktan kurtaracak en rasyonel formüldür.

Category: Genel | LEAVE A COMMENT
Ekim 18 2026

Masa Başı Çalışanlar İçin Active Recovery: Eklemleri Yenileyen Günlük Rutin

Günün sekiz saatini bir sandalyeye kilitli geçirip mesai bitiminde koltuğa yığılmak, vücudumuza yaptığımız en sinsi haksızlıklardan biri. Kendimizi yorgun hissettiğimizde ilk refleksimiz “hiç kıpırdamadan dinlenmek” oluyor; oysa modern masa başı yorgunluğunun ilacı pasif bir hareketsizlik değil. Bedenimizin sertleşen dokularını gevşetmek ve office-health standardımızı yukarı çekmek için ihtiyacımız olan asıl yöntem: active-recovery.

Peki ama tüm gün zihinsel olarak tükenmişken neden hâlâ hareket etmemiz gerekiyor? Çünkü biyolojimiz statik kalmak üzerine değil, hareket ettikçe kendini onarmak üzerine kurulu.

Neden Pasif Dinlenme Yetmiyor? İşin Biyolojisi

Uzun süre oturduğumuzda olan şey basit: Kan dolaşımı yavaşlar, kalça fleksörleri kısalır ve omurga diskleri üzerindeki basınç katlanır. Eklemlerimizin içinde, onları adeta bir makine yağı gibi besleyen ve sürtünmeyi önleyen sinovyal sıvı bulunur. Sorun şu ki, kıkırdak dokunun doğrudan bir kan damarı ağı yoktur; bu sıvının eklem içine pompalanabilmesi için o eklemin hareket etmesi, yani bükülüp açılması şarttır.

Araştırmalar gösteriyor ki, düşük yoğunluklu ritmik hareketler kan dolaşımını hızlandırarak kaslarda biriken laktat ve inflamatuar atıkların çok daha hızlı temizlenmesini sağlıyor. Yani mesai sonrası yapılacak 10 dakikalık bilinçli bir hareket seansı, koltukta iki saat uzanmaktan katbekat daha hızlı toparlanma sağlıyor.

Ergonomics Önemli, Ama Mobility Kurtarıcıdır

İyi bir çalışma ortamı için doğru ergonomics ayarlarına yatırım yapmak harika bir başlangıçtır: Monitör göz hizasında, ayaklar yere basıyor, bel destekli… Ancak en pahalı ergonomik sandalye bile sizi sabit kalmanın fizyolojik bedelinden kurtaramaz. Statik duruş, ne kadar “doğru” olursa olsun, bir süre sonra kas spazmlarına davetiye çıkarır.

İşte burada devreye mobility (eklem hareket açıklığı) çalışmaları giriyor. Esneklik sadece bir kası uzatmakken, mobilite o eklemi kontrol ederek tüm hareket açısında aktif kullanabilmektir.

Kronik bel, boyun veya eklem fıtığı gibi teşhis edilmiş bir rahatsızlığınız varsa, aşağıdaki hareketleri uygulamadan önce mutlaka doktorunuza veya fizyoterapistinize danışın. Hareket sırasında keskin bir batma veya uyuşma hissederseniz egzersizi derhal bırakın.

Eklemleri Yenileyen 10 Dakikalık Günlük Rutin

Bu protokolü iş bitiminde ya da gün ortasında uzun bir molada uygulayabilirsiniz. Terletmez, özel bir ekipman gerektirmez; tek ihtiyacınız biraz zemin alanı.

1. Cat-Cow (Omurga Akışı) — 10 Tekrar

Dört ayak pozisyonuna geçin. Nefes alırken karnınızı yere doğru yaklaştırıp başınızı ve göğsünüzü yukarı kaldırın (Cow). Nefes verirken omurganızı tavana doğru kubbe yapın, çenenizi göğsünüze yaklaştırın ve kürek kemiklerinizi birbirinden uzaklaştırın (Cat). Bu hareket, saatlerce hareketsiz kalan omurga disklerini yeniden besler.

2. Worlds Greatest Stretch (Torasik Mobilite ve Kalça Açıcı) — Her İki Tarafa 5 Tekrar

Adının hakkını veren bir klasik. Şınav pozisyonundan sağ ayağınızı sağ elinizin hemen dışına atın (derin lunge). Sağ dirseğinizi sağ ayak bileğinize doğru yaklaştırın, ardından gövdenizi sağa doğru çevirerek sağ kolunuzu gökyüzüne doğru uzatın. Gözlerinizle elinizi takip edin. Bu hareket hem kamburluğa yol açan sırt sertliğini kırar hem de sıkışan kalça fleksörlerini rahatlatır.

3. 90/90 Kalça Geçişleri — 8-10 Kontrollü Geçiş

Yere oturun, dizlerinizi bükerek bir bacağınızı önde 90 derece, diğerini yanda 90 derece açıyla konumlandırın. Gövdenizi dik tutarak, ellerinizi mümkünse yere koymadan bacaklarınızı diğer tarafa doğru devirin. Kalça ekleminin iç ve dış rotasyonunu aynı anda çalıştıran en etkili yöntemlerden biridir.

4. Glute Bridge (Kalça Aktivasyonu) — 12 Tekrar (Tepede 2 Saniye Beklemeli)

Sırtüstü yatın, dizlerinizi bükün ve ayak tabanlarınızı yere basın. Topuklarınızdan güç alarak kalçanızı yukarı kaldırın. Tepe noktada kalça kaslarınızı (glutes) sıkın ve iki saniye bekleyin. Bütün gün üzerinde oturduğumuz için “uyuyan” kalça kaslarını yeniden uyandırmak, bel ağrılarının en büyük panzehiridir.

Günü Kurtaracak Mikro Alışkanlıklar

Rutinler harikadır, ancak gün boyu biriken hasarı tek bir blokta çözmek zorunda değilsiniz. Süreci kolaylaştırmak için şu mikro adımları alışkanlık haline getirebilirsiniz:

  • 45/5 Kuralı: Her 45 dakikalık odaklanmış çalışmanın ardından 5 dakika ayağa kalkın, su için veya sadece odanın içinde yürüyün.
  • Telefon Görüşmelerinde Ayakta Kalın: Sesli görüşmelerinizi yürüyerek yapmak, gün içindeki adım sayınızı ve dolaşımınızı fark ettirmeden artırır.
  • Göz Dinlendirme (20-20-20): Her 20 dakikada bir, 20 saniye boyunca en az 20 fit (yaklaşık 6 metre) uzağa bakın. Boyun kaslarının gevşemesi doğrudan göz kaslarının rahatlamasıyla bağlantılıdır.

Bedenimiz hareketsizlik faturasını hemen kesmez; bunu aylar, yıllar içinde kronik sızılarla yapar. Günün sonunda kendinize ayıracağınız 10 dakikalık bir toparlanma seansı, sadece bedeninizi değil, zihinsel enerjinizi de sıfırlayacaktır.

Category: Genel | LEAVE A COMMENT
Ekim 17 2026

Ekrana Bakmaktan Kurtulamayanlar İçin: Boyun ve Omuz Mobilite Protokolü

Şu an bu satırları okurken boynunun açısına hiç dikkat ettin mi? Eğer masa başında çalışan ortalama bir modern insansan, muhtemelen çenen göğsüne doğru yaklaşmış, omuzların kulaklarına tırmanmış ve omurgan hafifçe haşlanmış bir karides formunu almış durumda. Günümüz dünyasında ofis sağlığı giderek lüks bir kavrama dönüşürken, kronikleşen boyun ağrısı neredeyse profesyonel hayatın kaçınılmaz bir parçası gibi kabul ediliyor. Oysa durum böyle olmak zorunda değil; doğru bir mobilite yaklaşımı ve birkaç küçük egzersiz ile fiziksel sağlık dengeni hızla geri kazanabilirsin.

Neden Böyle Oluyor? Başımızın Ağırlığı ve Yerçekimi

İnsan kafası nötr pozisyondayken —yani kulaklar omuzlarla aynı hizada durduğunda— yaklaşık 4.5 ila 5.5 kilogram ağırlığındadır. Ancak kafamızı ekrana, telefona veya klavyeye doğru öne eğdiğimiz her derece, omurgaya binen yükü katlayarak artırır. Biyomekanik araştırmalar gösteriyor ki, başımızı sadece 45 derece öne eğmek, boyun omurlarına binen yükü yaklaşık 22 kilograma çıkarıyor. Bu, gün boyu boynunda 8 yaşında bir çocuğu taşımakla neredeyse aynı şey!

Vücut bu yükün altında ezilmemek için savunma mekanizmasını çalıştırır: Üst sırt ve boyun kasları sürekli kasılarak kafayı geride tutmaya çalışır. Sonuç? Sertleşmiş trapezius kasları, donmuş kürek kemikleri ve tıp literatüründe artık “Tech Neck” (teknolojik boyun) olarak adlandırılan o meşhur tutulma.

Sadece Esnemek Neden İşe Yaramıyor?

Boynun ağrıdığında ilk refleksin kafanı sağa sola çekip esnetmek olabilir. Bu geçici bir ferahlama sağlasa da sorunu kökten çözmez. Çünkü o kaslar güçsüzlükten ve sürekli gergin kalmaktan yorulmuştur, sadece boyları kısaldığı için değil. Bize gereken şey pasif bir çekme değil; eklem hareket açıklığını artıran ve kaslara yeniden doğru çalışmayı öğreten aktif bir mobilite protokolüdür.

Önemli Uyarı: Bu hareketler masa başındaki mekanik gerginlikleri rahatlatmak içindir. Eğer kollarında uyuşma, karıncalanma, belirgin bir his kaybı veya keskin, batıcı bir ağrı yaşıyorsan egzersizleri durdurmalı ve bir fizik tedavi uzmanına ya da doktora danışmalısın.

5 Dakikalık Ofis İçi Mobilite Protokolü

Masanın başından bile kalkmadan, sadece sandalyeni biraz geriye çekerek uygulayabileceğin bu mini rutin, kas spazmlarını kırıp eklem kapsüllerini uyarır. Günde iki kez (özellikle öğleden sonra o malum çöküş anında) tekrarlayabilirsin.

1. Gıdı Çıkarma Sanatı: Chin Tuck (10 Tekrar)

Bu hareket dışarıdan komik görünse de boyun derin fleksör kaslarını aktive eden altın standarttır.

  • Sırtın dik otur, karşıya bak.
  • Kafanı aşağı eğmeden, sanki birisi burnunun ucuna dokunacakmış gibi çeneni geriye doğru kaydır (çift gıdı yapıyormuş gibi).
  • Geride 2 saniye bekle, boynunun arkasındaki uzamayı hisset ve serbest bırak.

2. Torasik Açılma: Sandalye Arkalığı Esnetmesi (8 Tekrar)

Boyun ağrısının asıl suçlusu genellikle boyun değil, hareketsiz kalmış üst sırttır (torasik omurga).

  • Ellerini başının arkasında birleştir, dirseklerini yanlara aç.
  • Sandalyenin sırt desteğini pivot noktası olarak kullanarak, nefes vererek yavaşça geriye doğru yaslan ve göğsünü tavana doğru aç.
  • Bunu yaparken belini aşırı çukurlaştırmamaya dikkat et; hareket sadece göğüs kafesi hizasından gelmeli. 2 saniye dur ve başlangıca dön.

3. Kürek Kemiği Sıkıştırma: W-V Hareketi (10 Tekrar)

Öne yuvarlanan omuzları orijinal yuvasına geri göndermek için kürek kemiklerini uyandırmamız gerek.

  • Kollarını yukarı kaldırarak ‘V’ harfi oluştur.
  • Ardından dirseklerini geriye ve aşağıya doğru çekerek gövdenle ‘W’ harfi yap.
  • Dirseklerini aşağı çekerken kürek kemiklerinin arasında bir ceviz kırmaya çalışıyormuş gibi hisset. 2 saniye sık ve tekrar yukarı uzan.

4. Göğüs Açıcı Kapı Pervazı Gerdirme (30 Saniye)

Sürekli öne doğru çalıştığımız için pektoral kaslar kısalır ve omuzları öne çeker.

  • En yakın kapı pervazına veya ofis bölmesine git. Kolunu 90 derece açıyla pervaza daya.
  • Bir adım öne çık ve göğsünü hafifçe zıt yöne çevir.
  • Göğüs kaslarında derin bir açılma hissedeceksin. Derin nefes alarak 30 saniye boyunca bekle, ardından diğer kola geç.

Uzun Vadeli Strateji: Çevre Tasarımı

Araştırmalar gösteriyor ki, gün boyu sabit bir pozisyonda kalındığında en ergonomik koltuk bile ağrıyı tek başına engelleyemez. Ergonomi bir başlangıçtır, ancak beden harekete göre evrilmiştir. Bu yüzden:

  • Monitörünü Göz Hizasına Al: Ekranının üst üçte birlik kısmı göz hizanla paralel olmalı. Bu, boynunun doğal eğriliğini korur.
  • Saat Başı 30 Saniye Kuralı: Her 50 dakikada bir yerinden kalk, omuzlarını geriye doğru üç kez yuvarla ve derin bir diyafram nefesi al.

Kendi bedenine bir makine gibi davranmayı bırakıp biyolojik bir sistem olarak yaklaştığında, küçük hareketlerin günün toplamında devasa farklar yarattığını göreceksin. Şimdi bu yazıyı kapat, dikleş, çeneni geriye çek ve boynuna derin bir nefes aldır!

Category: Genel | LEAVE A COMMENT
Ekim 17 2026

Kubernetes’te ‘Ghost’ Resource’ları Bulmak: Zombie Pod Avcılığı

Modern bir devops ekibinin yönettiği multi-tenant production cluster’ında her şeyin dashboard üzerinde yemyeşil görünmesi, her şeyin yolunda olduğu anlamına gelmez. Kümeler büyüdükçe, microservice mimarileri dallanıp budaklandıkça ve continuous delivery hatları günde onlarca kez release çıktıkça arka planda sessiz bir felaket birikir: “Ghost” (hayalet) resource’lar. Sağlıklı bir resource-management stratejisi ve keskin observability pratikleri kurgulamadığınızda, kubernetes worker node’larınız aslında hiçbir iş yapmayan, hiçbir trafiğe yanıt vermeyen ama faturayı kabartan “zombie pod” sürüleriyle dolar taşar.

Bu yazıda 5+ yıl deneyimli bir mühendisin bildiği o temel kavramları bir kenara bırakıyoruz. Pod nedir, replica nedir anlatmayacağım. Doğrudan sahaya inip kümedeki hayaletleri avlayacağız; neden oluştuklarını analiz edecek, gerçek komutlar, PromQL sorguları ve otomasyon script’leriyle bu yükü kümeden kazıyacağız.

Zombie Pod Nedir ve Neden Türer?

Kubernetes ekosisteminde bir kaynağa “zombie” veya “ghost” dememiz için ille de CrashLoopBackOff hatası alması gerekmez. Hatta en tehlikelisi, cluster’a göre kusursuz çalışanlardır. Bir pod şu durumlarda zombie statüsüne düşer:

  • Lich Podlar (Stuck in Terminating): Kapatılma sinyali (SIGTERM) almış fakat unmount edilemeyen volume veya takılı kalan bir finalizer yüzünden günlerdir Terminating durumunda bekleyenler.
  • Avare (Orphaned/Headless) Podlar: Bir Service selector’ı ile eşleşmeyen, ingress rotası olmayan veya Helm release’i purge edildiği halde etcd tutarsızlığı nedeniyle silinmeyenler.
  • Sıfır Yüklü “Over-provisioned” Podlar: Geliştiricinin debug amacıyla ayağa kaldırdığı, arkasında 4 vCPU / 16 GiB request unuttuğu ve haftalardır 0.001 Core tüketen test artıkları.
  • StatefulSet Kalıntıları (Unbound/Dangling PVCs): StatefulSet scale down edildiğinde Kubernetes mimari gereği PVC’leri silmez. Pod gitmiştir ama arkasında pahalı SSD block storage’lar yatmaya devam eder.

1. Adım: Terminating State’te Çakılı Kalan Podları Avlamak

En sık karşılaşılan senaryo, storage unmount işlemlerinin node üzerinde kilitlenmesi veya custom controller’ların yazdığı finalizer’ların reconcile edilememesidir. Bu podlar CPU/RAM harcamasa bile IP pool’unu (özellikle AWS-VPC CNI veya Calico kullanıyorsanız) rezerve tutar ve node drain işlemlerini bloklar.

Kümedeki tüm namespace’ler genelinde 1 saatten uzun süredir Terminating durumunda olan podları bulalım:

kubectl get pods -A --field-selector=status.phase!=Running \
  -o json | jq -r '
  .items[] | 
  select(.metadata.deletionTimestamp != null) | 
  select((now - (.metadata.deletionTimestamp | fromdateiso8601)) > 3600) | 
  "Namespace: " + .metadata.namespace + " | Pod: " + .metadata.name + " | Waiting: " + ((now - (.metadata.deletionTimestamp | fromdateiso8601))/3600 | tostring) + " hours"'

Birçok mühendis burada hemen kubectl delete pod <pod-name> --force --grace-period=0 komutuna sarılır. Yapmayın. Neden? Çünkü arkasında asılı bir CSI volume kilidi bırakırsanız, ileride o node’a schedule edilecek yeni pod Multi-Attach error for volume hatasıyla patlayacaktır.

Bunun yerine pod’un neden takıldığını görmek için metadata finalizer alanına bakın:

kubectl get pod <zombie-pod-name> -n <namespace> -o jsonpath='{.metadata.finalizers}'

Eğer storage driver çoktan node üzerinden çekildiyse ve controller yanıt vermiyorsa, finalizer’ı JSON merge patch ile söküp atın:

kubectl patch pod <zombie-pod-name> -n <namespace> \
  -p '{"metadata":{"finalizers":null}}' --type=merge

2. Adım: Arkasında Servis Olmayan “Sağır” Podları Yakalamak

CI/CD pipeline’ları çöktüğünde bazen Deployment silinir ancak pod bağımsız bir şekilde çalışmaya devam eder. Ya da deployment label’ları güncellenir fakat Service manifest’indeki selector güncellenmeyi unutulur. Sonuç: Pod CPU ve Memory tüketir ama gelen tek bir HTTP isteği dahi almaz.

Herhangi bir Service’in Endpoints veya modern Kubernetes kümelerinde EndpointSlice objesi tarafından hedeflenmeyen podları tespit etmek için bu pratik bash one-liner’ını çalıştırın:

#!/usr/bin/env bash
# Namespace bazlı hedefsiz pod kontrolü
NAMESPACE="production"

# Tüm geçerli endpoint IP'lerini al
VALID_IPS=$(kubectl get endpointslices -n "$NAMESPACE" -o jsonpath='{.items[*].endpoints[*].addresses[*]}' | tr ' ' '\n' | sort -u)

# Çalışan podların IP'lerini karşılaştır
for POD in $(kubectl get pods -n "$NAMESPACE" -o jsonpath='{range .items[?(@.status.phase=="Running")]}{.metadata.name}{":"}{.status.podIP}{"\n"}{end}'); do
    POD_NAME=$(echo "$POD" | cut -d: -f1)
    POD_IP=$(echo "$POD" | cut -d: -f2)

    if ! echo "$VALID_IPS" | grep -q "$POD_IP"; then
        # DaemonSet ve standalone jobları hariç tutmak isteyebilirsiniz
        OWNER=$(kubectl get pod "$POD_NAME" -n "$NAMESPACE" -o jsonpath='{.metadata.ownerReferences[0].kind}')
        if [[ "$OWNER" != "DaemonSet" && "$OWNER" != "Job" ]]; then
            echo "[ZOMBIE DETECTED] Pod: $POD_NAME (IP: $POD_IP) - Hiçbir Service arkasında değil!"
        fi
    fi
done

Bu senaryo özellikle preview environment’larda çok yaşanır. Pull Request merge edilir, ingress kalkar, service kalkar ama pod orada sonsuza dek sessizce yaşar.

3. Adım: Observability ile Kaynak İsrafını Ortaya Çıkarma

FinOps dünyasında en tehlikeli ghost pod, “iş yapıyor gibi durup hiçbir şey yapmayan” poddur. Geliştirici deployment manifest’inde cpu: "2" ve memory: "4Gi" talep etmiştir. Kubernetes scheduler bu talebi garanti altına almak için node üzerinde ilgili kaynağı rezerve eder (allocatable space düşer). Ancak pod arka planda sadece idle beklemektedir.

Bu israfı yakalamak için Prometheus ve Thanos üzerinde çalıştıracağımız PromQL sorguları devreye girer. Son 7 gün boyunca talep ettiği CPU kaynağının %1’inden azını kullanan podları listeleyelim:

# Prometheus / Thanos PromQL
(
  sum(rate(container_cpu_usage_seconds_total{container!=""}[1h])) by (namespace, pod)
  /
  sum(kube_pod_container_resource_requests{resource="cpu"}) by (namespace, pod)
) * 100 < 1

Bu sorgunun çıktısı size direkt olarak kümenizdeki “zombi rezervasyonları” verir. Pod fiziki olarak ölü değildir, ama maliyet açısından tam bir hayalettir. Node Autoscaler (Karpenter veya Cluster Autoscaler) bu pod yüzünden yeni ec2/compute instance ayağa kaldırmak zorunda kalır.

4. Adım: Sahipsiz StatefulSet Kalıntıları (Ghost PVC’ler)

Storage israfı, compute israfından daha sinsi seyreder çünkü disk saatlik değil, provizyon edildiği toplam boyut üzerinden (GB/ay) faturalandırılır. Bir StatefulSet’in replica sayısını 5’ten 2’ye indirdiğinizde Kubernetes, veri kaybını önlemek adına 3 adet PVC’yi cluster içinde Bound statüsünde tutmaya devam eder.

Peki bu diskleri kullanan aktif bir pod var mı? Görelim:

kubectl get pvc -A -o json | jq -r '
  .items[] | 
  select(.status.phase == "Bound") | 
  select(.metadata.annotations["volume.kubernetes.io/selected-node"] == null and .metadata.ownerReferences == null) | 
  "Namespace: " + .metadata.namespace + " | Unmounted PVC: " + .metadata.name + " | Size: " + .spec.resources.requests.storage'

Burada listelenen PVC’ler, Kubernetes API server düzeyinde kilitli kalmış, pod’u çoktan yok edilmiş disklere işaret eder. Eğer Retain politikasına sahip bir StorageClass kullanıyorsanız, deployment tamamen silinse bile AWS EBS veya GCP Persistent Disk konsolunda faturayı şişirmeye devam eder.

Otomasyon: Zombie Avını Sürekli Kılmak

Her hafta terminal başına geçip bu script’leri çalıştırmak sürdürülebilir bir SRE yaklaşımı değildir. Bunu engellemenin en temiz yolu, kuralları policy engine seviyesinde cluster’a enjekte etmektir.

Completed (başarıyla bitmiş) job podlarının cluster’da günlerce yer kaplamasını engellemek için manifest’lerinize mutlaka ttlSecondsAfterFinished ekleyin veya bir Kyverno policy’si ile bunu zorunlu kılın:

apiVersion: batch/v1
kind: Job
metadata:
  name: nightly-backup-sync
spec:
  # Pod tamamlandıktan 300 saniye (5 dk) sonra kendini imha eder
  ttlSecondsAfterFinished: 300
  template:
    spec:
      containers:
      - name: sync-worker
        image: custom-sync:v1.2
      restartPolicy: OnFailure

Aynı şekilde Kyverno veya OPA Gatekeeper kullanarak, her Deployment için memory/cpu limit ve request oranının belirli bir çarpanı (örneğin request limitin %50’sinden az olamaz kuralı) aşmasını admission webhook aşamasında engelleyebilirsiniz.

Sonuç: FinOps Salt Fatura İncelemek Değildir

DevOps dünyasında maliyet optimizasyonu (FinOps), ay sonunda AWS veya GCP faturasındaki grafikleri inceleyip “Compute Engine çok harcamış” demekten ibaret değildir. Asıl optimizasyon, runtime seviyesinde etcd ve scheduler üzerindeki gereksiz yükleri ayıklamaktır.

Terminating state’te kalan podlar IP tüketir, selector’ı kopmuş podlar gereksiz compute harcar, dangling PVC’ler storage faturasını patlatır. Kümelerinizde periyodik olarak bu kontrolleri pipeline’larınıza veya cron job’larınıza entegre edin. Ghost resource’ları temizlemek sadece faturayı düşürmekle kalmaz, scheduler gecikmelerini (scheduling latency) ve control plane üzerindeki memory overhead’ini doğrudan azaltır.

Category: Genel | LEAVE A COMMENT
Ekim 16 2026

Evde Fermentasyon Sanatı: Bağırsak Sağlığı İçin Kombucha ve Kefir Rehberi

Porsiyon: Yaklaşık 2 Litre | Hazırlık Süresi: 15 Dakika | Fermantasyon Süresi: 7-10 Gün (Kombucha) / 24 Saat (Kefir)

Kabul edelim: Market raflarında “canlı kültürlü” etiketiyle minik şişelerde satılan içeceklere servet dökmekten hepimiz biraz yorulduk. Oysa sağlıklı yaşam arayışında bedenimize yapabileceğimiz en büyük iyiliklerden biri olan bağırsak sağlığı, aslında mutfak tezgahında sessizce bekleyen bir kavanozda başlıyor. Binlerce yıllık bir gelenek olan fermentasyon; hem bütçeyi korumanın hem de mikrobiyotamıza hak ettiği ilgiyi göstermenin en kestirme, lezzetli ve tatmin edici yoludur.

Peki neden fermente gıdalar? Çünkü modern beslenme tarzımız bağırsaktaki iyi bakterileri adeta aç bırakıyor. Evde kendi kombucha veya kefir içeceğinizi hazırladığınızda, dışarıdan aldığınız pastörize ve ömrü uzatılmış ürünlerin aksine, trilyonlarca canlı ve aktif mikroorganizmayı doğrudan sindirim sisteminize davet etmiş olursunuz.

Malzemeler: Mutfağı Laboratuvara Dönüştürmeden

Korkutucu ekipmanlara hiç gerek yok. İhtiyacımız olan şeyler oldukça sade. Temel olarak Kombucha üzerinden ilerleyeceğiz ama Kefir için gereken minik dokunuşu da listeye ekliyoruz:

  • Su: 2 litre klorsuz, içme suyu (Klor bakterileri öldürür, aman dikkat).
  • Çay: 4-5 poşet veya 2 yemek kaşığı siyah ya da yeşil çay (Aromasız, sade çay tercih edin; bergamotlu earl grey içindeki yağlar fermantasyonu bozar).
  • Şeker: 1 su bardağı (yaklaşık 150 gr) beyaz toz şeker. Alternatif: Kamış şekeri de olur. “Şeker zararlı değil mi?” demeyin; o şekeri siz değil, SCOBY tüketecek!
  • SCOBY ve Başlangıç Sıvısı: 1 adet kombucha kültürü ve 1 çay bardağı önceden mayalanmış kombucha sıvısı. (Bir arkadaştan isteyin ya da güvenilir yerlerden temin edin).
  • Kefir Alternatifi İçin: 1 litre günlük tam yağlı süt ve 1 yemek kaşığı aktif kefir mayası.

Adım Adım Ev Yapımı Kombucha

Meşgul bir takviminiz olsa bile bu süreç haftada sadece 15 dakikanızı alır. Geri kalan işi mikroplar halleder.

  1. Çayı Demleyin: 2 litre suyu kaynatın, ocaktan alıp şekeri içinde tamamen eritin. Çayı ekleyin ve 15-20 dakika demlenmeye bırakın. Ardından çay yapraklarını/poşetlerini süzün.
  2. Tamamen Soğutun: Burası kritik. Çayın oda sıcaklığına (20-25°C) gelmesini bekleyin. Sıcak çay, canlı kültürünüzü anında öldürür. Acelemiz yok, bırakın soğusun.
  3. Kavanozda Buluşturun: Soğuyan tatlı çayı temiz bir cam kavanoza aktarın. Üzerine başlangıç sıvısını ve temiz ellerinizle SCOBY’yi bırakın. SCOBY dibe çökebilir ya da yüzebilir; ikisi de normaldir.
  4. Nefes Almasını Sağlayın: Kavanozun ağzını temiz bir tülbent veya kağıt havluyla kapatıp lastikle sabitleyin. Kapağı sıkıca kapatmayın; bakterilerin oksijene ihtiyacı var.
  5. Karanlıkta Dinlendirin: Kavanozu doğrudan güneş almayan, ılık ve havadar bir köşeye (örneğin mutfak dolabının bir köşesine) kaldırın. 7 ila 10 gün dokunmayın.

Bonus: Hızlı Çözüm Arayanlara Kefir Yolu

Eğer “Ben 10 gün bekleyemem, hemen probiyotik lazım” diyorsanız; 1 litre oda sıcaklığındaki süte 1 yemek kaşığı kefir tanesini atın, kavanozun kapağını hafif gevşek kapatıp karanlık bir dolapta 24 saat bekletin. Plastik bir süzgeçten geçirdiğiniz anda taze, kıvamlı kefirinizi içmeye hazırsınız!

Püf Noktası: Fermantasyonun İki Altın Kuralı

Evde fermentasyon yaparken başarının sırrı hijyen ve kullanılan araç gereçtedir. İşte asla atlamamanız gereken detaylar:

  • Metale Kesinlikle Hayır: Ne kombucha ne de kefir hazırlarken metal kaşık, kap veya süzgeç kullanın. Metal, fermente edici bakterileri zayıflatır ve asitle tepkimeye girer. Yalnızca cam, ahşap ya da kaliteli plastik/silikon kullanın.
  • Tadarak Karar Verin: Kombuchanızı 7. günden itibaren temiz bir pipet yardımıyla tadın. Çok tatlıysa fermantasyon bitmemiştir; elma sirkesi gibi keskinleşmişse fazla beklemiştir. Damak zevkinize göre tatlı-ekşi dengesini yakaladığınız an şişeleyip buzdolabına kaldırın. Soğuk, fermantasyonu durdurur.

Kendi içeceğinizi üretmek bir hobi değil, bedeninize gösterdiğiniz samimi bir özendir. İlk partiyi kurun, gerisini doğanın küçük mucizelerine bırakın!

Category: Genel | LEAVE A COMMENT
Ekim 15 2026

Agentic AI Döneminde GitLab: Kod Yazmaktan Sistem Yönetmeye Geçiş

Yazılım geliştirme dünyasında işler çok hızlı değişiyor. Dün sadece kod tamamlama araçlarına şaşırırken, bugün Agentic AI kavramı gündemimizin tam ortasına oturdu. Klasik yapay zeka araçları biz soru sorduğumuzda tek bir cevap üretirken, “ajan” tabanlı sistemler verilen bir hedef doğrultusunda plan yapıyor, kararlar alıyor, araçları kullanıyor ve işi uçtan uca bitiriyor. İşte bu noktada GitLab, sunduğu derinlemesine otomasyon ve DevOps entegrasyonuyla yeni nesil geliştirici platformları yarışında farklı bir kulvara göz kırpıyor.

Peki bu yeni dönem gerçekten yazılımcıların hayatını kolaylaştırıyor mu, yoksa pazarlama departmanlarının yeni bir cilası mı? GitLab Duo Workflow’u masaya yatırdık, test ettik ve neler vaat ettiğine yakından baktık.

“Agentic” Ne Demek ve Neden Birdenbire Önemli Oldu?

Kısa ve net bir benzetme yapalım: GitHub Copilot gibi ilk nesil asistanlar, yanınızda oturan ve siz kod yazarken bir sonraki satırı tahmin etmeye çalışan hevesli bir stajyer gibiydi. Agentic AI ise ona “Bu issue’daki bug’ı çöz, testleri çalıştır, pipeline geçerse bana merge request aç” dediğiniz ve gidip kahve içebildiğiniz bir çalışma arkadaşı modeli.

Yani sadece metin üretmiyor; dosya ağacını geziyor, terminalde komut çalıştırıyor, CI/CD çıktısını okuyor ve hata aldığında kendi kodunu tekrar düzeltiyor. GitLab’in bu alandaki hamlesi olan GitLab Duo Workflow, tam olarak bu mantık üzerine inşa edilmiş durumda.

[Görsel: GitLab Duo arayüzünde arka planda çalışan yapay zeka ajanının pipeline loglarını analiz ettiği ve önerilen çözüm adımlarını listelediği ekran]

Gerçek Bir Test: Gece Kırılan CI/CD Pipeline’ı

Bunu somut bir senaryoyla test ettik. Küçük bir Node.js mikroservisinde bilerek bir tip uyuşmazlığı ve kırık bir unit test bıraktık. Normalde geliştiricinin süreci bellidir: Pipeline fail olur, terminale gidilir, loglar taranır, hata bulunur, düzeltilip tekrar push edilir.

GitLab Duo’nun Root Cause Analysis (Kök Neden Analizi) ajanını devreye soktuğumuzda akış şöyle ilerledi:

# GitLab CI Runner çıktısı:
FAIL src/auth/token.spec.ts
● Test suite failed to run: Type 'string | undefined' is not assignable to type 'string'.

Ajan, hatanın satırını bulmakla kalmadı; ilgili commit geçmişini kontrol etti, ortam değişkenlerindeki eksik kontrolü fark etti ve doğrudan şu formatta bir düzeltme önerdi:

# Duo Workflow'un pipeline logundan çıkardığı otomatik çözüm:
- const token: string = process.env.AUTH_SECRET;
+ const token: string = process.env.AUTH_SECRET ?? '';

Buradaki kritik detay hız değil; bağlam (context). GitLab zaten kodunuzu, CI/CD pipeline’ınızı, issue listenizi ve güvenlik taramalarınızı tuttuğu için ajan harici bir araca göre çok daha fazla bağlama sahip. Ajan dışarıdan gelmiyor, deponun (repo) mutfağında yaşıyor.

Duo Workflow ile Çalışırken Neler Fark Ettik?

Kağıt üzerinde her şey kusursuz görünse de pratikte birkaç pürüz var. Her şeyden önce, bir ajana güvenip merge tuşuna basmak için henüz çok erken. Ajan bazen güvenlik açıklarını kapatırken uygulamanın iş mantığını (business logic) bozacak kestirme yollar seçebiliyor. Kodu incelerken gözünüzü dört açmanız şart.

[Görsel: GitLab Issue panosunda otomatik oluşturulan Merge Request ve ajan tarafından eklenen detaylı açıklama metni]

Artılar ve Eksiler

Platformu birkaç hafta boyunca gerçek projelerde gözlemledikten sonra çıkardığımız bilanço şu şekilde:

Özellik / Durum Artılar (+) Eksiler (-)
Entegrasyon CI/CD, Issue ve Security taramalarıyla tam entegre çalışır. Harici API bağlamaya gerek kalmaz. GitLab ekosistemine sıkı sıkıya bağımlıdır; lokal geliştirme ortamında esnekliği kısıtlıdır.
Hata Çözümü Pipeline hatalarını terminal loglarını okuyarak saniyeler içinde tespit eder. Karmaşık mimarilerde bazen yüzeysel çözümler önerip ana sorunu ıskalayabilir.
Gizlilik & Güvenlik Kod verileriniz modelleri eğitmek için kullanılmaz; kurumsal regülasyonlara uygundur. Özelleştirilmiş şirket içi modelleri GitLab SaaS üzerinde doğrudan çalıştırmak zordur.

Fiyatlandırma ve Cep Yakan Detaylar

Gelelim cüzdan kısmına. GitLab Duo özellikleri ne yazık ki tamamen ücretsiz sunulmuyor.

  • GitLab Duo Pro: Kullanıcı başına aylık $19 (Mevcut Premium veya Ultimate lisansınıza ek olarak ödenir). Kod tamamlama ve chat içerir.
  • GitLab Duo Enterprise: Kullanıcı başına aylık $39. Asıl “agentic” yetenekler, kök neden analizi ve güvenlik açığı giderme özellikleri bu pakette toplanmış.

Bütçesi kısıtlı ekipler veya bireysel geliştiriciler için bu rakamlar yüksek gelecektir. Peki ücretsiz veya açık kaynaklı alternatifler yok mu? Elbette var:

  • Aider: Terminalinizde çalışan, yerel Git deponuzla konuşan ve kendi kendine commit atan şahane bir açık kaynak CLI aracı.
  • Continue.dev: VS Code ve JetBrains için açık kaynaklı eklenti. Kendi API anahtarınızla (veya yerel Ollama modelleriyle) çalıştırabilirsiniz.
  • OpenDevin (All-Hands AI): GitLab Duo Workflow mantığını açık kaynak olarak inşa etmeyi hedefleyen, tarayıcı ve terminal kontrolü yapabilen topluluk projesi.

Geliştiriciler Bu Yeni Döneme Nasıl Hazırlanmalı?

Görünen köy kılavuz istemez: Önümüzdeki 2-3 yıl içinde vaktimizin çoğunu sıfırdan satır satır kod yazarak değil, ajanların yazdığı kodları denetleyerek (code review) geçireceğiz. Bu dönüşüme ayak uydurmak için şimdiden yapabileceğiniz üç şey var:

  1. Daha İyi Dokümantasyon Yazın: Ajanlar projenizin README’sini, CONTRIBUTING rehberini ve mimari şemalarını okuyarak kararlar alır. Bağlam ne kadar netse, ajanın çıktısı o kadar isabetli olur.
  2. Test Kapsamını Artırın: Kod yazan bir yapay zekanız varsa, o kodun doğruluğunu kanıtlayacak sağlam unit ve integration testlerine dünden daha çok ihtiyacınız var.
  3. Küçük Görevlerle Başlayın: Ajanlara doğrudan tüm mimariyi teslim etmek yerine; döküman güncelleme, bağımlılık versiyonu yükseltme ve kırık testleri onarma gibi rutin işleri devrederek sınırlarını öğrenin.

Son Söz

GitLab, Agentic AI dalgasını sadece bir sohbet kutusu eklemek olarak görmüyor; tüm DevOps döngüsünün beyni haline getirmeye çalışıyor. Henüz mükemmel değil, zaman zaman saçmalıyor ve fiyatı küçük ekipler için tuzlu. Ancak yazılım geliştirme süreçlerinin geleceği tam olarak burada şekilleniyor. İşi tamamen yapay zekaya bırakmak akıllıca değil; fakat bir ajanla birlikte çalışmayı öğrenmemek yakında büyük bir dezavantaja dönüşecek.

Category: Genel | LEAVE A COMMENT
Ekim 12 2026

Yeşil DevOps: CI/CD Pipeline’larınızın Karbon Ayak İzini Nasıl Takip Edersiniz?

Modern mühendislik ekipleri olarak FinOps dashboard’larına bakıp AWS faturasından yüzde üç kırpınca kendimizi zafer kazanmış sayıyoruz. Ancak altyapı maliyetini optimize ederken gözden kaçırdığımız çok daha somut bir parametre var: Watt tüketimi. CI/CD süreçlerimizin tükettiği ham enerji ve açığa çıkardığı karbon ayak izi, yazılım dünyasında sürdürülebilirlik başlığı altında artık doğrudan ölçülebilir bir mühendislik metriği. Carbon-Aware DevOps yaklaşımı, bu süreci “ağaç diktik” sertifikalarından çıkarıp doğrudan pipeline konfigürasyonlarına, Prometheus metriklerine ve eBPF seviyesine indiriyor.

Her PR açıldığında tetiklenen devasa entegrasyon testleri, gereksiz katman inşa eden Docker build’leri ve 32 vCPU’luk runner’larda 2 dakika koşan linter’lar sadece fatura değil, şebekeden doğrudan kirli elektrik tüketiyor. Peki bu tüketimi hissi yaklaşımlarla değil, production-grade araçlarla nasıl ölçer ve optimize ederiz?

SCI (Software Carbon Intensity) ve Ölçüm Mantığı

Green Software Foundation tarafından standardize edilen SCI spesifikasyonu karmaşık bir fizik denklemi değil. Bir CI/CD pipeline’ı için denklemi şu şekilde özetleyebiliriz:

SCI = ((E * I) + M) / R

  • E (Energy): Pipeline çalışırken harcanan toplam enerji (kWh).
  • I (Location-Based Carbon Intensity): İşlemin yapıldığı veri merkezinin bağlı olduğu elektrik şebekesindeki emisyon oranı (gCO2eq/kWh).
  • M (Embodied Carbon): Sunucu donanımının üretimi ve bertarafından düşen amortisman payı.
  • R (Functional Unit): Bizim durumumuzda tek bir “Pipeline Run”, “Build Başına PR” veya “Deployment”.

Geliştirici ortamında M parametresini çoğunlukla sabit kabul ederiz. Mühendislik olarak doğrudan müdahale edebileceğimiz iki değişken var: Harcanan enerji (E) ve bu enerjinin tüketildiği andaki grid karbon yoğunluğu (I).

Runner Seviyesinde Enerji Tüketimini Ölçmek: Kepler ve eBPF

Eğer self-hosted runner kullanıyorsanız (Kubernetes üzerinde Actions Runner Controller – ARC veya GitLab Runner), bare-metal ya da sanal makine seviyesindeki enerji tüketimini RAPL (Running Average Power Limit) sayaçları ve eBPF kullanarak pod bazında ayrıştırabilirsiniz. Bu noktada sektör standardı araç Kepler (Kubernetes-based Efficient Power Level Exporter).

Kepler, eBPF tracing ile CPU döngülerini, bellek erişimlerini pod ve container seviyesinde dinler; ardından RAPL arayüzünden okunan watt değerini bu metriklerle ilişkilendirir. Kubernetes tabanlı runner kümenize Kepler’i Helm ile deploy etmek oldukça yalındır:

helm repo add kepler https://sustainable-computing-io.github.io/kepler-helm-chart
helm repo update

helm install kepler kepler/kepler \
  --namespace kepler-system \
  --create-namespace \
  --set serviceMonitor.enabled=true \
  --set canMount.usrSrc=true

Kepler ayağa kalktıktan sonra, CI runner’larınızın namespace’i için Prometheus üzerinden doğrudan anlık tüketimi Joule cinsinden sorgulayabilirsiniz. Tek bir pipeline pod’unun toplam enerji tüketimini (kWh cinsinden) çıkarmak için şu PromQL sorgusu işinizi görür:

# Belirli bir CI pod'unun tükettiği toplam enerji (kWh)
sum(
  increase(kepler_container_joules_total{container_namespace="ci-runners", pod_name=~"runner-build-.*"}[1h])
) / 3600000

3.600.000’e bölmemizin nedeni Joule’ü kWh’a çevirmek. Elinizde artık soyut bir “build 8 dakika sürdü” verisi değil, “bu build 0.042 kWh tüketti” metrik verisi var.

Carbon-Aware Scheduling: Testleri Ne Zaman Koşmalı?

CI pipeline’larını sadece “hızlı bitsin” diye tasarlamak yerine, işin doğasına göre sınıflandırmak gerekir. Kritik bir hotfix PR’ı hemen koşmalıdır; ancak nightly build’ler, periyodik regression testleri veya end-to-end sentetik yük testleri zamana duyarlı değildir. İşte burada Carbon-Aware Execution devreye girer.

Elektrik şebekesindeki karbon yoğunluğu rüzgar ve güneş üretimine göre gün içinde radikal biçimde değişir. Örneğin Almanya (eu-central-1) şebekesi öğlen saatlerinde güneş panelleri devredeyken 150 gCO2eq/kWh seviyesindeyken, akşam rüzgar kesildiğinde ve kömür devreye girdiğinde 600 gCO2eq/kWh seviyesine fırlayabilir.

Aşağıdaki GitHub Actions workflow örneğinde, Electricity Maps API’sini kullanarak o anki grid karbon yoğunluğunu sorguluyoruz. Eğer emisyon eşik değerin üzerindeyse ve acil olmayan bir batch job koşuyorsak, build’i postpone ediyoruz veya düşük karbonlu bir bölgedeki runner’a route ediyoruz:

name: Carbon-Aware Integration Suite

on:
  schedule:
    - cron: '0 * * * *' # Saatlik tetikleme
  workflow_dispatch:

jobs:
  check-carbon-intensity:
    runs-on: ubuntu-latest
    outputs:
      should_run: ${{ steps.carbon_check.outputs.should_run }}
    steps:
      - name: Fetch Carbon Intensity
        id: carbon_check
        env:
          EMAPS_API_TOKEN: ${{ secrets.ELECTRICITY_MAPS_TOKEN }}
          ZONE: "DE" # Almanya şebekesi
          THRESHOLD: 250 # gCO2eq/kWh sınırı
        run: |
          RESPONSE=$(curl -s -H "auth-token: $EMAPS_API_TOKEN" \
            "https://api.electricitymap.org/v3/carbon-intensity/latest?zone=$ZONE")
          
          INTENSITY=$(echo $RESPONSE | jq '.carbonIntensity')
          echo "Güncel Karbon Yoğunluğu: $INTENSITY gCO2eq/kWh"

          if [ "$INTENSITY" -lt "$THRESHOLD" ]; then
            echo "Şebeke temiz. Pipeline çalıştırılıyor."
            echo "should_run=true" >> $GITHUB_OUTPUT
          else
            echo "Şebeke kirli. Ağır testler erteleniyor."
            echo "should_run=false" >> $GITHUB_OUTPUT
          fi

  heavy-tests:
    needs: check-carbon-intensity
    if: needs.check-carbon-intensity.outputs.should_run == 'true'
    runs-on: arc-runner-set
    steps:
      - uses: actions/checkout@v4
      - name: Run E2E Tests
        run: make test-e2e

Neden Böyle Yapıyoruz?

Çünkü saatte 200 kWh tüketen devasa bir staging test kümeniz varsa, sadece çalıştırma saatini kaydırarak (carbon-shifting) pipeline altyapısına tek bir satır kod optimizasyonu yapmadan emisyonu yüzde 40 ila 60 oranında azaltabilirsiniz. Bu, production iş yüklerini taşımaktan çok daha risksiz ve anında etki eden bir yöntemdir.

Pipeline Seviyesinde Optimizasyon: Boşa Yanan CPU Döngülerini Kesmek

Yalnızca zamanlama yetmez; tüketilen ham enerjiyi (E) kısmak için pipeline anatomisini elden geçirmek gerekir. Tipik kurumsal CI/CD süreçlerinde en çok enerji israfına yol açan pratikler ve çözümleri şunlardır:

1. Docker Katman Önbelleği (BuildKit Cache Thrashing)

CI ortamında her build’de sıfırdan pip install veya npm ci yapmak sadece pipeline süresini uzatmaz; runner üzerinde disk I/O ve network adaptörü aracılığıyla gereksiz CPU watt tüketimi üretir. GitHub Actions Cache veya harici S3/Registry cache backend kullanmak doğrudan enerji tasarrufudur.

# Kaniko veya Buildx ile GitHub Actions Cache backend kullanımı
docker buildx build \
  --cache-to type=gha,mode=max \
  --cache-from type=gha \
  --tag my-service:${{ github.sha }} \
  --file Dockerfile .

mode=max kullanımı sadece son imajı değil, ara katmanları da saklar. Bu sayede multi-stage build’lerde dependency stage’i değişmediği sürece CPU neredeyse rölanti modunda kalır.

2. Mimari Değişimi: x86_64 Yerine ARM64 Runner’lar

AWS Graviton veya Ampere Altra tabanlı ARM64 instance’lar, modern Intel/AMD eşdeğerlerine kıyasla Watt başına kayda değer oranda daha yüksek işlem kapasitesi sunar (Performance-per-Watt). CI/CD runner filolarınızı ARM mimarisine taşımak, build sürelerini dramatik olarak değiştirmese bile doğrudan tüketilen toplam enerjiyi yüzde 20-30 oranında aşağı çeker.

Aşağıdaki gibi basit bir Docker buildx multi-arch matrix konfigürasyonu yerine derlemeyi doğrudan hedef donanımda (native) yapmak CPU emülasyon maliyetini (QEMU overhead) ortadan kaldırır:

# QEMU üzerinden emüle edilmiş ARM build (YÜKSEK ENERJİ TÜKETİMİ - KAÇININ)
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker buildx build --platform linux/arm64 -t app:latest .

# DOĞRU YAKLAŞIM: Native ARM64 Runner ayağa kaldırıp doğrudan derlemek
# GitHub Actions: runs-on: [self-hosted, linux, arm64]

Emülasyon ile derleme yapmak CPU döngülerini 4 ila 10 kat artırarak ciddi bir enerji israfı yaratır. Build’i native runner’a devretmek doğrudan watt tasarrufudur.

Emisyon Verisini PR Seviyesine İndirmek

Mühendise geri bildirim vermediğiniz hiçbir metrik iyileşmez. Code-coverage raporu veya lint hatası gibi, her pull request’in ne kadar karbon emisyonuna yol açtığını PR yorumu olarak basmak ekip kültürünü dönüştürür. Açık kaynak araçlardan Eco-CI bu iş için doğrudan GitHub Actions içine entegre olabilen hazır step’ler sağlar:

steps:
  - name: Eco-CI Init
    uses: green-coding-solutions/eco-ci-energy-estimation@v4
    with:
      task: start-measurement

  - name: Build and Test Project
    run: |
      mvn clean verify

  - name: Eco-CI Measurement
    uses: green-coding-solutions/eco-ci-energy-estimation@v4
    with:
      task: get-measurement
      label: 'Maven Test Suite'

  - name: Eco-CI PR Comment
    uses: green-coding-solutions/eco-ci-energy-estimation@v4
    with:
      task: display-results
      send-pr-comment: true

Bu konfigürasyon, GitHub API üzerinden PR altına çalıştırılan donanımın ortalama enerji katsayılarına göre tüketilen kWh ve üretilen CO2eq gramajını yazar. Bir geliştirici, yazdığı verimsiz bir integration testinin pipeline süresini 10 dakika uzatmasının sadece kendisini değil, ölçülebilir bir emisyonu tetiklediğini gördüğünde optimizasyon soyut bir hedef olmaktan çıkar.

Sonuç: FinOps ve GreenOps Ayrımı Ortadan Kalkıyor

Yeşil DevOps, marjinal bir çevreci PR çalışması değil; modern sistem mimarisinin kaçınılmaz bir optimizasyon evresidir. Pipeline’larınızdaki CPU kullanımını optimize etmek, katmanları doğru önbelleğe almak, runner’ları doğru mimariye geçirmek ve zamana duyarsız işleri şebekenin temiz olduğu anlara kaydırmak teknik borcu azaltır. Daha az CPU döngüsü, daha az fatura ve nihayetinde daha düşük bir karbon ayak izi demektir.

Category: Genel | LEAVE A COMMENT
Ekim 11 2026

Geliştiriciler İçin Mutfak Otomasyonu: Sous-Vide ile Veri Odaklı Beslenme

Porsiyon: 2 Kişilik | Hazırlık Süresi: 10 Dakika | Pişirme Süresi: 60 Dakika (Eller serbest)

Kod yazarken deploy süreçlerini otomatikleştiriyoruz da neden akşam yemeğinde bir tavuk göğsünün başında nöbet tutuyoruz? Yoğun çalışma temposunda healthy eating alışkanlığını sürdürmek genelde can sıkıcı bir hal alır; fakat sous-vide tekniği sayesinde meal preparation süreçlerinizi adeta arka planda çalışan bir cron job’a dönüştürebilir, günlük productivity kaybı yaşamadan restoran kalitesinde tabaklar çıkarabilirsiniz.

Deterministik Yemek Pişirme: Sous-Vide Nedir?

Sous-vide (Fransızca “vakum altında”), gıdaların kilitli veya vakumlu bir torbaya konulup hassas bir ısı kontrol cihazıyla su banyosunda yavaşça pişirilmesi yöntemidir. Klasik tavada ısı dıştan içe hızla akar; bu da dışın yanmasına, için ise çiğ kalmasına yol açar. Sous-vide’de ise suyun sıcaklığı tam olarak hedeflediğiniz iç sıcaklığa ayarlanır. Yani tavuk göğsünüzü 64°C banyoya bırakırsanız, 1 saat sonra da 3 saat sonra da tam 64°C kalır. Aşırı pişme, kuruma ya da yanma riski matematiksel olarak imkânsızdır.

Malzemeler

  • 2 adet kemiksiz, derisiz tavuk göğsü (yaklaşık 400-500g)
  • 1 yemek kaşığı sızma zeytinyağı
  • 1 diş ezilmiş sarımsak (veya 1 çay kaşığı sarımsak tozu)
  • 1 dal taze biberiye veya kekik
  • 1 çay kaşığı tuz
  • Yarım çay kaşığı taze çekilmiş karabiber
  • Yarım limonun kabuğu (rendelenmiş)

Alternatif Malzeme Önerisi: Tavuk yerine somon fileto kullanabilirsiniz. Somon için cihazı 52°C’ye ayarlayıp süreyi 35 dakikaya indirmeniz yeterlidir. Vegan bir alternatif arıyorsanız, aynı baharat dengesini ekstra sıkı tofu veya kalın dilimlenmiş istiridye mantarı ile deneyebilirsiniz.

Adım Adım Hazırlanışı

  1. Suyu Isıtın: Sous-vide cihazınızı derin bir tencereye sabitleyin. Suyu 64°C’ye ayarlayın ve cihazın hedef ısıya ulaşmasını bekleyin.
  2. Marine ve Paketleme: Tavuk göğüslerini kurulayın. Tuz, karabiber, zeytinyağı, sarımsak, taze otlar ve limon kabuğu ile hafifçe ovun. Tavukları kilitli fermuarlı poşete (ziploc) veya vakum poşetine yerleştirin.
  3. Havayı Tahliye Edin: Vakum makineniz yoksa poşeti yavaşça suya daldırarak suyun basıncıyla havanın yukarı çıkmasını sağlayın (su yer değiştirme yöntemi) ve ağzını tam su seviyesinde kapatın.
  4. Pişirmeye Başlayın: Torbayı 64°C’deki suya bırakın ve timer’ı 60 dakikaya kurun. Şimdi bilgisayarınızın başına dönüp kodunuza odaklanabilirsiniz; yemek kendi kendine güvenle pişecektir.
  5. Mühürleme (Opsiyonel ama Tavsiye Edilir): Süre dolduğunda tavukları torbadan çıkarıp kağıt havluyla kurulayın. Döküm bir tavayı yüksek ateşte iyice ısıtın, çok az yağ ekleyin ve her iki tarafını sadece 45’er saniye mühürleyip servis yapın.

Püf Noktası

Sous-vide torbasından çıkan et soluk görünür çünkü su banyosunda Maillard reaksiyonu (karamelize lezzet kabuğu) gerçekleşmez. Eti tavaya atmadan önce yüzeyindeki tüm nemi kağıt havluyla mutlaka alın. Et ne kadar kuru olursa, tavada o kadar hızlı renk alır ve iç sıcaklığı yükselmeden dışı çıtırlaşır. 45 saniyeyi kesinlikle aşmayın; içerideki sululuğu korumak asıl amacımız.

Batch Cooking ile Haftayı Kurtarın

Pazar günü bu işlemi tek seferde 6-8 adet tavuk göğsüyle yapın. Pişirme biter bitmez torbaları buzlu suya atarak şoklayın ve ardından buzdolabına kaldırın. Hafta içi yoğun bir sprint koşarken tek yapmanız gereken torbayı açıp salatanıza doğramak ya da 1 dakika tavada ısıtmak. Sağlıklı beslenmek artık irade savaşı değil, sadece iyi kurulmuş bir sistem meselesi.

Category: Genel | LEAVE A COMMENT
Ekim 11 2026

Biyohackerlar İçin ‘Brain Food’: Bilişsel Performansı Artıran Akıllı Beslenme Listesi

Öğleden sonra saat tam 14:30. Önünde açık duran 42 sekme, teslim edilmesi gereken kritik bir proje ve kafanın içinde yankılanan o tanıdık ses: “Bir şekerleme yapsam dünya kurtulur mu?” Eğer zihinsel bir işte çalışıyorsan, beyninin en büyük düşmanı tembellik değil; ani çöken glikoz krizleridir. İşte burada biohacking devreye giriyor. Modern sağlıklı yaşam trendleri bize sadece uzun yaşamayı değil, o an masada otururken maksimum odaklanma ve berraklıkla çalışmayı da vaat ediyor. İşin sırrı ise doğru beslenme stratejisinde saklı.

Bugün Michelin yıldızlı şef önlüğünü takmana gerek yok. Mutfakta saatler harcamak istemediğini, ama beynine de çöp yakıt atmaktan bıktığını biliyorum. Sana derin çalışma (deep work) seanslarını roketleyecek, kan şekerini sabit tutacak ve beyin sisini dağıtacak nefis bir “Zihin Açıcı Nootropik Kase” hazırlıyoruz.

Zihin Açıcı ‘Deep Work’ Somon Kasesi

Bu öğün, beyninin %60’ını oluşturan yağ tabakasını beslemek ve dopamin üretimini tetiklemek için tasarlandı.

Porsiyon: 1 Kişilik
Hazırlık Süresi: 10 dakika
Pişirme Süresi: 12 dakika

Gereken Malzemeler

  • 150 g somon fileto (Derisi üzerinde, iyi bir Omega-3 kaynağı)
  • 1/2 su bardağı haşlanmış kinoa (Kompleks karbonhidrat ve lif için)
  • Yarım olgun avokado (Sağlıklı tekli doymamış yağlar)
  • 1 avuç dolusu taze bebek ıspanak (Folat ve demir deposu)
  • 4-5 adet ceviz içi (Beyne benzemesi tesadüf değil; alfa-linolenik asit barındırır)
  • 1 tatlı kaşığı kabak çekirdeği (Çinko desteği)
  • Sosu için: 1 yemek kaşığı soğuk sıkım sızma zeytinyağı, yarım limonun suyu, 1 çay kaşığı elma sirkesi, bir çimdik kaya tuzu.

Adım Adım Hazırlanışı

  1. Kinoayı aradan çıkar: Kinoayı önceden haşlamadıysan, 1 ölçü kinoaya 2 ölçü su koyup 12 dakikada kısık ateşte haşla. Vaktin yoksa bu adımı atla, alternatiflere bak!
  2. Somonu mühürle: Yapışmaz tavayı orta-yüksek ateşte ısıt. Somonun deri kısmını tavaya bırak. 4-5 dakika çıtırlaşana kadar dokunma, ardından çevirip 3-4 dakika daha pişir. İçi hafif pembe kalsın; suyunu kaybetmesin.
  3. Yeşillik tabanını kur: Geniş bir kaseye bebek ıspanakları ser. Üzerine ılık kinoayı ekle.
  4. Yağları diz: Avokadoyu dilimle, kaseye yerleştir. Pişen somonu kinoanın üzerine koy.
  5. Çıtır dokunuş ve sos: Cevizleri elinle ufalayarak serp, kabak çekirdeklerini ekle. Zeytinyağı, limon, elma sirkesi ve tuzla çırptığın sosu kasede gezdir. Afiyet olsun.

Püf Noktası

Somonun derisini sakın atma. Deri altındaki yağ tabakası, DHA ve EPA adı verilen Omega-3 formları açısından en zengin kısımdır. Eğer tavayı yeterince ısıtıp deriyi kurutmadan mühürlersen çıtır bir cips gibi olur; hem lezzet hem zihinsel berraklık kazanırsın.

Dolapta Bunlar Yoksa Ne Yapacağız? (Pratik Alternatifler)

Biohacking esnek olmak demektir. Malzemeleri bulamadın diye teslim bayrağını çekme:

  • Somon yerine: İyi kalite konserve sardalya veya ton balığı. Vegan dostlar için marine edilmiş ve hafif kızartılmış sert tofu.
  • Kinoa yerine: Karnabahar pilavı (daha da düşük karbonhidrat) veya esmer pirinç.
  • Ispanak yerine: Roka veya karalahana (kale).

Neden Bu Tabak Beyin Sisi Yaratmıyor?

Basit karbonhidratlar (makarna, beyaz ekmek, hamur işleri) kan şekerini hızla yükseltir. Vücut devasa bir insülin dalgası salgılar ve şekerin aniden düşer. İşte o meşhur “ağırlaşma” hissi bundan kaynaklanır. Bu kasede ise lifler (kinoa ve ıspanak), sağlıklı yağlar (avokado, zeytinyağı, ceviz) ve yüksek kaliteli protein bir aradadır.

Bu kombinasyon sindirimi yavaşlatır, beynine saatler boyunca kesintisiz, stabil bir glikoz akışı sağlar. Sonuç? Saat 16:00’da üçüncü kahvene uzanmak yerine işine odaklanan keskin bir zihin.

Category: Genel | LEAVE A COMMENT
Ekim 10 2026

Long-Running AI Agents İçin Runtime Seçimi: Cloud Function vs. Dedicated Worker

Modern bir LLM tabanlı uygulama geliştirirken ilk reflex genellikle aynıdır: Birkaç satır kod yaz, yerelde çalıştır, ardından modern cloud architecture standartlarına uyup kodu bir serverless fonksiyona at. Ancak basit sohbet botlarından çıkıp otonom AI agents dünyasına adım attığınızda, seçtiğiniz runtime ortamı birdenbire en büyük kabusunuz haline gelebilir.

Kendi kendine web taraması yapan, kod derleyen, hata aldığında strateji değiştiren ve nihai bir rapor hazırlayan o harika ajanınız, sunucuya çıktığı anda 504 Gateway Timeout duvarına çarpıyorsa yalnız değilsiniz. Bu yazıda lafı dolandırmadan deneyeceğiz, ölçeceğiz ve şu sorunun cevabını arayacağız: Uzun süren (long-running) ajan işleri için hafif Cloud Function modelleri mi, yoksa arkada sessizce çalışan Dedicated Worker makineleri mi doğru tercih?

“5 Dakikada Biter Sanmıştım”: Serverless Neden Çuvallıyor?

Geleneksel web mimarisinde sunucusuz fonksiyonlar (AWS Lambda, Google Cloud Run functions vb.) harika bir felsefeye sahiptir: İstek gelir, kod birkaç yüz milisaniyede çalışır, veritabanına yazar ve yok olur. Sıfır boşta bekleme maliyeti, pürüzsüz ölçeklenme.

Fakat çok adımlı bir yapay zeka ajanı geleneksel bir web isteği gibi davranmaz. Bir ajan döngüsü kabaca şuna benzer:

Düşün -> Tool Seç -> Web Sayfasına Git (Bekle 4sn) -> Sayfayı Oku -> LLM'e Sor (Bekle 12sn) -> Kod Yaz -> Sandbox'ta Çalıştır (Bekle 8sn) -> Hata Aldı, Başa Dön...

Burada CPU sürekli tam gaz çalışmaz; vaktin %80’i dış API çağrılarını ve ağ gecikmelerini beklemekle geçer. İşte serverless mimarinin tıkandığı üç kritik nokta:

  • Sert Zaman Aşımı (Hard Timeouts): Birçok API gateway 30 saniyede bağlantıyı keser. AWS Lambda en fazla 15 dakika çalışabilir. Kapsamlı bir araştırma yapan ajanın 20 dakika sürmesi işten bile değildir.
  • Durumsuzluk (Statelessness) Laneti: Fonksiyon kapandığı an belleğindeki tüm context uçar. Ajanın o anki çalışma belleğini (scratchpad) harici bir Redis veya veritabanına taşımak ciddi bir ek gecikme yaratır.
  • Bekleme Süresine Para Ödemek: Serverless servisler genelde tahsis edilen RAM ve geçen milisaniye üzerinden fatura keser. LLM’in token üretmesini boş boş beklerken faturanız tıkır tıkır yazmaya devam eder.

[Görsel: Cloud Function üzerinde 30. saniyede kesilen API gateway timeout hatası ve agent’ın yarım kalmış düşünce zinciri log ekranı]

Test Senaryosu: Derin Araştırma Ajanı Masada

Konuyu netleştirmek için laboratuvara indik. Basit bir senaryo kurguladık: Ajanımız verilen bir şirket hakkında 10 farklı web sayfasını scrape edecek, sayfaları parseleyip bir LLM’e (GPT-4o) özetletecek ve sonuçları birleştirip tek bir analiz raporu üretecek.

Bu ajanı iki farklı ortamda aynı görevle 10’ar kez koşturduk:

  1. Kurulum A: AWS Lambda (2 GB RAM, Node.js runtime).
  2. Kurulum B: Dedicated Worker (Hetzner üzerinde en ucuz CPX11 VPS + Docker).

Sonuç: AWS Lambda tarafında 10 denemenin 4’ü ağ gecikmeleri ve API rate limit bekleme süreleri yüzünden 15 dakikalık hard timeout sınırına takılıp çöpe gitti. Çalışan 6 testin ortalama maliyeti, sürekli açık tutulan küçük bir VPS’in günlük masrafını ikiye katladı. Dedicated Worker ise işleri sırayla, hiç acele etmeden, kesintisiz bir biçimde 6-8 dakika aralığında başarıyla tamamladı.

Karşılaştırma: Cloud Function vs. Dedicated Worker

Mesele sadece “çalıştı / çalışmadı” ikiliği değil. Mimari kararlar bakımından iki yaklaşımın net bir röntgenini çekelim:

Kriter Cloud Function (Serverless) Dedicated Worker (VPS / Container)
Maksimum Çalışma Süresi Kısıtlı (Genelde 15 dk sınır) Sınırsız (Günlerce sürebilir)
State & Bellek Yönetimi Zor; her adımda dış DB’ye yazılmalı Kolay; süreç boyunca RAM’de tutulabilir
Ölçeklenme (Scaling) Otomatik, sıfırdan binlere anında Kuyruk (queue) yönetimi ve manuel yapılandırma gerektirir
Maliyet Modeli Kullanım başına ödeme (Bekleme dahil) Sabit aylık ödeme
Lokal Araçlar (Browser, Sandbox) Çok zor (Lambda layer boyut limitleri) Çok kolay (Playwright, Docker-in-Docker rahatça çalışır)

Modern Çözüm: Hibrit Mimari ve Workflow Motorları

“Peki her agent için devasa sunucular mı kiralamak zorundayız?” Tabii ki hayır. 2024 ve sonrasında modern bulut dünyası bu ikilemi çözmek için yeni nesil ara katmanlar geliştirdi.

1. Durable Execution Motorları (Temporal, Inngest, Trigger.dev)

Bu araçlar ajanın kodunu adım adım (step-by-step) yürütür. Ajan bir web sayfasını beklerken veya LLM yanıt üretirken süreci durdurur (suspend eder). Yanıt geldiğinde kaldığı değişken değerleriyle devam eder. Böylece hem serverless gibi kaynak tasarrufu yaparsınız hem de timeout endişeniz kalmaz.

[Görsel: Trigger.dev panelinde adım adım duraklatılarak (wait for event) ilerleyen bir AI agent akışının zaman çizelgesi]

2. Container-Based On-Demand Runtimes (Fly.io, Modal)

Özellikle Modal veya Fly.io Machines gibi yapılar, bir ajan tetiklendiğinde bir Docker konteynerini saniyeler içinde ayağa kaldırır. Konteyner 45 dakika boyunca ajanın işini bitirmesini bekler, iş bitince kendini imha eder. Klasik serverless gibi kullanılır ama timeout limitleri saatlerle ölçülür.

Cüzdan Raporu: Fiyatlar ve Ücretsiz Alternatifler

Mühendislik kararları günün sonunda bütçeye bağlanır. Projenizin büyüklüğüne göre maliyet tablosu şu şekilde şekilleniyor:

  • Sıfır Bütçe / Hobi Projeleri:
    • Fly.io: Ücretsiz planda sunduğu kaynaklarla ufak bir worker konteynerini sürekli açık tutabilirsiniz.
    • AWS Lambda Free Tier: Ayda 1 milyon istek ücretsiz. Ancak ajanınız 5 dakikadan uzun sürmüyorsa ve browser otomasyonu gibi ağır kütüphaneler barındırmıyorsa.
  • Giriş Seviyesi Üretim (Production):
    • Hetzner Cloud (CPX11/CPX21): Ayda ~4 – 8 Euro bandında sabit ücret. Arkasına bir BullMQ veya Celery kuyruğu bağlayarak yüzlerce ajan görevini kafanız rahat yönetirsiniz.
    • Modal: Her ay 30 dolar ücretsiz kullanım kredisi veriyor. GPU ve uzun süren CPU işleri için şu an piyasadaki en pratik ortam.

Hangisini Seçmelisiniz? Karar Ağacı

Yol haritanızı çizmek için şu basit formülü kullanabilirsiniz:

Eğer ajanın yapacağı iş deterministik ise, yani 2-3 API çağrısıyla en geç 30 saniyede biteceği belliyse: Serverless / Cloud Function tercih edin. Altyapı yönetmekle uğraşmayın.

Ancak ajanın ne zaman duracağı önceden kestirilemiyorsa, kendi kendine internette gezinecekse (Playwright/Puppeteer), lokalde Python kodu çalıştırıp çıktıları analiz edecekse: Hiç düşünmeden bir Dedicated Worker veya Workflow Engine (Inngest/Temporal) mimarisine geçin. Timeout hatalarını debug etmekle harcayacağınız saatler, birkaç dolarlık sunucu faturasından çok daha pahalıdır.

Category: Genel | LEAVE A COMMENT