DevOps Nedir? DevOps Süreçleri, Yaşam Döngüsü ve Araçlar
DevOps Nedir? Süreçleri, Yaşam Döngüsü ve Popüler Araçlar
DevOps, "Development" (Yazılım Geliştirme) ve "Operations" (Sistem Operasyonları) kelimelerinin birleşiminden oluşan; yazılımın üretiminden canlıya alınmasına kadar geçen tüm süreçleri otomatize etmeyi hedefleyen bir kültür ve çalışma felsefesidir. Ekipler arası siloları (iletişim kopukluğunu) yıkarak Sürekli Entegrasyon (CI) ve Sürekli Dağıtım (CD) prensipleriyle daha hızlı, güvenli ve hatasız yazılım teslimatı (deployment) yapılmasını sağlar.
Geçmişte yazılımcılar kodu yazar, ardından "Benim bilgisayarımda çalışıyor, gerisi beni ilgilendirmez" diyerek kodu sistem yöneticilerine devredip çekilirdi. Bu durum canlı ortamlarda sayısız hataya ve gecikmeye sebep olurdu. İşte DevOps, bu duvarları yıkan devrimin adıdır. Bu rehberde DevOps felsefesini, süreç adımlarını (Yaşam Döngüsü) ve sektörde en çok kullanılan DevOps araçlarını detaylıca inceleyeceğiz.
1. DevOps Felsefesi Nedir?
DevOps yalnızca bir araç (tool) veya yazılım pozisyonu değil; bir kurum kültürüdür. Yazılım geliştirme sürecini (Development) ile IT operasyonlarını (Operations) tek bir çatı altında birleştirir.
- Otomasyon: İnsan eliyle yapılan test, derleme ve sunucuya aktarma işlemleri otomatikleştirilir.
- CI/CD (Sürekli Entegrasyon ve Sürekli Dağıtım): Geliştiricilerin kodları günde onlarca kez ana sisteme entegre edilir, test edilir ve sorunsuzsa canlıya alınır.
- Hızlı Teslimat (Time-to-Market): Geleneksel aylarca süren versiyon güncellemeleri yerine saatler içinde küçük ve güvenli güncellemeler yapılır.
2. Dev (Geliştirme) Süreçleri
Yazılımın planlanıp, kodlanıp, test edilmeye hazır hale getirildiği aşamalardır:
- Planlama (Plan): Gereksinim analizi, Jira veya Trello üzerinden sprintlerin planlanması.
- Kodlama (Code): Geliştiricilerin GitLab, GitHub kullanarak versiyon kontrollü şekilde kod yazması.
- Derleme (Build): Yazılan kodun Maven, Gradle veya Webpack gibi araçlarla paketlenmesi.
- Test: JUnit, Selenium gibi araçlarla otomatik birim (Unit) ve entegrasyon testlerinin yapılması.
3. Ops (Operasyon) Süreçleri
Başarıyla derlenip test edilen kodun sunuculara aktarılması ve sağlıklı çalışmasının sağlanmasıdır:
- Sürüm (Release): Uygulamanın canlıya çıkmaya hazır (Artifact) hale getirilmesi.
- Dağıtım (Deploy): Uygulamanın Docker ve Kubernetes kullanılarak canlı sunuculara otomatik yerleştirilmesi.
- İşletim (Operate): Altyapının (Infrastructure as Code - IaC) yönetilmesi. Sunucu ayarlamalarının otomatik yapılması.
- İzleme (Monitor): Uygulamanın çöküp çökmediğini, işlemci/RAM kullanımını Prometheus veya Grafana ile anlık izleme.
4. DevOps Yaşam Döngüsü (Lifecycle)
DevOps bir sonsuzluk işareti ile sembolize edilir. Çünkü süreç asla bitmez. Uygulama canlıya alınır (Monitor), kullanıcı geri bildirimleri toplanır ve bu bildirimler yeni bir planlamayı (Plan) başlatır. Bu sürekli ve kesintisiz akışa DevOps Yaşam Döngüsü denir.
5. En Popüler DevOps Araçları
DevOps kültürünü şirketinizde uygulamak için süreçleri otomatize eden araçlara ihtiyacınız vardır. Sektördeki en popüler araçlar şunlardır:
| Araç Adı | Kategori / Görev | Resmi Web Sitesi |
|---|---|---|
| Git / GitLab / GitHub | Versiyon Kontrol ve Kod Yönetimi (SCM) | GitLab |
| Jenkins | CI/CD Otomasyon Sunucusu | Jenkins |
| Docker | Konteynerleştirme (Containerization) | Docker |
| Kubernetes (K8s) | Konteyner Orkestrasyonu (Orchestration) | Kubernetes |
| Terraform / Ansible | Kod Olarak Altyapı (Infrastructure as Code - IaC) | Terraform |
| Prometheus & Grafana | Sistem İzleme ve Uyarı (Monitoring) | Prometheus |
6. DevOps Ne Sağlar? (Avantajları)
- Daha Hızlı Teslimat: Yazılım güncellemeleri manuel onaya takılmadan, testleri geçer geçmez canlıya alınır.
- İnsan Hatasının Azalması: Sunucuya dosya atma, Nginx ayarları yapma gibi işlemler kodla yapıldığı için hatalar minimuma iner.
- Daha Yüksek Kalite: Her kod parçası (Commit) otomatik testten (Unit Test) geçtiği için "Bug" oranı düşer.
- Hızlı İyileşme (MTTR): Canlıda bir sistem çökerse, eski versiyona dönüş (Rollback) otomasyon sayesinde saniyeler sürer.
7. Sık Sorulan Sorular (SSS)
DevOps bir meslek midir yoksa kültür mü?
Aslında DevOps bir kurum kültürü ve felsefedir. Ancak günümüzde bu felsefeyi uygulamak (Jenkins kurmak, Docker yapılandırmak, CI/CD pipeline'ları yazmak) ayrı bir uzmanlık gerektirdiği için "DevOps Engineer" (DevOps Mühendisi) adında yaygın bir meslek haline gelmiştir.
CI/CD nedir?
CI (Continuous Integration - Sürekli Entegrasyon), yazılımcıların kodlarının günde birkaç kez ana depoda birleşmesi ve otomatik test edilmesidir. CD (Continuous Deployment - Sürekli Dağıtım) ise testten başarıyla geçen bu kodların insan müdahalesi olmadan canlı sunuculara otomatik olarak aktarılmasıdır.
Agile ile DevOps arasındaki fark nedir?
Agile (Çevik Yazılım), yazılımın nasıl "planlanıp" geliştirileceğine odaklanan bir proje yönetim metodolojisidir. DevOps ise geliştirilen o yazılımın kod havuzundan çıkıp sunucularda nasıl "çalıştırılacağına" ve otomatik olarak nasıl teslim edileceğine odaklanır. İkisi birbirini tamamlar.
Sonuç
Özetle DevOps, modern yazılım geliştirme süreçlerinin olmazsa olmaz bir parçasıdır. Ekipler arasındaki iletişim duvarlarını yıkarak otomasyonu merkeze koyar. Şirketinizde küçük bir projede bile temel CI/CD yapıları kurarak DevOps kültürünü benimsemeye başlamak, gelecekteki büyüme sancılarınızı (Scalability) minimuma indirecektir.