in

Legacy Sistem Entegrasyonu: API Yoksa Veritabanı, Dosya, RPA

'Sistemin API'si yok' cümlesi entegrasyonun sonu değil, başlangıcıdır. AS/400'deki muhasebe, Delphi ile yazılmış üretim takibi ya da API vermeyen tedarikçi yazılımı için veritabanı köprüsü, CDC, dosya alışverişi ve RPA seçeneklerini güvenilirlik, gecikme ve risk açısından karşılaştırıyor; her birinin doğru yapılışını, cephe servisi desenini ve sahadaki tuzakları anlatıyoruz.

API'si olmayan eski sistemi veritabanı, dosya ve RPA köprüleriyle modern API'ye bağlayan cephe servisi şeması

Her kurumsal entegrasyon projesinde en az bir tane vardır: AS/400 üzerindeki muhasebe, 2004'te Delphi ile yazılmış üretim takibi, API vermeyen tedarikçi yazılımı, yalnızca Excel çıktısı alabilen bir laboratuvar cihazı. "Sistemin API'si yok" cümlesi genellikle iki kötü sonuçtan birine gider: veriler elle iki kez girilir ya da entegrasyon "ileride" diye rafa kalkar. Oysa API'si olmayan sistemle entegrasyon, doğru yol seçilirse çözülebilir bir mühendislik problemidir.

Bu yazıda API'si olmayan sistemlere bağlanmanın yollarını — veritabanı köprüsü, değişiklik yakalama (CDC), dosya alışverişi, RPA/ekran otomasyonu ve satıcı uzantı noktaları — güvenilirlik, gecikme ve risk açısından karşılaştırıyor; karar rehberini, her yolun doğru yapılışını, tüm köprüleri modern bir API arkasında toplayan cephe servisi desenini ve sahada gördüğümüz tuzakları anlatıyoruz.

Seçenekler

Yol

Nasıl

Güvenilirlik

Gecikme

Risk

Ne zaman

Satıcı uzantı noktaları

Gizli export/import, zamanlanmış dışa aktarım, ODBC erişimi, makro/eklenti

Yüksek

Dakikalar

Düşük; destek kapsamında

Her zaman ilk soru: satıcıya sorun

Veritabanı köprüsü (okuma)

Salt okunur kullanıcı + görünümler; sorgu ya da CDC

Yüksek

Saniyeler–dakikalar

Şema bilinmiyor; satıcı desteği şartı

Okuma ağırlıklı, orta–yüksek hacim

Veritabanı köprüsü (yazma)

Ara (staging) tablo + satıcının içe aktarım işi ya da onaylı saklı yordam

Orta

Dakikalar

Yüksek; iş tablolarına doğrudan yazma desteği bozar

Satıcı onaylı bir yazma yolu varsa

Dosya alışverişi

CSV/XML/Excel, SFTP/paylaşımlı klasör, zamanlanmış

Yüksek (doğru kurulursa)

Dakikalar–saatler

Düşük–orta; biçim sözleşmesi kritik

Toplu veri, günlük/saatlik akışlar, her sistemin yapabildiği tek şey

RPA / ekran otomasyonu

Robot arayüzde tıklar, yazar, okur (UiPath, Power Automate, Playwright)

Düşük–orta

Saniyeler–dakikalar

Yüksek; arayüz değişince kırılır

Başka yol yoksa, düşük hacim, geçici çözüm

Rapor / yazıcı çıktısı yakalama

Sanal yazıcıya PDF, metin raporunu ayrıştırma

Orta

Dakikalar

Orta; rapor düzeni değişince kırılır

Yalnızca rapor alınabilen kapalı sistemler

Karar rehberi

  1. Önce satıcıya sorun. Şaşırtıcı sayıda "API'siz" sistemin zamanlanmış dışa aktarımı, ODBC arayüzü ya da belgelenmemiş bir import formatı vardır. Bir e-posta, üç aylık RPA projesinden ucuzdur.

  2. Okuma mı, yazma mı? Yalnızca okuma çoğu zaman güvenli bir veritabanı köprüsüyle çözülür; yazma tarafı her zaman satıcı onaylı bir yol ister.

  3. Hacim ve gecikme. Günde 200 kayıt dosyayla; saniyede 20 kayıt CDC ile; "anlık" gerekiyorsa RPA zaten yetmez.

  4. Sistemin kalan ömrü. İki yıl içinde değişecek sistem için pahalı köprü kurmayın; ucuz ve yeterli olanı seçin, cephe servisi kalıcı olsun.

  5. Destek sözleşmesi. Satıcının "veritabanına yazan destek dışında kalır" maddesi tasarımı belirler.

Veritabanı köprüsü: doğru yapılışı

  • Salt okunur, ayrı kullanıcı; iş tablolarına değil, sizin için oluşturulmuş görünümlere erişim. Görünüm, satıcı şema değiştirdiğinde tek düzeltme noktasıdır.

  • Değişiklik tespiti: Tabloda guncelleme_zamani varsa su damgası (watermark) ile artımlı sorgu; yoksa satıcı onayıyla tetikleyici tabanlı değişiklik günlüğü ya da CDC (Debezium: SQL Server, Oracle, MySQL, PostgreSQL, Db2 için işlem günlüğünden okur; uygulamayı ve şemayı değiştirmez, satıcı tarafında yalnızca CDC/log erişimi ister).

  • Yazma için: Satıcının import mekanizmasının okuduğu ara tabloya yazın; satıcının işi (job) iş tablolarına aktarsın. Doğrudan iş tablosuna INSERT, tetikleyicileri, iş kurallarını ve denetim izini atlar.

  • Yük: Sorgular satıcının yoğun saatlerinde değil; okuma replikası varsa oradan; statement_timeout ve sayfalama.

@Component
public class MuhasebeFaturaKoprusu {
    private final JdbcClient eskiDb;          // salt okunur kullanıcı, yalnızca V_ENTEGRASYON_* görünümleri
    private final SuDamgasiDeposu damga;      // son işlenen (zaman, id) kalıcı olarak saklanır

    @Scheduled(fixedDelayString = "PT2M")
    @SchedulerLock(name = "muhasebe-fatura-koprusu")            // çok replikada tek çalışan (ShedLock)
    public void cek() {
        var son = damga.oku("muhasebe.fatura");
        List<FaturaSatiri> yeni = eskiDb.sql("""
                SELECT fatura_no, musteri_kodu, tutar, para_birimi, guncelleme_zamani
                FROM V_ENTEGRASYON_FATURA
                WHERE (guncelleme_zamani, fatura_no) > (:zaman, :no)   -- bileşik su damgası: aynı saniyedeki kayıtlar kaçmaz
                ORDER BY guncelleme_zamani, fatura_no
                FETCH FIRST 500 ROWS ONLY
                """)
            .param("zaman", son.zaman()).param("no", son.id())
            .query(FaturaSatiri.class).list();
        for (FaturaSatiri f : yeni) {
            faturaServisi.iceAktar(MuhasebeEsleme.toDomain(f));   // idempotent: fatura_no ile upsert
            damga.yaz("muhasebe.fatura", f.guncellemeZamani(), f.faturaNo());
        }
    }
}

Dosya alışverişi: doğru yapılışı

Dosya en eski ve en küçümsenen entegrasyon yoludur; yanlış kurulunca sessizce veri kaybeder, doğru kurulunca yıllarca çalışır. Kurallar:

  • Biçim sözleşmesi yazılı: sütunlar, tipler, kodlama (UTF-8; Excel'in BOM'u ve Windows-1254 tuzağı), ayırıcı, ondalık işareti (Türkçe virgül!), tarih biçimi, boş değer gösterimi, sürüm numarası başlıkta.

  • Atomik teslim: Dosya .tmp olarak yazılır, tamamlanınca yeniden adlandırılır; yarım dosya asla okunmaz. Adlandırma: fatura_20261210_143000_000123.csv (zaman + sıra).

  • Bütünlük ve onay: Yanında .sha256 ya da manifest; işleyen taraf .ack/.err dosyası bırakır; hata satırları ayrı rapora.

  • İdempotent işleme: Aynı dosya iki kez gelirse (yeniden gönderim) çift kayıt olmaz; dosya adı ve satır anahtarı ile tekilleştirme.

  • Arşiv ve yeniden işleme: İşlenen dosyalar tarihli klasöre; "10 Aralık dosyasını yeniden işle" tek komut.

  • İzleme: Beklenen dosya gelmezse uyarı ("saat 06:00 dosyası yok" en sık kaçırılan hata).

Spring Integration'ın SFTP inbound adapter'ı ya da basit bir zamanlanmış iş yeterlidir; karmaşıklık kütüphanede değil, sözleşmede ve hata yollarındadır.

RPA ve ekran otomasyonu: son çare, ama disiplinli

Robotun arayüzde tıklaması, başka hiçbir yolun olmadığı yerde meşrudur: satıcı erişim vermiyor, veritabanı kapalı, dosya yolu yok. Kurallar: robot her işlemden önce hedef durumu kontrol eder (kayıt zaten girilmişse atlar — idempotency); her adımda ekran görüntüsü ve log; istisnalar insana düşer (kuyruk + onay ekranı), robot tahmin etmez; ayrı ve dar yetkili kullanıcı; izole sanal makine ve sabit ekran çözünürlüğü; uygulama sürümü sabitlenir, güncelleme öncesi robot test edilir. Web tabanlı eski uygulamalarda Playwright ile yazılan otomasyon, masaüstü RPA'dan daha dayanıklıdır (DOM seçicileri koordinattan sağlamdır). RPA'nın hacim sınırı vardır: günde birkaç yüz işlem; binler için başka yol bulunmalıdır.

Cephe servisi: köprüleri gizleyen modern API

[uygulamalar / ERP / e-ticaret] ──REST/olay──► [Cephe servisi (Spring Boot)]
                                                   ├─ veritabanı köprüsü (okuma, CDC)
                                                   ├─ dosya köprüsü (SFTP, saatlik)
                                                   └─ RPA köprüsü (kuyruk, insan onaylı istisna)
                                                          │
                                                   [API'si olmayan eski sistem]

Tüm köprüler tek bir Spring Boot servisinin arkasında toplanır; servis dışarıya temiz bir REST/olay API'si sunar: GET /faturalar?since=, POST /siparisler, FaturaOlusturuldu olayı. İç uygulamalar eski sistemin dosya biçimini, şema adlarını ya da robotun varlığını bilmez. Bu, ERP entegrasyonundaki anti-corruption katmanının aynısıdır ve iki büyük kazancı vardır: köprü değişince (RPA'dan CDC'ye geçiş) tüketiciler değişmez; eski sistem strangler fig ile emekliye ayrıldığında cephe servisi kalır, arkasındaki uygulama değişir. Cephe servisinde her köprünün durumu (son başarılı çalışma, kuyruk, hata sayısı) tek panoda izlenir.

Sahada sık yapılan hatalar

  1. Satıcıya sormadan RPA'ya başlamak: Üç ay sonra ODBC erişiminin baştan beri var olduğu öğrenilir.

  2. İş tablolarına doğrudan yazmak: Destek sözleşmesi düşer; tetikleyiciler atlanır; bir gün gizli bir iş kuralı ihlal edilir.

  3. Tek sütunlu su damgası: Aynı saniyede eklenen kayıtlar kaçar; bileşik damga ya da CDC.

  4. Dosya sözleşmesinin sözlü kalması: Karşı taraf ondalık ayırıcıyı değiştirir, tutarlar 100 kat büyür.

  5. Robotun istisnada tahmin yürütmesi: "Kayıt bulunamadı" ekranında yeni kayıt açan robot, çift kayıt üretir.

  6. Köprüleri her uygulamaya ayrı kurmak: Beş uygulama, beş SFTP ayrıştırıcısı, beş farklı hata; cephe servisi bunu tek yerde toplar.

  7. İzleme yokluğu: Gece dosyası üç gündür gelmiyor, kimse fark etmiyor.

Sık sorulan sorular

CDC her eski veritabanında çalışır mı?

Debezium; MySQL, PostgreSQL, SQL Server, Oracle, Db2 ve MongoDB için bağlayıcı sunar; işlem günlüğüne erişim ve bazı sunucu ayarları (SQL Server'da CDC'yi açmak, Oracle'da LogMiner) gerekir. Çok eski sürümler ya da dosya tabanlı veritabanları (Paradox, DBF) için CDC yoktur; zamanlanmış sorgu ya da dosya yolu kalır.

RPA'yı yapay zekâ daha dayanıklı yapar mı?

Görsel öğe tanıma ve dil modelleri, arayüz değişikliklerine toleransı artırır ve serbest metinli ekranları okumada işe yarar; ama belirsizlik de getirir. Kritik iş kayıtları için belirleyici (deterministic) yol ve insan onayı kalır; yapay zekâ istisna sınıflandırmada ve belge okumada daha iyi yer bulur.

Eski sistem tek kullanıcılı masaüstü uygulamasıysa?

Genellikle Access/Paradox/DBF gibi dosya tabanlı bir veritabanı vardır; ODBC ile salt okunur okuma çoğu zaman mümkündür. Yazma için uygulamanın kendi içe aktarımı ya da RPA; ama böyle bir sistemin değiştirilme planı da aynı anda yapılmalıdır.

Sonuç

API'si olmayan sistem entegrasyonun sonu değildir: önce satıcı uzantı noktaları, sonra görünümler ve CDC ile veritabanı köprüsü, toplu akışlarda sözleşmeli dosya alışverişi, başka yol yoksa disiplinli RPA — hepsi tek bir cephe servisinin arkasında, idempotent, izlenen ve yeniden işlenebilir. Cephe servisi, eski sistem değiştiğinde bile kalan yatırımdır.

API'si olmayan sistemlerinizi kurumsal uygulamalarınıza güvenilir biçimde bağlamak için entegrasyon ve otomasyon hizmetimize göz atabilirsiniz.