AWS CodePipeline ile sürekli teslimat

Arif Selim Kayımoğlu
FowApps
Published in
4 min readDec 27, 2022
delivery
Photo by Rowan Freeman on Unsplash

Günümüzde yazılım geliştirme yaşam döngüsü süreçlerini hızlandırmak isteyenler arasında popüler bir yapı olan CI/CD süreçleri için bu makalede Amazon Web Services tarafından sunulan CodePipeline hizmetinden bahsedeceğiz ve bu servis hakkında bilgiler edineceğiz. Bu süreç akşam yemeğinizin dakikalar içerisinde sıcak bir şekilde size ulaşması kadar mühim!

Öncelikle yazılım geliştirme yaşam döngüsü hakkında biraz fikir edinmekte yarar var. Yazılım yaşam döngüsü; geliştirilen veya geliştirilmekte olan bir yazılım projesinin planlama sürecinden itibaren başlayarak teslimatına kadar geçirmiş olduğu bütün aşamalara ve bu aşamalardan oluşan döngüye denir. Bu konu hakkında daha çok fikir edinmek için Yazılım Yaşam Döngüsü Nedir? makalesini derinlemesine inceleyebilirsiniz.

Bu süreci hızlandırmak, geliştirilen ürünün kullanıcılara ulaştırılması veya yazılım geliştiricisinden çıkıp, test süreçlerinin hızlı bir şekilde başlayabilmesi için arada sürekli ve hızlı bir teslimat olması gerekmekte. Yani başka bir deyişle, yazılım geliştiricisinden kodların gönderilip uygulamayı canlı bir ortama teslim etme sürecinin sürekli ve hızlı bir şekilde gerçekleşmesi günümüzde çok büyük bir önem arz ediyor.

Bunun için de günümüzde popülerleşen bir yapı olan CI/CD devreye giriyor. Continuous Integration & Continuous Delivery/Development teriminin kısaltması olan ve Sürekli Entegrasyon & Sürekli Teslimat veya Geliştirme olarak çevrilen bir yapı bulunuyor.

Sürekli entegrasyon, kod üzerinde yapılan değişiklik sonrasında sistemin çalışır durumda olduğunu, yapılan değişikliğin sorunlara yol açmadığını tespit etmek için kullanılan yöntemdir.

Sürekli teslimat, sürekli entegrasyonun doğal bir uzantısıdır. Bu süreç, başarılı olan bir yapıyı (build) bir ortama atma durumunun otomatik olan yoludur. Teslimat ile dağıtım arasında küçük bir fark vardır. Teslimat manüel yolla, dağıtım ise otomatik yapılır.

CI/CD yapıları hakkında çok daha geniş bilgi edinmek için ve diğer CI/CD araçlarını keşfetmek için makalenin en altında bulunan kaynaklar kısmında bulunan adresleri ziyaret edebilirsiniz.

Bu makalede AWS tarafından sağlanan CodePipeline hizmetinden bahsedeceğiz. CodePipeline üzerinde CI/CD süreci için 3 aşama bulunuyor. Source, Build ve Deploy. Bu üç aşama için de isterseniz AWS’in kendi içerisinde sunduğu her aşamaya özel araçları kullanabilir veya sektörde popüler olan diğer araçları kullanmayı tercih edebilirsiniz.

CodePipeline Source aşaması

Source aşaması için; AWS CodeCommit, Amazon S3, Bitbucket ve GitHub gibi servisleri CodePipeline servisi içerisinde kullanabiliyoruz. Burada projemizin/uygulamamızın kaynak kodlarının hangi Repository servisinde olduğunu ve Build aşamasına gönderilecek olan kaynak kodlarını CodePipeline servisine belirtmiş oluyoruz.

CodePipeline Build aşaması

Build aşamasında, AWS CodeBuild veya Jenkins sunulmakta. Bu aşamada CodeBuild içerisinden bir Build projesini seçip, projenin build alınabilmesi için gerekli değişkenleri derleme yapacak olan AWS ait sunucuya iletmiş olacağız. Ayrıca Build projesi oluştururken, derleme yapacak olan makinanın hangi sanal ağ üzerinde olacağı, hangi RAM ve CPU kapasitesine sahip olacağı ve hangi işletim sistemi tabanı üzerinde derleme yapılacağı gibi birçok detayı konfigüre edebiliyoruz.

CodePipeline Deploy aşaması

Son olarak Deploy aşaması için kullanacağımız araçlar da AWS üzerindeki ECS, Elastic Beanstalk vb. servisler olabilir. Burada Build aşamasında çıktı olarak aldığımız proje imaj dosyasını ve konfigürasyonları içeren “Image Definitions” adı verilen bir JSON dosyasını da belirleyebiliyoruz.

CodeBuild ve Deploy aşamalarına daha detaylı bir şekilde ilerleyen makalelerle değineceğiz.

CodePipeline süreçleri

Ayrıca CodePipeline projeniz için Build aşaması sonrası bir takım testler yapar. Build alındıktan sonra uygulamanın imaj dosyası oluşturulduğunda sağlıklı bir şekilde çalışıp çalışmadığına dair gerekli logları panel üzerinde takip etmenize olanak sağlar.

AWS CodePipeline ile yazılım yayınlama sürecini modelleme, sunucuları kurma veya tedarik etme ihtiyacını azaltma, her bir kod değişikliğini test edip geri bildirimleri yineleyerek ve hataları yakalayarak yeni özellikleri hızla yayınlamak gibi avantajlara erişebilirsiniz.

Tüm bu avantajların yanı sıra CodePipeline ile CI/CD süreçlerinizi otomatize etmiş olacaksınız. Bu sayede yazılım geliştirme yaşam döngüsü sürecinizi kısaltabilirsiniz.

CodePipeline içerisinde bulunan ve yine AWS tarafından sağlanan CodeBuild gibi diğer hizmetleri de gelecek makalelerde inceleyeceğiz.

CodePipeline servisi ile ilgili kısa bir bilgilendirme, yazılım projeleri için yararları ve içerisinde kendisine bağlı hangi servisler olduğu konularında ufak bir inceleme yapmış olduk. Umarım bu makale sizde CI/CD ve CodePipeline ile ilgili bir fikir oluşturmuştur. Gelecekteki makalelerde görüşmek üzere.

Makalede yararlanılan kaynaklar:

--

--