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 |