Microservice Mimarisinde Haberleşme ve CAP Kullanımı

Mikroservis mimarisi, modern uygulamaların daha ölçeklenebilir, esnek ve yönetilebilir hale gelmesini sağlar. Ancak mikroservislerin artmasıyla birlikte servisler arası iletişim ve veri tutarlılığı gibi konular önem kazanır. Bu noktada, CAP (Catch Application Performance) frameworkü devreye girer. Bu yazıda, .NET 9 teknolojisi kullanılarak mikroservisler arasında nasıl haberleşme sağlandığını ve CAP framework’ünün nasıl entegre edildiğini detaylarıyla inceleyeceğiz.

İçindekiler

  1. Mikroservis Mimarisi Nedir?
  2. Mikroservislerde Haberleşme Türleri
  3. CAP Nedir?
  4. Dotnet 9 ile CAP Entegrasyonu
  5. Örnek: Basit Bir Sipariş Mikroservisi
  6. Görseller ile Anlatım
  7. Sonuç
  8. Sıkça Sorulan Sorular (SSS)

Mikroservis Mimarisi Nedir?

Mikroservis mimarisi, büyük ve karmaşık yazılım sistemlerini, bağımsız dağıtılabilir birçok küçük servise bölerek geliştirme yöntemidir. Her servis kendi veritabanına ve iş mantığına sahiptir.

Avantajları:

  • Bağımsız geliştirme ve dağıtım
  • Hızlı hata ayıklama
  • Kolay ölçeklenebilirlik

Mikroservislerde Haberleşme Türleri

Mikroservisler arasında verimli bir haberleşme olması için genellikle iki yöntem tercih edilir:

  • Senktron Haberleşme (HTTP, gRPC): Anlık cevap beklenir. Genellikle REST API veya gRPC kullanılır.
  • Asenkron Haberleşme (Message Queue): Mesaj bir kuyruğa gönderilir. RabbitMQ, Kafka gibi sistemlerle cevap daha sonra alınır. Özellikle event-driven architecture için tercih edilir.

Not: Birçok sistemde, performans ve ölçeklenebilirliği artırmak için asenkron tasarım tercih edilir.

CAP Nedir?

CAP (aka DotNetCore/CAP), .NET tabanlı uygulamalarda event-based (olay tabanlı) mimari kurmanıza yardımcı olan açık kaynaklı bir framework’tür. CAP aşağıdaki hizmetleri sağlar:

  • Event publishing/subscribing
  • Transaction-based mesaj yönetimi
  • RabbitMQ, Kafka, ActiveMQ destekleri
  • SQL Server, MongoDB ve diğer veri tabanı destekleri

💡 CAP, mesajları doğrudan veritabanı işlemleriyle entegre bir şekilde işler. Böylece veri tutarlılığı sağlanır.

Dotnet 9 ile CAP Entegrasyonu 💻

.NET 9 ile CAP kullanımı oldukça kolaydır. Aşağıda adım adım örnek bir kurulum göreceksiniz. Örnek olarak RabbitMQ kullanacağız.

1. Gerekli NuGet Paketleri

dotnet add package DotNetCore.CAP
dotnet add package DotNetCore.CAP.RabbitMQ
dotnet add package DotNetCore.CAP.SqlServer

2. Program.cs – CAP Konfigürasyonu

builder.Services.AddCap(options =>
{
    options.UseSqlServer("Server=localhost;Database=OrderDB;User Id=sa;Password=yourpassword;");
    options.UseRabbitMQ(cfg =>
    {
        cfg.HostName = "localhost";
        cfg.UserName = "guest";
        cfg.Password = "guest";
    });
    options.UseDashboard(); // CAP Dashboard'u aktif eder.
});

3. Publisher – Event’i Yayımlama

public class OrderService
{
    private readonly ICapPublisher _capBus;

    public OrderService(ICapPublisher capPublisher)
    {
        _capBus = capPublisher;
    }

    public async Task CreateOrderAsync(Order order)
    {
        // Siparişi veritabanına kaydet
        await _db.Orders.AddAsync(order);
        await _db.SaveChangesAsync();

        // CAP Event yayınla
        await _capBus.PublishAsync("order.created", order);
    }
}

4. Subscriber – Olayı Dinleme

public class NotificationService
{
    [CapSubscribe("order.created")]
    public void SendNotification(Order order)
    {
        Console.WriteLine($"Yeni sipariş bildirimi: {order.Id}");
        // Mail veya SMS gönderme işlemleri
    }
}

Görsel ile Anlatım

Aşağıdaki diyagram, mikroservisler arası CAP tabanlı haberleşmeyi gözler önüne seriyor:

📌 Microservice–CAP–RabbitMQ Etkileşim Diyagramı

Microservice CAP Communication Diagram

Kaynak: github.com/dotnetcore/CAP

Gerçek Dünya Senaryosu: Sipariş Yönetimi

Senaryo: Bir alışveriş uygulamasında sipariş oluşturulduğunda, stok güncellenmeli ve kullanıcıya bildirim gitmeli.

🧱 Katılan Mikroservisler:

  • OrderService
  • StockService
  • NotificationService

CAP ile oluşturulan bir “order.created” olayı, tüm bu servisler tarafından dinlenebilir ve buna göre işlem yapılabilir.

Bu tasarım, loose coupling (gevşek bağlı) yapı sayesinde geliştirilebilirliği artırır.

CAP Dashboard

CAP, entegre bir web tabanlı dashboard arayüzü ile tüm olayları ve mesaj kuyruklarını gözlemlemeye izin verir. Şuraya gidin:

http://localhost:5000/cap

📷 Dashboard’dan örnek görsel:

CAP Dashboard Example

Sonuç

CAP, mikroservis yapısında güvenli ve tutarlı bir şekilde event yayınlamanızı ve işlemenizi sağlayan güçlü bir araçtır. .NET 9’un getirdiği performans artırımları ile birleştiğinde, event-driven uygulamalar oluşturmak hiç bu kadar kolay olmamıştı.

🚀 Eğer modern, ölçeklenebilir bir mimari kurmak istiyorsanız, CAP kesinlikle öğrenmeniz gereken bir teknoloji.

Sıkça Sorulan Sorular (SSS)

CAP hangi mesaj kuyruklarını destekler?

CAP, RabbitMQ, Kafka, Azure Service Bus, ActiveMQ gibi birçok mesajlaşma sistemini destekler.

CAP transaction güvenliği sağlar mı?

Evet, CAP transactional event publishing sunar. Veritabanı ile mesaj publish işlemi aynı transaction içinde garanti edilir.

CAP için özel bir ORM gerekir mi?

Hayır, EF Core, Dapper gibi popüler ORM’lerle uyumludur.

Anahtar Kelimeler (SEO için)

  • mikroservis mimarisi
  • dotnet 9 microservices
  • CAP framework nedir
  • .NET CAP kullanımı
  • RabbitMQ ile CAP
  • microservice event-driven dotnet
  • dotnet core event bus
  • CAP vs MassTransit vs NServiceBus

Kaynaklar

💬 Yorumlarınızı bırakmayı ve yazıyı paylaşmayı unutmayın! Her türlü soru için yorumlarda buluşalım. 😊Microservices Communication Methods Infographic

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir