We design the most suitable architectures for your company.

Ana hizmet

Servisler arası tutarlılığı tasarımla çözün

Dağıtık sistemlerde hataların çoğu kodda değil, servislerin birbirine nasıl bağlandığında saklanır. Tutarlılık sonradan eklenmez, baştan tasarlanır.

Görüşme talep edin Mimari Değerlendirme ile başlayın

Süre
4 ila 10 hafta
Model
Tasarım ve referans kod
Çıktı
Hedef mimari ve ADR seti

Tutarlılık sorunlarının işaretleri

Bu belirtiler genellikle ayrı ayrı hata kaydı olarak açılır ve tek tek kapatılır. Kök neden ise ortak bir tasarım eksikliğidir.

  • Bir işlem yarıda kaldığında sistemler farklı durumlarda kalıyor ve elle düzeltiliyor.
  • Mesaj kuyruğunda kaybolan veya iki kez işlenen mesajlar var.
  • Bir servis yavaşladığında zincirdeki tüm servisler birlikte yavaşlıyor.
  • Raporlama sorguları işlem veritabanını yoruyor.
  • Aynı veri birden fazla serviste tutuluyor ve hangisinin doğru olduğu tartışılıyor.
  • Bir olayı uçtan uca izlemek için birden fazla sistemin loglarına bakmak gerekiyor.

Desen seçimi bir mühendislik kararıdır

Event sourcing, CQRS, Saga veya Outbox birer çözüm değil; belirli bir problemi belirli bir maliyetle çözen araçlardır. Yanlış yerde kullanıldıklarında çözdüklerinden fazla karmaşıklık getirirler.

Tasarım, sistemin gerçekte hangi tutarlılık seviyesine ihtiyaç duyduğunu belirlemekle başlar. Her işlemin anında tutarlı olması gerekmez; nerede nihai tutarlılığın yeterli olduğunu bilmek, sistemin ölçeklenebilirliğini belirler.

Her önemli karar, gerekçesi ve reddedilen alternatifleriyle birlikte yazılır. Böylece ekibiniz tasarımı yalnızca uygulamakla kalmaz, neden böyle olduğunu da bilir.

Kapsam

Dahildir

  • Sınırlı bağlamların (bounded context) belirlenmesi
  • Senkron ve asenkron iletişim kararları
  • Tutarlılık modeli ve işlem sınırları
  • Saga ve telafi (compensation) akışları
  • Outbox ve idempotency desenleri
  • Olay şeması ve sürüm yönetimi
  • Hata ve yeniden deneme politikaları
  • Referans uygulama

Dahil değildir

  • Tüm sistemin kodlanması
  • Veritabanı yönetimi ve işletimi
  • Performans testlerinin yürütülmesi
  • Ürün gereksinimlerinin belirlenmesi

Tasarım nasıl ilerliyor

  1. Hafta 1-2Event Storming. İş süreçleri ekibinizle birlikte olaylar üzerinden çıkarılır. Bağlam sınırları bu çalışmadan doğar.
  2. Hafta 3-4Tutarlılık modeli. Hangi işlemin hangi tutarlılık seviyesine ihtiyaç duyduğu belirlenir. Servisler arası iletişim biçimleri bu karara göre seçilir.
  3. Hafta 5-8Referans uygulama. Seçilen desenler çalışan kodla gösterilir: bir Saga akışı, Outbox ile olay yayını ve idempotent bir tüketici.
  4. Hafta 9-10Devir. Tasarım dokümanı, karar kayıtları ve referans kod ekibinizle birlikte gözden geçirilir.

Elinize ne geçiyor

Tasarımın her parçası, ekibinizin uygulayabileceği somut bir çıktıya dönüşür.

Bağlam haritası
Sınırlı bağlamlar, aralarındaki ilişkiler ve verinin sahibi.
Hedef mimari
Servisler, iletişim biçimleri ve veri akışı; C4 diyagramlarıyla.
Karar kayıtları (ADR)
Her önemli kararın gerekçesi, alternatifleri ve sonuçları.
Olay kataloğu
Sistemdeki olayların şeması, sahibi ve sürüm kuralları.
Referans uygulama
Seçilen desenlerin çalışan örneği; testleriyle birlikte.
Hata senaryoları
Her kritik akış için neyin ters gidebileceği ve sistemin nasıl davranacağı.

Bu hizmet kimin için değil

  • Tek bir veritabanı ve tek bir uygulamayla rahatça çalışan sistemler. Dağıtık mimari bir ihtiyaçtan doğmalı, bir hedef olmamalı.
  • Tasarımı yalnızca bir çizim olarak isteyen ve uygulamayı ekibiyle tartışmaya açık olmayan kurumlar.
  • Belirli bir deseni önceden seçmiş ve yalnızca onay bekleyen projeler.

Sık sorulanlar

Event sourcing kullanmamız gerekiyor mu?

Çoğu sistemde gerekmiyor. Event sourcing, geçmişin tam kaydının bir iş gereksinimi olduğu yerlerde değerlidir; diğer durumlarda gereksiz karmaşıklık getirir. Önerimiz sistemin ihtiyacına göre şekillenir.

Mikroservislere geçmeden bu tasarımı uygulayabilir miyiz?

Evet. Bağlam sınırları ve tutarlılık kuralları modüler bir monolit içinde de uygulanabilir. Çoğu durumda doğru ilk adım da budur.

Hangi teknolojilerle çalışıyorsunuz?

.NET, Go ve Python ekosistemleri; mesajlaşma tarafında Kafka ve RabbitMQ; veri tarafında PostgreSQL, MongoDB ve Redis. Tasarım teknolojiden bağımsızdır, referans uygulama ekibinizin kullandığı dilde yazılır.

Mevcut sistemimizde tutarlılık sorunları var, nereden başlamalıyız?

Mevcut bir sistemde önce sorunun nerede olduğunu ölçmek gerekir. Bu durumda Mimari Değerlendirme ile başlamanızı öneririz.

Kaynak kod ve dokümanlar kimde kalır?

Tamamı sizde. Tasarım dokümanları, diyagramlar ve referans kod ilk günden itibaren sizin mülkiyetinizdedir.

Tasarımınızı birlikte gözden geçirelim

Otuz dakikada sistemi anlatırsınız; biz tutarlılık sorunlarının nereden kaynaklandığına dair ilk görüşümüzü paylaşırız.

Görüşme talep edininfo@futureformative.net