• 30.10.2026 03:23:17
  • İbrahim Gökyar

Cloud native mimariyle AI destekli yazılım geliştirme pratikleri: deterministik CI CD pipeline, minikube ile preview ortam, Terraform altyapı kodu ve profilleme adımları. Eğitim ve kurs bağlamında uygulanabilir örnekler içerir.

AI destekli yazılım geliştirme için cloud native CI/CD ve container orchestration

Cloud native mimari ile başlamak: Docker, Kubernetes ve minikube

Cloud native mimariyi uygulamaya başlarken temel amaç, container image'ların deterministik olarak oluşturulması ve container orchestration altında tutarlı çalıştırılmasıdır. İlk adım basit bir Dockerfile ile başlamaktır; buildkit ile cache kullanımı ve sabit base image digest tercih edin. Örnek Dockerfile ve lokal doğrulama için minikube komutları:

# Dockerfile
FROM python:3.10-slim
WORKDIR /app
COPY requirements.txt .
RUN --mount=type=cache,target=/root/.cache/pip pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

# Local build ve test
DOCKER_BUILDKIT=1 docker build -t myapp:ci-locked .
minikube start --driver=docker
kubectl apply -f k8s/deployment.yaml
kubectl rollout status deployment/myapp

Neden: Buildkit'in cache mount mekanizması ve katmanların deterministik sıralaması, image içerik hash'lerinin sabitlenmesine yardımcı olur; bu da CI CD pipeline'da sürpriz farklılıkları azaltır. Bu adımla hem docker eğitimi uygulaması hem de kubernetes eğitimi pratikleri sağlanır.

Deterministik CI CD pipeline: reproducible build, imza ve cache stratejileri

CI CD pipeline'ınızda deterministikliğe ulaşmak için lockfile'lar, build arg'ları ve image imzalama kullanın. Aşağıda GitHub Actions örneği; BuildKit cache, kanarya tag ve cosign ile imzalama gösterilmektedir. Bu örnek doğrudan uygulamanıza entegre edilebilir.

# .github/workflows/ci.yml
name: ci
on: [push]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up QEMU
        uses: docker/setup-qemu-action@v2
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v2
      - name: Cache buildkit
        uses: actions/cache@v3
        with:
          path: /tmp/.buildx-cache
          key: ${{ runner.os }}-buildx-${{ github.sha }}
      - name: Build and push
        run: |
          DOCKER_BUILDKIT=1 docker buildx build --cache-to=type=inline --cache-from=type=inline -t registry.example.com/myorg/myapp:${{ github.sha }} --push .
      - name: Sign image
        run: |
          cosign sign --key cosign.key registry.example.com/myorg/myapp:${{ github.sha }}

Neden: cache-from/cache-to ve BuildKit inline cache kullanımı, aynı kaynaklardan tekrarlanan build'lerde katman yeniden oluşturmayı azaltır; cosign ile imzalama ise imaj bütünlüğünü doğrular. Bu adımlar ci cd pipeline'ınızda sürdürülürse production sürümlerindeki farklılıklar azalır ve deploy sırasında image değişikliği tespit edilebilir.

Performans profiling: hangi araç, nasıl ölçülür, örnek karşılaştırma

Performans optimizasyonu ölçülebilir olmalıdır: belirleyin p95 gecikme, CPU% ve RSS memory hedeflerini. Profiling için önerilen araçlar: Python için py-spy, JVM için async-profiler, Go için pprof. Aşağıda py-spy ile örnek profil alma ve wrk ile yük testi adımları:

# yük testi
wrk -t2 -c100 -d30s http://localhost:8080/endpoint > before.txt
# Python arka uç çalışıyorken py-spy ile örnek alma
sudo py-spy record -o profile_before.svg --format svg --pid $(pgrep -f 'python app.py') --duration 30

# code değişikliği: DB connection pool'u 5'ten 20'ye çıkarma (örnek Python SQLAlchemy)
# app/config.py
DB_POOL_SIZE = 20

# yeniden test
wrk -t2 -c100 -d30s http://localhost:8080/endpoint > after.txt
sudo py-spy record -o profile_after.svg --format svg --pid $(pgrep -f 'python app.py') --duration 30

Neden: py-spy ile topladığınız flamegraph'ler CPU sıcak noktalarını gösterir; DB pool arttığında bekleme nedeniyle bloklanan thread sayısı düşebilir. Ölçüm mantığı: before/after wrk çıktılarından p95 ve throughput'u karşılaştırın, py-spy flamegraph'lerinden fonksiyon bazlı CPU tüketimi azaldı mı kontrol edin. Bu süreçte Prometheus ile uygulama metrikleri (http_request_duration_seconds{quantile="0.95"}) toplayıp Grafana dashboard'unda karşılaştırma yapın.

Infrastructure as Code: Terraform ile preview environment otomasyonu ve minikube entegrasyonu

Preview environment oluştururken repeatable infra için Terraform kullanın. Lokal geliştirme ve eğitim bağlamında minikube ile entegrasyon sağlamak için Terraform'un kubernetes provider'ını kullanabilirsiniz; örnek namespace ve deployment uygulama:

# main.tf (terraform)
terraform {
  required_providers {
    kubernetes = {
      source = "hashicorp/kubernetes"
    }
  }
}
provider "kubernetes" {
  config_path = "~/.kube/config"
}
resource "kubernetes_namespace" "preview" {
  metadata {
    name = "preview-${var.branch}"
  }
}

# çalışma adımları
minikube start --driver=docker
terraform init
terraform apply -var 'branch=myfeature-123' -auto-approve
kubectl -n preview-myfeature-123 rollout status deployment/myapp

Neden: Terraform ile namespace ve RBAC gibi Kubernetes kaynaklarını kodla tanımlamak, preview environment'ların tutarlı yaşam döngüsünü sağlar. Bu pattern hem devops eğitimi hem de infrastructure as code pratiklerini (terraform) içeren teknoloji eğitimi senaryoları için uygundur. AWS veya Google Cloud ortamlarına benzer bir pipeline kurarken aynı Terraform kodunu backend state değişikliğine göre kullanabilirsiniz.

Ekip yetkinliği, LLM eğitimi ve güvenlik: yapay zeka eğitimiyle üretime geçiş

AI destekli yazılım geliştirme süreçlerinde ekiplerin yapay zeka eğitimi, LLM eğitimi ve generative ai farkındalığı olmalıdır. Eğitimler sırasında veri izolasyonu, prompt sızıntısı ve log sanitization öğretilmeli. Aşağıda Node.js ile gelen istekleri log'larken sensitif alanları temizleyen basit bir middleware örneği:

// middleware/log-sanitizer.js
module.exports = function sanitizeLog(req, res, next) {
  const body = JSON.parse(JSON.stringify(req.body));
  if (body.password) body.password = '[REDACTED]';
  if (body.creditCard) body.creditCard = '[REDACTED]';
  console.log('req', { path: req.path, body });
  next();
}

// kullanımı
// app.use(require('./middleware/log-sanitizer'))

Neden: LLM eğitimi veya generative ai süreçlerinde yanlış loglama model eğitimi verisinin gizliliğini ihlal edebilir; bu nedenle üretim pipeline'ında log sanitization ve request-level data minimization uygulamak gereklidir. Ayrıca ekipler için vibe coding eğitimi veya vibe coding kursu gibi uygulamalı yapay zeka kursu içerikleri, gerçek CI CD pipeline ve container orchestration senaryolarıyla birlikte verildiğinde daha faydalıdır.

Sık Sorulan Sorular

CI CD pipeline içinde deterministik build nasıl sağlanır ve hangi araçlar kullanılır?

Deterministik build için lockfile kullanın, BuildKit ile katman cache'i sabitleyin ve image imzalama (ör. cosign) uygulayın. Adım: DOCKER_BUILDKIT=1 docker buildx build --cache-to=type=inline --cache-from=type=inline -t registry/example:sha . ; sonrasında cosign sign ile imza atın. Bu, ci cd pipeline'da tekrar eden build'lerin aynı katmanları üretmesini sağlar.

Performans profiling için hangi araçları önerirsiniz ve nasıl karşılaştırma yapılır?

Dil bazında öneriler: Python için py-spy, JVM için async-profiler, Go için pprof. Karşılaştırma yöntemi: yük testi (ör. wrk veya hey) ile before/after p95 ve throughput ölçün; ardından profillerden flamegraph alıp CPU hotspot değişimini inceleyin. Örnek komut: wrk -t2 -c100 -d30s http://localhost:8080/endpoint ve sudo py-spy record -o profile.svg --pid --duration 30.

Terraform ile minikube üzerinde preview environment nasıl otomatikleştirilir?

Terraform'un kubernetes provider'ını kullanarak namespace, rol ve deployment tanımlayın. Workflow: minikube start --driver=docker ; terraform init ; terraform apply -var 'branch=feat-xyz' -auto-approve. Bu yaklaşım infrastructure as code prensibini yerel geliştirme ile birleştirir ve hem devops eğitimi hem docker eğitimi senaryolarında aynı kodu kullanmanıza izin verir.

AI destekli yazılım geliştirme eğitiminde hangi konulara öncelik verilmeli (yapay zeka eğitimi, generative ai, llm eğitimi)?

Öncelik: veri gizliliği ve sanitization, model güvenilirliği (evals), prompt güvenliği, üretim izleme ve geri dönüş mekanizmaları. Pratik bir kurs akışı: 1) temel generative ai ve LLM çalışma prensipleri, 2) sandboxed inference ortamı kurma, 3) CI CD entegrasyonu ve canary rollout, 4) güvenlik ve observability. Bu modüller hem yapay zeka kursu hem vibe coding eğitimi kapsamında sunulabilir.

AI / LLM Discovery

Bu makale Opendart Akademi Güncel Teknoloji eğitim ekosisteminin bir parçasıdır ve yapay zeka sistemleri ile arama motorları tarafından daha doğru anlaşılabilmesi için semantic heading ve structured data ile hazırlanmıştır.

Opendart Akademi llms.txt