Junior
Sürekli dağıtım (continuous deployment) nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bu, her otomatik test ve onay sürecinden geçen her değişikliğin otomatik olarak üretim ortamına dağıtıldığı bir yazılım geliştirme yaklaşımıdır. Sürekli Teslimat'tan temel farkı, üretime dağıtmadan önce manuel onay adımının olmamasıdır.
Ana aşamalar:
- Commit: Geliştirici, değişiklikleri sürüm kontrol sistemine (örneğin Git) yapar.
- Build: Otomatik olarak artefaktın (görüntü, paket vb.) oluşturulması.
- Test: Otomatik testlerin çalıştırılması (birim testleri, entegrasyon, fonksiyonel, yük testleri vb.).
- Deploy: Tüm testler başarılıysa, artefakt otomatik olarak çalışma ortamına dağıtılır.
Ana bileşenler:
- Yüksek otomasyon seviyesi.
- Güvenilir altyapı.
- Sürekli Entegrasyon (CI) ve Sürekli Teslimat (CD) uygulamaları.
- Sorunları hızlı tespit etmek için izleme ve günlükleme.
- Hızlı geri alma imkanı.
# GitLab CI/CD'de pipeline'ın bir bölümüne örnek
stages:
- build
- test
- deploy
build_job:
stage: build
script:
- echo "Uygulamayı oluşturuyoruz..."
- # Build komutları burada
test_job:
stage: test
script:
- echo "Testleri çalıştırıyoruz..."
- # Test komutları burada
only:
- main # Sadece ana dal için tetiklenir
deploy_job:
stage: deploy
script:
- echo "Üretime dağıtım..."
- # Dağıtım komutları burada
when: on_success # Önceki aşamalar başarılıysa dağıtım yap
only:
- main
| Avantajlar | Dezavantajlar |
|---|---|
| Yeni özelliklerin/hataların hızlı çıkışı | Testlerin yüksek kalite gereksinimleri |
| TTM'nin (Time To Market) azaltılması | İstenmeyen değişikliklerin dağıtımında potansiyel risk |
| Her dağıtımda riskin azaltılması | Olgun olmayan CI/CD süreçleri olmadan uygulamada zorluk |
| Kullanıcı geri bildiriminin hızlı alınması | Güvenilir izleme ve geri alma yeteneği gerekliliği |