Rehber · how-to
İki Sistemi Birbirini Bozmadan Nasıl Senkron Tutarsınız?
Aynı kaydın iki kopyası eninde sonunda ayrışır ve bu ayrışma genellikle sessizdir. Hangi alanın kime ait olduğuna karar vermek, güncellemelerin sistemler arasında yankılanmasını durdurmak, silmeleri güvenle taşımak ve mutabakatı olaydan sonra değil takvimle yapmak.
Sorun tek bir bağlantı değil, iki kopya
İki sistemi birbirine bağlamak bir sabahlık iştir. Onları bir yıl boyunca aynı fikirde tutmak başka bir iştir ve bu rehber onunla ilgilidir. Aynı müşteri, sipariş ya da kişi iki yerde var olduğu an aradaki farkın sahibi sizsiniz ve fark sessizce büyür: hiçbir yerde hata yoktur, iki sistem de sağlıklı görünür ve biri yanlıştır.
Konu, karşı tarafın API'sini altınızdan değiştirmesi değil — o kendi başına bir sorundur — hangi otomasyon aracıyla kuracağınız da değil. Bağlantının çalıştığını ve uç noktaların yerinde durduğunu varsayın. Buradaki soru veriye ne olduğudur.
Kaydın değil, alanın sahibine karar verin
Kayıt düzeyinde sahiplik ekiplerin ilk uzandığı cevaptır ve işle temas ettiğinde nadiren ayakta kalır. Uygulamada pazarlama sistemi izin tercihinin, faturalama planın, destek son görüşmenin sahibidir ve üçü de e-posta adresinin bir kopyasını tutar. Sahipliği alan alan yazın, çünkü tartışma iki tarafta da veri biriktikçe yalnızca zorlaşır.
Bir alanın gerçekten iki yazarı varsa bir kural seçin ve yüksek sesle söyleyin. "Son yazan kazanır" meşru bir seçimdir ama bir seçimdir: kontrol etmediğiniz saatlere dayanır ve iki düzenlemeden birini sessizce atar. Hak ettiğinden daha az düşünülen alternatif, karar vermeyi reddetmektir: iki değeri de saklayın ve çatışmayı bir insanın önüne koyun. Gerçek çatışmalar ekiplerin korktuğundan çok daha azdır ve haftada bir avuç işaretli satır, yanlış bir otomatik kuralın aynı hafta içinde başardığı bozulmadan ucuzdur.
Tek yön bir boru hattıdır; iki yön bir döngüdür
Tek yönlü senkronizasyon bir boru hattı gibi davranır. Çift yönlü senkronizasyon ise iki sistemin hiçbirine tek başına ait olmayan bir tehlike getirir: ikinci sisteme yazdığınız bir değişiklik oradan bir bildirim üretir, bağlayıcınız onu sadakatle birinciye geri yazar, o da bildirir ve döngü sürer. Bazen yatışır. Bazen bir hız sınırı durdurana kadar koşar ve iki sistemin de denetim kaydı, birkaç saniyede bir hiç kimsenin yaptığı güncellemelerle dolar.
Döngüyü kırmak dikkat değil, mekanizma ister. Kendi bağlayıcınızın yaptığı yazmaları işaretleyin ve onların doğurduğu bildirimleri yok sayın: değişikliklerini atladığınız ayrı bir entegrasyon kullanıcısıyla ya da az önce yaptığınız yazmadan kaydettiğiniz bir işaretle. Yazmadan önce karşılaştırın ve değer zaten ayarlamak istediğiniz şeyse atlayın; tek başına bu kontrol yankıların çoğunu ucuza kaldırır. Ve çift yönlü senkronizasyonun iki adet tek yönlüden pahalı olduğunu kabul edin — ikinci yönün gerçekten gerekip gerekmediğini sormak için iyi bir sebep.
İşin ters gittiği yer silmelerdir
Çoğu senkronizasyon oluşturma ve güncelleme üzerine kurulup test edilir, silmelerle ise üretimde tanışır. Zorluk, yokluğun belirsiz olmasıdır. Bugünkü yanıtta olmayan bir kayıt silinmiş, arşivlenmiş, sorguladığınız filtrenin dışına çıkmış, izinleriniz değiştiği için gizlenmiş ya da bir sonuç sayfası yüklenemediği için eksik olabilir. Bunların hepsini silme talimatı saymak, bir senkronizasyonun bir tabloyu nasıl boşalttığının hikâyesidir.
Çıkarsanmış yokluk yerine açık sinyali tercih edin: bir silme olayı, bir durum alanı, sağlayıcının bir süre sakladığı bir mezar taşı kaydı. Çıkarsamak zorundaysanız yavaş yapın: kaydın birden fazla tam turda eksik olmasını şart koşun, kısmi ya da hatalı bir çekim üzerine asla işlem yapmayın ve tek bir turun yapabileceği silme sayısına tavan koyun; çünkü tablonun yarısını kaldırmayı öneren bir tur, yoğun bir gün değil bir hatadır.
Bir taraftaki silmenin diğer tarafta ne anlama geldiğine ayrıca karar verin. Çoğu zaman anlamı "sil" değildir: bir kişiyi bir sistemde listeden çıkarmak, onu kayıt sisteminden silmek anlamına nadiren gelir. Kendi tarafınızda yumuşak silin, saklamak zorunda olduğunuzu saklayın ve yayılımın gerçekten ve hızla gerçekleşmesi gereken tek durumun bir silinme talebi olduğunu unutmayın; o bir senkronizasyon tercihi değil, hukuki bir yükümlülüktür.
Artımlı senkronizasyon kayar; bu yüzden takvimle mutabakat yapın
Her artımlı senkronizasyon bir şeyler kaybeder. Bir web kancası teslim edilmez, bir iş okuma ile yazma arasında ölür, imleciniz tam üstünden geçerken bir kayıt düzenlenir, bir güncelleme kaydettiğiniz su seviyesinden az önceki bir zaman damgasıyla iner. Her biri nadirdir. Aylar içinde ve hacimle hepsi olur, hiçbiri de kendini duyurmaz.
Çare, biri fark ettikten sonra değil, takvime göre çalışan tam bir karşılaştırmadır. Ucuzdan başlayın: iki taraftaki sayımlar, sonra bölüm bölüm sayımlar, sonra önemsediğiniz alanlar üzerinde bir sağlama toplamı; yalnızca farklı çıkan kayıtları ayrıntılı çekin. Kaymayı ilan edilen bir olay olarak değil, zaman içinde izlediğiniz bir sayı olarak raporlayın — istikrarlı küçük bir rakam çalışan bir senkronizasyonun normal hâlidir ve işe yarayan alarm farkın varlığı değil şeklinin değişmesidir. Otomatik onarımı yalnızca sahibi net olan alanlara uygulayın: iki yazarlı bir alanı kaymayı üreten kuralın aynısıyla onarmak bir tutarsızlığı döngüye çevirir.
Geri doldurma, olağan akıştan başka türlü davranır
İlk yükleme, sürekli senkronizasyonun hızlandırılmış hâli değildir. Genellikle farklı limitleri olan farklı uç noktalardan geçer, anlamlı bir sıralama olmadan gelir ve aynı kayıtların canlı değişiklik akışıyla yan yana saatlerce çalışır; bu yüzden asıl arıza çarpışmadır: geri doldurma, kendisi çalışırken gelen daha yeni bir değişikliğin üzerine kaydın eski bir sürümünü yazar ve veri sessizce geriye yolculuk ediyormuş gibi görünür. Her yazmayı tekrarlanabilir kılın ve anahtarı geliş sırası değil kaynak kimliği olsun, elinizdekinden eski bir sürümle üzerine yazmayı reddedin, ilerlemeyi işaretleyin ki yarıda kesilen bir tur baştan başlamasın ve ilkini bir kopya üzerinde çalıştırın; çünkü bu aşamadaki hatalar hacimle yapılır.
Anlaşmazlığı sessizce çözmek yerine görünür kılın
En kötü sonuç başarısız olan bir senkronizasyon değildir; yanlış bir şeyi başarıyla yaparken bütün panoların yeşil kaldığı bir senkronizasyondur. Bağlayıcınızın uygulayamadığı her şey — reddedilen bir yazma, bir çatışma, tanınmayan bir değer, atladığı bir kayıt — bir insanın bakacağı bir yere, üzerine hareket etmeye yetecek bağlamla ve sebep giderildikten sonra yeniden denemenin bir yoluyla düşmelidir. Kimsenin açmadığı bir ölü mektup kuyruğu, sadece daha kibar bir kesintidir.
Bir senkronizasyonun durumunu iki sayı okunur kılar: şu anda ne kadar geride olduğu ve kaç kaydın şu anda uyuşmadığı. Bunları verinin sahibinin göreceği yerde gösterin, yalnızca bir mühendislik panosunda değil; çünkü hangi değerin doğru olduğunu söyleyebilecek kişi, kuyruk derinliğini izleyen kişi değildir.