Dapr #

(Distributed Application Runtime)


Dapr’a Giriş #

Dapr, mikroservis tabanlı uygulamaların geliştirilmesini ve çalıştırılmasını kolaylaştıran, open-source bir sidecar ürünüdür.

Sidecar Pattern Nedir? #

Sidecar Pattern, yardımcı bir bileşenin (sidecar) ana uygulamaya eklenmesiyle (container veya process), uygulamanın iş mantığına müdahale etmeden ortak görevlerin yürütülmesini sağlar. Güvenlik, logging ve dinamik yapılandırma gibi cross cutting concerns’leri yönetmek için idealdir.

Cross Cutting Concerns Nedir? #

Cross cutting concerns, yazılım sisteminde birçok modül veya katmanda ortak olan ve tekrarlanan fonksiyonel özelliklerdir. Güvenlik, logging, hata yönetimi, performans izleme gibi konular bu kapsamda değerlendirilir. Bunlar, sistemin bakımını ve genişletilebilirliğini artırır.

Sidecar Pattern’in Avantajları #

  • Yardımcı hizmetleri izole eder.
  • Uygulamanın modülerliğini ve yeniden kullanılabilirliğini artırır.
  • Yönetimi ve bakımı kolaylaştırır.

Örnek Sidecar: Resiliency (Dayanıklılık) #

  • Resiliency, bir sistemin hatalardan kurtulma ve hizmet vermeye devam etme yeteneğidir. Sidecar kullanarak bir mikroservise resiliency özellikleri
    eklemek, özellikle ağ hataları veya diğer geçici sorunlar durumunda hizmet sürekliliğini sağlamak için etkilidir. Bu sidecar, otomatik yeniden deneme
    (retry), devre kesici (circuit breaker) ve zaman aşımı (timeout) gibi dayanıklılık desenlerini uygular.

Örnek Sidecar: Resiliency (Dayanıklılık) #

  • Bizler de sidecar’larda örneği uygulamamıza gelen trafiği sadece sidecar üstünden alabiliriz ve gelen istekleri sidecar içerisinde resiliency görevi
    görecek kodlardan geçiririz ve uygulamamızın ayakta olmadığı durumda resiliency policy’lerine göre tekrar istek atma veya istek durdurma sürecine geçer.

Dapr’ın Amacı ve Faydaları #

  • Uygulama mantığını değiştirmeden dağıtılmış sistemlerin yaygın ihtiyaçlarını karşılamak için çeşitli yapı taşları (building blocks) ve birçok farklı özellik sunar.

  • HTTP ve gRPC protokolleri üzerinden çalışarak çoklu programlama dilleriyle uyumluluk sunar.

  • Kolay programlayabilmek için birçok farklı dilde SDK’ları vardır.

Dapr’ın Temel Bileşenleri #

Service Invocation* #

State Management* #

Secrets Management* #

Configuration* #

Dapr’ın Temel Bileşenleri #

Pub/Sub Messaging #

Bindings #

Distributed lock #

Cryptography #

Actors #

Workflow #


Dapr’ın Diğer Özellikleri #


Resiliency* #

Hata toleransı sağlamak için zaman aşımı, yeniden deneme, devre kesici ve geri çekilme gibi politikalar tanımlamayı ve uygulamayı destekler.

Dapr’ın Diğer Özellikleri #


Observability #

Open Telemetry ve Zipkin gibi protokollerle izleme verilerini toplar ve birçok gözlemlenebilirlik aracıyla entegrasyon sağlar.

Dapr’ın Diğer Özellikleri #


Security #

Varsayılan olarak etkin güvenlik özellikleri sunar, API’lar, servisler ve bileşenler için uygulamaya özel politikalar ayarlama imkanı sağlar. İletişim mTLS ile otomatik olarak şifrelenir.

Service Invocation #

Mikroservisler arası iletişim sağlar.
HTTP veya gRPC ile çalışır.
Servis keşfi ve yük dengeleme özellikleri içerir.
Servislerdeki iletişimde araya girdiği için security, resiliency, observability gibi yapıları da bu istekler çalıştığı anda uygulayabilir.


State Management #

Uygulamalarda durum (state) kalıcılığı sağlar.

Key/value tabanlı durum depolamada görev alır.

Farklı ürünler ile entegre edilebilir (Redis, MongoDB, SQLs*, In-Memory, etcd, vb…).

State Management #

State Store Example


Secrets Management #

Güvenlik açısından hassas bilgilerin korunmasını sağlar.

Şifreler, API anahtarları, güvenlik sertifikaları gibi gizli bilgilerin yönetimini içerir.

Erişim kontrolü ve şifreleme kullanılarak güvenli bir şekilde saklanır ve erişilir.

Farklı ürünler ile entegre edilebilir (Azure Key Vault, AWS Secrets Manager, HashiCorp Vault, vb.).

Secrets Management #

Secrets Management Example

Configuration Management #

Uygulamanın çalışma şeklini belirleyen ayarların yönetimini sağlar.

Uygulama ayarları, çevresel değişkenler ve yapılandırma dosyalarını içerir.

Uygulama yeniden başlatılmadan veya kod değiştirilmeden kolayca güncellenebilir.

Farklı ürünler ile entegre edilebilir (Redis, Consul, Kubernetes ConfigMaps, Azure App Configuration vb.).

Configuration Management #

Configuration Management Example

Demo #

Dinlediğiniz için teşekkürler #

Kaynaklar: dapr.io - ChatGPT

Örnekler Reposu: aimtune/dapr-examples