CI (Continuous Integration) / CD (Continuous Delivery / Deployment) Nedir?

CI/CD Nedir?

CI/CD, denildiğinde yazılım geliştirme süreçlerinde işlerimizi kolaylaştırmak için otomasyon edilmiş yapılar gelmektedir, bu otomatize edilmiş yapılar sayesinde kodlarınızın veya kurduğumuz yapıların kalite, hız ve güvenilirliklerini arttırmaktadır.

her yazılım geliştirme süreçleri farklı yapılarda olsa da CI/CD ile kodlarımızın otomatik olarak kütüphane zaafiyet kontrolleri,derlenmesi, test edilmesi, dağıtım ve sürüm yönetimi içeren bir döngüdür. Bu döngü içerisinde herhangi bir adımında problemlerin hızlıca tespit edilerek, mümkün olan en kısa sürede problem çözülerek ve yazılımın kalitesi artırılır ve müşterilerin ihtiyaçlarına daha hızlı ve temiz cevap vermesi sağlanır.

Örneğin; Finans sekötüründe çalışan bir yazılımcısınız yeni bir özellik eklediniz ve kod değişikliğini onayladınız, yazılımınızı ve canlıya almadan önce CI/CD pipeline otomatik olarak çalıştırarak yazlılım içerisinde zaafiyet olan kütüphaneleri ve derleme sonrasında yazdığınız testleri gerçekleştirir eğer problem yoksa bir sonraki adım sunucuya canlıya almayı gerçekleştirir.

Testlerde problem çıkarsa ya da kütüphane zaafiyeti varsa hata vererek işlemi sonlandırır olası güvenlik ya da yazılım hatalarını size göstererek hatalı kodu canlıya almanızı ve sizin ya da müşterilerinizi zarar etmesini önler.

Sürekli Entegrasyon (CI);
Kod değişikliklerinin sürekli olarak tespit edilmesini ve entegre edilmesindeki test süreçlerinin bulunduğu kısımdır.

Sürekli Teslimat (CD);
CI sonrasında test ve kod dogrulamaları kabul edilen yazılımın otomatik olarak dağıtılması(deploy) ve sürüm kontrollerinin gerçekleştirildiği kısımdır.

Pipeline Aşamaları CI/CD sürecinde tipik olarak şu aşamalar yer alır;

  • Commit (kodun versiyon kontrol sistemine gönderilmesi)
  • Build (derleme, bağımlılıkların toplanması)
  • Static Analysis (kod kalitesi, linting, güvenlik taramaları)
  • Test (unit, integration, e2e)
  • Artifact Management (docker image, NuGet/NPM paketi vb. depolama)
  • Deploy (test, staging, prod ortamlarına otomatik aktarım)
  • Monitoring & Feedback (log, metrik toplama, alarm kurma)

Popüler CI/CD Araçları;

  • Jenkins
    En popüler olan ve Java tabanlı, açık kaynak ve eklenti ekosistemi sayesinde hemen her iş akışına uyarlanabilen, hem basit hem de karmaşık pipeline’lar inşa etmeye uygun self-hosted çözümdür.
  • GitLab CI/CD
    GitLab içinde yerleşik, tam entegre ve açık kaynak pipeline’lar; kod depolama, issue takip ve deploy süreçlerini tek çatı altında toplar.
  • Azure DevOps
    Microsoft’un bulut hizmeti; Azure başta olmak üzere GitHub, Bitbucket ve GitLab repo’larıyla uyumlu, hem bulut hem self-hosted ajanlarla çalışabilen tam özellikli CI/CD platformudur.
  • CircleCI
    Bulut tabanlı, kolay başlatılabilir ve yatayda otomatik ölçeklenebilir yapı; GitHub, GitLab ve Bitbucket ile sıkı entegrasyon sunar.
  • Travis CI
    Bulut tabanlı bir CI/CD ve açık kaynaklıdır. GitHub ile entegrasyonu sayesinde, projeleri hızlı ve kolay bir şekilde CI/CD’ye uygun hale getirir, otomatik test, derleme ve dağıtımı destekler ve özelleştirilebilir yapılandırma seçenekleri sunar.
  • GitHub Actions
    GitHub ekosistemine yerleşik, YAML tabanlı iş akışları .github/workflow tanımlamaya imkan veren, hem GitHub’ın bulut sunucularında hem de kendi self-hosted runner’larınızda çalışabilen, geniş eklenti desteği sayesinde doğrudan repodan CI/CD süreçlerinizi yönetebileceğiniz entegre CI/CD platformudur.

Leave a Reply

Your email address will not be published. Required fields are marked *