İçeriğe geç

Tersinirlik Testi

28 dilde daha mevcut

English · Español · 日本語 · Português (Brasil) · Français · Deutsch · Italiano · 한국어 · 简体中文 · Português (Portugal) · 繁體中文 · Bahasa Indonesia · Polski · Tiếng Việt · ไทย · Nederlands · العربية · עברית · Українська · हिन्दी · Русский · Svenska · Dansk · Norsk bokmål · Suomi · Español (México) · Français (Canada) · Deutsch (Schweiz)

A freshly poured concrete slab sets around four anchor bolts on a steel template and upright conduits, bordered by timber formwork, with a wheelbarrow on the ground beyond.
Görsel yapay zekâ ile üretilmiştir

Data Architect kursunun ilk bölümü olan Bir Veri Mimarı Gibi Düşünmek bölümündeki 7 modülden 3.‘sü. Her modül kendi başına okunabilir. Önceki: Veri Modeli İskelettir · Sonraki: Mimari, Ödünleşim Sanatıdır

Bu modülün yanıtladığı soru: Mimari bir kararı sıradan bir karardan nasıl ayırt edersiniz?

Mimarlar pek çok karar verir.

Ama her karar mimari bir karar değildir.

Bu önemli bir ayrımdır. Her kararı mimari olarak ele alırsak, bütün zamanımızı değiştirilmesi görece kolay şeyleri tartışarak geçiririz. Gerçekten mimari olan kararları fark etmezsek, bugün beş dakikada verdiğimiz bir kararı çözmek beş yıl sürebilir.

Peki farkı nasıl anlarız?

Basit bir soru sormayı severim:

Bu kararı daha sonra geri almak ne kadar zor olacak?

Buna Tersinirlik Testi diyorum.

Bir şeyi geri almak ne kadar zorsa ve ona ne kadar çok şey bağlı olacaksa, o kadar mimari ilgiyi hak eder.

Basit bir şeyle başlayalım.

Bir alana Customer Category (Müşteri Kategorisi) adını veriyoruz. Altı ay sonra iş birimi herkesin aslında ona Customer Segment (Müşteri Segmenti) dediğine karar veriyor. Etiketi değiştiriyoruz. Güncellenecek biraz belge ve biraz kullanıcı eğitimi olabilir, ama bu büyük bir mimari olay değil. Yine de özgün API adıyla yaşamak zorunda kalacağız, çünkü onu değiştirmenin sonuçları çok daha büyük. Yani bu, bir etiket değişikliğiyle ve onunla gelebilecek kafa karışıklığıyla uğraşmak anlamına gelebilir.

Bir karar verdik. Fikrimizi değiştirdik. Yolumuza devam ettik.

Şimdi bunu farklı bir kararla karşılaştırın.

Müşteriler için bir tanımlayıcı oluşturuyoruz. Ne anlama geldiğine, hangi biçimi kullandığına ve hangi sistemin onu ürettiğine karar veriyoruz. Sonra onu yayımlıyoruz.

Salesforce onu kullanıyor. Veri ambarı onu kullanıyor. Entegrasyon platformu onu kullanıyor. Müşteri portalı onu kullanıyor. Beş başka uygulama onu saklamaya başlıyor. Raporlar ve veri hatları onu kullanıyor. Belki sonunda müşteriler de onu görüyor.

Üç yıl sonra biri şunu söylüyor:

Tanımlayıcıyı muhtemelen bu şekilde tasarlamamalıydık.

Bu çok farklı bir konuşmadır.

Fark, bir kararın diğerinden daha teknik olması değildir.

Fark tersinirliktir.

Bu şöyle olabilir. Diyelim ki işletme anahtarlarını müşterinin adının bir parçası ile bir numaradan oluşturuyor. Yıllarca işe yarıyor, çünkü kimse hiç ad değiştirmek zorunda kalmamış. Sonra bir yıl ya da daha uzun bir süre sonra bir ad gerçekten değişiyor ve anahtarlar birdenbire verinin geri kalanının beklediği kalıba uymaz hale geliyor. Anahtarların içsel bir anlam taşımaması gerekmesinin nedenlerinden biri budur.

Mimari bir karar etrafında bir şeyler biriktirme eğilimindedir. Ben buna çekim gücü diyorum.

Bir nesne modeli seçin, etrafında otomasyon kurulur.

Bir anahtar seçin, diğer sistemler onu saklamaya başlar.

Ana verinin nerede yaşayacağını seçin, entegrasyonlar ona doğru ve ondan uzağa akmaya başlar.

Bir paylaşım modeli seçin, iş süreçleri kimin neyi görebildiğine bağlanmaya başlar.

Bir entegrasyon kalıbı seçin, sistemler onun zamanlamasına ve davranışına bağlanmaya başlar.

Bu kararlar ne kadar uzun süre var olursa o kadar çekim gücü kazanırlar. Sonunda özgün kararı değiştirmek, etrafında biriken her şeyi değiştirmek anlamına gelir.

Yapay zekâ da bu çekim gücünü hisseder. Bir yapay zekâ aracı sistemde zaten var olandan yola çıkarak çalışır: kilit bir tasarım öğesi bir kez oraya girdiğinde, ondan sonraki her yapay zekâ etkileşimi o öğeyi bir gerçek olarak kabul eder ve onun üzerine inşa etmeye, inşa etmeye, inşa etmeye devam eder. Karar ileriye doğru pek çok başka kararda yankılanır ve hiçbir insan özgün karara geri dönüp onu yeniden ele almaz. Her üretim çekim gücünü biraz daha artırır.

Veri modelinin “iskelet” olmasının önemli olmasının nedeni budur. Değişim kötü olduğu için dikkatli değiliz. Bağımlılıklar değişimi pahalı hale getirdiği için dikkatliyiz.

Bir tasarım kararına baktığımda iki soru sorarım:

Bunu geri almak ne kadar zor?

Ona ne kadar şey bağlı olacak?

Birbirleriyle ilişkilidirler ama aynı değildirler. Bir şeyi teknik olarak değiştirmek kolay olabilir ama yüzlerce kullanıcısı olabilir. İnsanlar eskiden standart nesneleri anlaşılır olsun diye yeniden etiketlerdi, örneğin Hesap’ı “Customer” olarak. Yapması kolaydı. Sonra başka bir sistem Hesapları İş Ortakları için kullanmak istedi ve kullanamadı. Başka bir şeyin ise yalnızca birkaç kullanıcısı olabilir ama değiştirmek devasa bir taşıma gerektirebilir; içeride pek çok yerden başvurulan bir nesnenin API adı gibi. Dışarıdan kimse görmez ama yanlış bir ad ekibin kafasını karıştırmaya devam eder. İkisi de ilgiyi hak eder.

Bazı yaygın veri kararlarını düşünün:

  • Bu iş kavramını hangi Salesforce nesnesi temsil ediyor?
  • Benzersiz tanımlayıcı nedir?
  • Kayıt sistemi hangi sistem?
  • Bu veri Salesforce’a mı kopyalanıyor, yoksa başka bir yerde mi erişiliyor?
  • Bu tek bir nesne mi, yoksa birkaç ilişkili nesne mi?
  • Verinin sahibi kim ve onu ne kadar süre saklıyoruz?
  • Varsayılan erişim sınırlarımız neler?
  • Bu veri sistemler arasında nasıl hareket ediyor?

Bunlar bir alanın Lightning sayfasında nerede görüneceğine karar vermekten çok farklıdır. Sayfa tasarımı da önemlidir. Yanılmanın maliyeti farklıdır.

Tersinirlik Testi İkiye iki bir tablo. Yatay eksen: bir kararı geri almanın ne kadar zor olduğu, kolaydan zora. Dikey eksen: ona ne kadar şeyin bağlı olacağı, azdan çoğa. Sol alt, “Karar verin, geçin”: bir alan etiketi ve bir sayfa düzeni. Sol üst, “Değiştirmesi kolay, çok şey bağlı”: değişikliği koordine edin. Sağ alt, “Değiştirmesi zor, az şey bağlı”: taşımayı planlayın. Sağ üst, vurgulanmış, “Mimari”: benzersiz tanımlayıcı, kayıt sistemi ve nesne modeli; yavaşlayın ve nedenini yazın. DEĞIŞTIRMESI KOLAY, ÇOK ŞEY BAĞLI değişikliği koordine edin Hesap'ı “Müşteri” olarak yeniden etiketlemek sonra başka bir sistem İş Ortakları için Hesaplara ihtiyaç duyar MIMARI yavaşlayın ve nedenini yazın Benzersiz tanımlayıcı Kayıt sistemi Nesne modeli KARAR VERIN, GEÇIN gerekirse sonra değiştirin Bir alan etiketi Bir sayfa düzeni DEĞIŞTIRMESI ZOR, AZ ŞEY BAĞLI taşımayı planlayın İç bir nesnenin API adı kimse görmez ama ekibin kafasını karıştırır GERI ALMAK NE KADAR ZOR Kolay Zor ONA NE KADAR ŞEY BAĞLI OLACAK Az Çok Bunu geri almak ne kadar zor? Ona ne kadar şey bağlı olacak? İkisi de yüksekse: mimari bir karar. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Tersinirliği düşünmenin bir başka yolu da etki alanıdır: bu kararı değiştirirsem başka ne yerinden oynar?

Diyelim ki alan olarak modellediğimiz bir şeyin gerçekte bir alt nesne olması gerekiyor. Bu yalnızca bir şema değişikliği değildir. Mevcut veriye ne olacak? Raporlara, o alanı bekleyen entegrasyonlara, ona başvuran Apex ve Flow’lara, güvenliğe, analizlere, eylemleri özgün yapıya bağlı olan bir yapay zekâ ajanına ne olacak?

Etki alanı ne kadar büyükse, özgün kararı o kadar dikkatli vermeliyiz.

Mimarların sistemin kendi parçalarının ötesine bakmak zorunda olmasının nedeni de budur. Salesforce’un içinden bakıldığında bir değişiklik kolay görünebilir. Kurum genelinden bakıldığında on iki başka sistemi etkileyebilir.

Bir Veri Mimarı iki düzeyde düşünür.

Salesforce’un içinde nesnelere, ilişkilere, anahtarlara, hacme, erişime, otomasyona ve verinin platformda nasıl davrandığına karar veririz.

Kurum genelinde daha geniş sorular sorarız. Müşteri (Customer) gerçekte nerede yaşıyor? Ürünün sahibi kim? Bir Siparişi hangi sistem oluşturuyor? Yetkili tanımlayıcımız nedir? Hangi bilgi sistemler arasında kopyalanıyor ve hangisi olduğu yerde kalıyor?

İki düzeyin birbirine bağlanması gerekir. İç modelin kendi başına gayet mantıklı olduğu ama etrafındaki kuruma uymadığı Salesforce uygulamaları gördüm. Bu yeterli değildir. Salesforce yapılarının kurumsal düzeyde temsil edilmesi, kurumsal kararların da Salesforce’a geri akması gerekir.

Mimari çift yönlü bir trafiktir.

Mimari çift yönlü bir trafiktir Üst üste iki düzey. Kurum genelinde: Müşteri nerede yaşıyor, Ürünün sahibi kim, Siparişi hangi sistem oluşturuyor, kayıt sistemleri, esas tanımlayıcılar ve neyin kopyalandığı, neyin yerinde kaldığı. Salesforce org'unun içinde: nesneler ve ilişkiler, anahtarlar, hacim, erişim, otomasyon ve verinin platformda nasıl davrandığı. Bir ok aşağıyı gösterir, “kararlar aşağı akar”; diğeri yukarıyı, “yapılar yukarı akar”. Mimari çift yönlü bir trafiktir. kararlar aşağı akar yapılar yukarı akar Kurum genelinde Müşteri nerede yaşıyor? Ürünün sahibi kim? Siparişi hangi sistem oluşturuyor? Kayıt sistemleri Esas tanımlayıcılar Ne kopyalanıyor, ne yerinde kalıyor Salesforce org'unun içinde Nesneler ve ilişkiler Anahtarlar Hacim Erişim Otomasyon Verinin platformda nasıl davrandığı Mimari çift yönlü bir trafiktir. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Teknolojideki tehlikelerden biri, uygulaması en kolay kararların vermesi de en kolay kararlar gibi görünebilmesidir. Aynı şey değildirler.

Bir özel nesne daha oluşturmak kolaydır. Bir alan daha oluşturmak kolaydır. Bir API daha bağlamak giderek kolaylaşıyor ve yapay zekâ bunların hepsini daha da kolaylaştırıyor.

Ama uygulamanın kolaylığı bize mimari kararın maliyeti hakkında neredeyse hiçbir şey söylemez.

Geri alınması zor bir karardan önce şunları sormaya yetecek kadar yavaşlayın: Gerçekte hangi sorunu çözüyoruz? Hangi alternatifleri değerlendirdik? Neyi varsayıyoruz? Hacim büyüdükçe ve iş değiştikçe ne olur? Başka ne buna bağlı olacak? Yanılıyorsak ne olur?

Her nesne oluşturduğumuzda altı aylık bir incelemeye ihtiyacımız yok. Ama yanılmanın maliyetiyle orantılı bir düşünceye ihtiyacımız var. Tek bir departman ya da alt sistem için bir nesneyse daha hızlı hareket edebilirsiniz. Referans verisiyse, kilit bir müşteri nesnesiyse ya da sistemler arasında kullanılan bir şeyse, iyice düşünmek için zaman ayırın.

Önemli kararlarla ilgili bir sorun daha var: insanlar neden verildiklerini unutur.

Biri üç yıl sonra bir mimariye bakar ve “Kim böyle tasarlar ki?” diye sorar. Bazen cevap, bunun kötü bir tasarım olduğudur. Oluyor. Ama bazen çok iyi bir neden vardı: artık var olmayan bir platform sınırlaması, bir düzenleyici gereksinim, tercih edilen yaklaşımı destekleyemeyen başka bir sistem, bir son tarihe yetişmek için bilerek kabul edilen bir ödünleşim.

Yalnızca neye karar verdiğimizi kaydedip nedenini kaydetmezsek, bir sonraki mimarın bunu bilmesinin hiçbir yolu olmaz.

Önemli kararlar için bunu yazın. 50 sayfalık bir belge olması gerekmez. Faydalı bir karar kaydı çok küçük olabilir:

Bağlam: Hangi sorunu çözüyoruz?

Seçenekler: Hangi gerçekçi alternatifleri değerlendirdik?

Karar: Neyi seçtik?

Sonuçlar: Ne kazanıyoruz ve neden vazgeçiyoruz?

Sahip: Bu karardan kim sorumlu?

Gözden geçirme: Hangi neden ya da tarih bize onu yeniden ele aldırmalı?

Değer belgede değildir. Değer gerekçeyi korumaktadır.

Ve bir karar değiştiğinde özgün kararı silmeyin. Onun yerine yenisini koyun. 2027’de doğru olan karar 2030’da doğru olmayabilir, çünkü hacimler, iş, Salesforce ve bizim anlayışımız değişir. Korumak istediğim şey hikâyedir: bağlam buydu, karar buydu ve nedeni buydu, değişen şu oldu ve şimdi buna karar veriyoruz. Bu, cevabı hep biliyormuş gibi yapmaktan çok daha değerlidir.

Karar kaydı İki kart. Karar kaydı şablonu altı soru sorar: bağlam, hangi sorunu çözüyoruz; seçenekler, hangi gerçekçi alternatifleri değerlendirdik; karar, neyi seçtik; sonuçlar, ne kazanıyoruz ve neden vazgeçiyoruz; sahip, kim sorumlu; gözden geçirme, hangi neden ya da tarih yeniden ele almamızı gerektirir. Yanında, modül 1'deki onaylar hikâyesi için doldurulmuş aynı kart: her onay için bir onaylayıcı ve bir tarih gerekir; seçenekler Fırsat üzerinde daha fazla alan ya da bir alt Onay nesnesiydi; karar bir alt Onay nesnesi oldu; raporlamada bir nesne daha pahasına istenen sayıda onay; sahibi projenin veri mimarı; onaylar başka bir sisteme taşınırsa yeniden ele alınır. Karar kaydı altı soru, tek sayfa BAĞLAM Hangi sorunu çözüyoruz? SEÇENEKLER Hangi gerçekçi alternatifleri değerlendirdik? KARAR Neyi seçtik? SONUÇLAR Ne kazanıyoruz, neden vazgeçiyoruz? SAHIP Bu karardan kim sorumlu? GÖZDEN GEÇIRME Hangi neden ya da tarih yeniden ele almamızı gerektirir? Doldurulmuş hali: onaylar modül 1'den BAĞLAM Her onay için bir onaylayıcı ve bir tarih gerekir SEÇENEKLER Fırsat üzerinde Onaylayıcı 2 ve 3 alanları Bir alt Onay nesnesi KARAR Bir alt Onay nesnesi SONUÇLAR Her biri kendi tarihiyle istenen sayıda onay Raporlamada bir nesne daha SAHIP Projenin veri mimarı GÖZDEN GEÇIRME Onaylar başka bir sisteme taşınırsa Bir karar değiştiğinde onu silmeyin. Yerine yenisini koyun ve hikâyeyi saklayın. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Sınavın ötesinde: yapay zekâ karar ile bağımlılık arasındaki süreyi kısaltır. Bir yapay zekâ aracı saniyeler içinde bir veri modeli önerebilir, sonra onun üzerine nesneleri, otomasyonu, entegrasyon kodunu ve kullanıcı arayüzünü oluşturabilir. Şüpheli bir kararın üzerine çok şey bağlanması eskiden aylarca geliştirme gerektirirdi; şimdi bağımlılıklar neredeyse anında gelir. Bu yüzden yalnızca çıktıyı değil, çıktının altındaki kararları inceleyin. Yapay zekâ yardımcı olabilir: seçenekleri listeleyebilir, varsayımları sorgulayabilir ve karar kaydının taslağını yazabilir. Ama kararı yine mimar verir ve karar ne kadar zor geri alınırsa insan muhakemesi o kadar önemlidir.

Geliştirmenizi istediğim becerilerden biri dikkatinizi nereye harcayacağınızı bilmektir.

Her yapılandırma seçimini bir mimari zirvesine dönüştürmeyin.

Ama kurumun önümüzdeki on yıl boyunca yaşayacağı bir kararı da gelişigüzel vermeyin.

Şunu sorun:

Bunu geri almak ne kadar zor olacak?

Ona ne kadar şey bağlı olacak?

Cevaplar çok zor ve çok şey ise, muhtemelen mimari bir karar buldunuz.

İki karar, iki farklı dikkat düzeyi Yan yana iki karar; her birine aynı iki soru soruluyor. Bir alan etiketini Müşteri Kategorisi'nden Müşteri Segmenti'ne yeniden adlandırmak: geri alması kolay; ona biraz dokümantasyon ve eğitim bağlı; öyleyse karar verin ve devam edin. Zaten verisi olan büyük bir nesnede ana-ayrıntı ilişkisi ile arama ilişkisi arasında seçim yapmak: geri alması zor, çünkü mevcut her kayıt yeni kurala uymalı ve paylaşım ile toplamalar da onunla değişir; her kaydı kimin görebildiği, üst kayıtla birlikte neyin silindiği, toplama özetleri, raporlar, otomasyon ve veriyi yükleyen her entegrasyon ona bağlı; öyleyse yavaşlayın, seçenekleri inceleyin ve nedenini yazın. Bir alan etiketini yeniden adlandırmak Müşteri Kategorisi, Müşteri Segmenti olur GERI ALMAK NE KADAR ZOR? Kolay: etiketi yeniden değiştirin ONA NE KADAR ŞEY BAĞLI? Bir miktar dokümantasyon Biraz kullanıcı eğitimi ÖYLEYSE Karar verin ve devam edin Ana-ayrıntı mı, arama mı? zaten verisi olan büyük bir nesnede GERI ALMAK NE KADAR ZOR? Zor: mevcut her kayıt yeni kurala uymalı Paylaşım ve toplamalar da onunla değişir ONA NE KADAR ŞEY BAĞLI? Her kaydı kimin görebildiği Üst kayıtla birlikte neyin silindiği Toplama özetleri, raporlar, otomasyon Veriyi yükleyen her entegrasyon ÖYLEYSE Yavaşlayın, seçenekleri inceleyin Nedenini yazın Her seçimi bir mimari zirvesine dönüştürmeyin. On yıl boyunca yaşayacağınız bir kararı da gelişigüzel vermeyin. © 2026 Twinshark LLC · stevetecharc.com
Click to enlarge

Yavaşlayın. Gereksinimi anlayın. Alternatifleri keşfedin. Ödünleşimleri görünür kılın. Kararı verin. Ve nedenini yazın.

Mimarinin amacı asla değişemeyecek kararlar vermek değildir.

Amaç, fikrinizi değiştirmenin pahalı olacağı kararları fark etmektir.

  • Hangi kararların mimari olduğu: geri alınması zor ve onlara çok şey bağlı.
  • Her kararın yanılmanın maliyetiyle orantılı olarak ne kadar ilgi göreceği.
  • Hangi kararların bağlamı, seçenekleri, sonuçları, sahibi ve gözden geçirme noktasıyla birlikte yazılacağı.
  • Salesforce kararlarının kurumun kararlarıyla nasıl hizalandığı.
  • Object Relationships Overview (opens in a new tab), Salesforce Help (İngilizce, kontrol tarihi 2026-10-09; yeniden kontrol 2026-10-12): ana-ayrıntı ilişkisinde ayrıntı kaydının erişimi ve sahipliği ana kaydı izler ve bir ana kaydı silmek onun ayrıntılarını da siler.
  • Considerations for Object Relationships (opens in a new tab), Salesforce Help (İngilizce, kontrol tarihi 2026-10-09; yeniden kontrol 2026-10-12): bir arama ilişkisi ancak her kayıtta bir değer varsa ana-ayrıntı ilişkisine dönüştürülebilir; dönüştürmek paylaşım modelini değiştirir (Controlled by Parent, yani üst kayıt tarafından denetlenen) ve hangi standart rapor türlerinin kullanılabileceğine ilişki türü karar verir.
  • Roll-Up Summary Field (opens in a new tab), Salesforce Help (İngilizce, kontrol tarihi 2026-10-09; yeniden kontrol 2026-10-12): toplama özetleri yalnızca ana-ayrıntı ilişkilerinde vardır ve bir ana-ayrıntı ilişkisi arama ilişkisine dönüştürülmeden önce silinmeleri gerekir.