İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • DevOps
  • Kubernetes Custom Metrics Exporter Nasıl Yazılır?
DevOps Konteyner & Kubernetes Custom Metrics, Go, HorizontalPodAutoscaler, Kubernetes, Prometheus Aşkın KILIÇ 15/07/2026 3 Yorumlar

Kubernetes Custom Metrics Exporter Nasıl Yazılır?

Kubernetes Custom Metrics Exporter Nasıl Yazılır?
📑 İçindekiler
  1. Exporter, Metrics Server ve Adapter Aynı Şey Değil
  2. Mimari Akış Nasıl Çalışır?
  3. Doğru Metrik Türünü Seçin
  4. Go Projesini Oluşturun
  5. Exporter'ı Yerelde Doğrulayın
  6. Konteyner İmajını Hazırlayın
  7. Kubernetes'e Dağıtın
  8. Prometheus ServiceMonitor Ekleyin
  9. Scrape Zincirini Kontrol Edin
  10. HPA İçin Son Bir Katman Gerekir
  11. Üretimde En Sık Yapılan Hatalar
  12. Yayın Öncesi Kontrol Listesi
  13. İlgili İçerikler
  14. Kaynaklar ve İleri Okuma

⏱️ 6 dk okuma📅 15 Temmuz 2026

Kubernetes, CPU ve bellek tüketimini görebilir; ancak her iş yükü bu iki sinyalle doğru ölçeklenmez. Kuyrukta bekleyen mesaj sayısı, açık WebSocket bağlantıları veya bir batch işinin tamamlanma süresi çoğu zaman daha anlamlıdır. Bu uygulama sinyallerini Prometheus’a taşımanın en temiz yollarından biri, küçük ve tek amaçlı bir metrics exporter geliştirmektir.

İlgili içerik: Kubernetes v1.36’da Askıya Alınan Job Kaynakları Değişiyor

İlgili içerik: Kubernetes v1.36’da PSI GA: Sinyali Gürültüden Ayırmak

Bu rehberde Go ile çalışan bir exporter oluşturacak, /metrics uç noktasını yayınlayacak, imajı hazırlayacak ve Kubernetes üzerinde ServiceMonitor ile scrape edeceğiz. Örnek, Kubernetes’in resmî custom metrics exporter rehberindeki mimariyi temel alıyor; komutlar ve açıklamalar ise doğrudan uygulanabilir bir akış için yeniden düzenlendi.

Exporter, Metrics Server ve Adapter Aynı Şey Değil

Kuruluma geçmeden önce dört bileşenin görevini ayırmak önemli. Aksi hâlde /metrics uç noktasını açınca HPA’nın metriği otomatik göreceği gibi yanlış bir beklenti oluşabilir.

Bileşen Görevi HPA ile ilişkisi
metrics-server Pod ve node CPU/bellek kaynak metriklerini toplar. Resource Metrics API üzerinden doğrudan kullanılabilir.
Metrics exporter Uygulamaya özgü değerleri Prometheus biçiminde /metrics yolunda sunar. Tek başına Custom Metrics API oluşturmaz.
Prometheus Exporter uç noktasını scrape eder ve zaman serilerini saklar. Metriklerin sorgulanabilir kaynağıdır.
Prometheus Adapter Prometheus sorgularını Kubernetes Custom Metrics API’ye taşır. HPA’nın özel metrikleri kullanmasını sağlar.

Bu ayrımın kısa özeti şu: Exporter metriği üretir, Prometheus saklar, adapter ise gerektiğinde Kubernetes API’ye sunar.

Mimari Akış Nasıl Çalışır?

  1. Exporter, veritabanı, mesaj kuyruğu veya dahili API gibi gerçek veri kaynağını okur.
  2. Değeri Counter, Gauge ya da Histogram olarak bellekte günceller.
  3. /metrics isteği geldiğinde Prometheus metin biçiminde yanıt verir.
  4. Prometheus, ServiceMonitor veya annotation tabanlı discovery ile bu uç noktayı düzenli aralıklarla scrape eder.
  5. İhtiyaç varsa Prometheus Adapter, seçilen seriyi Custom Metrics API üzerinden HPA’ya açar.

Doğru Metrik Türünü Seçin

  • Counter: Yalnızca artan toplamlar içindir. İşlenen görev ve hata sayısı buna örnektir.
  • Gauge: Artıp azalabilen anlık değerler içindir. Kuyruk derinliği veya aktif bağlantı sayısı gauge olmalıdır.
  • Histogram: Süre ve boyut dağılımlarını bucket’lar hâlinde kaydeder. p50 ve p99 gibi yüzdelikler için uygundur.

Adlandırmada birim bilgisini sona ekleyin: worker_job_duration_seconds gibi. Sayaçlarda _total son ekini kullanmak, Prometheus ekosistemindeki araçların metriği doğru yorumlamasını kolaylaştırır.

Go Projesini Oluşturun

Terminal ortamınızda GITHUB_USER değişkeninin gerçek GitHub kullanıcı veya organizasyon adınızı içerdiğinden emin olun. Ardından modülü ve Prometheus bağımlılıklarını oluşturun:

test -n "${GITHUB_USER:?GITHUB_USER tanımlanmalı}"
mkdir custom-metrics-exporter && cd custom-metrics-exporter
go mod init "github.com/${GITHUB_USER}/custom-metrics-exporter"
go get github.com/prometheus/client_golang/prometheus
go get github.com/prometheus/client_golang/prometheus/promhttp

Aşağıdaki main.go, üç farklı metrik türünü kaydeder ve beş saniyede bir örnek değer üretir. Simülasyon bölümü daha sonra gerçek veri kaynağınızla değiştirilmelidir.

package main
import (
"log"
"math/rand"
"net/http"
"time"
"github.com/prometheus/client_golang/prometheus"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
var (
jobsProcessed = prometheus.NewCounterVec(
prometheus.CounterOpts{
Name: "worker_jobs_processed_total",
Help: "Total number of jobs processed, partitioned by status.",
},
[]string{"status"},
)
queueDepth = prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "worker_queue_depth",
Help: "Current number of jobs waiting in the queue.",
},
)
jobDuration = prometheus.NewHistogram(
prometheus.HistogramOpts{
Name:    "worker_job_duration_seconds",
Help:    "Time spent processing a single job.",
Buckets: prometheus.DefBuckets,
},
)
)
func init() {
prometheus.MustRegister(jobsProcessed, queueDepth, jobDuration)
}
func collectMetrics() {
ticker := time.NewTicker(5 * time.Second)
defer ticker.Stop()
for range ticker.C {
queueDepth.Set(float64(rand.Intn(50)))
jobDuration.Observe(
(time.Duration(rand.Intn(200)) * time.Millisecond).Seconds(),
)
jobsProcessed.WithLabelValues("success").Inc()
}
}
func main() {
go collectMetrics()
http.Handle("/metrics", promhttp.Handler())
http.HandleFunc("/healthz", func(w http.ResponseWriter, _ *http.Request) {
w.WriteHeader(http.StatusOK)
})
log.Println("Listening on :8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
log.Fatalf("server error: %v", err)
}
}

Exporter’ı Yerelde Doğrulayın

Uygulamayı başlatın ve ikinci bir terminalden yalnızca kendi metriklerinizi filtreleyin:

go run .
curl -sS http://0.0.0.0:8080/metrics | grep '^worker_'

Çıktıda worker_queue_depth, worker_jobs_processed_total ve histogram serilerini görmelisiniz. /healthz yalnızca süreç sağlığını bildirir; metrik verisini sağlık kontrolüne taşımamak hem yanıtı küçük tutar hem de liveness probe’un amacını netleştirir.

Konteyner İmajını Hazırlayın

Çok aşamalı Dockerfile, derleme araçlarını çalışma zamanı imajına taşımaz. Aşağıdaki örnek, statik binary üretir ve root olmayan distroless imajında çalıştırır:

FROM golang:1.26-alpine AS builder
WORKDIR /src
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build \
-trimpath -ldflags="-s -w" \
-o /out/exporter .
FROM gcr.io/distroless/static-debian12:nonroot
COPY --from=builder /out/exporter /exporter
EXPOSE 8080
ENTRYPOINT ["/exporter"]
docker build -t custom-metrics-exporter:v1.0.0 .

Yerel bir kind kümesi kullanıyorsanız imajı doğrudan node’lara yükleyebilirsiniz. Yönetilen veya çok node’lu kümelerde ise CI/CD hattınızla ACR, GHCR ya da kullandığınız kurumsal registry’ye push edin ve manifestte immutable bir tag veya digest kullanın.

Kubernetes’e Dağıtın

Aşağıdaki manifest yerel imaj adını kullanır. Uzak kümelerde image alanını CI/CD hattınızın ürettiği tam imaj adresiyle değiştirin.

apiVersion: apps/v1
kind: Deployment
metadata:
name: custom-metrics-exporter
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: custom-metrics-exporter
template:
metadata:
labels:
app.kubernetes.io/name: custom-metrics-exporter
spec:
containers:
- name: exporter
image: custom-metrics-exporter:v1.0.0
imagePullPolicy: IfNotPresent
ports:
- name: metrics
containerPort: 8080
livenessProbe:
httpGet:
path: /healthz
port: metrics
initialDelaySeconds: 5
periodSeconds: 10
resources:
requests:
cpu: 50m
memory: 32Mi
limits:
cpu: 100m
memory: 64Mi
---
apiVersion: v1
kind: Service
metadata:
name: custom-metrics-exporter
namespace: monitoring
labels:
app.kubernetes.io/name: custom-metrics-exporter
spec:
selector:
app.kubernetes.io/name: custom-metrics-exporter
ports:
- name: metrics
port: 8080
targetPort: metrics
kubectl apply -f exporter.yaml
kubectl get pods -n monitoring \
-l app.kubernetes.io/name=custom-metrics-exporter

Prometheus ServiceMonitor Ekleyin

Prometheus Operator veya kube-prometheus-stack kullanıyorsanız ServiceMonitor, scrape hedefini açık biçimde tanımlar. release etiketi Prometheus kaynağınızdaki selector ile aynı olmalıdır; farklı bir Helm release adı kullandıysanız bu değeri ona göre düzenleyin.

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: custom-metrics-exporter
namespace: monitoring
labels:
release: kube-prometheus-stack
spec:
selector:
matchLabels:
app.kubernetes.io/name: custom-metrics-exporter
endpoints:
- port: metrics
path: /metrics
interval: 15s
kubectl apply -f servicemonitor.yaml
kubectl describe servicemonitor custom-metrics-exporter -n monitoring

Scrape Zincirini Kontrol Edin

Önce pod ve ServiceMonitor durumunu, ardından Prometheus hedefini kontrol edin:

kubectl get pods -n monitoring \
-l app.kubernetes.io/name=custom-metrics-exporter
kubectl port-forward svc/prometheus-operated 9090 -n monitoring

Port-forward açıkken tarayıcıda 9090 portundaki /targets yolunu açın. Hedef UP görünüyorsa expression browser’da şu sorguyu çalıştırın:

rate(worker_jobs_processed_total{status="success"}[2m])

Hedef görünmüyorsa önce ServiceMonitor selector ile Service etiketlerini karşılaştırın. Hedef DOWN ise endpoint, port adı, namespace ve NetworkPolicy kurallarını inceleyin.

HPA İçin Son Bir Katman Gerekir

Prometheus’un metriği scrape etmesi, HPA’nın onu otomatik kullanacağı anlamına gelmez. Kubernetes custom metrics belgelerinde açıklandığı gibi, Prometheus Adapter benzeri bir bileşenin metriği Custom Metrics API’ye kaydetmesi gerekir. Adapter yapılandırması tamamlandıktan sonra worker_queue_depth gibi bir gauge, HPA’nın metrics bloğunda hedef olarak kullanılabilir.

Üretimde En Sık Yapılan Hatalar

  • Yüksek cardinality: Kullanıcı kimliği veya rastgele istek ID’si gibi sınırsız etiket değerleri zaman serisi sayısını hızla büyütür.
  • Yanlış metrik türü: Azalabilen kuyruk derinliğini Counter yapmak hatalı sonuç üretir.
  • Polling hatasını sıfır gibi göstermek: Veri kaynağı okunamadığında sahte bir sıfır yazmak yerine hata metriği ve log üretin.
  • Gizli veriyi label’a koymak: E-posta, token veya müşteri kimliği gibi veriler metrik etiketi olmamalıdır.
  • ServiceMonitor etiket uyuşmazlığı: Service doğru olsa bile Prometheus selector eşleşmiyorsa hedef hiç keşfedilmez.
  • Exporter ile adapter’ı karıştırmak: Exporter veri sunar; HPA entegrasyonu için Custom Metrics API katmanı ayrıca kurulmalıdır.

Yayın Öncesi Kontrol Listesi

  • go test ./... ve yerel /metrics doğrulaması başarılı mı?
  • İmaj root olmayan kullanıcıyla çalışıyor ve sürüm/digest sabitlenmiş mi?
  • Service port adı ile ServiceMonitor endpoint adı aynı mı?
  • Prometheus targets ekranında exporter UP görünüyor mu?
  • Label değerleri kontrollü ve hassas veriden arındırılmış mı?
  • HPA kullanılacaksa Prometheus Adapter ve Custom Metrics API doğrulandı mı?

İlgili İçerikler

  • Node Readiness Controller: Kubernetes’te Ready’nın Ötesi
  • Copilot Usage Metrics API ile Kullanıcı Bazlı AI Kredisi
  • Kubernetes Dashboard’dan Headlamp’a: Neden Geçiş Mantıklı?

Kaynaklar ve İleri Okuma

  • Building a Custom Metrics Exporter for Kubernetes.
  • Horizontal Pod Autoscaling.
  • Prometheus Operator.
  • Prometheus Exporters and Integrations.
  • Kubernetes v1.36 Route Sync Metriği: CCM’de Yeni Bir Pencere.
  • Kubernetes v1.36 Controller Staleness: Bayat Cache Sorunu Bitti mi?.
🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ
Aşkın KILIÇYazar

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

İlgili Yazılar

Azure DevOps Server Eylül Yamaları İçin Kurulum Rehberi
Azure DevOps Server Eylül Yamaları İçin Kurulum Rehberi11 Eyl 2026
cgroup v1 CPU Shares'ten v2 CPU Weight'e Yeni Dönüşüm
cgroup v1 CPU Shares'ten v2 CPU Weight'e Yeni Dönüşüm27 Tem 2026
Azure App Service Grafana Dashboard ile Metrikten Teşhise
Azure App Service Grafana Dashboard ile Metrikten Teşhise12 Eki 2026
What’s New in vcpkg (Jul 2026)
What’s New in vcpkg (Jul 2026)12 Ağu 2026

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

YouTube GitHub

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket Custom Metrics Go HorizontalPodAutoscaler Kubernetes Prometheus
Önceki yazı

Visual Studio 18.9 C++ İndeksleme: WCI ile 2 Kat Hızlı Kod

Sonraki yazı

Visual Studio’da GitHub Copilot Haziran Güncellemesi

İlginizi Çekebilir

Azure Cloud-Native Temeli: AI Ajanları İçin Yol Haritası
Aşkın KILIÇ 0

Azure Cloud-Native Temeli: AI Ajanları İçin Yol Haritası

18/10/2026
Microsoft Foundry Eylül 2026: Routines ve Insights Rehberi
Aşkın KILIÇ 0

Microsoft Foundry Eylül 2026: Routines ve Insights Rehberi

16/10/2026
AI Scan, CodeQL'in Kapsamadığı Dilleri PR'da Tarıyor
Aşkın KILIÇ 0

AI Scan, CodeQL’in Kapsamadığı Dilleri PR’da Tarıyor

15/10/2026

3 comments

comments user
Murat Ö. 15/07/2026 22:58

Kuyruk derinliğini izlemek için hep hazır exporter arayıp duruyordum, kendimiz yazabileceğimizi pek düşünmemiştim. Go tarafında Prometheus client library ile bu kadar temiz çalıştığını görmek güzel oldu. Bu arada dil ekosistemi değişimleriyle ilgili şu yazınız da dikkatimi çekti: Pure Virtual C++ 2026: AI-Native C++ Geliştirici Akışı Geliyor — https://www.askinkilic.com.tr/pure-virtual-c-2026-ai-native-c-gelistirici-akisi-geliyor/

comments user
Derya E. 16/07/2026 00:15

Kuyruk derinliğini metrik olarak almak için uzun süre workaround’larla uğraştım, exporter yazmak aklıma gelmemişti açıkçası. Go ile implementasyonu ne kadar sürdü sizin için, scrape interval’ı ayarlarken dikkat etmeniz gereken bir şey oldu mu?

comments user
Burak S. 16/07/2026 02:14

Kuyruk derinliğini custom metric olarak çıkarmak çok işe yarıyor, özellikle HPA’yı buna göre ayarlayınca pod scaling çok daha anlamlı hale geliyor. Go ile exporter yazmak ilk seferinde biraz uğraştırıyor ama bir şablonu olunca sonrası kolaylaşıyor. Bu arada şu yazınız da güzeldi: Azure Resiliency Evrimi: Şehir Gibi Düşünen Bulut Mimarisi — https://www.askinkilic.com.tr/azure-resiliency-evrimi-sehir-gibi-dusunen-bulut-mimarisi/

Yorumlar kapalı.

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • GitHub Copilot'ta Kaldırılan Modeller ve Geçiş Planı
    18/10/2026 GitHub Copilot’ta Kaldırılan Modeller ve Geçiş Planı
  • Logitech MX Keypad ve GitHub Copilot: Ambient Kontrol
    18/10/2026 Logitech MX Keypad ve GitHub Copilot: Ambient Kontrol
  • Visual Studio 2026: İlk Hatada Derlemeyi Durdurma
    18/10/2026 Visual Studio 2026: İlk Hatada Derlemeyi Durdurma
  • Azure Cloud-Native Temeli: AI Ajanları İçin Yol Haritası
    18/10/2026 Azure Cloud-Native Temeli: AI Ajanları İçin Yol Haritası
  • GitHub Code Quality Lisans Kullanımını CSV ile Doğrulayın
    17/10/2026 GitHub Code Quality Lisans Kullanımını CSV ile Doğrulayın
  • DevOps Güncellemeleri
    09/03/2026 Azure DevOps Server Şubat Güncellemesi: Güvenlik
  • 2026-03-10_15-35-23
    10/03/2026 Microsoft 365 E7: Yapay Zeka ve Güvenlik Bir Arada
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • Artımlı Anlık Görüntü: Anında Geri Yükleme
    09/03/2026 Artımlı Anlık Görüntü: Anında Geri Yükleme
  • Bulut Sunucu Altyapısı
    09/03/2026 Microsoft Sovereign Cloud: İzolasyonda Güvenli Bulut
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps Azure OpenAI azure sdk Azure SQL CI/CD code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Entra ID Microsoft Foundry otomasyon performans public preview Pull Request RAG REST API SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 507 yazı 🏗️ Bulut Altyapı 407 yazı 🤖 Yapay Zeka 331 yazı ☁️ Microsoft Azure 279 yazı 🔧 DevOps 277 yazı 🔒 Güvenlik & Kimlik 223 yazı 🏢 Kurumsal Teknoloji 107 yazı 📊 Veri & Analitik 78 yazı 🐳 Konteyner & Kubernetes 62 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← Visual Studio 18.9 C++ İndeksl...
    Visual Studio’da GitHub ... →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS