Modern Yazılım Geliştirmenin Temel Taşları Sürüm Kontrolünden CI/CD’ye
Bu yazımda Continuous Integration/Continuous Deployment (CI/CD) Ve Version Control (Sürüm Kontrolü) kavramlarının neler olduğu ve aralarındaki farkları daha iyi anlayabilmek için kısaca bahsetmek istiyorum.
Yazılım geliştirme dünyasında, değişikliklerin hızla gerçekleştiği ve sürekli güncellemelerin yapıldığı bir ortamda, kodun güvenli ve düzenli bir şekilde yönetilmesi büyük önem taşır. Örneğin müşteri acil isteği üzerine bir uygulamaya yeni bir özellik eklemeye karar versin. Ancak, aceleyle yapılan güncelleme sırasında, eski bir kod parçası yanlışlıkla değiştirildi ve farkedilmediğini varsayalım. İşte Continuous Integration (CI) ve Continuous Deployment (CD) ve Sürüm kontrol kavramları tamda burada karşımıza çıkmaktadır. Her biri yazılım geliştirme sürecinde önemli roller oynar, ancak farklı alanlarda faaliyet gösterirler. Daha iyi anlamak için her birerini kısaca ele alalım.
Version Control (Sürüm Kontrolü)
Yazılım geliştirme projelerimiz sürekli olarak evrimleşir. Birçok kişi aynı proje üzerinde sayısız geliştirmeler yapar. Sürüm kontrolü de bu noktada devreye girer. Amaç proje üzerinde yapılan tüm değişiklikleri kaydetmektir. Bu da bize üzerinde çalıştığmız kodun farklı sürümlerini yönetmek, izlemek ve gerektiğinde geri dönmek için olanak sağlar. Bu sayede, birden fazla geliştirici aynı projede çalışabilir, kodları birleştirebilir ve eski sürümlere dönebilir.
Git, sürüm kontrolün lideridir diyebiliriz. Dağıtık bir yapıya sahip olması, geliştiricilerin yerel olarak tüm proje geçmişine sahip olmasını sağlar. Git’in temel komutları (add, commit, branch, merge, push) ile projelerinizi kolayca yönetebilirsiniz. Mercurial, Subversion (SVN) de kullanılan sürüm kontrol sistemlerine örnektir.
Sürüm Kontrolün kullanımına günlük hayattan bir örnek vermek istiyorum. Bir yazılım geliştirme ekibi, büyük bir e-ticaret platformu üzerinde çalışıyor. Platform, kullanıcıların çevrimiçi alışveriş yapmalarına olanak tanıyor ve her gün binlerce işlem gerçekleştiriyor. Ekibin birkaç üyesi, platformun kullanıcı arayüzünde iyileştirmeler yapmak için çalışıyor. Bu sırada bir başka ekip üyesi ise, ödeme sisteminde yeni bir güvenlik özelliği eklemekle meşgul. Platformun yeni sürümü canlıya alındığında, kullanıcılar bazı sayfalarda hatalarla karşılaşmaya başlıyorlar. Sepete ürün eklemeye çalışan kullanıcılar, bir hata mesajı alıyor ve işlem yapamıyorlar. Bu durum, müşteri şikayetlerine ve satışların düşmesine neden oluyor. Ekip hemen harekete geçiyor, ancak hatanın nedenini belirlemek zor. Çünkü aynı anda birçok geliştirme yapılmış ve kodda birden fazla değişiklik olmuş.
Sürüm Kontrolü Kullanımı:
- Commit’leri İnceleme: Ekip, son yapılan kod değişikliklerini sürüm kontrol sistemi üzerinden inceler ve hatalı değişikliği bulur.
- Geri Dönüş: Hatalı değişiklik geri alınarak platform eski, stabil sürüme döndürülür.
- Hata Düzeltme: Hata düzeltildikten sonra, kod tekrar commit edilir ve canlıya alınır.
Bu olayda sürüm kontrolünün yazılım geliştirme süreçlerinde nasıl hayati bir rol oynadığını ve karmaşık sorunların çözümünde nasıl etkin bir şekilde kullanılabileceğini gösterir.
Continuous Integration/Continuous Deployment (CI/CD)
Sürüm kontrolü, kodunuzu yönetmenin temelini oluştururken, CI/CD süreçleri bu kodun sürekli entegrasyonunu ve dağıtımını sağlar. CI/CD, yazılım geliştirme sürecinde hataların erken tespit edilmesi ve kodun güvenli bir şekilde canlı ortama taşınması için kritik öneme sahiptir.
Continuous Integration (CI) Nedir?
Continuous Integration (Sürekli Entegrasyon), geliştiricilerin yazdığı kodu sürekli olarak ana koda entegre etme sürecidir. Her kod değişikliği yapıldığında otomatik olarak testler çalıştırılır ve bu değişikliklerin proje ile uyumlu olup olmadığı kontrol edilir. Amaç, küçük ve sık sık güncellemeler yaparak, yapılan her kod değişikliğinin projeyle uyumlu olup olmadığını doğrulamaktır. Bu, kodun hatalarını erken aşamada yakalayarak, entegrasyon sorunlarını en aza indirmeyi hedefler.
Continuous Deployment (CD) Nedir?
Continuous Deployment (Sürekli Dağıtım), CI sürecinden sonra başarılı olan her değişikliğin, manuel müdahale olmaksızın canlı ortama geçmesini sağlar. Bu süreç, yazılımın güncellemelerinin daha hızlı ve güvenli bir şekilde kullanıcılarla buluşmasını sağlar. Kodun güvenliği ve doğruluğu testlerle sağlandığı için, canlı ortama geçişlerde manuel bir onay gerekmez.
CI/CD ve Version Control Arasındaki İlişki
Sürüm Kontrolü, kodunuzu güvenli bir şekilde yönetirken, CI/CD bu kodun testini ve dağıtımını otomatik hale getirir. Git gibi bir sürüm kontrol sistemi ile entegre çalışan CI/CD süreçleri, kodunuzda yapılan her değişikliği test eder ve güvenli bir şekilde canlıya alır. Sürüm kontrolü ve CI/CD süreçleri, modern yazılım geliştirme dünyasında vazgeçilmez araçlardır.
Özetle:
- Version Control (Sürüm Kontrolü) kodunuzu yönetir.
- CI kodunuzu sürekli olarak test eder ve entegrasyonu kontrol eder.
- CD kodunuzu otomatik olarak kullanıcıya ulaştırır.
Sonuç olarak güvenilir ve hızlı proje geliştirmek için bu üçlüye epey iş düşüyor.
Buraya kadar okuduğunuz için teşekkür ederim😃.Merak edip araştırdığım konuları Medium da paylaşmaya devam edeceğim. Birlikte okuyup, gelişmeye devam edelim..