Hotfix
Acil Düzeltme
- Türkçe karşılığı
- acil yama
- Okunuşu
- hatfiks
Günlük kullanımda çoğunlukla İngilizcesi tercih edilir.
Kısaca
Hotfix, çökme ya da güvenlik açığı gibi production'daki ciddi bir sorun için hızla ve olağan sürüm takviminin dışında yayımlanan acil bir düzeltmedir.
Hotfix nedir?
Olağan değişiklikler inceleme, test ve bir sonraki sürümü bekler. Hotfix bekleyemez: kullanıcılar şu anda etkileniyor. Düzeltme olabildiğince küçük tutulur ve tam olarak production'da çalışan koddan başlanır; böylece acil sürüme ilgisiz hiçbir şey sızmaz. Yine de hızlı bir incelemeden ve en önemli otomatik testlerden geçer, çünkü aceleyle yapılıp başka bir şeyi bozan bir düzeltme olayı daha da kötüleştirir.
Gitflow'da bir hotfix branch'i main'den ya da production etiketinden oluşturulur, düzeltilir, 2.4.1 gibi bir patch sürümü olarak yayımlanır, sonra düzeltme bir sonraki sürümde kaybolmasın diye hem main'e hem develop'a birleştirilir. Trunk tabanlı geliştirmede ise düzeltme trunk'a commit'lenir ve olağan hızlı hat üzerinden dağıtılır ya da kullanılıyorsa bir sürüm branch'ine cherry-pick edilir.
İlk müdahaleyi çoğu zaman feature flag'ler ve hızlı geri almalar sağlar: bozuk özelliği kapatın ya da önceki sürüme geri dönün, sonra düzgün bir hotfix'i sakin şekilde hazırlayın. Olaydan sonra suçlamasız bir postmortem, hatanın neden production'a ulaştığına bakar ve aynı türden bir sorunun bir dahaki sefere daha erken yakalanması için testler ya da kontroller ekler.
Sık yapılan bir yanlış, hotfix'in süreci atlamanın bir kısayolu olduğunu düşünmektir. Acil durumlar için ayrı ve iyi tanımlanmış bir süreçtir. Sürekli hotfix yapan ekiplerin genellikle eksik testler ya da riskli dağıtımlar gibi daha derin bir sorunu vardır; bunu daha hızlı bir olağan hat daha iyi çözer.
Önemli noktalar
- Hotfix, ciddi bir production sorununu acilen düzeltir.
- Production'da çalışan koddan başlar ve olabildiğince küçük kalır.
- Gitflow'da hotfix branch'leri hem main'e hem develop'a birleştirilir.
- Önce çoğu zaman geri alma ve feature flag'ler, sonra düzeltme gelir.
- Sık hotfix'ler test ya da dağıtımdaki açıklara işaret eder.
Örnek
# Start from exactly what is in production
git switch -c hotfix/2.4.1 v2.4.0
# Make the minimal fix, then commit
git commit -am "fix(checkout): handle missing shipping address"
# Release it
git tag v2.4.1 && git push origin hotfix/2.4.1 --tags
# Make sure the fix also reaches ongoing development
git switch main && git merge --no-ff hotfix/2.4.1Sık sorulan sorular
Hotfix ile hata düzeltmesi arasındaki fark nedir?
Hata düzeltmesi olağan geliştirme ve sürüm döngüsünden geçer. Hotfix ise acil production sorunlarına ayrılmıştır ve o döngünün dışında hemen yayımlanır.
Hotfix ile patch arasındaki fark nedir?
Terimler örtüşür. Patch, çoğu zaman bir patch sürümü olarak yayımlanan herhangi bir küçük güncellemedir. Hotfix ise aciliyeti vurgular: canlı bir sorunu düzeltmek için olabildiğince çabuk yayına alınır.
Bir hotfix test edilmeli mi?
Evet, hızlı ama ciddi şekilde. Otomatik testleri çalıştırın, değişikliği inceleyin ve mümkünse düzeltmeyi staging'de kontrol edin, çünkü bozuk bir hotfix bir olayı ikiye çıkarır.
İlgili sayfalar
- GitflowSürüm Kontrolü, s. 24Gitflow, planlı sürümleri yönetmek için uzun ömürlü main ve develop branch'lerini feature, release ve hotfix branch'leriyle kullanan bir Git branch modelidir.
- Cherry-pickSürüm Kontrolü, s. 3Git'te cherry-pick, belirli bir commit'in değişikliklerini geldiği branch'in geri kalanını birleştirmeden, mevcut branch'inize yeni bir commit olarak kopyalar.
- RollbackDevOps ve Bulut, s. 43Rollback, yeni bir dağıtım hatalara, kesintilere ya da beklenmedik başka sorunlara yol açtığında yazılımı önceki, sorunsuz sürüme döndürme işlemidir.
- PostmortemDevOps ve Bulut, s. 40Postmortem, bir olaydan sonra yazılan; ne olduğunu, neden olduğunu ve tekrarlanmaması için ekibin neyi değiştireceğini açıklayan yazılı bir incelemedir.
- Semantic VersioningSürüm Kontrolü, s. 35Semantic versioning, her bölümün bir sürümün uyumluluğu bozduğunu, özellik eklediğini ya da hata düzelttiğini belirttiği MAJOR.MINOR.PATCH şemasıdır.
- Feature FlagDevOps ve Bulut, s. 18Feature flag, koddaki bir özelliği çalışma zamanında açıp kapatan bir anahtardır; ekipler kodu herkese aynı anda yayınlamadan dağıtabilir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin