class Mikroservis Mimarisi ve Kubernetes extends Post

@created_at( "2025-01-14 13:52" ) @tag( "mikroservis" ) @tag( "kubernetes" )
**Mikroservis Mimarisi ve Kubernetes ile Uygulama Geliştirme** **Mikroservis Nedir?** Mikroservis, yazılım sistemlerini küçük, bağımsız olarak geliştirilebilen ve yönetilebilen hizmetlere (servislere) bölen bir mimari yaklaşımdır. Her bir servis, belli bir işlevi yerine getirir ve diğer servislerle APIȁar aracılığıyla iletişim kurar. Bu mimari, monolitik yapılardan farklı olarak esneklik ve hızlı geliştirme süreçleri sunar. ### Mikroservis Mimarisiȁin Avantajları 1. **Bağımsız Geliştirme ve Dağıtım:** Takımlar farklı mikroservisler üzerinde bağımsız çalışabilir. 2. **Ölçeklenebilirlik:** Hizmetler bağımsız olarak ölçeklenebilir. 3. **Dayanıklılık:** Bir mikroservis arıza yaptığında diğerlerinin etkilenme olasılığı azılır. 4. **Teknoloji Bağımsızlığı:** Her bir mikroservis farklı bir teknoloji veya programlama diliyle geliştirilebilir. ### Mikroservislerin Temel Özellikleri 1. **Bağımsız Veri Tabanları:** Her servis kendi veri tabanına sahip olabilir. 2. **API Tabanlı İletişim:** Servisler, REST veya gRPC gibi API protokolleriyle iletişim kurar. 3. **Dağıtık Sistem Yapısı:** Servisler farklı sunucularda veya bulut ortamlarında çalışabilir. ### Mikroservis Örneği E-ticaret platformu için bir mikroservis yapısı düşünelim: 1. **Kullanıcı Servisi:** Kullanıcı kayıt ve kimlik doğrulama işlemleri. 2. **Ürün Servisi:** Ürün bilgilerini yöneten servis. 3. **Sipariş Servisi:** Sipariş işlemlerini yönetir. 4. **Ödeme Servisi:** Ödeme alma ve işlemleri yürütür. Kullanıcı bir ürünü sepete eklediğinde ve sipariş verdiğinde: - Kullanıcı servisi oturum bilgisini kontrol eder. - Ürün servisi stok bilgisini kontrol eder. - Sipariş servisi siparişi kayıt eder. - Ödeme servisi ödeme işlemini başlatır. Bu servislerin birbirinden bağımsız geliştirilmesi ve çalıştırılması mikroservis mimarisinin önemini gösterir. --- **Kubernetes Nedir?** Kubernetes (K8s), mikroservis uygulamalarının dağıtımı, ölçeklendirilmesi ve yönetimi için kullanılan bir konteyner orkestrasyon aracıdır. Google tarafından geliştirilip daha sonra açık kaynak hale getirilmiştir. ### Kubernetesȁn Temel Kavramları 1. **Pod:** Bir veya birden fazla konteyneri içeren ve Kubernetes tarafından yönetilen en küçük birimdir. 2. **Service:** Pod‟lar arasında ağ iletişimi sağlar. 3. **Deployment:** Pod‟ların ve versiyonların otomatik dağıtımını yönetir. 4. **ConfigMap ve Secret:** Konfigürasyon bilgileri ve hassas veriler (API anahtarları gibi) yönetilir. 5. **Ingress:** Dış dünyadan gelen HTTP(S) isteklerini Pod‟lara yönlendirir. ### Kubernetes ile Mikroservislerin Ölçeklenmesi Bir mikroservis uygulamasını Kubernetes”e çalıştıralım. Örneğin, ödeme servisi Pod‟larını otomatik olarak ölçeklendirebiliriz. #### Deployment Tanımı:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: payment-service
spec:
  replicas: 2
  selector:
    matchLabels:
      app: payment
  template:
    metadata:
      labels:
        app: payment
    spec:
      containers:
      - name: payment-container
        image: payment-service:latest
        ports:
        - containerPort: 8080
Bu tanım, ödeme servisi için iki replika Pod oluşturur. Kullanım yoğunluğu artarsa, replika sayısını otomatik olarak artırabiliriz. #### Horizontal Pod Autoscaler:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: payment-service-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: payment-service
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50
Bu YAML dosyası, CPU kullanımı %50ȁi geçtiğinde yeni Pod‟lar oluşturur. ### Kubernetes ile Mikroservis Mimarisiȁin Avantajları 1. **Otomatik Ölçeklendirme:** Kullanım yoğunluğuna göre Pod sayısı artıp azalabilir. 2. **Yük Dengesi:** Servislerin trafikleri dengeli bir şekilde dağıtılır. 3. **Hata Toleransı:** Pod‟ların biri arıza yapsa bile sistem kesintisiz çalışabilir. 4. **Kolay Dağıtım:** Yeni mikroservis versiyonları kolayca dağıtılabilir. **Sonuç** Mikroservis mimarisi, karmaşık uygulamaların yönetimini kolaylaştırırken Kubernetes bu yapıları daha ölçeklenebilir ve dayanıklı hale getirir. Birlikte kullanıldıklarında, geliştirme ve operasyon ekiplerinin çalışma verimliliği artar ve uygulamaların kesintisiz çalışması sağlanır.