Ana içeriğe geç

Domain Topolojisi ve Mimari

Platform Domain Kavramı

vNext Runtime platformu, Domain kavramını temel alır. Domain, bir iş alanını, ürün grubunu veya ekip sorumluluğunu temsil eden izole edilmiş bir runtime ortamıdır.

Domain = Runtime Prensibi

Her domain, kendi bağımsız runtime'ına sahiptir. Bu prensip, platformun temel mimarisini oluşturur:

  • Bir domain = Bir vNext Runtime instance
  • Her domain tekil ve bağımsızdır
  • Domainler arası izolasyon tam olarak sağlanır

Domain Örnekleri

Bir kurumda domainler şu şekilde organize edilebilir:

Ürün Grubu Bazlı Domain

Onboarding Domain
├── vNext Runtime (onboarding)
├── Database (onboarding_db)
├── PubSub (onboarding_events)
└── State Store (onboarding_state)

Örnek: Müşteri kabul süreçlerini yöneten onboarding ekibinin kendi domain'i.

Ekip Sorumluluğu Bazlı Domainler

Entegrasyon Ekibi
├── IDM Domain (Kimlik yönetimi)
│ ├── vNext Runtime (idm)
│ └── Infrastructure
└── Notification Domain (Bildirim servisleri)
├── vNext Runtime (notification)
└── Infrastructure

Örnek: Entegrasyon ekibi, sorumluluğundaki IDM ve Notification sistemlerini ayrı domainler olarak yönetir.

Domain İzolasyonunun Faydaları

1. Altyapı İzolasyonu

Her domain kendi altyapı bileşenlerine sahiptir:

  • Database: Domain'e özel veritabanı
  • PubSub: Domain'e özel mesajlaşma kanalları
  • State Store: Domain'e özel durum yönetimi
  • Secrets: Domain'e özel güvenlik yapılandırması

2. Bağımsız Geliştirme

  • Her domain ekibi kendi hızında gelişebilir
  • Domain'ler arası bağımlılık minimum seviyededir
  • Versiyon yönetimi domain bazlı yapılır
  • Deployment bağımsız gerçekleştirilir

3. Ölçeklenebilirlik

  • Her domain ihtiyacına göre ölçeklendirilir
  • Yüksek yük alan domain'ler daha fazla kaynak alabilir
  • Düşük yük alan domain'ler minimum kaynakla çalışır
  • Kaynak kullanımı optimize edilir

4. Hata İzolasyonu

  • Bir domain'deki sorun diğerlerini etkilemez
  • Yedekleme ve geri yükleme domain bazlı yapılır
  • Bakım ve güncelleme bağımsız planlanır

Domainler Arası İletişim

Domainler birbirinden izole olmasına rağmen, iş gereksinimleri doğrultusunda iletişim kurabilirler:

1. API Gateway Üzerinden

┌─────────────┐ API Gateway ┌─────────────┐
│ Onboarding │◄──────────────────────►│ IDM │
│ Domain │ REST/HTTP Calls │ Domain │
└─────────────┘ └─────────────┘
  • Senkron iletişim
  • REST API çağrıları
  • HTTP Task kullanımı

2. Event-Driven Yapılar

┌─────────────┐ ┌─────────────┐
│ Payments │──┐ ┌──│Notification │
│ Domain │ │ Event Bus │ │ Domain │
└─────────────┘ │ (PubSub) │ └─────────────┘
│ │
├─────────┬────────┤
│ │ │
└────────Event────┘
  • Asenkron iletişim
  • Event-based entegrasyon
  • Gevşek bağlılık (Loose coupling)
  • DaprPubSub Task kullanımı

Multi-Domain Architecture (Context Seviyesi)

C4 Context seviyesinde vNext platformunun farklı domain'leri, kullanıcılar ve dış sistemler arasındaki ilişki:

Not: Mermaid C4 sözdiziminin Docusaurus desteği sınırlı olduğu için flowchart ile C4-benzeri sunum yapılır; semantik aynıdır.

Single Domain Internal Structure (Container Seviyesi)

Bir domain içinde çalışan vNext bileşenleri:

Domain Yönetimi Best Practices

Domain Sınırlarını Doğru Belirleyin

  • İş alanına göre: Her domain belirli bir iş fonksiyonunu temsil etmeli
  • Ekip sorumluluğuna göre: Domain sahipliği net olmalı
  • Ölçek ihtiyacına göre: Farklı yük karakteristiklerine sahip alanlar ayrı domain'ler olmalı

Domain İzolasyonunu Koruyun

  • Domain'ler arası doğrudan database erişimi yasaktır
  • Tüm iletişim API veya Event üzerinden olmalı
  • Shared infrastructure minimize edilmeli

Monitoring ve Observability

  • Her domain için ayrı monitoring dashboard'ları
  • Domain bazlı metrik toplama
  • Distributed tracing ile domain'ler arası çağrı takibi

Versiyon Yönetimi

  • Domain'ler bağımsız versiyonlanır
  • API contract'ları semantic versioning ile yönetilir
  • Breaking change'ler koordine edilir ancak deployment bağımsızdır

Domain Lifecycle

1. Domain Oluşturma

# Infrastructure provisioning
- Domain database oluşturma
- Domain state store yapılandırması
- Domain PubSub konfigürasyonu

# vNext Runtime deployment
- vnext-init ile system kurulum
- vnext-app deployment
- vnext-execution-app deployment

2. Domain İşletimi

  • Flow deployment ve yönetim
  • Monitoring ve alerting
  • Scaling ve optimization
  • Backup ve disaster recovery

3. Domain Retirement

  • Migration planlaması
  • Dependency analizi
  • Graceful shutdown
  • Data archiving

Sonuç

Domain topolojisi, vNext Runtime platformunun ölçeklenebilir, esnek ve yönetilebilir olmasını sağlayan temel mimari karardır. Her domain'in bağımsız runtime'a sahip olması, ekiplerin hızlı hareket etmesini, sistemin dayanıklı olmasını ve kaynakların verimli kullanılmasını mümkün kılar.

İlgili Dökümanlar