Kimse izlemezken çalışan bir senkronizasyon için altı kural

İki SaaS aracı arasında, kimse izlemeden bir zamanlamayla çalışan otomatik bir veri senkronizasyonu için altı kural: imleç, teslim anahtarı, aynı anda tek çalıştırma, sınırlı yeniden denemeler, sessizlikte alarm ve her çalıştırmanın kanıtlaması gereken yayımlanmış bir kural. Her biri, Tajo'nun senkronizasyon çalıştırıcısının bugün yaptıklarıyla, eksik kaldığı yerler de dahil olmak üzere karşılaştırılıyor.

otomatik veri senkronizasyonu

Otomatik bir veri senkronizasyonunun, kimse onu izlemezken güvenle çalışması için neye ihtiyacı vardır?

Gözetimsiz çalışan bir senkronizasyonun altı kurala ihtiyacı vardır. Bir imleçten okuyun ve onu yalnızca bütün toplu işlem ulaştıktan sonra ilerletin. Her yazmaya, yeniden denemenin yeniden türettiği bir anahtar verin ve tamamlanan anahtarları yedi gün saklayın. Senkronizasyonun sahibi tek bir çalıştırma olsun ve bunu her yazmadan önce kanıtlasın. Başarısız bir çalıştırmayı giderek uzayan beklemelerle beş kez yeniden deneyin ve art arda beş başarısız çalıştırmadan sonra senkronizasyonu duraklatın. 24 saat boyunca hiçbir şey başarılı olmadığında uyarın. Her çalıştırma, yayımlanmış sürüm olduğunu kanıtlasın. Tajo'nun çalıştırıcısı bunların beşine tam olarak uyar. İstisna sessizliktir: okumasının başarısız olması gerekirken boş yanıt veren bir kaynak yalnızca kısmen yakalanır.

Daha fazla bilgi
Bu sayfada

8 Ekim 2026’da Lance Martin ve CJ Avilla, her sabah Slack ve GitHub’ı okuyup Slack’e bir özet gönderen bir ajanın adım adım anlatımını yayımladı. Çalışırken onu kimse izlemiyor. En yararlı paragrafları, başarı gibi görünen bir hata hakkında. Bir kaynağın sunucusu çöktüğünde ya da token’ının süresi dolduğunda “ajan o kaynaktan hiçbir şey görmez ve ‘yeni bir şey yok’ diye raporlar.”

Shopify’dan Brevo’ya bir kişi senkronizasyonunda da aynı hata vardır. İki SaaS aracı arasındaki her zamanlanmış senkronizasyonda da. Sessizce başarısız olan bir okuma, bugün kimsenin kaydolmadığı bir mağazayla tıpatıp aynı görünür.

Makaleleri, gözetimsiz çalışan bir ajan için altı kuralla bitiyor. Bunları senkronizasyon yöneten biri olarak okuyun; her biri bir reverse ETL kuralına dönüşür. Worker öldü. Senkronizasyon ölmedi. bir çökme boyunca tek bir kişiyi izler. Bu sayfa onun üstündeki kontrol listesidir: otomatik bir veri senkronizasyonu için altı kural, Tajo’nun çalıştırıcısının bugün her biri için ne yaptığı ve nerede eksik kaldığı. Çalıştırıcının tarafı Takılan veya başarısız olan bir senkronizasyonu kurtarma sayfasında anlatılıyor.

1. Bir yer iminden okuyun ve onu yalnızca toplu işlem ulaştığında ilerletin

İlk kuralları: “Her kaynağı sabit bir zaman penceresinden değil, bir yer iminden okuyun.” “Son 24 saat” penceresi, bir çalıştırma geç başladığında boşluk bırakır, erken başladığında kayıtları tekrarlar.

Bir Tajo senkronizasyonu kaynağını kaydedilmiş bir imleçten toplu işlemler halinde okur. İmleç bir toplu işlemin sonunda ve yalnızca o toplu işlemdeki her kayıt ulaştığında ilerler. Başarısız olan bir çalıştırma son temiz konumu korur, bu yüzden sonraki çalıştırma kesilen toplu işlemi atlamak yerine yeniden okur.

Siparişlerin kendi yer imi vardır. Zamanlanmış bir Shopify sipariş senkronizasyonu ilk zamanlanmış çalıştırmasında başlar ve bir öncekinden bu yana değişenleri gönderir. Geçmiş siparişler yalnızca bir kişi senkronizasyonu çalıştırdığında gider. Zamanlanmış çalıştırmalar ile bir kişinin başlattığı çalıştırmalar ayrı imleçler tutar; böylece bir geçmiş veri aktarımı ya da bir test toplu işlemi zamanlanmış imleci geri saramaz.

Bedeli, kesilen bir toplu işlemin iki kez okunmasıdır. Bunu güvenli kılan Kural 2’dir.

2. Her yazmaya çökmeden sağ çıkan bir anahtar verin

Dördüncü kuralları bir gönderiyi “yalnızca Slack onayladığında” gönderilmiş sayar ve ancak o zaman yer imini ve kaydı günceller. Taahhütlü mektup da böyle işler. İmzalı alındı geri geldiğinde teslim edilmiş olur, gişeden çıktığında değil.

Tajo bir kaydı yazmadan önce, kayıt bir teslim anahtarı alır. Anahtar, senkronizasyonun, kaynağın, sayfa imlecinin, sayfadaki konumun ve kaydın kendisinin bir özetidir (hash), bu yüzden kişisel veri içermez. Hedef çağrılmadan önce sahiplenilir ve yazma başarılı olduğunda tamamlandı olarak işaretlenir. Tamamlanan anahtarlar yedi gün saklanır. Bir yeniden deneme ya da sonraki zamanlanmış bir çalıştırma, aynı kayıt için aynı anahtarı türetir, onu tamamlanmış bulur ve hedefi yeniden çağırmaz.

Bunun iki bedeli var. Yedi gün sonra defter unutur ve daha eski bir imleçten yapılan bir yeniden oynatma tekrar yazabilir. Zaman aşımına uğrayan bir yazma ise dürüst bir şüphe bırakır: diğer sistem yanıt vermeden onu kaydetmiş olabilir. Tajo bu yazmayı yedi gün boyunca başarısız olarak kaydetmek yerine sonraki bir denemede tekrar dener. Hedefe kendi idempotency anahtarını veren bir bağlayıcı bu şüpheyi kapatır. Bunu yapamayan bir bağlayıcıda tek bir kopya olasılığı kalır.

3. Senkronizasyonun sahibi tek bir çalıştırmadır ve bunu her yazmadan önce kanıtlar

Üçüncü kuralları: “Her öğeyi göndermeden hemen önce yeniden kontrol edin.” Bir senkronizasyon için okuma ile yazma arasında değişme olasılığı en yüksek şey, kimin yazmaya yetkili olduğudur.

Her Tajo senkronizasyonunun, kendi token’ı ve her beş dakikada bir yenilenen 15 dakikalık ömrüyle tek bir kiralaması vardır. Bir çalıştırma, hedefi çağırmadan önce ve imleci ilerletmeden önce bir kez daha, kiralamayı hâlâ elinde tuttuğunu kontrol eder. Onu kaybetmiş bir çalıştırma durur ve sayfası şunu söyler: “Çalıştırma yarı yolda yuvasını kaybetti ve iki kez yazmamak için durdu.” Canlı bir çalıştırmayla çakışan ikinci bir çalıştırma onun arkasında sıraya girmek yerine sona erer.

Kayıtlar da kontrol edilir. Okuma ile yazma arasında kayıtlar rıza filtresinden geçer. Kanıtlanabilir rızası olmadan bir pazarlama kitlesine yazılan bir kişi tahmin edilmek yerine reddedilir. Yardım sayfasının deyişiyle başarısızlık modu “fazla temkinli” olmaktır, asla “fazla göndermek” değil.

4. Geçecek olanı yeniden deneyin, geçmeyecek olanı durdurun

Altı kuralları ne sıklıkla yeniden deneneceği hakkında hiçbir şey söylemez. Bir senkronizasyonun bu kurala ihtiyacı vardır, çünkü en sık hataları bir hız sınırı ve bir sağlayıcının kötü bir dakikasıdır.

Kuyruktaki bir Tajo çalıştırması başarısız olursa beş deneme hakkı alır. Aralarındaki beklemeler 60, 120, 240 ve 480 saniyedir, toplamda yaklaşık on beş dakika. Bazı hatalar asla yeniden denenmez, çünkü tekrar denemek onları düzeltemez. Zaten devam eden bir çalıştırmayla çakışan bir çalıştırma yeniden denenmez; yayımlanmış sürümü veya bağlantıları artık geçerli olmayan bir çalıştırma da öyle.

Bir seri, anlık bir aksaklıktan farklıdır. Senkronizasyon en son değiştirildiğinden bu yana biten son beş çalıştırmanın hepsi başarısız olduysa, Tajo senkronizasyonu duraklatır ve son hatayı sayfasında gösterir. Tek bir başarı sayacı sıfırlar. Duraklatılmış bir senkronizasyonu hiçbir şey kendiliğinden yeniden başlatmaz; bir kişi nedeni düzeltir ve onu yeniden yayımlar. Worker makalesi, bu kuralı doğuran olayı anlatıyor.

5. Sessizliği bir bulgu olarak ele alın

“Başarısız bir okumayı sakin bir gün olarak değil, okunamaz olarak raporlayın.” Altısının en zoru budur ve yalnızca kısmen karşıladığımız tek kuraldır.

Geçerli olduğu yer: hata veren bir okuma çalıştırmayı başarısız kılar. Reddedilen bir token ya da yanıt vermeyen bir sunucu hedefe hiçbir şey göndermez, imleci olduğu yerde bırakır ve beş başarısız çalıştırmadan sonraki duraklatmaya sayılır. Ayrıca her saat, saati 13 geçe, Tajo etkin bir senkronizasyonu olan her çalışma alanını kontrol eder. Son 24 saatte hiç başarılı çalıştırma olmadığında, hiç çalıştırma kaydedilmemiş bir çalışma alanı dahil, kendi ekibini uyarır. Bu, saatlik kontroldür.

Geçerli olmadığı yer: yazarların anlattığı sessiz okuma, kayıt olmadan “OK” yanıtı veren bir okumadır. Çalıştırıcımız bunu başarı sayar. Shopify müşterileri gibi kaynaklarda ayrı bir kontrol, senkronizasyon daha önce kayıt üretmişse, sıfır kayıtla art arda on başarılı çalıştırmadan sonra Tajo ekibini uyarır. Shopify siparişleri güncellenme zamanına göre okunur; bu yüzden orada boş bir çalıştırma normaldir ve bu kontrol çalışmaz. Bazı kayıtlar döndüren ama olması gerekenden azını döndüren bir kaynak ise hiç yakalanmaz.

İtiraz şöyle: “15 dakikalık bir zamanlamada on boş çalıştırma iki buçuk saat eder. Neden ilkinde uyarmıyorsunuz?” Kişi senkronizasyonları gerçekten de varsayılan olarak her 15 dakikada bir çalışır. Ve çeyrek saat boyunca yeni müşterisi olmayan bir mağaza sıradan bir durumdur. İlk boş çalıştırmada verilen bir uyarı her gece çalardı ve her zaman çalan bir uyarıyı kimse okumaz. Bu eşik, hızı inandırıcılıkla takas eder. Yine de sessizlik hakkında bir tahmindir, yazarların kuralı değil.

6. Senkronizasyonun neyi yazabileceğine bir kez karar verin ve her çalıştırmaya bunu kanıtlatın

Beşinci kuralları ajanın tercihlerini “ajanın düzenleyemediği bir depoda” tutar. Altıncısı, ajana yalnızca okuduğu her yerde salt okuma erişimi verir ve her çalıştırmanın ne kadar harcayabileceğini sınırlar. İkisi de, ajan başkalarının yazdığı metni okuduğu ve bu metin ona emir vermeye çalışabileceği için vardır.

Bir senkronizasyonda tercihler dosyasının karşılığı yayımlanmış kuraldır. Bir Tajo senkronizasyonunu yayımlamak, onu önizlemesi yapılan kuralın tam bir özetine (digest) bağlar. Düzenlemek onu taslağa geri döndürür ve yeniden çalışmadan önce tekrar önizlemeden geçer. Her çalıştırma, herhangi bir şeyi değiştirmeden önce, o yayımlanmış sürümü yayımlandığı bağlantılarla çalıştırdığını kontrol eder. Bu kontrolü geçemeyen bir çalıştırma yeniden denenmez. Yön de sabittir: bir senkronizasyon kuralı tek yönde yazar ve asla Shopify’a geri yazmaz.

Harcama sınırının bir karşılığı yok. Senkronizasyon çalıştırmalarımızın çalıştırma başına bir harcama sınırı yoktur. Yeniden deneme sınırı ve duraklatma, bir çalıştırmanın maliyetini değil, bir hatanın ne kadar sürebileceğini sınırlar.

Neler hazır, neler değil

Bu yazının yazıldığı tarih itibarıyla hazır olanlar:

Hazır olmayanlar ve güvenmeden önce bilmeye değer olanlar:

Bunlardan biri kendi senkronizasyonunuzda ortaya çıktığında, Takılan veya başarısız olan bir senkronizasyonu kurtarma ne gördüğünüzü ve ne yapmanız gerektiğini anlatır.

Yazarlar altı kuralı, bir kişinin her sabah okuduğu bir özet için yazdı. Bir senkronizasyonun ise hiç sabah okuyucusu yoktur; bu yüzden bu kurallara daha çok ihtiyacı vardır. Birinci ile dördüncü arasındaki kurallar ve altıncı kural bugün çalıştırıcımızda kod olarak var. Beşinci kural yarı yarıya yazıldı: kaynağını okuyamayan bir senkronizasyon bunu söylemeli.

Sık Sorulan Sorular

Otomatik bir veri senkronizasyonunun, kimse onu izlemezken güvenle çalışması için neye ihtiyacı vardır?

Altı şeye. Yalnızca bütün bir toplu işlem ulaştıktan sonra ilerleyen bir imlece. Her kayıt için, yeniden denemenin yeniden türettiği ve tamamlanan yazmaların defterinde kontrol edilen bir teslim anahtarına. Senkronizasyon başına aynı anda tek bir çalıştırmaya. Sınırlı sayıda yeniden denemeye, ardından çalıştırmalar başarısız olmaya devam ederse bir duraklatmaya. Bir gün boyunca hiçbir şey başarılı olmadığında bir uyarıya. Ve her çalıştırmanın uyguladığını kanıtlaması gereken yayımlanmış bir kurala.

Bir senkronizasyon neden son 24 saat gibi sabit bir zaman penceresini okumamalı?

Çünkü çalıştırmalar dakik değildir. Geç başlayan bir çalıştırma, pencerenin hiç kapsamadığı bir boşluk bırakır; erken başlayan bir çalıştırma ise kayıtları iki kez okur. Kaydedilmiş bir imleç, çalıştırma ne zaman başlarsa başlasın, her çalıştırmayı tam olarak son temiz toplu işlemin bittiği yerden başlatır.

Tajo, yeniden denenen bir senkronizasyonun aynı kaydı iki kez yazmasını nasıl önler?

Her kayıt bir teslim anahtarı alır: senkronizasyonun, kaynağın, sayfa imlecinin, sayfadaki konumun ve kaydın kendisinin bir özeti (hash). Anahtar, hedef çağrılmadan önce sahiplenilir ve yazma başarılı olduğunda tamamlandı olarak işaretlenir; tamamlanan anahtarlar yedi gün saklanır. Bir yeniden deneme veya sonraki bir çalıştırma aynı anahtarı türetir ve hedefi yeniden çağırmaz.

Okuma sessizce başarısız olduğu için bir kaynak hiçbir şey döndürmediğinde Tajo bunu fark eder mi?

Yalnızca kısmen. Hata veren bir okuma çalıştırmayı başarısız kılar ve bu çalıştırma, art arda beş başarısız çalıştırmadan sonraki duraklatmaya sayılır. Sıfır kayıtla başarılı olan bir okuma başarı sayılır. Shopify müşterileri gibi kaynaklarda, senkronizasyon daha önce kayıt üretmişse, sıfır kayıtla art arda on başarılı çalıştırmadan sonra Tajo ekibi uyarılır. Güncellenme zamanına göre okunan Shopify siparişlerinde bu kontrol çalışmaz.

Erken erişim talep edin

Adınızı ve e-posta adresinizi girin. Tajo erişim talebinizi onaylamanız için size bir bağlantı göndereceğiz.

Brevo'yu Edinin

Bu sayfanın Markdown hâli: six-rules-unattended-sync.md

Markdown yükleniyor…
Claude ile aç ChatGPT ile aç