Yandex Metrica
Dapr Nedir? Dapr'a Giriş - Yasin Sunmaz

Yasin Sunmaz

Kodladıkça değişen bir dünya...

Dapr Nedir? Dapr'a Giriş

14.12.2024 yasinsunmaz 235 0

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.

DAPR Sidecar

  • 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 Local Ortamda Kullanımı

Dapr esnek bir yapıya sahip olduğundan bu bileşenleri de kolaylıkla değiştirilebilir. 100'den fazla component mevcuttur

Dapr Components

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 Dashboard

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 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

Dapr Components

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.

Dapr Service Invocation

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.

Dapr Publish and Subscribe

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.

Dapr Workflows

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.

Dapr State Management

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.

Dapr Bindings

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.

Dapr Actors

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.

Dapr Secrets

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.

Dapr Configuration

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.

Dapr Distributed Lock

Cryptography

Dapr, şifreleme anahtarlarını uygulamanıza göstermeden mesajları şifrelemek ve şifrelerini çözmek gibi işlemleri gerçekleştirmenize olanak tanır.

Dapr Cryptography

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.

Dapr Jobs

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:

https://dapr.io/

  • Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.

Diğer Yazılar

RedisConnectionException Hatası ve Çözümü: AbortOnConnectFail=false

31.07.2023 yasinsunmaz 1784 0

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...

ASP.NET Core Web API'de Parametre Bağlama Yöntemleri: FromQuery, FromBody ve FromRoute

12.07.2023 yasinsunmaz 2240 0

ASP.NET Core web API projeleri, istemcilerden gelen verileri API metotlarıyla etkileşimde bulunmak için kullanılır. Bu verileri doğru bir şekilde almak ve işlemek içi...

Deployment Stratejileri (Blue Green, Rolling Update/Rollback) Nedir?

23.06.2023 yasinsunmaz 1711 0

Yazılım geliştirme sürecinde, uygulamaları güncellemek ve yeni sürümleri piyasaya sürmek önemli bir adımdır. Ancak, kullanıcıların kesintisiz hizmet a...

SonarQube Kurulumu: Adım Adım Kılavuz

18.06.2023 yasinsunmaz 2583 0

SonarQube, açık kaynaklı bir statik kod analizi platformudur ve geliştiricilere kod kalitesini, güvenliğini ve performansını iyileştirmeleri için yardımcı olur. ...

SOLID Yazılım Prensipleri

26.11.2022 yasinsunmaz 1037 0

SOLID prensipleri yazılım geliştirmede başlarda anlayıp uygulaması zor olsa da buna uyarak kod geliştirmenin faydasını zamanla görebilirsiniz. Yazdığınız kodlarda sonradan yap...

Visual Studio Kullanırken Hızınıza Hız Katacak Kısayollar

06.11.2022 yasinsunmaz 3008 0

Visual Studio kullanırken işlemlerimizi fare ile yapmak ister istemez bir zaman kaybına neden olabiliyor. Hızlı ve efektif kullanabilmek adına Visual Studio'da kullanabileceğiz...

YouTube ve Website Videolarındaki Yazıları Kopyalama

14.09.2022 yasinsunmaz 18340 0

Öncesinde paylaştığım fakat blog yazımda bahsetmediğim işinize yarayacak çok güzel iki eklentiyi sizinle paylaşmak istiyorum. YouTube veya Udemy gibi platformlarda...

Yazılımcılar İçin Faydalı API'ler

08.09.2022 yasinsunmaz 21874 0

Günümüz teknolojilerinde hemen hemen birçok işlemde API kullanıyoruz. Farklı platformlar veya teknolojilerden kaynaklı olarak API'lere ihtiyaç duya...