Redis, popüler bir açık kaynaklı veri yapısı sunucusudur ve günümüzde birçok uygulama tarafından kullanılmaktadır. Ancak, bu tür veri tabanla...
Dapr Nedir? Dapr'a Giriş
Mikroservislerin Gizemi: Karmaşık Altyapı Sorunlarına Kolay Çözüm
Günümüzde mikroservis tabanlı uygulamalar geliştirmek, teknolojik açıdan bir devrim olsa da, pek çok karmaşık sorunu da beraberinde getiriyor.
Pub/Sub iletişimi için hangi aracı kullanmalıyım?
Şifre yönetimi için hangi çözüm daha güvenli?
Servisler arasında iletişim nasıl güvenilir bir hale getirilebilir?
Cache için Redis mi tercih edilmeli yoksa alternatif başka bir çözüm mü?
Tüm bu sorulara yanıt bulmaya çalışmak, projelerde ciddi bir zaman ve efor kaybına neden olabilir. Her biri için farklı araçları araştırmak, test etmek ve entegre etmek gerektiğini düşününce, işlerin daha da karmaşıklaştığını fark ediyoruz.
İşte tam bu noktada Distributed Application Runtime (Dapr) devreye giriyor! Dapr, mikroservis geliştirme süreçlerinizi kolaylaştırmak, altyapı sorunlarını soyutlamak ve size hız kazandırmak için tasarlanmış güçlü bir araçtır.
Bu yazıda, Dapr’ın ne olduğunu, neden ihtiyaç duyduğumuzu ve mikroservis dünyasında hayatınızı nasıl kolaylaştırabileceğiniz hakkında bilgi sahibi olacaksınız.
DAPR Nedir?
- Dapr, Microsoft tarafından 2019'da duyuruldu.
- Taşınabilir, güvenilir ve dayanıklı mikro hizmetleri kolay ve hızlı bir şekilde geliştirmemize olanak tanır.
- Platform ve yazılım dilinden bağımsız, bulutta yerel uygulama geliştirme süreçlerini de kolaylaştırır. (Dapr ile aynı anda Asp .Net Core, Go, Pyhton, Node Js vs. gibi bir çok yazılım dili haberleşmeyi olanak sağlar)
- Mikroservisler için ortak altyapı işlevlerini soyutlayarak geliştirilmeyi kolaylaştırır.
DAPR Neler Sağlıyor?
- İletişim modeliniz ister servisten servise çağırma, isterse pub/sub mesajlaşma olsun, Dapr esnek ve güvenli mikro servisler yazmanıza yardımcı olur.
- Mikro servis bağlantısını basitleştiren API’ler sağlar.
- Dapr sidecar, service discovery, message broker integration, encryption, observability ve secret management gibi karmaşık zorluklarla ilgilenir.
DAPR Sidecar Mimarisi
- Dapr, HTTP ve gRPC API'lerini sidecar mimarisi ile sunar.
- Bu mimaride Dapr, uygulamanın içine eklenmez; ayrı bir container ya da süreç olarak çalışır.
- Uygulama koduna Dapr'ın çalışma zamanı (runtime) kodlarını eklemek gerekmez, bu da uygulama mantığını Dapr’dan ayırarak entegrasyonu kolaylaştırır.
- Sidecar Pattern
- Her mikroservisin yanında çalışan bir Dapr sidecar ile entegre çalışır.
- Dapr CLI ve SDK Çalışması
- Geliştiricilere CLI (komut satırı arayüzü) ve çeşitli programlama dilleri için SDK’lar sunar.
- API Tabanlı Çalışması
- RESTful ya da gRPC üzerinden sağlanan Dapr API'lerini kullanarak servisler arasında mesajlaşma, durum yönetimi gibi işlevleri kullanılabilir.
DAPR Local Ortamda Kullanımı
- Dapr, her servis için ayrı bir sidecar süreci olarak çalışır ve bu sürece, servis kodunuz HTTP ya da gRPC üzerinden çağrı yapabilir.
- Her çalışan servis, durumsal depolar (state stores), pub/sub mesajlaşma, binding bileşenleri gibi Dapr'ın sunduğu yapı taşlarını kullanacak şekilde Dapr runtime süreci (ya da sidecar) ile yapılandırılır.
- Yerel makinede Dapr CLI'yi kullanılabilir.
Dapr esnek bir yapıya sahip olduğundan bu bileşenleri de kolaylıkla değiştirilebilir. 100'den fazla component mevcuttur
DAPR Dashboard
- Dapr tabanlı uygulamaları yönetmek ve izlemek için kullanılan bir web tabanlı arayüzdür.
- Dashboard, Dapr sidecar’larının durumlarını, yapılandırmaları ve uygulamanın bileşenlerini görsel olarak sunarak geliştiricilere kolay izleme ve yönetim imkanı sağlar.
- Sidecar logları ve metrikleri görüntüleyerek sorunlar tespit edilebilir.
Dapr dashboard adresinden hizmet verir:
http://localhost:8080
DAPR Zipkin
- Zipkin, dağıtık sistemlerde izleme (tracing) verilerini toplayan ve görselleştiren bir araçtır.
- Dapr, her isteği otomatik olarak Zipkin'e gönderir, böylece geliştiriciler servisler arası iletişimi ve olası performans sorunlarını kolayca analiz edebilirler.
- Mikroservis tabanlı sistemlerde gözlemlenebilirlik sağlayarak hata ayıklama ve performans iyileştirmeye yardımcı olur.
Zipkin adresinden hizmet verir:
http://localhost:9411/zipkin/
DAPR Components
Dapr’ın sağladığı başlıca hizmetler
- Service to-service invocation
- Publish and subscribe
- Workflows
- State management
- Bindings
- Actors
- Secrets
- Configuration
- Distributed lock
- Cryptography
- Jobs
Service Invocation
Service inovation kullanarak uygulamanız, standart gRPC veya HTTP protokollerini kullanan diğer uygulamalarla güvenilir ve güvenli bir şekilde iletişim kurabilir.
Publish and Subscribe
Publish(yayıncı) bir giriş kanalına mesaj yazar ve bunları hangi uygulamanın alacağını bilmeden bir konuya gönderir. Subcribe(abone), konuya abone olur ve bu mesajları hangi servisin ürettiğinden habersiz bir çıkış kanalından mesaj alır.
Workflows
Dapr iş akışı, geliştiricilerin iş mantığını ve entegrasyonları güvenilir bir şekilde yazmasını kolaylaştırır. Dapr iş akışı, hizmet çağırma, pub/sub, durum yönetimi ve bağlamalar gibi diğer Dapr yapı taşlarıyla sorunsuz bir şekilde çalışır. İş akışlarını yönetmek için HTTP ve gRPC API'leri sağlar.
State Management
Uygulamalarda, desteklenen state management anahtar/değer çiftlerini kaydetmek, okumak ve sorgulamak için kullanılır. Anahtar/değer çiftlerini kaydetmek için HTTP POST kullanılır. Belirli bir anahtarı okumak için HTTP GET kullanılır.
Bindings
Uygulamanızı harici sistemlerden gelen olaylara veya harici sistemlerle arayüzle tetikleyebilirsiniz.
Input Binding: Harici sistemlerden (örneğin bir mesaj kuyruğu, zamanlayıcı) gelen olayları alarak uygulamanın tetiklenmesini sağlar.
Output Binding: Uygulamanın, verileri harici sistemlere (örneğin bir e-posta servisi ya da bir depolama birimi) göndermesine olanak tanır.
Actors
Her actor, kendi durumuna ve mantığına sahip, kendi başına çalışır ve mesajlar üzerinden iletişim kurar. Her actor kendi durumunu yönetir ve bu durum Dapr tarafından otomatik olarak kalıcı hale getirilebilir. Her actor, aynı anda yalnızca bir mesajı işler, bu da eşzamanlılık sorunlarını çözmeye yardımcı olur.
Secrets
Dapr'da Secret (gizli anahtar), uygulamaların hassas bilgileri güvenli bir şekilde saklamasını ve bu bilgilere erişmesini sağlar. Geliştiriciler, farklı gizli anahtar yönetim çözümlerini entegre etmek için Dapr'ın API'sini kullanarak fazla kod yazmadan bu verilere ulaşabilir.
Configuration
Uygulamaların çalışma zamanı sırasında ihtiyaç duyduğu dinamik yapılandırma verilerini yönetmek için kullanılır. Yapılandırma değiştirildiğinde, Dapr uygulamaya bu değişiklikleri bildirebilir ve uygulama yeni yapılandırmayı yükleyebilir. Dapr'ın Configuration API'si ile yapılandırma verilerine uygulama kodundan kolayca erişilebilir ve yönetilebilir.
Distributed Lock
Bir kaynağa karşılıklı olarak özel erişim sağlamak için kullanılır. İlk uygulama örneği, adlandırılmış kilidi alır ve özel erişim elde eder. İkinci uygulama örneği kilidi alamıyor ve bu nedenle kilit serbest bırakılana kadar kaynağa erişmesine izin verilmiyor.
Cryptography
Dapr, şifreleme anahtarlarını uygulamanıza göstermeden mesajları şifrelemek ve şifrelerini çözmek gibi işlemleri gerçekleştirmenize olanak tanır.
Jobs
Birçok uygulama iş planlamasını veya gelecekte eyleme geçme ihtiyacı için işleri belirli bir zamanda veya belirli bir aralıkta planlanabilir. Otomatik veritabanı yedeklemeleri, e-posta bildirimleri, arka plan işlemleri gibi süreçler yapılabilir.
Bu yazıda Dapr'ın ne olduğunu ve mikroservis dünyasında hangi sorunlara çözüm sunduğunu genel hatlarıyla ele aldık. Dapr’ın sunduğu kolaylıklar sayesinde karmaşık altyapı problemlerini nasıl aşabileceğimizi görmek, onun ne denli güçlü bir araç olduğunu anlamamızı sağlıyor.
Bir sonraki yazımda, Dapr'ın nasıl kurulacağını ve uygulamalı olarak nasıl kullanılabileceğini detaylı bir şekilde inceleyeceğiz. Eğer mikroservislerinizi bir sonraki seviyeye taşımak istiyorsanız, takipte kalın!
Sorularınız ya da görüşleriniz varsa, yorumlarda paylaşmayı unutmayın. Birlikte öğrenip büyümek dileğiyle, iyi çalışmalar!
Kaynak:
Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.