ERP Sistemlerinde Integration Endpoint Mimarisi: Dış Sistem Bağlantılarını Nasıl Düşünmeli?
Bir ERP süreci dışarıdaki bir servise, veritabanına ya da mesajlaşma katmanına ulaştığında asıl mesele sadece bağlantının çalışması değildir. Bağlantının nerede tanımlandığı, kimin kullandığı, ne zaman açıldığı ve hata verdiğinde ne olduğu mimari kararın parçasıdır.
Bu rehber bir ürün konfigürasyonu öğretmez. Amaç, dış bağlantıları business logic'in içine gömmeden nasıl değerlendireceğinize dair basit ve tekrar kullanılabilir bir mental model vermektir.
İçindekiler
- 5 Dakikada Konu
- Mental Model
- Endpoint Aslında Hangi Problemi Çözer?
- Configuration, Credential ve Yetki Nerede Yaşamalı?
- Connection Lifecycle, Timeout ve Resilience
- Observability: Bağlantı Çalışıyor mu, Yoksa Anlaşılabiliyor mu?
- Nerede Yanlış Anlaşılır?
- Araştırırken Neye Bakmalıyım?
- One Page Cheat Sheet
- TROIA Araştıranlar İçin Not
5 Dakikada Konu
Endpoint, bir iş sürecinin dış yeteneğe erişirken kullandığı kontrollü temas noktasıdır. İş kuralı, hangi müşteri bilgisinin gönderileceğini veya hangi onayın gerektiğini belirler; endpoint ise nereye, hangi kimlikle, hangi sınırlarla ve hangi izleme sinyalleriyle gidileceğini taşır.
Temel ayrım
İş süreci dış sistemin adresini, parolasını veya retry sayısını bilmemelidir. Bunlar bağlantı katmanının sorumluluğudur. Böylece aynı dış yetenek farklı süreçlerce aynı denetimlerle kullanılabilir.
Mental Model
İş sürecinden dış yeteneğe endpoint akışı
- 1
Business Process
İş kuralı ve karar bağlamı.
- 2
Connection / Endpoint Abstraction
Bağlantı tanımı, erişim politikası ve çalışma sınırları.
- 3
External Capability
API, veritabanı, mesajlaşma, vector database veya başka bir servis.
Bu ayrım, teknik soyutlama uğruna soyutlama değildir. Adres değişikliği, sertifika yenileme, erişim daraltma veya hata takibi gerektiğinde iş sürecini yeniden yazmadan hareket edebilmenin yoludur.
Endpoint Aslında Hangi Problemi Çözer?
| Soru | Bağlantı business logic içindeyse | Endpoint katmanı varsa |
|---|---|---|
| Adres veya protokol değişirse | Birden çok süreçte kod değişikliği aranır. | Tanım ve tüketim sınırı gözden geçirilir. |
| Kim erişebilir? | Yetki çağrının içinde dağılabilir. | Kullanıcı, profil veya servis kimliği üzerinden politika kurulur. |
| Hata nerede görülür? | Dağınık log ve farklı mesajlar oluşur. | Ortak correlation, hata sınıfı ve metrik üretilebilir. |
Soru
Adres veya protokol değişirse
Bağlantı business logic içindeyse
Birden çok süreçte kod değişikliği aranır.
Endpoint katmanı varsa
Tanım ve tüketim sınırı gözden geçirilir.
Soru
Kim erişebilir?
Bağlantı business logic içindeyse
Yetki çağrının içinde dağılabilir.
Endpoint katmanı varsa
Kullanıcı, profil veya servis kimliği üzerinden politika kurulur.
Soru
Hata nerede görülür?
Bağlantı business logic içindeyse
Dağınık log ve farklı mesajlar oluşur.
Endpoint katmanı varsa
Ortak correlation, hata sınıfı ve metrik üretilebilir.
Point-to-point bağlantı, iki sistemin kısa yoldan birbirine ulaşmasını sağlar. Endpoint yaklaşımı ise bu bağlantıyı tanımlanabilir, denetlenebilir ve değiştirilebilir bir kapasite olarak ele alır. Küçük bir entegrasyonda fark önemsiz görünebilir; aynı servise farklı süreçler, ekipler ve ortamlar erişmeye başladığında fark büyür.
Configuration, Credential ve Yetki Nerede Yaşamalı?
Bağlantı konfigürasyonu iş kuralından ayrılmalıdır: hedef, protokol, sertifika, zaman sınırı ve güvenli sır bilgisi ayrı yönetilen bir tanımda düşünülmelidir. Böylece test ve üretim farkı, gizli bilginin rotasyonu ve erişim denetimi kod değişikliğine dönüşmez.
- Credential kaynak kodda, ekran parametresinde veya serbest metin logunda görünmüyor mu?
- Erişim, sadece 'sisteme girebilen' herkese açık olmak yerine kullanıcı/profil/servis ihtiyacına göre sınırlandırılmış mı?
- Bir sürecin ihtiyacı olan izin ile yönetsel konfigürasyon izni ayrılmış mı?
- Aynı dış servis için farklı amaçlar ve ortamlar bilinçli olarak ayrılmış mı?
Connection Lifecycle, Timeout ve Resilience
Bağlantının ömrü, ihtiyacı kadar kısa ve davranışı görünür olmalıdır. Sürekli açık tutmak bazen gecikmeyi azaltır; fakat kaynak tüketimi, kopuk bağlantı ve havuz baskısı riski getirir. Her çağrıda açıp kapatmak da maliyetli olabilir. Doğru karar, iş yükü, oturum modeli, bağlantı havuzu ve hata sonrası toparlanma davranışı birlikte değerlendirilerek verilir.
| Kavram | Sormanız gereken soru |
|---|---|
| Timeout | İş sürecinin bekleyebileceği üst sınır nedir; kullanıcıya ve kuyruktaki işe etkisi ne olur? |
| Retry | Hata geçici mi, işlem tekrarlandığında çift kayıt ya da çift mesaj riski doğar mı? |
| Circuit breaking | Sorunlu dış servis çağrıları, sağlıklı süreçleri de tüketmeden nasıl sınırlanacak? |
| Idempotency | Aynı isteğin yeniden gelmesi güvenle tanınabiliyor mu? |
Kavram
Timeout
Sormanız gereken soru
İş sürecinin bekleyebileceği üst sınır nedir; kullanıcıya ve kuyruktaki işe etkisi ne olur?
Kavram
Retry
Sormanız gereken soru
Hata geçici mi, işlem tekrarlandığında çift kayıt ya da çift mesaj riski doğar mı?
Kavram
Circuit breaking
Sormanız gereken soru
Sorunlu dış servis çağrıları, sağlıklı süreçleri de tüketmeden nasıl sınırlanacak?
Kavram
Idempotency
Sormanız gereken soru
Aynı isteğin yeniden gelmesi güvenle tanınabiliyor mu?
Retry, 'hata olursa yeniden dene' cümlesinden ibaret değildir. İşlemin tekrar güvenliği ve sahibinin kim olduğu net değilse retry, asıl hatadan daha pahalı bir veri tutarsızlığı yaratabilir.
Observability: Bağlantı Çalışıyor mu, Yoksa Anlaşılabiliyor mu?
Bir endpoint için yalnızca başarı/başarısızlık saymak yetmez. Hangi süreç, hangi hedef, hangi yetki bağlamı, hangi süre ve hangi hata sınıfı ile çağrı yaptı sorularını ilişkilendirebilmek gerekir. Correlation ID, süre dağılımı, timeout oranı, retry sayısı ve hata nedeninin ayrıştırılması bu yüzden değerlidir.
- İstek ve iş sonucu aynı izleme kimliğiyle ilişkilendirilebiliyor mu?
- Başarı oranı yanında p95 gecikme ve timeout oranı görülüyor mu?
- Kimlik veya erişim hatası, ağ hatası ve dış servis hatası birbirinden ayrılıyor mu?
- Sır bilgilerinin maskelendiği, fakat teşhis için yeterli bağlamın korunduğu bir log tasarımı var mı?
Nerede Yanlış Anlaşılır?
| Anti-pattern | Neden risklidir |
|---|---|
| Her süreç kendi bağlantı bilgisini taşır | Değişiklik ve güvenlik denetimi dağılır. |
| Tek bir teknik kullanıcı her yere erişir | En az yetki ilkesi ve olay analizi zayıflar. |
| Timeout yoktur veya çok yüksektir | Kuyruklar, thread'ler ve kullanıcı deneyimi gereksizce baskılanır. |
| Başarısız çağrı sadece hata metni döndürür | Kök neden ile iş etkisi ilişkilendirilemez. |
Anti-pattern
Her süreç kendi bağlantı bilgisini taşır
Neden risklidir
Değişiklik ve güvenlik denetimi dağılır.
Anti-pattern
Tek bir teknik kullanıcı her yere erişir
Neden risklidir
En az yetki ilkesi ve olay analizi zayıflar.
Anti-pattern
Timeout yoktur veya çok yüksektir
Neden risklidir
Kuyruklar, thread'ler ve kullanıcı deneyimi gereksizce baskılanır.
Anti-pattern
Başarısız çağrı sadece hata metni döndürür
Neden risklidir
Kök neden ile iş etkisi ilişkilendirilemez.
Endpoint katmanı bir entegrasyon platformu satın alma gerekçesi değildir. Önce hangi sorumlulukların ayrılması gerektiğini netleştirin; araç seçimi ancak bu çerçeveden sonra anlamlı olur.
Araştırırken Neye Bakmalıyım?
- Connection configuration nerede yaşar ve ortamlar arasında nasıl ayrışır?
- Credential ve erişim politikası business logic'ten ayrılmış mı?
- Aynı dış servise farklı süreçlerden erişim hangi ortak sınırlarla kontrol edilir?
- Bağlantı ne zaman açılır, kapanır ve tükenirse ne olur?
- Timeout, retry ve idempotency kararlarının iş etkisi tanımlı mı?
- Monitoring, hata takibi ve correlation hangi seviyede üretilir?
One Page Cheat Sheet
| Hatırla | Kısa karşılık |
|---|---|
| Business process | Ne yapılacağını bilir; nereye bağlanılacağını değil. |
| Endpoint abstraction | Bağlantı, erişim ve çalışma sınırlarını tek noktada düşünür. |
| Credential | Koddan ayrıdır, maskelenir ve döndürülür. |
| Resilience | Timeout + güvenli retry + kapasite sınırı birlikte ele alınır. |
| Observability | Başarı sayısından öte, bağlam ve neden görünür olmalıdır. |
Hatırla
Business process
Kısa karşılık
Ne yapılacağını bilir; nereye bağlanılacağını değil.
Hatırla
Endpoint abstraction
Kısa karşılık
Bağlantı, erişim ve çalışma sınırlarını tek noktada düşünür.
Hatırla
Credential
Kısa karşılık
Koddan ayrıdır, maskelenir ve döndürülür.
Hatırla
Resilience
Kısa karşılık
Timeout + güvenli retry + kapasite sınırı birlikte ele alınır.
Hatırla
Observability
Kısa karşılık
Başarı sayısından öte, bağlam ve neden görünür olmalıdır.
Mini glossary: Endpoint = dış yeteneğe erişim noktası; abstraction = değişken ayrıntıyı ortak sınırın arkasına alma; idempotency = aynı isteği tekrar işlediğinde sonucu güvenle koruyabilme; correlation = olayları aynı iş akışı içinde ilişkilendirebilme.
TROIA Araştıranlar İçin Not
TROIA'nın kamuya açık geliştirici dokümantasyonunda integration endpoint başlığı bu mimari kavramın ürün içindeki güncel karşılığını ele alır. Bu rehber ürün konfigürasyonu veya uygulama adımı öğretmez; problem çerçevesini açıklar. TROIA'ya özgü güncel ayrıntılar için özgün dokümantasyona başvurulmalıdır.
Sık sorulan sorular
- Endpoint ile API aynı şey mi?
- Hayır. API bir dış yetenek sunabilir; endpoint ise o yeteneğe erişimin adres, kimlik, politika ve çalışma sınırlarıyla ele alınan temas noktasıdır.
- Her entegrasyon için ayrı endpoint gerekir mi?
- Ayrım, sadece teknik hedefe göre yapılmaz. Amaç, yetki, veri hassasiyeti, ortam ve hata etkisi farklıysa ayrı bir tanım veya politika gerekebilir.
- Retry her hatada açılmalı mı?
- Hayır. Önce hatanın geçiciliği, işlemin tekrarlanabilirliği ve çift işleme riski değerlendirilmelidir.
İlgili sayfalar:
İlgili içerikler
İlgili kaynak
Kaynaklar ve checklistler
Bu konuyu somut bir checklist, karar notu veya indirilebilir materyalle derinleştirmek için kaynaklar yüzeyine geçin.
Devam et →Temas
Bu konu aktif bir ihtiyaçsa konuşalım
Okuduğunuz konu bugünkü proje, sponsor kararı veya hazırlık baskısıyla örtüşüyorsa doğrudan temas kurabilirsiniz.
Devam et →Çerçeve
ERP çerçevesine geri dönün
Tek bir başlıktan daha geniş ERP resmine, sponsor gündemine ve delivery hattına geçmek için ERP yüzeyi doğru noktadır.
Devam et →