Ana İçeriğe Atla

CI/CD İşlem Hattı Nedir?

İşletmeler, giderek daha rekabetçi hale gelen bir uygulama pazarında yazılım güncellemeleri, hata düzeltmeleri ve yeniliklerle başa çıkma konusunda baskı altındadır. Yazılım ve operasyon ekipleri, iş operasyonlarından ödün vermeden kullanıcı geri bildirimlerini ele almak, sorunları çözmek ve güncellemeleri dağıtmak için uyumlu bir şekilde çalışmalıdır. Geleneksel yazılım geliştirme döngüleri, özellikle de sıralı şelale modeline dayananlar, modern yazılım teslimatının hızına ayak uydurmakta zorlanır. Yazılım geliştirme yaşam döngüsü kısaldıkça, geliştirme ekipleri hassas, yüksek kaliteli ve daha güvenli kodları verimli bir şekilde oluşturmak için CI/CD'ye yöneliyor.

CI/CD sürekli entegrasyon ve sürekli teslimat anlamına gelir. Bazı durumlarda, CD sürekli dağıtım anlamına da gelebilir.

  • Sürekli entegrasyon, birden fazla geliştiricinin kod güvenilirliğinden ödün vermeden aynı anda kod üzerinde çalışıp kodlarını birleştirmesine olanak tanır.
  • Sürekli teslimat, yazılımın test edilmesini, doğrulanmasını ve insan onayından geçtikten sonra yayınlanmaya hazır hale getirilmesini sağlayan otomatik bir iş akışıdır.
  • Sürekli dağıtım, onayın önceden yapılandırılmış kurallarla otomatikleştirilmesi dışında sürekli teslimata benzer.

Birlikte, CI/CD, daha önce manuel olarak gerçekleştirilen tüm süreçleri otomatikleştiren bir işlem hattı olarak uygulanabilir. CI/CD işlem hattının nasıl çalıştığını daha iyi anlamak için aşağıdaki şemaya bakın.

CI/CD işlem hattındaki her aşama, yazılım geliştirme sürecindeki belirli faaliyetleri içerir. Yazılım derlemeleri bir sonraki aşamaya geçmeden önce, kodu kalite, güvenlik açıkları ve diğer teknik sorunlar açısından incelemek için otomatik testler sunarlar. Bu şekilde, geliştirme ekipleri kod sorunlarını daha erken tanımlayabilir ve düzeltebilir, bu da işletmelere önemli ölçüde zaman, kaynak ve maliyet tasarrufu sağlar.

Bir CI/CD işlem hattı kurmak basit görünüyor. Bununla birlikte, işletmeler CI/CD iş akışını uygularken, özellikle şirket içi kurulumlarda genellikle zorluklarla karşılaşırlar. Örneğin, şirketler daha fazla sayıda uygulama, araç ve ekip üyesini yönetmeleri gerektiğinde altyapı engelleriyle karşılaşırlar. Bu sorun çözülmezse geliştiriciler, kodun kendisi üzerinde çalışmak yerine işlem hattını düzeltmek için daha fazla zaman harcar.

CI/CD iş akışlarını AWS bulutuna kaydırmak, ekiplerin modern yazılım geliştirme iş yüklerini ölçeklendirmesine, değişiklikleri daha etkili bir şekilde iletmesine ve kaynakları daha verimli yönetmesine olanak tanır. Örneğin, Duolingo CI/CD işlem hattını AWS EC2 Mac'e taşıdı ve gelişmiş otomatik ölçekleme stratejileri uyguladı. Sonuç olarak, derleme süresini 50 dakikadan sadece 16 dakikaya düşürdü.

Bir CI/CD işlem hattını nasıl oluşturabilirsiniz?

AWS, yönetilen ve otomatikleştirilmiş hizmetlerle CI/CD uygulamasını daha zahmetsiz, otomatik ve güvenli hale getirir. Ekibiniz geliştirme araçlarını, sunucularını ve kaynaklarını manuel olarak sağlamak yerine, kullanıcı isteklerine yanıt verme ve yazılım yayınlama süreci için strateji oluşturma gibi yüksek değerli etkinliklere odaklanabilir.

Başlangıç olarak, DevOps ekiplerinin CI/CD işlem hattı oluşturmak için ihtiyaç duyduğu bulut kaynaklarını otomatik olarak dağıtmak için AWS CloudFormation'ı kullanabilirsiniz. İhtiyacınız olan kaynakları şablonda tanımlayarak veya önceden oluşturulmuş şablonları kullanarak başlarsınız. CloudFormation daha sonra CI/CD'yi destekleyen temel ortamı oluşturan kaynakları sağlar. Ardından, CI/CD işlem hattı aşamalarını AWS bulutunda aşağıdaki gibi uygulayabilirsiniz.

Kaynak

Kaynak aşaması, geliştiricilerin yaptığı sürüm değişikliklerini izler. Geliştiriciler, orijinal kodun bir sürümünü paylaşılan merkezi depodan yerel makinelerine kopyalar. Ardından, değiştirilen kodu düzenler, derler, test eder ve depoyla birleştirirler.

Ekibinizin AWS araçlarıyla kod değişikliklerini nasıl yapabileceği ve yönetebileceği aşağıda açıklanmıştır.

1. Adım - IDE ile kod yazın

Geliştirici, popüler programlama dillerini destekleyen bulut tabanlı entegre geliştirme ortamı (IDE) olan AWS Cloud9 ile yeni kod oluşturabilir veya mevcut kodu düzenleyebilir. Cloud9 ile, internete erişiminiz olduğu sürece bir web tarayıcısında kaynak kodunu yazabilir, çalıştırabilir ve koddaki hataları ayıklayabilirsiniz. Alternatif olarak, üçüncü taraf bir IDE yüklerseniz Java, Python ve JavaScript dahil olmak üzere çeşitli dillerde kod yazmayı etkinleştirmek için yazılım geliştirme setlerini (SDK'lar) indirebilirsiniz. SDK'lar, uygulama programlama arabirimi (API) aracılığıyla tercih ettiğiniz kodlama ortamından AWS kaynaklarına ve kitaplıklarına erişmenizi sağlar.

2. Adım - Kodu merkezi depoya iletin

Geliştiriciler, özel kod depoları oluşturmak, çekme isteklerini yönetmek ve değişiklikleri birleştirmek için GitHub gibi üçüncü taraf araçlarını kullanır. Diğer geliştiricilerin yaptığı değişiklikleri takip etmenizi ve gerekirse önceki işlevsel kaynak koduna geri dönmenizi sağlayan bir sürüm kontrol sistemi görevi görür.

Derleme ve test etme

Derleme aşamasında, merkezi depoda depolanan kod bir derleme sunucusuna gönderilir. Ardından, derleme sunucusu kaynak kodunu ve bağımlılıkları, geliştiricilerin sonraki aşamalarda çalıştırabileceği yapıt adı verilen bir yazılım dosyasına dönüştürür. Örneğin, bir Java programı oluşturuyorsanız bir JAR veya WAR dosyası alırsınız. Bu aşamada birim ve statik kod analizi dahil olmak üzere çeşitli ön testler yapılabilir.

  • Birim testleri, bireysel yazılım işlevlerinin doğru sonuçları üretmesini sağlar. 
  • Statik kod analizi, hataları, güvenlik açıklarını ve kodlama standartlarına uyumu belirlemek için kaynak kodunu kontrol eder.

Kod herhangi bir testte başarısız olursa geliştiriciler kodu önceki durumuna geri döndürür ve sorunları çözer.

Geleneksel olarak, yazılım ekiplerinin uygulamalarını paketlemek için kendi derleme sunucularını kurmaları gerekir. Ek olarak, test komut dosyalarını manuel olarak yazmaları, doğrulamaları ve tekrarlanan iterasyonlarla sonuçları izlemeleri gerekir. Artık CI/CD derleme iş akışını hızlandırmak için AWS CodeBuild'i kullanabilirler. Ekibinizin, değişiklik yaparken derlemeleri otomatikleştirmesini ve yazılımı test etmesini sağlar. Kaynak kodunu belirtilen depodan bulur ve yapılandırdığınız derleme komut dosyasını çalıştırır.

AWS CodeBuild, işlem kapasitesini derleme iş yüklerinize uyacak şekilde otomatik olarak ölçeklendirir. Bu şekilde, yenisini başlatmadan önce önceki derlemelerin tamamlanmasını beklemeniz gerekmez. Yazılım ekipleri kod sorunlarını erken tespit edebilir ve karmaşık hale gelmeden önce çözebilir.

Örneğin, bir Node.js projesi oluşturuyorsanız Jasmine veya Jest test çerçevesini AWS CodeBuild ile entegre edebilirsiniz. Bu çerçeveler, test senaryolarını kolayca yazmanıza, beklenen sonuçları belirtmenize ve derleme çalışmaları sırasında bunları doğrulamanıza olanak tanır. 

Test aşaması derleme aşamasından hemen sonra gelir. Uygulamayı daha titiz testlere tabi tutmak için tasarlanmıştır ve yazılım ekiplerinin kod kalitesini, performansı, güvenliği ve diğer önemli yönleri geliştirmesine olanak tanır. Bir CI/CD işlem hattıyla testler otomatikleştirilir ve birkaç alana yayılır.

  • Entegrasyon testleri, uygulamanın kullandığı tüm hizmetlerin ve üçüncü taraf bileşenlerin birbirleriyle doğru şekilde etkileşime girmesini sağlar.
  • Fonksiyonel testler, son kullanıcının bakış açısından uygulamanın kapsamlı bir değerlendirmesini sağlar.
  • Güvenlik testleri, uygulamayı olası güvenlik riskleri ve güvenlik açıkları için araştırır.
  • Performans testleri, ani trafik artışı gibi aşırı veya beklenmedik koşullar durumunda uygulamanın hızlı ve çalışır durumda kalmasını sağlar.

Uygulamanın bir sonraki aşamaya geçebilmesi için belirtilen tüm testleri geçmesi gerekir.

Hazırlama

Hazırlama, uygulamayı son kullanıcılara yayınlamadan önce son kontrolleri yapmanıza olanak tanır. Bu aşamada, yazılım ekipleri uygulamayı gerçek dünya uygulamalarını taklit eden bir ortamda dağıtır. Genellikle sahte verileri kullanırlar ve piyasaya sürülmeden önce tespit edilmeyen sorunları yakalamak amacıyla uygulamayı test etmek için bir grup son kullanıcıyı kaydederler.

Örneğin, bir uygulamayı güncellediniz ve kullanıcı etkileşimleriyle nasıl davrandığını kontrol etmek istiyorsunuz. Hazırlama ortamında dağıtmak, iş operasyonlarını kesintiye uğratmadan yazılım performansını değerlendirmenize yardımcı olur. Tüm test koşullarını yerine getirdikten sonra, yazılım ekipleri uygulamayı üretim ortamına dağıtır ve bu da onu son kullanıcılar için erişilebilir hale getirir.

Ortamlar arası dağıtım, özellikle ekipler bunu manuel olarak yaparsa zor olabilir. AWS CodeDeploy uygulama dağıtım çabalarını basitleştirebilir. Çeşitli ortamlara uygulama dağıtımını otomatikleştirir. Dağıtım etkinliklerini görüntüleyebilir, değişiklikleri izleyebilir ve gerekirse önceki sürüme geri dönebilirsiniz. Ayrıca hazırlama ve üretim aşaması arasındaki boşluğu kapatır. Örneğin, bir üretim sürümü için hazırlama aşamasında kullandığınız dağıtım talimatlarını kullanabilirsiniz.

Üretim

Üretim, gerçek kullanıcıların uygulamanıza eriştiği canlı ortamdır. Değişiklik yaptıktan, değişiklikleri test ettikten ve doğruladıktan sonra yazılım ekipleri güncellenmiş uygulamayı üretim ortamında yayınlar. Bu adım CI/CD işlem hattının sonunu işaret etse de uygulamanın performans, güvenlik ve iş gereksinimlerini karşılamasını sağlamaya yönelik çabalar devam eder. Bu nedenle, üretimde çalışırken uygulamayı sürekli izlemeniz gerekir.

Amazon CloudWatch, AWS, şirket içi veya diğer bulut ortamlarında dağıttıkları uygulamalarda geliştirme ve operasyon ekiplerine görünürlük sağlayan bir hizmettir. Operasyonel verileri otomatik olarak toplar ve görselleştirir, böylece uygulamanızın gerçek dünya koşullarında nasıl performans gösterdiğini daha iyi anlamanıza olanak tanır. Ek olarak, uyarılar ayarlayabilir ve ekiplerinizin acil müdahalesini gerektiren olaylardan haberdar olabilirsiniz.  

Bir CI/CD işlem hattını nasıl otomatikleştirebilirsiniz?

Farklı sağlayıcılardan CI/CD araçlarını entegre etmek, özellikle kapsamlı manuel kurulumlar gerekiyorsa zor olabilir. Ancak AWS CodePipeline ile esnekliği korurken tüm kod yayınlama sürecini otomatikleştirebilir, ölçeklendirebilir ve hızlandırabilirsiniz.

AWS CodePipeline, bir grafiksel kullanıcı arabirimiyle bir CI/CD iş akışını modellemenize olanak tanır. AWS hizmetlerini işlem hattınıza kolayca entegre edebilir veya kullandığınız mevcut araçlara ve kaynaklara bağlanabilirsiniz. Örneğin, Jenkins'i derleme sunucusu olarak kullanmak istiyorsanız bunu AWS CodePipeline ile entegre edebilirsiniz.

Aşağıda, bunu yapmak için gereken adımları özetliyoruz.

  1. Jenkins ve Jenkins için AWS CodePipeline eklentisini yükleyin.
  2. Ardından, Jenkins için AWS Identity and Access Management (IAM) ile erişim izni ayarlayın. Bu, Jenkins'in AWS CodePipeline ile etkileşim kurmak için yetkili kimlik bilgilerini kullanmasına olanak tanır.
  3. AWS CodePipeline konsolunda oturum açın ve özel bir işlem hattı oluşturun.
  4. İşlem hattını GitHub gibi paylaşılan bir kaynak kodu deposuna bağlayın.
  5. Ardından, bir derleme aşaması ekleyin ve derleme sunucusu olarak Jenkins'i seçin.
  6. Gerekli test eylemleri dahil olmak üzere gerekli test aşamalarını ekleyin ve tetikleyiciler oluşturun.
  7. Ardından, dağıtım aşamasını AWS CodeDeploy veya başka bir dağıtım hizmetine bağlayın. 

AWS, CI/CD işlem hattı ihtiyaçlarınızı nasıl destekleyebilir?

CI/CD işlem hattı, işletmelerin yazılım kalitesi ve güvenliğinden ödün vermeden uygulama güncellemelerini daha hızlı üretmelerini, test etmelerini ve yayınlamalarını sağlar. Yazılım geliştirme ekipleri otomatik CI/CD araçlarıyla kodu değiştirir, değişiklikleri birleştirir, testleri otomatikleştirir, dağıtımı planlar ve daha fazlasını yapar. Bununla birlikte, bazı ekipler altyapı, kaynak ve süreç sınırlamaları nedeniyle CI/CD iş akışlarını ölçeklendirmede zorluklarla karşılaşıyor.

AWS, CI/CD işlem hattınızı oluşturmak, kolaylaştırmak ve ölçeklendirmek için bir bulut tabanlı çözüm paketi sunar.

  • AWS CloudFormation, CI/CD araçlarının üzerinde çalıştığı kaynakları sağlar.
  • AWS Cloud9, geliştiricilerin tarayıcılarından kod yazmasına, çalıştırmasına ve hata ayıklamasına olanak tanır.
  • AWS CodeBuild, kendi derleme sunucularınızı yönetmeden uygulamanızı derlemenize, test etmenize ve paketlemenize olanak tanır.
  • AWS CodeDeploy, şirket içi ve AWS bulut sunucuları da dahil olmak üzere her ortamda dağıtımı otomatikleştirir.
  • AWS CodePipeline, kaynaktan canlı üretim ortamına kadar tüm CI/CD iş akışını modellemenizi sağlar.
  • AWS CloudWatch, operasyonel ekiplerin dağıtılan uygulamaları sürekli olarak izlemesine, kaydetmesine ve analiz etmesine olanak tanır.

Bir CI/CD işlem hattı oluşturma konusunda daha fazla yardıma ihtiyacınız varsa lütfen Amazon Professional Services ile iletişime geçin.