KoderKoder.ai
FiyatlandırmaKurumsalEğitimYatırımcılar için
Giriş YapBaşla

Ürün

FiyatlandırmaKurumsalYatırımcılar için

Kaynaklar

Bize UlaşınDestekEğitimBlog

Yasal

Gizlilik PolitikasıKullanım KoşullarıGüvenlikKabul Edilebilir Kullanım PolitikasıKötüye Kullanımı Bildir

Sosyal

LinkedInTwitter
Koder.ai
Dil

© 2026 Koder.ai. Tüm hakları saklıdır.

Ana Sayfa›Blog›Güvenli büyük değişiklikler için snapshot-öncelikli geliştirme iş akışı
03 Eki 2025·6 dk

Güvenli büyük değişiklikler için snapshot-öncelikli geliştirme iş akışı

Büyük şema, auth veya UI değişikliklerinden önce güvenli kaydetme noktaları oluşturmayı ve ilerlemeyi kaybetmeden geri almayı sağlayan snapshot-öncelikli bir geliştirme iş akışını öğrenin.

Snapshot-öncelikli ne demek ve neden yardımcı olur

Snapshot-öncelikli bir iş akışı, uygulamanızı bozabilecek bir değişiklik yapmadan önce bir kaydetme noktası oluşturduğunuz anlamına gelir. Snapshot, projenizin belirli bir andaki donmuş bir kopyasıdır. Sonraki adım ters giderse, el ile karmakarışık geri almaya çalışmak yerine tam olarak o duruma dönebilirsiniz.

Büyük değişiklikler nadiren tek, bariz bir şekilde başarısız olur. Bir şema güncellemesi üç ekran uzaktaki bir raporu bozabilir. Bir auth ayarı sizi kilitleyebilir. Bir UI yeniden yazımı örnek verilerle güzel görünürken gerçek hesaplarda ve kenar durumlarda darmadağın olabilir. Net bir kaydetme noktanız yoksa hangi değişikliğin soruna yol açtığını tahmin etmeye çalışırsınız veya bozuk bir sürümü yamalamaya devam ederken neyin "çalışır" olduğunu unutursunuz.

Snapshot'lar yardımcı olur çünkü bilinen iyi bir temel sağlarlar, cesur fikirleri denemeyi ucuzlatırlar ve testleri basitleştirirler. Bir şey bozulduğunda şu soruyu yanıtlayabilirsiniz: "Snapshot X'ten hemen sonra hâlâ iyiydi mi?"

Bir snapshot'ın neleri koruyup neleri koruyamayacağını açıkça bilmek de faydalıdır. Snapshot, kodunuzu ve yapılandırmanızı olduğu gibi korur (Koder.ai gibi platformlarda çalıştığınız uygulamanın tam durumunu da saklayabilir). Ancak yanlış varsayımları düzeltmez. Yeni özelliğiniz üretimde bulunmayan bir veritabanı sütunu bekliyorsa, kodu geri almak yapılan migration'ı geri almaz. Veri değişiklikleri, uyumluluk ve dağıtım sırası için ayrı bir plana ihtiyacınız vardır.

Zihniyet değişikliği, snapshot almayı bir alışkanlık olarak görmek, kurtarma düğmesi olarak değil. Riskli hareketlerden hemen önce snapshot alın, bir şey kırıldıktan sonra değil. Böylece her zaman temiz bir "son bilinen iyi" noktanız olduğu için daha hızlı ve daha sakin ilerlersiniz.

Kaydetme noktasını hak eden değişiklikler

Bir değişiklik pek çok şeyi aynı anda bozabileceğinde snapshot en çok işe yarar.

Şema çalışması bariz örnektir: bir sütunun adını değiştirirseniz API'leri, arka plan işlerlerini, dışa aktarımları ve hâlâ eski adı bekleyen raporları sessizce bozabilirsiniz. Auth değişiklikleri başka bir örnektir: küçük bir kural değişikliği yöneticileri kilitleyebilir veya istemeden erişim verebilir. UI yeniden yazımları sinsi olur çünkü görsel değişiklikleri davranış değişiklikleriyle karıştırırlar ve gerilemeler kenar durumlarda saklanır.

Basit bir kural isterseniz: veri yapısını, kimlik ve erişimi veya birden fazla ekranı aynı anda değiştiren her şeyden önce snapshot alın.

Düşük riskli düzenlemeler genellikle durup snapshot almayı gerektirmez. Metin değişiklikleri, küçük boşluk ayarları, küçük bir doğrulama kuralı veya ufak bir yardımcı fonksiyon temizliği genelde küçük etki alanına sahiptir. Odaklanmanıza yardımcı oluyorsa yine snapshot alabilirsiniz, ama her küçük düzenleme için iş akışınızı bölmenize gerek yok.

Yüksek riskli değişiklikler farklıdır. Genellikle "mutlu yol" testlerinizde çalışır ama eski satırlardaki null değerlerde, sıra dışı rol kombinasyonlarına sahip kullanıcılarda veya manuel olarak tetiklemediğiniz UI durumlarında başarısız olur.

Snapshot'ları kullanışlı tutacak şekilde adlandırma

Baskı altındayken bir snapshot'ı hızla tanıyabiliyorsanız o işin yarısıdır. İsim ve notlar, bir rollback'i sakin ve hızlı bir karara dönüştürür.

İyi bir etiket üç soruyu cevaplar:

  • Ne değişti?
  • Neden değişti?
  • Sonraki adım neydi?

Kısa ama spesifik tutun. "before update" veya "try again" gibi belirsiz isimlerden kaçının.

Okunaklı kalan bir adlandırma deseni

Bir desen seçin ve ona sadık kalın. Örneğin:

  • [WIP] Auth: add magic link (prep for OAuth)
  • [GOLD] DB: users table v2 (passes smoke tests)
  • [WIP] UI: dashboard layout refactor (next: charts)
  • [GOLD] Release: billing fixes (deployed)
  • Hotfix: login redirect loop (root cause noted)

Önce durum, sonra alan, sonra eylem, sonra kısa bir "sonraki" kısmı. Bu son kısım bir hafta sonra şaşırtıcı derecede yardımcı olur.

İsimler tek başına yeterli değildir. Gelecekteki kendinizin unutacağı şeyleri notlara kaydedin: yaptığınız varsayımlar, ne test ettiğiniz, hangi sorunların olduğunu ve hangi sorunları kasıtlı olarak görmezden geldiğinizi.

İyi notlar genellikle varsayımları, 2-3 hızlı test adımını, bilinen sorunları ve her türlü riskli detayı (şema değişiklikleri, izin değişiklikleri, routing değişiklikleri) içerir.

“Golden” vs “work in progress”

Bir snapshot'ı GOLD olarak işaretleyin yalnızca sürpriz olmadan oraya geri dönebilirsiniz: temel akışlar çalışıyor, hatalar anlaşılıyor ve oradan devam edebilirsiniz. Diğer her şey WIP'dir. Bu küçük alışkanlık, gerçekte büyük bir hatayı unutmuş olduğunuz için istikrarlı görünen bir noktaya geri dönmeyi engeller.

Adım adım: basit bir snapshot-öncelikli döngü

Sağlam bir döngü basittir: yalnızca bilinen iyi noktalardan ilerleyin.

1) “Çalışıyor” durumundan başlayın

Snapshot almadan önce uygulamanın gerçekten çalıştığından ve ana akışların davranışlarının yerinde olduğundan emin olun. Küçük tutun: ana ekranı açabiliyor musunuz, giriş yapabiliyor musunuz (uygulanıyorsa) ve bir temel işlemi hatasız tamamlayabiliyor musunuz? Bir şey zaten dengesizse önce onu düzeltin; aksi halde snapshot bir problemi saklar.

2) Snapshot oluşturun ve niyeti yazın

Bir snapshot oluşturun, sonra neden var olduğunu bir satırla not edin. Yaklaşan riski tanımlayın, mevcut durumu değil.

Örnek: “Before changing users table + adding organization_id” veya “Before auth middleware refactor to support SSO”.

3) Tek bir odaklı değişiklik yapın

Bir iterasyonda birden fazla büyük değişikliği yığmaktan kaçının (şema artı auth artı UI). Tek bir dilim seçin, bitirin ve durun.

İyi bir “tek değişiklik”, "yeni bir sütun ekleyip eski kodu çalışır tutmak" gibi bir şey olmalıdır; "tüm veri modelini değiştirmek ve her ekranı güncellemek" gibi kapsamlı değil.

4) Her değişiklikten sonra küçük, tekrarlanabilir bir kontrol çalıştırın

Her adım sonrası aynı hızlı kontrolleri çalıştırın ki sonuçlar karşılaştırılabilir olsun. Kısa tutun ki gerçekten yapasınız.

  • Uygulama hatasız başlar
  • Bir ana akış uçtan uca çalışır
  • O akış sırasında yeni konsol/sunucu hatası yok
  • Tanıttığınız yeni kenar durumu kapsanmış (örneğin boş durum)

5) Değişiklik yeni stabil noktaya ulaştığında tekrar snapshot alın

Değişiklik çalışıyor ve temiz bir temel elde ettiğinizde yeniden bir snapshot alın. Bu bir sonraki adım için yeni güvenli noktanız olur.

Şema değişikliklerinden önce: kaydetme noktalarını nereye koymalısınız

UI üzerinde dilim dilim yineleyin
React ekranlarını dilimler halinde yeniden yazın ve ilerledikçe kararlı noktalar kaydedin.
İnşa Etmeye Başla

Veritabanı değişiklikleri küçük hissedebilir ta ki kayıt, rapor veya bir arka plan işi bozulana kadar. Şema çalışmalarını tek büyük sıçrama yerine bir dizi güvenli kontrol noktası olarak ele alın.

Herhangi bir şeye dokunmadan önce snapshot ile başlayın. Sonra sade bir dilde temel bir durum yazın: hangi tablolar ilgili, hangi ekranlar veya API çağrıları bunları okuyor ve "doğru" ne demek (zorunlu alanlar, benzersizlik kuralları, beklenen satır sayıları). Bu birkaç dakika alır ve davranışı karşılaştırmanız gerektiğinde saatler kazandırır.

Çoğu şema işi için pratik bir set şöyle görünür:

  • Snapshot 1 (temel): ilk migration'dan önce. Önemli tablolar, önemli sorgular ve doğrulama için kullanacağınız kullanıcı akışlarını not edin.
  • Snapshot 2 (ekleyici değişiklikler): yeni tablolar/sütunlar ekledikten sonra (henüz silme yok). Eski davranış çalışmalı.
  • Snapshot 3 (backfill): yeni sütunlara veri kopyalandıktan/hesaplandıktan sonra, birkaç spot kontrol ile.
  • Snapshot 4 (kod geçişi): uygulama yeni yapıyı okuduğunda.
  • Snapshot 5 (temizlik): gerçek kullanım kontrollerinden sonra eski sütunları kaldırma veya kısıtlamaları sıkılaştırma.

Her checkpoint'ten sonra mutlaka sadece mutlu yol değil, daha fazlasını doğrulayın. CRUD akışları önemli, ama dışa aktarımlar (CSV indirmeleri, faturalar, admin raporları) da aynı derecede önemlidir çünkü genellikle eski sorguları kullanırlar.

Başlamadan önce geri alma yolunu planlayın. Yeni bir sütun ekleyip ona yazmaya başladıysanız, eğer geri dönecekseniz ne olacağını kararlaştırın: eski kod sütunu güvenle görmezden mi gelecek yoksa ters bir migration mı gerekli? Kısmen migrate edilmiş veriyle karşılaşırsanız, bunu nasıl tespit edip tamamlayacağınızı veya nasıl temiz bırakacağınızı belirleyin.

Auth değişikliklerinden önce: kilitlenmeleri önleme

Auth değişiklikleri sizi ve kullanıcıları kilitlemenin en hızlı yollarından biridir. Bir save point, riskli bir değişikliği denemenize, test etmenize ve gerektiğinde hızlıca geri almanıza izin verir.

Dokunmadan önce bir snapshot alın. Sonra bugünkü durumu yazın, hatta bariz gelse bile. Bu, “yöneticilerin hâlâ giriş yapabildiğini sanıyordum” sürprizlerini önler.

Aşağıdakileri kaydedin:

  • Mevcut giriş yöntemleri (email/şifre, magic link, SSO/OAuth vb.)
  • Roller ve izinler ("user" vs "admin" ne yapabilir)
  • Özel kurallar (invite-only, 2FA zorunlu, IP allowlist)
  • Test hesapları (bir normal kullanıcı, bir admin)
  • Auth ile bağlı gizli ayarlar ve ortam değerleri (anahtarlar, callback URL'leri, token süreleri)

Değişiklik yaparken bir kuralı aynı anda değiştirin. Rol kontrollerini, token mantığını ve giriş ekranlarını aynı anda değiştirirseniz hangi değişikliğin arızaya yol açtığını bilemezsiniz.

İyi bir ritim şudur: bir parça değiştirin, aynı küçük kontrolleri çalıştırın, sonra temizse yeniden snapshot alın. Örneğin "editor" rolü ekliyorsanız önce oluşturma ve atamayı uygulayıp girişlerin hâlâ çalıştığını doğrulayın. Sonra bir izin kapısı ekleyip tekrar test edin.

Değişiklikten sonra kontrolü üç açıdan yapın: normal kullanıcılar admin'e özel eylemleri görmemeli, admin'ler hâlâ ayarlara ve kullanıcı yönetimine ulaşabilmeli. Kenar durumları da test edin: süresi dolmuş oturumlar, şifre sıfırlama, devre dışı bırakılmış hesaplar ve test esnasında kullanmadığınız bir yöntemle giriş yapan kullanıcılar.

Bir kişinin kaçırdığı detay: gizli anahtarlar genellikle kodun dışında yaşar. Kodu geri alsanız bile yeni anahtarlar ve callback ayarları kalırsa auth kafa karıştırıcı şekilde bozulabilir. Yaptığınız ortam değişiklikleri hakkında net notlar bırakın.

UI yeniden yazımlarından önce: ilerlemeyi kaosa sokmadan koruyun

Temelinizi kaybetmeden refactor yapın
Büyük refaktörlerde bilinen iyi bir kontrol noktasını koruyun, böylece geri alınabilirlik sağlanır.
Proje Oluştur

UI yeniden yazımları davranış değişikliklerini görsellikle karıştırdıkları için risklidir. UI kararlı ve öngörülebilirken bir save point oluşturun; bu snapshot, gerekirse gönderebileceğiniz son sürümünüz olur.

Yeniden yazımı dilimlere ayırın

UI yeniden yazımları tek büyük anahtar olarak ele alındığında başarısız olur. Çalışmayı bağımsız durabilen dilimlere bölün: bir ekran, bir route veya bir bileşen.

Checkout'u yeniden yazıyorsanız Cart, Address, Payment ve Confirmation şeklinde dilimleyin. Her dilimden sonra eski davranışı ilk olarak eşleştirin. Sonra düzeni, metni ve küçük etkileşimleri iyileştirin. O dilim "tutulabilir" olduğunda snapshot alın.

Genelde bozulan kısımları tekrar test edin

Her dilimden sonra yeniden yazımlarda tipik olarak bozulan şeye odaklanan hızlı bir retest çalıştırın:

  • Navigasyon: ana yollardan ekranlara hala ulaşabiliyor musunuz?
  • Formlar: doğrulama, zorunlu alanlar, submit eylemleri
  • Yükleme ve boş durumlar
  • Hata durumları (başarısız istekler, izin hataları, tekrar denemeler)
  • Mobil davranış (küçük ekranlar, kaydırma, dokunma hedefleri)

Yaygın bir hata şöyle görünür: yeni Profil ekranı daha güzel ama bir alan artık kaydetmiyor çünkü bir bileşen payload şeklini değiştirdi. İyi bir checkpoint ile geri alıp karşılaştırabilir ve görsel iyileştirmeleri kaybetmeden sorunu düzeltebilirsiniz.

İyi işi kaybetmeden güvenli geri alma

Geri alma kontrollü hissettirmeli, panik hareketi olmamalı. Tam bir geri alma mı yoksa tek bir değişikliğin kısmi geri alınması mı gerektiğine önce karar verin.

Tam geri alma, uygulama birçok yerde bozulduğunda mantıklıdır. Kısmi geri alma, tek bir migration, bir route guard veya çökme yapan bir bileşen gibi tek parça hatalarda uygundur.

Güvenli bir geri alma sırası

Son kararlı snapshot'ınızı eviniz gibi düşünün:

  1. Son kararlı snapshot'a geri dönün.
  2. Ana akışların tekrar çalıştığını doğrulayın (uygulamayı başlatın, giriş yapın, ana ekrana ulaşın, kritik bir işlemi çalıştırın).
  3. Hemen yeni bir snapshot oluşturun, örneğin “stable-after-rollback”.
  4. İyi iterasyonu daha küçük adımlarda yeniden uygulayın (bir migration, bir auth kuralı, bir UI parçası).
  5. Her temiz adımdan sonra snapshot alın.

Sonra beş dakika temel kontroller yapın; rollback yapıp yine de sessiz bir bozulmayı kaçırmak kolaydır, örneğin artık çalışmayan bir arka plan işi gibi.

Çoğu problemi yakalayan hızlı kontroller:

  • Yeni bir kullanıcı kayıt olup giriş yapabiliyor mu?
  • Ana sayfa hatasız yükleniyor mu?
  • Oluşturma ve kaydetme işlemleri çalışıyor mu ("para yolu")?
  • Veri hâlâ mevcut ve okunabilir mi?

Örnek: büyük bir auth refactor'ı denediniz ve admin hesabınızı engellediniz. Değişiklikten hemen önceki snapshot'a geri dönün, giriş yapabildiğinizi doğrulayın, sonra düzenlemeleri daha küçük adımlarla yeniden uygulayın: önce roller, sonra middleware, sonra UI gating. Eğer tekrar kırılırsa hangi adımın buna yol açtığını bileceksiniz.

Son olarak kısa bir not bırakın: ne kırıldı, nasıl fark ettiniz, ne düzeldi ve bir dahaki sefere ne yapacaksınız. Bu, rollback'leri zaman kaybı yerine öğrenmeye dönüştürür.

Rollback'leri acı verici yapan yaygın hatalar

Özel alan adlarını güvenle kullanın
Geri alma işlemlerini basit tutmak için özel alan adlarını güvenli bir noktadan değiştirin.
Alan Adı Ayarla

Rollback acısı genellikle belirsiz kaydetme noktalarından, karışık değişikliklerden ve atlanan kontrollerden kaynaklanır.

  • Çok nadir kayıt almak klasik bir hatadır. "Hızlı" bir şema düzeltmesini, küçük bir auth kural değişikliğini ve bir UI ayarını arka arkaya yaparsınız, sonra temiz bir yere dönemezsiniz.

  • Karşıt problem: not yazmadan sürekli snapshot almak. On tane "test" veya "wip" adlı snapshot, güvenilir olanı seçmenizi zorlaştırır.

  • Bir iterasyonda birden fazla riskli değişikliği karıştırmak başka bir tuzaktır. Şema, izinler ve UI birlikte gelirse geri alma bir tahmin oyunu olur. Ayrıca iyi kısmı (örneğin bir UI iyileştirmesi) geri alırken riskli kısmı (örneğin migration) tutma şansını kaybedersiniz.

  • Bir diğer sorun: veri varsayımlarını ve izinleri kontrol etmeden rollback yapmak. Rollback sonrası veritabanı hâlâ yeni sütunlar, beklenmeyen null'lar veya kısmen migrate edilmiş satırlar içerebilir. Ya da eski auth mantığını geri getirirken yeni kurallar altında roller oluşturulmuş olabilir. Bu uyumsuzluk, rollback işe yaramamış gibi görünebilir oysa işe yaramıştır.

Bunu önlemenin basit yolu:

  • Karar noktalarında snapshot alın (bir riskli değişiklikten önce ve sonra), sadece gün sonunda değil.
  • Bir cümle not yazın: ne değişti, ne test ettiniz, "iyi" ne demek.
  • Büyük işleri ayırın: önce şema, sonra auth, sonra UI.
  • Rollback'ten sonra veritabanı durumunu ve gerçek bir izin yolunu doğrulayın.
  • Rollback'i tetikleyen hatayı yeniden üretin ve sorunun kaybolduğunu onaylayın.

Kontrol listesi, gerçekçi bir örnek ve sonraki adımlar

Snapshot'lar hızlı kontrollerle birlikte en iyi şekilde çalışır. Bu kontroller tam bir test planı değildir. Hızlıca size devam edip etmeyeceğinizi söyleyen küçük bir eylem setidir.

Riskli değişiklikten önce hızlı kontroller

Bunları snapshot almadan hemen önce çalıştırın. Mevcut sürümün kaydedilmeye değer olduğunu kanıtlıyorsunuz:

  • Uygulama hatasız başlıyor ve yükleniyor.
  • En az bir gerçek kullanıcıyla (veya test kullanıcısıyla) giriş çalışıyor.
  • Bir temel akış uçtan uca çalışıyor (bir şey oluştur, kaydet, tekrar gör).
  • Veritabanına erişilebiliyor ve temel okumalar çalışıyor.
  • Bir cümleyle bir sonraki değişikliği tanımlayabiliyorsunuz.

Bir şey zaten bozuksa önce onu düzeltin. Sorun için snapshot almak, sadece hata ayıklama amacıyla saklamak istemedikçe doğru değildir.

Riskli değişiklikten sonra hızlı kontroller

Bir mutlu yol, bir hata yolu ve bir izin kontrolü hedefleyin.

  • Mutlu yol: dokunduğunuz ana işlemi tamamlayın.
  • Hata yolu: bilinen bir hatayı tetikleyin ve mesajın mantıklı olduğunu doğrulayın.
  • İzinler: erişmesi gereken bir kullanıcının eriştiğini ve erişmemesi gerekenin erişemediğini doğrulayın.
  • Yeniden yükle ve tekrar ziyaret: durumu kaybolmadığını doğrulayın.
  • Eğer migration varsa: bir eski kaydı ve bir yeni kaydı kontrol edin.

Örnek: yeni kullanıcı rolü ve ayarlar UI yeniden tasarımı

Yeni "Manager" rolü ekleyip Ayarlar ekranını yeniden tasarladığınızı varsayın.

  1. Kararlı bir derlemeden başlayın. Değişiklik öncesi kontrolleri çalıştırın, sonra açık bir isimle snapshot alın: “pre-manager-role + pre-settings-redesign”.

  2. Önce backend rol işini yapın (tablolar, izinler, API). Roller ve erişim kuralları doğru çalıştığında tekrar snapshot alın: “roles-working”.

  3. Sonra Settings UI yeniden tasarımına başlayın. Büyük bir layout değişikliğinden önce snapshot alın: “pre-settings-ui-rewrite”. UI dağılırsa bu noktaya geri dönüp daha temiz bir yaklaşım deneyebilirsiniz, böylece iyi rol çalışmasını kaybetmezsiniz.

  4. Yeni Settings UI kullanılabilir hale geldiğinde snapshot alın: “settings-ui-clean”. Sadece sonra cilalamaya geçin.

Sonraki adımlar

Bu hafta küçük bir özellikte deneme yapın. Bir riskli değişiklik seçin, etrafına iki snapshot koyun (önce ve sonra) ve niyeteniz olsun diye bir geri alma provası yapın.

Eğer Koder.ai üzerinde inşa ediyorsanız (koder.ai), yerleşik snapshot ve rollback özellikleri bu iş akışını sürdürmeyi kolaylaştırır. Hedef basit: büyük değişiklikleri geri alınabilir kılmak, böylece en iyi çalışan sürümünüzü riske atmadan hızlı ilerleyebilirsiniz.

SSS

“Snapshot-öncelikli” gerçekte ne anlama geliyor?

Bir snapshot, projenizin belirli bir andaki donmuş kaydetme noktasıdır. Varsayılan alışkanlık şudur: riskli bir değişiklik yapmadan hemen önce bir snapshot alın, böylece bir şey bozulursa bilinen iyi bir duruma dönebilirsiniz.

Başarısızlıkların dolaylı olduğu durumlarda en faydalıdır (örneğin bir şema değişikliğinin bir raporu bozması, bir auth değişikliğinin sizi kilitlemesi veya gerçek verilerde UI yeniden yazımının başarısız olması).

Ne zaman snapshot oluşturmalıyım (ne zaman gereksiz olur)?

Büyük etki alanı olan değişikliklerden önce snapshot alın:

  • Veritabanı/şema değişiklikleri (yeni sütunlar, yeniden adlandırmalar, kısıtlar, migration'lar)
  • Auth ve izinler (roller, middleware, oturum/token kuralları, SSO ayarları)
  • Çok ekranlı UI yeniden yazımları (routing, formlar, paylaşılan bileşenler)

Küçük düzenlemeler (yazım değişiklikleri, küçük boşluk ayarları, ufak refactor'lar) için genellikle her seferinde durup snapshot almanız gerekmez.

Snapshot'ları ileride kullanmayı kolaylaştıracak şekilde nasıl adlandırmalıyım?

Aşağıdaki soruları yanıtlayan tutarlı bir desen kullanın:

  • Ne değişti?
  • Neden?
  • Sonraki adım ne?

Pratik bir format: DURUM + Alan + Eylem (+ sonraki adım).

Örnekler:

  • [WIP] Auth: add magic link (next: OAuth)
  • [GOLD] DB: users v2 (passes smoke tests)

"test" veya "before update" gibi belirsiz isimlerden kaçının—baskı altındayken güvenmesi zordur.

GOLD snapshot ile WIP snapshot arasındaki fark nedir?

Bir snapshot'a GOLD damgasını yalnızca ona geri döndüğünüzde sürdürüp çalışmaya devam etmekten memnun olacağınızda verin.

İyi bir GOLD snapshot genellikle şunları sağlar:

  • Uygulama temiz başlıyor
  • Bir ana akış uçtan uca çalışıyor
  • Bilinen hatalar anlaşılmış ve belgelenmiş

Diğer tüm durumlar WIP olmalıdır. Bu, aslında istikrarlı olmayan bir noktaya geri dönmeyi önler.

Riskli bir değişiklikten önce ve sonra ne test etmeliyim?

Kontroller kısa ve tekrarlanabilir olmalı ki gerçekten yapasınız:

  • Uygulama hatasız başlıyor
  • Giriş çalışıyor (uygunsa)
  • Bir temel akış uçtan uca çalışıyor (oluştur/kaydet/görüntüle)
  • O akış sırasında yeni bir konsol/sunucu hatası yok
  • Yeni bir kenar durumu (boş durum, doğrulama hatası, izin kapısı) kontrol edildi

Amaç tam test değil—sadece güvenli bir temel kaldığınızın kanıtı.

Veritabanı şema değişiklikleri için güvenli bir snapshot planı nedir?

Pratik bir kaydetme noktası dizisi şudur:

  • Başlangıç snapshot: ilk migration'dan önce
  • Ekleme snapshot: yeni sütunlar/tablolar eklendikten sonra (silme yok)
  • Backfill snapshot: yeni sütunlara veri kopyalandı/hesaplandıktan sonra, birkaç spot kontrol ile
  • Kod geçiş snapshot: uygulama yeni yapıyı okuyor/yazıyor olduğunda
  • Temizlik snapshot: gerçek kullanım kontrollerinden sonra eski sütunları kaldırma veya kısıtlamaları sıkılaştırma

Varsayılan kural: her şeyi birden yeniden adlandıran bir büyük migration'dan kaçının. Değişiklikleri test edip geri alabileceğiniz küçük adımlara bölün.

Auth veya izinleri değiştirirken kilitlenmeleri nasıl önlerim?

Auth değişiklikleri sizi (ve kullanıcıları) kilitlemenin en hızlı yollarından biridir. Bir save point, riskli bir değişikliği denemenize, test etmenize ve gerekirse hızla geri almanıza yardımcı olur.

Yapmadan önce bir snapshot alın ve mevcut durumu yazın, bu açıkça yardımcı olur (örneğin “yöneticilerin giriş yapabildiğini sanıyordum” sürprizlerini önler).

Temel bilgileri yakalayın:

  • Mevcut giriş yöntemleri (email/şifre, magic link, SSO/OAuth vb.)
  • Roller ve izinler ("user" vs "admin" ne yapabilir)
  • Özel kurallar (invite-only, 2FA zorunlu, IP allowlist)
  • Test hesapları (bir normal kullanıcı, bir admin)
  • Auth ile ilgili gizli ayarlar ve ortam değerleri (anahtarlar, callback URL'leri, token süreleri)

Değişiklik yaparken bir seferde bir kural değiştirin. Rol kontrollerini, token mantığını ve giriş ekranlarını aynı anda değiştirmeyin—hangi adımın hataya yol açtığını anlayamazsınız.

Ayrıca unutulan bir detay: gizli anahtarlar genellikle kod dışında yaşar. Kodu geri alsanız bile yeni anahtarlar veya callback ayarları kalırsa auth kafa karıştırıcı şekilde bozulabilir. Yaptığınız ortam değişikliklerini not edin.

UI yeniden yazımını kaosa dönüştürmeden nasıl yaparım?

UI yeniden yazımları görsel değişiklikleri davranış değişiklikleriyle karıştırdığı için risklidir. UI kararlı ve öngörülebilirken bir save point oluşturun; bu snapshot, gerekiyorsa gönderebileceğiniz son sürümünüz olur.

Yeniden yazımı dilimlere ayırın:

  • Bir ekran, bir route veya bir bileşen olarak parçalayın
  • Checkout yeniden yazılıyorsa Cart, Address, Payment, Confirmation şeklinde bölün
  • Her dilim için önce eski davranışı yakalayın, sonra düzeni, yazıyı ve küçük etkileşimleri iyileştirin
  • Bir dilim "yeterince düzenli" olduğunda snapshot alın

Her dilimden sonra sık bozulan parçaları tekrar test edin: navigasyon, formlar, yükleme/boş/hata durumları, mobil davranış.

İyi bir checkpoint sayesinde, yeni Profil ekranı daha güzel görünse bile bir alanın artık kaydetmemesi gibi sorunlarda geri alıp görsel iyileştirmeleri kaybetmeden düzeltebilirsiniz.

İyi çalışırken kaybetmeden güvenli şekilde nasıl geri alırım?

Geri alma kontrollü hissettirmeli, panik ile yapılan bir hareket olmamalı. Tam bir geri alma mı yoksa tek bir değişikliğin kısmi geri alınması mı gerektiğine karar verin.

Tam geri alma, uygulama birçok yerde bozulduğunda mantıklıdır (testler başarısız, sunucu başlamıyor, giriş kilitli). Kısmi geri alma, tek bir migration, bir route guard veya çökme yapan bir bileşen gibi tek parça hatalarda uygundur.

Güvenli geri alma sırası:

  1. Son kararlı snapshot'a geri dönün.
  2. Ana akışların tekrar çalıştığını doğrulayın (uygulamayı başlatın, giriş yapın, ana ekranı açın, kritik bir işlemi çalıştırın).
  3. Hemen yeni bir snapshot oluşturun, örneğin “stable-after-rollback”.
  4. İyi iterasyonu daha küçük adımlarda yeniden uygulayın (bir migration, bir auth kuralı, bir UI parçası).
  5. Her temiz adımdan sonra snapshot alın ki bir sonraki riskli kısma gitmeden durabilesiniz.

Ardından beş dakika temel kontroller yapın: yeni kullanıcı kayıt olabiliyor mu, ana sayfa hata vermiyor mu, oluştur/kaydet işlemleri çalışıyor mu, veri mevcut ve okunabilir mi.

Örneğin büyük bir auth refactor'ı yöneticinizi engellediyse, değişiklikten hemen önceki snapshot'a geri dönün, giriş yapabildiğinizi doğrulayın, sonra rolleri, middleware'i ve UI gating'i ayrı adımlarda yeniden uygulayın—hangi adımın kırdığını belirleyeceksiniz.

Son olarak kısa bir not bırakın: ne bozuldu, nasıl fark ettiniz, ne düzeltti ve bir dahaki sefere ne yapacaksınız. Bu, rollback'leri öğrenmeye dönüştürür.

Rollback'leri acı verici yapan en yaygın hatalar nelerdir?

Geri alma acısını genellikle belirsiz kaydetme noktaları, karışık değişiklikler ve atlanan kontroller artırır.

Yaygın hatalar:

  • Çok nadir kayıt almak: Temiz dönebileceğiniz nokta bulamazsınız.
  • Sürekli ama notsuz kayıt almak: On snapshot'ın hepsi “test” ise hangisinin güvenli olduğunu anlayamazsınız.
  • Birden fazla riskli değişikliği aynı iterasyonda karıştırmak: şema + izinler + UI birlikte gelirse hata izole edilemez.
  • Veri ve ortam uyumsuzluğunu görmezden gelmek: Rollback kodu geri alsa bile zaten çalıştırılmış bir migration veya değiştirilmiş auth gizli anahtarları kalır.

Bunun çoğundan kaçınmak için basit kurallar:

  • Karar noktalarında snapshot alın (bir riskli değişiklikten önce/sonra), sadece gün sonlarında değil.
  • Bir cümle not yazın: ne değişti, ne test ettiniz, "iyi" ne demek.
  • Büyük işleri türlere göre ayırın: önce şema, sonra auth, sonra UI.
  • Rollback'ten sonra veritabanı durumunu ve gerçek bir izin yolunu doğrulayın.
  • Rollback'i tetikleyen hatayı yeniden üretil ve sorunun kaybolduğunu onaylayın.
İçindekiler
Snapshot-öncelikli ne demek ve neden yardımcı olurKaydetme noktasını hak eden değişikliklerSnapshot'ları kullanışlı tutacak şekilde adlandırmaAdım adım: basit bir snapshot-öncelikli döngüŞema değişikliklerinden önce: kaydetme noktalarını nereye koymalısınızAuth değişikliklerinden önce: kilitlenmeleri önlemeUI yeniden yazımlarından önce: ilerlemeyi kaosa sokmadan koruyunİyi işi kaybetmeden güvenli geri almaRollback'leri acı verici yapan yaygın hatalarKontrol listesi, gerçekçi bir örnek ve sonraki adımlarSSS
Paylaş