İçeriğe geç

Docker ve Kubernetes ile Mikroservis Mimarisine Başlangıç Rehberi

Docker ve Kubernetes ile Mikroservis Mimarisine Başlangıç Rehberi

Giriş: Neden Mikroservis?

Uygulama geliştirme dünyası, monolitik yapılar yerine mikroservis mimarisini benimseyerek daha hızlı, ölçeklenebilir ve bakım kolaylığı sunan bir modele yöneldi. Bu dönüşümün kalbinde Docker ve Kubernetes gibi konteynerleşme teknolojileri yer alıyor.

Docker ve Kubernetes ile Mikroservis Mimarisine Başlangıç Rehberi detay
Docker ve Kubernetes ile Mikroservis Mimarisine Başlangıç Rehberi detay

Docker Nedir? Temel Kavramlar

Docker, uygulamaları ve bağımlılıklarını izole bir ortamda paketleyen konteyner teknolojisidir. Geleneksel VM’lere kıyasla daha hafif, başlatma süresi saniyeler içinde ve kaynak tüketimi düşük olur.

  • İmaj (Image): Uygulamanın dosya sistemi ve konfigürasyonunun sabit bir anlık görüntüsü.
  • Konteyner (Container): İmajın çalıştırıldığı izole süreç.
  • Dockerfile: İmaj oluşturmak için adım‑adım talimatları içeren dosya.

Kubernetes Nedir? Temel Bileşenler

Kubernetes, birden çok Docker konteynerini otomatik olarak yönetmek, ölçeklendirmek ve dağıtmak için tasarlanmış bir orchestratordır.

  1. Pod: En küçük dağıtım birimi; bir ya da birden fazla konteyneri barındırır.
  2. Service: Pod’lar arasında ağ iletişimini ve dış dünyaya erişimi sağlar.
  3. Deployment: Uygulama sürümlerini yönetir, istenen replika sayısını korur.
  4. Ingress: HTTP/HTTPS trafiğini yönlendiren giriş noktası.

Mikroservis Mimarisine Geçiş Adımları

1. Uygulama Parçalama Stratejisi

Monolitik kod tabanını işlevsel sınırlarla bölün. Her bir servis, tek bir iş kuralını (single responsibility) üstlenmeli ve RESTful API ya da gRPC üzerinden iletişim kurmalıdır.

2. Dockerfile Oluşturma

Aşağıda basit bir Node.js servisi için örnek Dockerfile yer alıyor:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --only=production
COPY . .
EXPOSE 3000
CMD ["node","index.js"]

3. Lokal Geliştirme ve Test

Docker Compose ile birden çok servisi tek komutla ayağa kaldırabilirsiniz:

version: "3.8"
services:
  auth:
    build: ./auth-service
    ports:
      - "5000:3000"
  orders:
    build: ./order-service
    ports:
      - "5001:3000"

4. Kubernetes Manifeste Yazma

Her servis için bir deployment.yaml ve bir service.yaml dosyası oluşturun. Örnek Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: auth-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: auth
  template:
    metadata:
      labels:
        app: auth
    spec:
      containers:
      - name: auth
        image: yourrepo/auth:latest
        ports:
        - containerPort: 3000

5. CI/CD Entegrasyonu

GitHub Actions, GitLab CI veya Jenkins gibi araçlarla Docker image oluşturup, kubernetes cluster’ına otomatik deploy yapabilirsiniz. Böylece kod değişikliği anında üretime geçer.

Performans ve Ölçeklenebilirlik İpuçları

  • Horizontal Pod Autoscaling (HPA): CPU veya bellek kullanımına göre pod sayısını otomatik artırın.
  • Resource Limits: Her pod için requests ve limits tanımlayarak kaynak tüketimini kontrol edin.
  • Service Mesh (Istio/Linkerd): Servisler arası güvenli iletişim, izleme ve trafik yönetimi sağlayın.

Güvenlik En İyi Uygulamaları

Konteyner güvenliği, mikroservis mimarisinde kritik bir konudur. Aşağıdaki adımları izleyin:

  1. Resmi ve imzalı Docker imajlarını tercih edin.
  2. İmajları düzenli olarak Trivy ya da Clair ile tarayın.
  3. Kubernetes RBAC (Role‑Based Access Control) ile erişim yetkilerini en aza indirgeyin.
  4. NetworkPolicy ile pod‑pod iletişimini sınırlayın.

Sonuç: Mikroservis Yolculuğunuz Başlıyor

Docker ve Kubernetes, mikroservis mimarisinin temel taşlarıdır. Doğru planlama, otomasyon ve güvenlik önlemleriyle uygulamanızı hızlı, ölçeklenebilir ve sürdürülebilir bir yapıya dönüştürebilirsiniz. Şimdi ilk servisinizi konteynerleştirin, Kubernetes’e deploy edin ve HPA’yı aktif hale getirin. Bu adımlar, dijital dönüşümünüzdeki en büyük ivmeyi sağlayacak.

❓ Sıkça Sorulan Sorular

Mikroservis mimarisi nedir?
Mikroservis mimarisi, uygulamayı bağımsız, küçük ve tek bir işlevi yerine getiren servisler halinde bölerek geliştirme, dağıtım ve ölçeklendirme süreçlerini kolaylaştıran bir yaklaşımdır.
Docker ve Kubernetes arasındaki fark nedir?
Docker, uygulamaları konteyner içinde paketler ve çalıştırır; Kubernetes ise bu konteynerleri yönetir, ölçeklendirir, dağıtır ve yüksek erişilebilirlik sağlar.
Kubernetes'te otomatik ölçeklendirme nasıl yapılır?
Horizontal Pod Autoscaler (HPA) özelliği, CPU veya bellek kullanım metriklerine göre pod sayısını otomatik artırır veya azaltır. HPA, bir Deployment ya da ReplicaSet ile ilişkilendirilir.

{“@context”:”https://schema.org”,”@type”:”FAQPage”,”mainEntity”:[{“@type”:”Question”,”name”:”Mikroservis mimarisi nedir?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Mikroservis mimarisi, uygulamayı bağımsız, küçük ve tek bir işlevi yerine getiren servisler halinde bölerek geliştirme, dağıtım ve ölçeklendirme süreçlerini kolaylaştıran bir yaklaşımdır.”}},{“@type”:”Question”,”name”:”Docker ve Kubernetes arasındaki fark nedir?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Docker, uygulamaları konteyner içinde paketler ve çalıştırır; Kubernetes ise bu konteynerleri yönetir, ölçeklendirir, dağıtır ve yüksek erişilebilirlik sağlar.”}},{“@type”:”Question”,”name”:”Kubernetes’te otomatik ölçeklendirme nasıl yapılır?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Horizontal Pod Autoscaler (HPA) özelliği, CPU veya bellek kullanım metriklerine göre pod sayısını otomatik artırır veya azaltır. HPA, bir Deployment ya da ReplicaSet ile ilişkilendirilir.”}}]}

Bir yanıt yazın