Sobes.tech
Middle

Hangi tür hizmetler var ve bunlar düşük seviyede nasıl çalışıyor?

sobes.tech yapay zeka

AI'dan gelen yanıt

Mikroservis mimarisi ve dağıtık sistemler bağlamında birkaç temel hizmet türü vardır:

  • Monolitik uygulamalar: Tüm işlevselliği içeren tek, bölünemez kod tabanı.
  • Mikroservisler: Her biri belirli bir iş mantığını uygulayan küçük, bağımsız hizmetler kümesi. API aracılığıyla birbirleriyle etkileşirler.
  • Serverless (sunucusuz): Bulut sağlayıcısının kaynak tahsisini ve ölçeklendirmeyi dinamik olarak yönettiği hesaplama modeli. Geliştirici sadece fonksiyon koduna odaklanır.

Alt seviyede çalışma şekli şu şekildedir:

Monolitik:

Tek bir süreç olarak çalışır. Tüm bileşenler aynı anda belleğe yüklenir. Bileşenler arasındaki etkileşim, aynı adres alanı içindeki fonksiyon veya yöntem çağrılarıyla gerçekleşir. Hata toleransı, tüm monolitin yedeklenmesiyle sağlanır. Ölçeklendirme zordur, tüm uygulama örneğinin ölçeklendirilmesi gerekir. Kaynak kullanımı genellikle fazladır.

Mikroservisler:

Her mikroservis ayrı bir süreç veya süreçler kümesi olabilir. İzole bir ortamda (konteyner, sanal makine) çalışır. Etkileşim genellikle ağ üzerinden, senkron veya asenkron protokoller (örneğin, RabbitMQ, Kafka) kullanılarak gerçekleşir. Her hizmetin kendi teknoloji yığını ve veritabanı olabilir. Ölçeklendirme bağımsızdır. Yüksek hata toleransı sağlar (bir hizmetin arızası diğerlerini etkilemez) ve kaynakların daha iyi kullanımı sağlar. Yönetim karmaşıklaşır (Service Discovery, API Gateway, dağıtılmış günlükleme ve izleme gereklidir).

Ağ üzerinden mikroservisler arası etkileşim örneği:

// Service A'ya istek
GET /users/123 HTTP/1.1
Host: service-a.example.com
// Service A'dan yanıt
HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 123,
  "username": "testuser"
}

Serverless:

Fonksiyon kodu bulut ortamına dağıtılır. Bulut sağlayıcı, belirli olaylara (HTTP istekleri, kuyruk mesajları, veritabanı değişiklikleri) yanıt olarak kodu çalıştırır. Altyapı (sunucular, işletim sistemi) sağlayıcı tarafından yönetilir. Fonksiyonlar genellikle kısa ömürlü ve durumsuzdur (ara bellekte durum saklamazlar). Ölçeklendirme otomatik olup olay sayısına bağlıdır. Kaynak kullanımı, yürütme sayısı ve süreye göre ücretlendirilir. Alt seviyede, sağlayıcı konteynerler veya sanal makineler kullanır, ancak bu seviye kullanıcıdan soyutlanmıştır.

Serverless fonksiyon örneği (AWS Lambda):

# Basit Lambda fonksiyonu
import json

def lambda_handler(event, context):
    # Giriş olayı işleme
    # Mantık yürütme
    response_body = {
        "message": "Lambda'dan merhaba!",
        "input": event
    }

    return {
        "statusCode": 200,
        "body": json.dumps(response_body)
    }

Karşılaştırmalı tablo:

Özellik Monolitik Mikroservisler Serverless
Mimari Tek kod tabanı Bağımsız hizmetler Olaylara dayalı yönetilen fonksiyonlar
Dağıtım Tek süreç Her hizmet bağımsızdır Sağlayıcı tarafından yönetilir
Ölçeklenebilirlik Yatay (kopyalama) Her hizmet bağımsızdır Otomatik, olaylara göre
Hata toleransı Düşük Yüksek (izole edilmiş) Yüksek (entegre)
Kaynak kullanımı Kısmen fazlalık Daha verimli Kullanıma göre ödeme
Yönetim karmaşıklığı Düşük Yüksek Düşük (altyapı için)
İletişim İç süreçler arasında Ağ üzerinden (API, mesajlar) Sağlayıcının olayları aracılığıyla