Mavi-Yeşil ve Kanarya Konuşlandırılması: Farklılıklar, Takaslar ve Nasıl Seçilir

  1. Ana sayfa
  2. Blog
  3. DevOps

DevOps

Mavi-Yeşil ve Kanarya Konuşlandırılması: Farklılıklar, Dengeler ve Nasıl Seçilir

Her iki strateji de siteyi kapatmadan yayınlamanıza izin verir, ancak riski farklı şekillerde yönetirler. Her birinin nasıl çalıştığını, gerçekte ne kadara mal olduğunu, veritabanını nasıl yöneteceğinizi ve hangisinin ekibinize uygun olduğunu öğrenin.

9 dk okuma
Mavi-yeşil ve kanarya dağıtımı: farklar, ödünler ve nasıl seçileceği

Önemli noktalar

  • Mavi-yeşil iki ortamın dolu olmasını sağlar ve tüm trafiği aynı anda değiştirir.
  • Canary yeni sürümü önce kullanıcıların küçük bir kısmına gönderir, ardından yavaş yavaş genişletir.
  • Mavi-yeşil çok hızlı geri dönüş sağlar. Canary, hatalı bir sürümün kaç kullanıcıyı etkileyebileceğini sınırlar.
  • Her ikisi de geriye dönük uyumlu veritabanı değişikliklerine ve iyi izlemeye bağlıdır.

Yazılımın serbest bırakılması, eskiden bir bakım penceresi ve çapraz parmaklar anlamına geliyordu. Modern ekipler, yayınları rutin hale getiren stratejiler kullanır ve mavi-yeşil ve kanarya konuşlandırması seçimi karşılaşacağınız ilk tercihlerden biridir. Her ikisi de riski azaltır, ancak bunu zıt şekillerde yaparlar: Biri tam bir değişim hazırlarken diğeri gerçek kullanıcılarla azar azar test eder.

Bu kılavuz her birinin nasıl çalıştığını ve pratikte maliyetinin ne kadar olduğunu açıklamaktadır. Küçük kullanıcı yönlendirme ve geri alma örneklerini Python 3.13’te çalıştırdık ve çıktı bu çalıştırmadan geliyor. Kubernetes örnekleri açıklayıcıdır ve bunları biz çalıştırmadık. Yüzdeleri ve eşikleri uyarlamak için başlangıç ​​örnekleri olarak değerlendirin.

Kısa cevap

Mavi-yeşil dağıtım ile iki özdeş üretim ortamını çalıştırırsınız. Biri, siz yeni sürümü dağıtırken ve test ederken kullanıcılara hizmet verir, diğerinde ise tüm trafiği tek hareketle değiştirirsiniz.

Canary konuşlandırmasıyla yeni sürüm, eski sürümün yanında çalışır. Gerçek trafiğin küçük bir yüzdesini ona gönderir, sonuçları karşılaştırır ve herkese hizmet edene kadar payı adım adım artırırsınız. Adını, madencilerin bir zamanlar tehlikenin erken uyarısı olarak kullandıkları kanaryalardan alıyor.

Mavi-yeşil vs kanarya yan yana

Görünüş Mavi-yeşil Kanarya
Trafik değişimi Hepsi birden Kademeli
Kötü bir sürüme maruz kalan kullanıcılar Siz geri dönene kadar hepsi Sadece kanarya payı
Geri alma Trafiği geri çevir Kanarya payını sıfıra ayarla
Serbest bırakma hızı Hızlı geçiş Aşamalar halinde daha yavaş
Altyapı maliyeti Serbest bırakma sırasında iki katına kadar Küçük bir ekstra paylaşım
Trafik yönlendirmesi gerekli Basit bir anahtar Yüzdeye dayalı yönlendirme
İzleme gerekli iyi Sürüm başına ölçümlerle mükemmel
Sürümler birlikte yaşıyor Kısaca eğer varsa Tüm kullanıma sunma için
Tam sürümden önce gerçek kullanıcı geri bildirimi Hayır Evet

Mavi-yeşil dağıtım nasıl çalışır?

  1. Mavi yayındadır ve tüm trafiğe hizmet eder.
  2. Yeni sürümü, hiçbir kullanıcı trafiği almayan yeşil‘e dağıtın.
  3. Gerçek üretim ortamında, duman testlerini ve dahili kullanıcıları kullanarak yeşili kapsamlı bir şekilde test edin.
  4. Trafiği yeşile göndermek için yönlendiriciyi, yük dengeleyiciyi veya DNS’yi değiştirin.
  5. Mavi hâlâ çalışır durumda ve hazır durumdayken yakından izleyin.
  6. Bir sorun varsa geri dönün. Her şey yolundaysa, mavi bir sonraki boş ortam olur.

Kubernetes’te, bir Hizmetin seçicisini değiştirerek trafiğin farklı etiketli Kapsüllere taşınmasını sağlayarak geçiş yapabilirsiniz:

apiVersion: v1
kind: Service
metadata:
  name: shop
spec:
  selector:
    app: shop
    version: green   # was: blue
  ports:
    - port: 80
      targetPort: 8000

Güçlü Yönler: Kavramsal olarak basittir; üretim kurulumunu kullanıcılar görmeden önce tam olarak test edebilirsiniz ve geri alma neredeyse anında gerçekleşir. Zayıf yönler: Yinelenen altyapı pahalı olabilir, testlerinizden kaçan bir hata aynı anda herkese ulaşır ve geçiş sırasında açık oturumlar ve uçuş sırasındaki çalışmalara dikkat edilmesi gerekir. Anahtar için DNS kullanıyorsanız önbelleğe alınan kayıtlar bunu geciktirebilir. Kavramlarda yeni misiniz? Yeni başlayanlar için Kubernetes eğitimimize bakın.

Canary dağıtımı nasıl çalışır?

  1. Yeni sürümü kararlı sürümle birlikte dağıtın.
  2. Trafiğin küçük bir kısmını, örneğin %5’ini kanaryaya yönlendirin.
  3. Hata oranlarını, gecikmeyi ve iş ölçümlerini kararlı sürümle karşılaştırın.
  4. Sağlıklıysa %25’e, sonra %50’ye, sonra %100’e artırın.
  5. Herhangi bir sorun olursa tüm trafiği kararlı sürüme geri gönderin.

Pek çok takım önce iç kadroyla, ardından düşük riskli bir bölgeyle ve ancak o zaman daha geniş halkla bir kanarya başlatır.

Güçlü Yönler: Kötü bir sürüm yalnızca küçük bir grubu etkiler ve gerçek trafikten hiçbir test ortamının tam olarak yeniden oluşturamayacağını öğrenirsiniz. Zayıf Yönler: Yüzdeye dayalı yönlendirme ve sürüm başına metriklere ihtiyacınız var, kullanıma sunma daha uzun sürüyor ve iki sürüm bir süre birlikte çalışıyor. Küçük bir kanarya, özellikle trafiğin az olduğu zamanlarda anlamlı bir sinyal veremeyecek kadar sessiz olabilir.

Kararlı kullanıcı yönlendirme

Her istekte rastgele bir sürüm seçmek, eski ile yeni arasında geçiş yapabilecekleri için kullanıcılara kafa karıştırıcı bir deneyim yaşatır. Yaygın bir çözüm, sabit bir kullanıcı kimliğini bir gruba karma hale getirmektir, böylece her kullanıcı her zaman aynı yanıtı alır:

import hashlib

def bucket(user_id):
    digest = hashlib.sha256(user_id.encode()).hexdigest()
    return int(digest, 16) % 100

def version_for(user_id, canary_percent):
    return "v2" if bucket(user_id) < canary_percent else "v1"

users = [f"user-{i}" for i in range(10000)]
for percent in (5, 25, 50, 100):
    share = sum(version_for(u, percent) == "v2" for u in users) / len(users)
    print(percent, round(share * 100, 1))

# 5 5.0
# 25 24.5
# 50 49.9
# 100 100.0

Gerçek pay hedefi yakından takip etti. Bu yöntemin iki kullanışlı özelliği daha var ve çalışmamız her ikisini de doğruladı. Aynı kullanıcı her zaman aynı sürümü aldı. Ve %5’lik gruptaki herkes hâlâ %25’e dahil olduğundan, halihazırda yeni sürüme sahip olan hiç kimse, kullanıma sunma büyüdükçe geri taşınmadı.

Gerçek sistemlerde genellikle bu yönlendirmeyi bir hizmet ağı, yük dengeleyici veya Argo Rollouts veya Flagger gibi bir araç yönetir, dolayısıyla bunu kendiniz yazmanıza gerek yoktur. Ne yaptıklarını anlamak yine de faydalıdır.

Kararın otomatikleştirilmesi

Bir kanarya yalnızca birisi gerçekten versiyonları karşılaştırıyorsa işe yarar. Otomatik kontroller, bir kişinin grafikleri izlemesinden daha güvenilirdir. Kanaryanın hata oranını kararlı sürümünkiyle karşılaştıran temel fikir şu:

def should_rollback(canary_errors, canary_total, base_errors, base_total,
                    tolerance=1.5, min_requests=500):
    if canary_total < min_requests:
        return False   # not enough data to decide
    return (canary_errors / canary_total) > (base_errors / base_total) * tolerance

should_rollback(3, 100, 10, 5000)        # False: too few requests
should_rollback(30, 1000, 100, 10000)    # True:  3% against 1%
should_rollback(12, 1000, 100, 10000)    # False: 1.2% is within tolerance

İlk duruma dikkat edin. Hata oranı yüksek görünüyor, ancak yalnızca 100 istekle henüz yeterli kanıt yok. Gerçek araçlar daha dikkatli istatistikler uygular ve birkaç sinyali birlikte inceler:

Sinyal Örnek
Hatalar 5xx yanıtın oranı
Gecikme p95 ve p99, yük testi ile stres testinin karşılaştırılması bölümünde açıklandığı gibi
Doygunluk CPU, bellek, bağlantı havuzları
iş Kayıtlar, ödemeler, ödeme başarısı

İpucu: Kanarya’yı, geçen haftanın rakamları yerine aynı zaman aralığındaki kararlı sürümle karşılaştırın. Trafik ve davranışlar saatlere göre değişir, dolayısıyla yan yana karşılaştırma size çok daha adil bir sinyal verir.

Veritabanı sorunu

Uygulama kodu saniyeler içinde değiştirilebilir, ancak veriler değiştirilemez. Her iki strateji de genellikle tek bir veritabanını paylaşır; bu nedenle, kullanıma sunma sırasında ve geri alma sonrasında eski ve yeni sürümlerin her ikisinin de aynı şemayla çalışması gerekir.

Standart cevap, genişlet ve daralt modelidir. Diyelim ki name‘yi full_name olarak yeniden adlandırmak istiyorsunuz:

  1. Genişlet: yeni sütunu ekleyin. Eski kod etkilenmez.
  2. Geçiş: her iki sütuna da yazan ve eski satırları dolduran kodu yayınlayın.
  3. Geçiş: yeni sütundan okunan kodu yayınlayın.
  4. Sözleşme: Hiçbir şey eski sütunu kullanmadığında, daha sonraki bir sürümde onu kaldırın.

Bu birkaç sürüm alır, ancak her adım güvenli bir şekilde geri alınabilir. RENAME COLUMN‘i tek seferde çalıştırmak, hangi sürümün diğer adı beklediğini bozar. Kilit tutabilecekleri için uzun süren şema değişikliklerine de dikkat edin. Bununla ilgili daha fazla bilgi için SQL işlemleri hakkında bilgi edinin.

Yuvarlanma ve diğer stratejiler

Strateji Nasıl çalışır? Şunun için iyi:
Yeniden oluştur Eskiyi durdurun, ardından kesinti süresiyle yenisine başlayın Dahili araçlar, toplu sistemler
Yuvarlanma Örnekleri birer birer değiştirin Kubernetes dahil ortak bir varsayılan
Mavi-yeşil İki ortam arasında geçiş yapın Hızlı geçiş ve geri alma
Kanarya Küçük bir payı kademeli olarak genişletin Yüksek trafik, yüksek risk
Gölge Trafiği yeni sürüme kopyalayın ve yanıtlarını silin Kullanıcı etkisi olmadan gerçek yükte test etme

Kubernetes Dağıtımı, varsayılan olarak birçok hizmete uygun olan sürekli bir güncelleme yapar. Sürekli güncelleme de kademeli olarak değişir, ancak payı örnek sayısına bağlıdır ve tek başına sonuçları analiz etmez veya kötü ölçümleri duraklatmaz.

Özellik bayrakları ne olacak?

Dağıtım, kodu sunuculara yerleştirir ve sürüm, bir özelliği kullanıcıların kullanımına sunar. Özellik bayrakları, herhangi bir şey dağıtmadan seçilen kullanıcılar için bir özelliği açmanıza izin vererek bunları ayrı tutar. Her iki stratejiyle de çok iyi çalışıyorlar: bayrak kapalıyken konuşlandırın, ardından yavaş yavaş etkinleştirin. Bir bayrak sizi başlangıçta çöken bir sürümden koruyamayacağı için bu stratejilerin yerini almazlar. Teknik borç olarak biriken eski bayrakları kaldırmayı unutmayın.

Nasıl seçilir

Durumunuz Makul seçim
Basit uygulama ve az sayıda kullanıcı Sürekli güncelleme
Çok hızlı kesme ve geri alma gerekiyor Mavi-yeşil
Geçişten önce üretimde test etmek istiyorum Mavi-yeşil
Yüksek trafik ve yüksek başarısızlık maliyeti Kanarya
Güçlü izleme ve sürüm başına ölçümler Kanarya
Düşük trafik Mavi-yeşil, kanarya sinyalleri çok zayıf olduğundan
Sıkı altyapı bütçesi Kanarya veya yuvarlanma

Ayrıca birleştirilebilirler. Bazı ekipler yeşil bir ortam hazırlıyor ve daha sonra trafiği yavaş yavaş bu alana kaydırarak temiz bir ortam ve sınırlı bir patlama yarıçapı elde ediyor. Neyi seçerseniz seçin, GitHub Eylemleri kılavuzumuzda açıklandığı gibi, bunu CI/CD ardışık düzeniniz aracılığıyla otomatikleştirin.

Yaygın hatalar

  • Önemli şema değişiklikleri yapmak. Eski kod verileri okuyamazsa geri almanın bir faydası olmaz.
  • Geri alma kriterinin olmaması. “Kötü”nün ne anlama geldiğine bir olay sırasında değil, yayın başlamadan önce karar verin.
  • Ortamların sürüklenmesine izin vermek. Yeşil, maviden farklıysa testleriniz daha az kanıtlıyor. Her ikisini de kod olarak altyapı ile tanımlayın.
  • Yalnızca teknik metrikler ölçülüyor. Bir sürüm hatasız olabilir ve yine de ödemeyi bozabilir.
  • Asla geri alma alıştırması yapmayın. Baskı altında olduğunuzda işe yaraması için prova yapın.
  • Arka planda yapılan işleri unutmak. Çalışanların ve zamanlanmış görevlerin de geçiş sırasında bir plana ihtiyacı vardır.

Son sözler

Mavi-yeşil size temiz ve hızlı bir geçiş sağlar. Kanarya size küçük, ölçülü bir pozlama sağlar. İzlemeniz hâlâ basitse, güncellemeler veya mavi-yeşil güncellemelerle başlayın ve kanaryaları denemeden önce sürüm başına metriklere yatırım yapın. Daha sonra veritabanı da dahil olmak üzere bir sonraki sürümünüzde geri alma provası yapın. Bu tek alıştırma aslında neyin düzeltilmesi gerektiğini ortaya çıkarma eğilimindedir.

Sık sorulan sorular

Mavi-yeşil ve kanarya konuşlandırması arasındaki fark nedir?

Mavi-yeşil, tüm trafiği bir ortamdan diğerine aynı anda geçirir. Canary, yeni sürüme küçük bir trafik payı gönderiyor ve bunu kademeli olarak genişletiyor.

Hangisi daha güvenli, mavi-yeşil mi yoksa kanarya mı?

Canary, kötü bir sürümün etkileyeceği kullanıcı sayısını sınırlar ve mavi-yeşil çok hızlı bir geri dönüş sunar. Daha güvenli seçim trafiğinize, araçlarınıza ve izlemeye bağlıdır.

Mavi-yeşil dağıtım pahalı mı?

Bir sürüm sırasında iki tam ortamı çalıştırabileceğiniz için bu mümkün olabilir. Bulutun otomatik ölçeklendirilmesi ve boşta kalan ortamın kapatılması maliyeti azaltabilir.

Bir kanarya yüzde kaçla başlamalı?

Ekipler genellikle anlamlı bir sinyal için yeterli trafik sağladığı sürece yaklaşık yüzde 1 ila 5 ile başlar. Düşük trafikli sistemler daha büyük bir paya ihtiyaç duyabilir.

Kanarya ve mavi-yeşil veritabanı değişikliklerini nasıl ele alıyor?

Genellikle genişletme ve daraltma gibi geriye dönük uyumlu değişikliklerle yapılır, çünkü her iki sürüm de bir veritabanını paylaşabilir ve kullanıma sunma sırasında her ikisinin de çalışması gerekir.

Öğrenmeye devam et

Stack Quora ile çalışın

Test, WordPress veya SEO konusunda yardıma mı ihtiyacınız var?

Ekiplerin daha iyi yazılımlar sunmasına ve sitelerini büyütmesine yardımcı oluyoruz. Bize ne üzerinde çalıştığınızı söyleyin, biz de bir sonraki adım için net bir öneride bulunalım.

Okumaya devam et

Daha fazla kılavuz test, yapay zeka ve modern geliştirme

Bu makaleyi beğendiniz mi? Bir konu seçin ve doğrudan en yeni eğitimlerimize geçin.

Yapay zekâ

Yapay Zeka Halüsinasyonları Açıklandı: Dil Modelleri Neden İşleri Düzeltiyor ve Nasıl Azaltılabilir?

Yapay zeka halüsinasyonları açıkladı: ne olduklarını, dil modellerinin bunları neden ürettiğini, yaygın türlerini, temellendirme ve yönlendirmelerle…

Makaleyi okuyun →
DevOps

Açıklanan Ortam Değişkenleri: .env Dosyaları, Sırlar ve Yapılandırma Doğru Yapıldı

Çalıştırdığımız Python örnekleriyle açıklanan ortam değişkenleri: bunları okumak ve ayarlamak, neden her değerin bir dize olduğu, .env dosyaları, sü…

Makaleyi okuyun →
Yazılım geliştirme

API Hız Sınırlamasının Açıklaması: Algoritmalar, Başlıklar ve 429 Hatalarının Ele Alınması

API hızı sınırlaması, çalıştırdığımız bir simülasyonla açıklanmıştır: belirteç kümesi, sabit pencere, kayan pencere, 429 yanıt, hız sınırı başlıklar…

Makaleyi okuyun →
Test otomasyonu

Python'da alay etme: Unittest.mock, patch ve Testleri Yalan Yapan Hatalar

Unittest.mock ile Python'da alay etme, test edildi: Sahte ve dönüş_değeri, yan_etki, bir adın kullanıldığı yerde yama uygulama, spesifikasyon ve oto…

Makaleyi okuyun →
Yazılım testi

Kod Kapsamının Açıklaması: Hat ve Şube Kapsamı ve %100'ün Gerçek Anlamı

Kod kapsamı gerçek bir kapsama.py çalışmasıyla açıklanmıştır: hat, şube ve durum kapsamı, bir raporun okunması, %100 kapsamın neden hâlâ hataları ka…

Makaleyi okuyun →
Veritabanları ve SQL

SQL'de DELETE vs TRUNCATE vs DROP: Farklılıklar, Geri Alma ve Her Biri Ne Zaman Kullanılmalı

DELETE vs TRUNCATE vs DROP test edilmiş SQL ile açıklandı: her birinin neyi kaldırdığı, geri aldığı, tetiklediği, kimlik sıfırlaması, hızı ve Postgr…

Makaleyi okuyun →
Veritabanları ve SQL

Açıklanan SQL Görünümleri: Örneklerle Tuzakları Oluşturun, Kullanın ve Önleyin

Çalıştırdığımız sorgularla açıklanan SQL görünümleri: görünüm oluşturma, canlı sonuçlar, sütunları gizleme, performans, güncellenebilir ve gerçekleş…

Makaleyi okuyun →
Yazılım geliştirme

TypeScript Arayüzü ve Tür: Gerçek Farklılıklar, Derleyiciyle Test Edildi

TypeScript arayüzü ve türü, gerçek derleyiciyle kontrol edildi: her ikisinin de yapabileceği, yalnızca birinin yapabileceği, bildirim birleştirme, g…

Makaleyi okuyun →
Yazılım geliştirme

Python *args ve **kwargs'ın Açıklaması: Açık Örneklerle Esnek Fonksiyonlar

Python *args ve **kwargs çalıştırdığımız kodla açıklanmıştır: paketleme ve paketten çıkarma, parametre sırası, yalnızca anahtar kelime ve yalnızca k…

Makaleyi okuyun →
Yazılım geliştirme

Python Lambda İşlevleri: Söz Dizimi, Gerçek Kullanımlar ve Ne Zaman Kullanılmaması Gerektiği

Çalıştırdığımız kodla açıklanan Python lambda işlevleri: sözdizimi, anahtarla sıralama, harita ve filtre, kapatmalar, geç bağlama tuzağı ve normal b…

Makaleyi okuyun →
Yapay zekâ

Yapay Zeka Ajanları Nelerdir? Çalıştırabileceğiniz Basit Bir Aracı Döngüsüyle Nasıl Çalışırlar?

Yapay zeka ajanları nedir? Aracı döngüsüne, araçlara, belleğe ve korkuluklara ilişkin basit bir kılavuz, çalıştırdığımız küçük bir Python döngüsü, g…

Makaleyi okuyun →
DevOps

İzleme ve Gözlemlenebilirlik: Günlükler, Metrikler ve İzlerle Gerçek Fark

İzleme ve gözlemlenebilirliğin açıklanması: bilinen ve bilinmeyen arızalar, günlükler, ölçümler ve izler, ödeme olayının gözden geçirilmesi, altın s…

Makaleyi okuyun →
DevOps

Docker Birimleri ve Bağlama Bağlantıları: Konteyner Verilerini Doğru Şekilde Kalıcılaştırın

Docker birimleri ile bağlama bağlamaları arasındaki karşılaştırma açıklandı: kapsayıcı verilerinin neden kaybolduğu, adlandırılmış birimler, bağlama…

Makaleyi okuyun →
Test otomasyonu

TDD ve BDD: Temel Farklılıklar, Her İki Şekilde Geliştirilmiş Bir Özellik ve Her Birinin Ne Zaman Kullanılacağı

TDD ve BDD, her iki yönde de oluşturulmuş bir indirim özelliğiyle açıklandı: çalıştırdığımız kodla kırmızı-yeşil-refactor, Verilen-Ne Zaman-O Zaman …

Makaleyi okuyun →
Yazılım testi

Kullanıcı Kabul Testi (UAT): Süreç, Kontrol Listesi ve Gerçek Örnekler

Kullanıcı kabul testi açıklandı: bunu kimin yürüttüğü, QA'dan farkı, yedi adımlı bir süreç, bir UAT test senaryosu şablonu, bir kontrol listesi, otu…

Makaleyi okuyun →
Veritabanları ve SQL

Açıklanan SQL NULL Değerleri: IS NULL, COALESCE, NULLIF ve Kaçınılması Gereken Tuzaklar

SQL NULL değerleri, çalıştırdığımız sorgularla açıklandı: üç değerli mantık, IS NULL, COALESCE, NULLIF, toplamaların, birleştirmelerin ve sıralamanı…

Makaleyi okuyun →
Veritabanları ve SQL

SQL CASE WHEN İfadesi: Sözdizimi, Gerçek Örnekler ve Yaygın Hatalar

SQL CASE WHEN çalıştırdığımız sorgularla açıkladı: basit ve aranmış formlar, koşul sırası, SUM'lu pivotlar, COUNT hileleri, özel sıralama, güncellem…

Makaleyi okuyun →
Yazılım geliştirme

JWT Nedir? JSON Web Belirteçleri Bir Çalışma Örneğiyle Açıklanıyor

JWT nedir? JSON Web Tokens açıkladı: üç bölüm, çalıştırdığımız kodda oluşturulan ve üzerinde değişiklik yapılan bir token, JWT ile oturumlar, depola…

Makaleyi okuyun →
Yazılım geliştirme

JavaScript Olay Döngüsü Açıklaması: Örneklerle Çağrı Yığını, Mikro Görevler ve Zamanlayıcılar

JavaScript olay döngüsü çalıştırdığımız kodla açıklandı: çağrı yığını, görev ve mikro görev kuyrukları, setTimeout 0'ın neden anında olmadığı, engel…

Makaleyi okuyun →
Yazılım geliştirme

Python Jeneratörleri ve Verim Açıklaması: Gerçek Örneklerle Bellekten Tasarruf Edin

Python üreteçleri ve verim, çalıştırdığımız kodla açıklandı: nasıl duraklatılır ve devam ettirilir, ölçülen bellek tasarrufları, işlem hatları, sons…

Makaleyi okuyun →
Yapay zekâ

Gömmeler Nelerdir? Vektörler ve Kosinüs Benzerliği Basitçe Açıklandı

Gömmeler nedir? Vektörler, kosinüs benzerliği ve anlamsal aramaya ilişkin sade dilli bir kılavuz; çalıştırdığımız küçük bir örnek, yaygın kullanımla…

Makaleyi okuyun →
DevOps

Mavi-Yeşil ve Kanarya Konuşlandırılması: Farklılıklar, Takaslar ve Nasıl Seçilir

Mavi-yeşil ve kanarya konuşlandırması açıklandı: her birinin nasıl çalıştığı, maliyet, risk ve geri alma, test ettiğimiz istikrarlı kullanıcı grubu,…

Makaleyi okuyun →
Test otomasyonu

Kesintili Testler: Bunların Sebepleri ve Nasıl Düzeltileceği

Yaptığımız demolarla açıklanan hatalı testler: ana nedenler, birinin nasıl doğrulanacağı ve teşhis edileceği, zamanlama için uygun düzeltmeler, payl…

Makaleyi okuyun →
Yazılım testi

Yük Testi ve Stres Testi: Farklılıklar, Metrikler ve k6 Örnekleri

Yük testi ve stres testinin açıklaması: her birinin neyi kanıtladığı, ani yükselme ve soğuma testleri, önemli ölçümler, ortalamaların neden yanıltıc…

Makaleyi okuyun →
Yazılım testi

Test Senaryosu ve Test Senaryosu: Temel Farklılıklar, Örnekler ve Her Biri Ne Zaman Kullanılmalı?

Test senaryosu ve test senaryosunun açıklaması: net tanımlar, yan yana tablo, senaryolardan vakalara, şablonlara ve her birinin ne zaman kullanılaca…

Makaleyi okuyun →
Veritabanları ve SQL

SQL Sorgu Optimizasyonu: Zamanlamalarla Yürütme Planlarını Okuyun ve Yavaş Sorguları Düzeltin

SQL sorgu optimizasyonu bir milyon satırda test edilmiştir: yürütme planlarını okuyun, doğru dizinleri ekleyin, değiştirilemeyen filtreleri düzeltin…

Makaleyi okuyun →
Veritabanları ve SQL

SQL UNION ve UNION ALL: Farklılıklar, Örnekler ve Test Edilmiş Performans

SQL UNION ve UNION ALL, yürüttüğümüz sorgularla açıklandı: kopyalar, her ikisinin de takip ettiği kurallar, gerçek bir veri hatası, ölçülen performa…

Makaleyi okuyun →
Yazılım geliştirme

JavaScript Fetch API Eğitimi: GET, POST, Hata İşleme ve Zaman Aşımları

Yerel bir sunucuya karşı test edilen bir JavaScript Fetch API öğreticisi: GET ve POST, 404'ün neden atmadığı, yeniden kullanılabilir bir yardımcı, s…

Makaleyi okuyun →
Yazılım geliştirme

Python Dosya İşleme: Örneklerle Okuma, Yazma, CSV, JSON ve pathlib

Python dosya işleme, çalıştırdığımız kodla açıklanmıştır: açık modlar, büyük dosyaları okuma, CSV, JSON, pathlib, ikili dosyalar, güvenli yazma, hat…

Makaleyi okuyun →
Yazılım geliştirme

Python Sınıfları ve Nesneleri: Gerçek Örneklerle OOP Eğitimi

Çalıştırdığımız kodla açıklanan Python sınıfları ve nesneleri: __init__, yöntemler, sınıf ve örnek nitelikleri, kalıtım, özellikler, dunder yöntemle…

Makaleyi okuyun →
Yapay zekâ

Büyük Dil Modeli Nedir? Yüksek Lisans'ların Nasıl Çalıştığı, Abartmadan Açıklanıyor

Büyük dil modeli nedir? LLM'ler sade bir dille açıklandı: belirteçler, yerleştirmeler, dikkat, eğitim, sıcaklık ve bağlam pencereleri, küçük bir son…

Makaleyi okuyun →
DevOps

Yeni Başlayanlar İçin Linux Komutları: Örneklerle Temel Terminal Kılavuzu

Yeni başlayanlar için göreve göre gruplandırılmış Linux komutları: pratik bir günlük analizi örneğiyle gezinme, dosyalar, günlükleri görüntüleme, gr…

Makaleyi okuyun →
Test otomasyonu

Selenyum ve Oyun Yazarı: Temel Farklılıklar, Karşılaştırılan Kod ve Hangisinin Seçileceği

Selenium ve Playwright karşılaştırması: mimari, bekleme, tarayıcı ve dil desteği, hata ayıklama, her iki araçta da aynı test, geçiş tavsiyesi ve nas…

Makaleyi okuyun →
Yazılım testi

Eşdeğerlik Bölümleme: Test Tasarımı Tekniğinin Çalışılmış Örneklerle Açıklanması

Eşdeğerlik bölümlemenin açıklaması: geçerli ve geçersiz bölümlerin nasıl bulunacağı, yaşlara yönelik çalışılmış örnekler, şifreler ve kuponlar, yürü…

Makaleyi okuyun →
Yazılım testi

Yazılım Testinde Şiddet ve Öncelik: Farklılıklar, Matris ve Gerçek Örnekler

Yazılım testinde önem ve önceliğin açıklanması: net tanımlar, örnekler içeren dört yönlü bir matris, seviye ölçekleri, her birini kimin belirlediği …

Makaleyi okuyun →
Veritabanları ve SQL

SQL Alt Sorguları Eğitimi: Türler, İlişkili Alt Sorgular ve Örneklerle EXISTS

Çalıştırdığımız sorguları içeren bir SQL alt sorgu eğitimi: skaler, IN, FROM ve SELECT alt sorguları, ilişkili alt sorgular, EXISTS, NOT IN NULL tuz…

Makaleyi okuyun →
Veritabanları ve SQL

SQL İşlemleri ve ACID Açıklaması: COMMIT, ROLLBACK ve İzolasyon Seviyeleri

SQL işlemleri ve ACID, yürüttüğümüz bir banka transferiyle açıklandı: COMMIT, ROLLBACK, kayıt noktaları, kilitler, izolasyon seviyeleri, kirli okuma…

Makaleyi okuyun →
Yazılım geliştirme

Git merge vs rebase: farklar, örnekler ve hangisi ne zaman kullanılır

Git merge vs rebase; gerçek log çıktısı, karşılaştırma tablosu, rebase'in altın kuralı ve güvenli bir ekip iş akışıyla anlatılıyor.

Makaleyi okuyun →
Yazılım geliştirme

Python Liste Üreteci (List Comprehension): Sözdizimi, Örnekler ve Kaçınılacak Durumlar

Python list comprehension anlatımı: sözdizimi, filtreleme, if-else, iç içe döngüler, ölçülmüş süreler ve düz for döngüsünün daha iyi olduğu durumlar.

Makaleyi okuyun →
Veritabanları ve SQL

SQL JOIN Örneklerle Açıklama (Inner, Left, Right, Full)

SQL JOIN'leri örnek tablolar ve sorgularla adım adım öğrenin: INNER, LEFT, RIGHT, FULL, CROSS ve SELF; yaygın hatalar ve performans ipuçları.

Makaleyi okuyun →