Bizi takip edin:

Azure Devops Nedir?

Azure DevOps sadece bir tool değil aynı zamanda kültürel ve profesyonel bir harekettir. Benim görüşüme göre ise Devops, yazılım ekipleri ile IT ekipleri arasındaki otomasyonu, iletişimi ve entegrasyonu sağlayan pratiklerdir.

Azure DevOps bu yaklaşımda karşımıza 5 adet ana modül ile çıkıyor. Bunlar ; Boads, Repos, Pipelines, Tests ve Artifacts. Aslında bu modüllerin hiçbiri daha önce yapmadığımız işler değil ve yeni bir teknoloji değil ancak Azure DevOps’un burada katma değeri bütün proje bileşenlerini tek bir portalden yönetebiliyor olmamız. Proje ile alakalı bütün geliştirme adımları, kanban board, kod repository, otomatik CI/CD süreçleri, test adımları ve nuget paketleri tek bir portal üzerinden yönetilebiliyor.

Azure Devops Bileşenleri

Azure Boards 5 adet ana bileşenden oluşur :  

1. Azure Boards sayesinde projemizin tüm efor ve adımlarını takip edebiliyoruz. Klasik Agile, Scrum yöntemlerini izleyebilir veya isteklerimize göre özelleştirebiliriz.

2. Azure Repos : Repos sayesinde ekibimizin knowledge base’ini yada kodlarımızı projemizle aynı ortamda tutabiliyoruz. İstersek Git özelliği ile istersek VSTS özelliği ile paket halinde uygulamamızı barındırabiliyoruz.

3. Azure Pipelines : Pipelines Azure DevOps’un belkide en önemli özelliği diyebiliriz. Bu modül ile birlikte CI/CD süreçlerimizi kurgulayabilir, onay mekanizmaları kurabilir veya otomatik bir şekilde çalışan scriptler çalıştırabiliriz.

4. Azure Tests Plans : Test modülü sayesinde uygulamamızda test adımları kurgulayabilir. Bunları açılan bir browserden deneyebilir, anında bug tespiti yapabilir ve bu buglara istinaden work Itemlar oluşturabiliyoruz.

5. Azure Artifacts : Arfitacs modülü sayesinde uygulamamızın kullandığı bağımlılık paketlerinin dağıtımını yapabiliyoruz. Uygulama derlendikten sonra en güncel versionun kullandığı bağımlılıklar paketlenerek nuget veya diğer paket yönetim dillerinde dağıtım yapılıyor.

Devops Yaşam Döngüsü

Azure DevOps ile bir proje geliştirmek istersek bu projenin yaşam döngüsü yukarıdaki gibi olacaktır. Bu görseli anlatmak gerekirse 

  1. Consultants&Developers : Uygulamayı yada projenin geliştirmesi yapılır Repository’e pushlanır
  2. Code Repository : Geliştiriciler tarafından gönderilen kaynak kodlar versionlanır ve branch yapısında tutulur. Geliştirme uygun bulunursa master branch’ine pull request yapılır.
  3. Commit-Build : Uygulama Pull Request olduktan sonra Build işlemi gerçekleştirilir ve çalıştırılabilir paket hale getirilir.
  4. Test : Çalıştırılabilir paket deploy edilmeden önce otomatize testler yapılır. Bu testlerin hepsi başarıyla sonuçlanırsa bir sonraki adıma geçilir 
  5. Deploy to Cloud : Çalıştırılabilir pakedimiz production ortamına belirlenen deployment modeliyle birlikte yüklenir ve yeni versionumuz canlıya geçmiş olur
  6. Monitor and Improve : Production ortamı izlenir ve iş ihtiyaçlarına göre süreç başa dönerek ilgili geliştirmeler yapılır.

Yukarıda ki yaşam döngüsü DevOps’un sürekli tekrar eden yaşam döngüsünü çok yüzeysel bir şekilde göstersede her firmanın kendi ortamına göre her aşamada farklı ekip veya farklı birimlerin rol alması söz konusu olabiliyor. Hatta aynı firma içerinde aynı süreci farklı toollarla ve ekiplerle yapmak bile çoğu zaman söz konusu olabiliyor. Ama değişmeyen tek şey her sürecin birbiri ardına otomatize bir şekilde çalışması ve yaşam döngüsünün kişilerden bağımsız sistematik bir şekilde olmasıdır.

Azure Devops Örneği

Azure DevOps servisini şirket içinde veya bireysel olarak kurgulamak istersek. dev.azure.com’a giriş yapmamızve bir proje oluşturmamız yeterli olacaktır. Bu servisin en öne çıkan yanlarından birisi ise aynı proje içerisinde 5 kullanıcıya kadar tüm özelliklerin ücretsiz olması ve daha sonrasında ise yine ücretsiz kalıp kısıtlı bir erişim sunmasıdır. Aşağıdaki görselde benim devops ortamımdaki projelerin bazıları gözükmekte. 

WebApp Container isimli projemize giriyoruz ve karşımıza bir hoşgeldin ekranı çıkıyor. Burada projemiz hakkında genel bilgiler ve wiki diyebileceğimiz bir alan bulunuyor. 

Ayrıca sol tarafta Artifacts’ın altında bir modül daha görüyorsunuz. Azure DevOps’un marketplace’inden ihtiyaçlarınıza yönelik olarak extensionlar projenize dahil edebiliyorsunuz. Yeni bir pipeline kurgulanması örneği yapacağız. Bunun için repository’mize öncelikle kodları publish ediyoruz. İstersek kodu burada değil herhangi bir git dağtımında da tutabilirdik.

Kodlarımız Repositoryimizde bulunduğuna göre öncelikle her kod gönderiminde çalışacak olan CI pipeline’ını kurguluyoruz. Bunun içini Pipelines modülünden New Pipeline butonuna basıyoruz.

Bize kodumuzun yerini göstermemizi istiyor. Burda yukardaki seçeneklerden birini seçersek YAML formatında bir pipeline kurguluyoruz, eğer aşağıdaki yazıdaki gibi classic editor dersek ise daha görselleştirilmiş bir pipeline kurgulayabiliyoruz. Benim tavsiyem YAML formatında kurgulanması olacak çünkü yaml dosyası git branch’ine commit ediliyor ve ortamdan bağımsız olarak pipeline dosyasıda geliştiriclerde versionlanabiliyor. Repositoryimizi seçerek devam ediyoruz. Bir sonraki adımda hangi uygulama tipinde bir build alınacağını soruyor.

Dosyalarımızın içinde dockerfile olduğu için Docer’ı önerilen olarak en üstte çıkartmış durumda. Burada karşımıza çıkan pipeline modelleri aslında bir template ve boş bir template seçerekte devam edebiliriz. Ancak Docker’ı seçersek eğer Docker image’ı build etmesi için otomatik olarak adımlar eklenmiş olacak.

CI pipeline’ımızın yaml’ı aşağıdaki gibi oluşmuş oluyor.

Bu pipeline şuanda birkaç adımdan oluşup Docker build’i ve ACR’a pushlamasını gerçekleştiriyor. Çalıştırdığımız zaman ise aşağıdaki gibi bir çıktı elde ediyoruz. 

1 dakika 10 saniyede pipeline’ımız tamamlanmış durumda ve yeni image’imiz Container Registry’e pushlanmış oldu. Bu sayede geliştirici kodunu her master’a commitlediğinde yeni versionda bir uygulama elde etmiş olacak.

Önceki İçerik

Microsoft Azure App Service Slots

Sonraki İçerik

Azure Functions ile back-end API’lar Geliştirmek

Start typing to see you are looking for.