Devops Nedir? Bize Ne Sağlar?
  1. Anasayfa
  2. DevOps

Devops Nedir? Bize Ne Sağlar?

0

DevOps terimini özellikle son zamanlarda çok daha fazla hayatımızda duymaya başladık. DevOps’un tarifini kısaca yapmak gerekirse, yazılım geliştirenler ve bu yazılımın işletilmesinden sorumlu olan ekipler arasındaki iş birliği şeklinde tarif edilebilir. DevOps‘u teknik olarak ifade etmektense, bir ürünün geliştirilmesinden, canlı ortama gönderilmesi ve bakımının hızlı bir biçimde yapılmasını amaçlayan bir yaklaşım olarak tarif etmek daha doğru olacaktır.

Özellikle rekabetin fazla olduğu pazara sahip firmalar waterfall metadolojileri terk edip, agile gibi metadolojilere yönelmeye başladı. Bu yaklaşımlar firmalara ne kazandırdı derseniz, kısa sürede içerisinde bir ürünü canlı ortama almayı, böylece bir adım öne çıkma hedeflerini yakalamalarını sağladığını söyleyebiliriz.

Bu tarz yaklaşımlarla birlikte DevOps kavramı oldukça önem kazanmaya başladı. Öncelerde altyapı ve yazılım ekipleri bağımsız ve çoğunlukla birbirleri arasında kavram farklılıkları olurken, DevOps ile birlikte bir yazılım geliştiricisi de alt yapı ekipleri de tek dilde konuşmaya başlamış oldu. Böylece aradaki iletişimsizlik ortadan kalktı.

Agile yaklaşımlar arttı ve DevOps kavramı hayatımızda artık dediğimiz noktada, bunları destekleyen ürün yelpazesi de arttı. Müşteri ihtiyaçlarına göre bu ürünler kendilerini daha da geliştirmeye başladı. Farklı ürünlerle entegre çalışır halde geldi.

Bu gelişmeler yaşanırken elbette Microsoft da ürün yelpazelerinde değişikliğe gitmeye başladı. Bunlardan biri olan TFS (Team Foundation Server) ‘e baktığımızda -güncel versiyonu Azure DevOps olarak isimlendirilmekte- özellikle farklı ürünlerle entegre çalışabilmek amacıyla sunduğu Marketplace’e kurumsal firmalar geliştirdikleri ürünlerin extensionlarını kullanıcılara sunabildiği gibi, bireysel olarak da bir extension geliştirip Marketplace üzerinden kullanıcılara sunulabilmekte. Aynı şekilde güzel adımlardan biri de TFVC (Team Fundation Version Control) ile birlikte git source control’ü de barındırması oldu. Bunlarla birlikte sunduğu REST Api’lar ile bir çok işlem için api desteği sağlanmış oldu. En basitinden çok fazla build/release tanımlarınız varsa, bunları tek bir rest api çağrımı güncelleyebilir, çoğaltabilir veya oluşturulmuş olan tanımlarınızı istediğiniz değerler ile başlatabilirsiniz.

Source Control Neden Önemli?

Geliştirlen uygulama kodlarının bir source control üzerinde tutulması oldukça önemli. Geliştirciler kodlarını source control üzerine göndermek istediklerinde
çeşitli policyler, derlenir kodların source control‘e gönderildiği, agile’a uygun olan work item gibi ilişkilerin tutulduğu, rollback işlemlerinin daha kontrollü bir şekilde işlemesi gibi bir çok yapı sunmakta.

Source control dediğimizde daha çok gözümüzde canlanan, aklımıza gelen .NET, Java vb programlama dilleri ile geliştirilen uygulamaların source control üzerinde tutulması oluyor. Fakat bu noktada özellikle database işlemlerinin çok olduğu firmalarda database’in de source control’de tutulması oldukça önem kazanıyor.

Database’in source control’de tutulmadığı durumda, en basitinden bir procedure geliştirdiniz ve canlı ortama taşımasını yapacaksınız, canlı ortamdaki mevcut procedure’ün backup’ının alınması tamamen manuel yöntemlerle işleyerek devam eder. Database’i de source control’e aldığımız durumda aynı .NET, Java uygulamalarımızda geliştirdiğimiz kodun versiyonlanması gibi, database objeleri de versiyonlayarak canlı ortama taşınması sağlanır. Herhangi bir rollback senaryosunda ilgili versiyona dönmek yeterli olacaktır. Benzer olarak en çok karşılaşılan eksik taşıma olasılığı ortadan kalkmış olacaktır.

Geliştirmelerin Versiyonlanması

Herhangi bir source controlde tutulan uygulama kodlarının veya database objelerinin CI/CD toolları kullanarak versiyonlanması, rollback senaryolarını kolaylaştırmanın yanı sıra, bir çok firmanın da hedeflediği, test edilen ve uat onayı almış olan kodun canlı ortama gitmesini sağlamaktadır. Versiyonlanan kodun saklanması çeşitli repository ürünleri kullanarak sağlanabilir (Jfrog Artifactory, nexus gibi).

Bunun yanı sıra work item ilişkisi ile oluşturulan versiyonun geliştirme detaylarına kolayca ulaşılabilir.

Geliştirmelerin Deploy Edilmesi

Source control üzerinde tutulan ve versiyonlanan kodun ilgili ortama gönderilmesi işlemleri de artık herhangi bir manuel akış ile değil, yine CI/CD tool’ları aralığıyla gerçekleştirilmesi tercih edilmektedir. Böylece daha hızlı ve hata payının olmasını daha az seviyeye indirmiş olmakla beraber, otomasyon sürecine dahil edilmiş olunur.

Bir uygulama dediğimizde database dahil olmak üzere tüm bileşenlerinin tek bir pipeline üzerinden deploymentının yapılması sağlanmalıdır.

Deployment aşaması sadece dosya kopyalama olarak düşünülmemelidir, bu deployment içerisinde Change management, kod güvenlik taramaları, load balancer ile deployment adımları olarak ele almak gerekir.

Uygulama

Gelen taleplerin TFS Backlog Item’ında tutulduğu, Middleware ve UI .Net programlama dili ile geliştirilip TFS üzerinde source code’u bulunduğu ve PL/SQL ile database geliştirmeleri yapılan DBMaestro source code’unu kullanan bir uygulama düşünelim.

Yazılımcılar geliştirmelerini yaptıktan sonra hangi Product Backlog Item için geliştirdiyseler onunla birlikte TFS üzerine checkin yaparlar ve geliştirilen kod ile source controlde bulunan kodun uyumluluğu için bir gated checkin otomatik tetiklenir. Aynı şekilde database geliştirmeleri için de dbmaestro üzerine checkin işlemi yapılır.

Build işlemi yazılımcı tarafından başlatıldıktan sonra, ilgili Product Backlog’a göre bir versiyon oluşturmuş ve bunu da jfrog artifactory’de bulunan nuget repository’e göndermiş oluruz. Aynı zamanda güvenlik kod taraması amacıyla da otomatik olarak Fortify’da tarama başlatılır.

Tüm işlemlerin tek bir platform üzerinden yapılması amacıyla, database objelerinin versiyonlanması için, TFS üzerinden dbmaestro build işlemi tetiklenir, bu işlemde marketplace’de bulunan dbmaestro extension’ı ile olacağı gibi, rest call olarak da yapılabilir.

Bu noktaya kadar TFS üzerinden agile, source control yönetimi, build işlemleri yapılmış bulunuyor, bununla birlikte farklı ürünler olan DBMaestro,Fortify ve Jfrog Artifactory ile de entegre çalışır hale gelmiş durumda. Bu entegrasyon adımları firmaların geliştirdikleri extensionlar ile veya rest api’lar ile yapılabiliyor.

 

 

 

 

 

Resim-1

 

Build işlemi tamamlandıktan sonra deployment için TFS’in Release ekranından, Test ortamı için öncelikle Database taşıması için DBmaestro tetiklenir ilgili versiyon bilgisi ile, database taşıması sonrası middleware katmanı deploymentı en son olarak da UI katmanı deploymentı gerçekleşir.

Testler tamamlandıktan sonra aynı versiyonlar ile release adımı devam eder, öncelikle ilgili versiyonların Fortify tarafında bulgusu var mı şeklinde kontrol yapılır, bulgu var ise deployment sonlanır, eğer bulgu yok ise test ortamında olduğu gibi database, middleware ve ui taşıması şeklinde devam eder. Preprod deploymentı sonrası UAT onayı alan versiyonların canlı ortama deploymentı öncesi regression ortamına gönderilir ve regression testleri gerçekleştirilir. Bunlar da başarılı olduğunda ServiceNow üzerinde otomatik bir değişim kaydı açılır ve taşınacak olan versiyonlar otomatik olarak değişim kaydına gönderilir.

Resim-2

Resim-3

Production deploymentı öncesinde açılan değişim kaydı ServiceNow üzerinden kontrol edilir, onaylı ise deployment canlı ortam için başlamış olur.

Öncelikle en alt katman olan database katmanı deploymentı gerçekleşir, bu işlem TFS’den DBmaestro tetiklenerek olur. Database deployementı sonrası, F5 üzerinde bulunan middleware ve UI katmanlarının blue grup sunucuları disable ve ardından offline yapılır ve sonrasında deployment gerçekleşir. Aynı işlem green grup için de gerçekleştirilir. F5 işlemleri için yine TFS Marketplace üzerinde bulunan F5 extensionları kullanılabildiği gibi, F5’in rest api’leri de kullanılabilmektedir.

Uygulamada da görüldüğü gibi, tüm işlemler TFS üzerinden yapılmış ve DBmaestro, Jfrog Artifactory, Fortify, ServiceNow, F5 gibi farklı ürünler bir araya getirilip tek bir pipeline üzerinden otomatize edilmiştir. Bu da özellikle büyük ölçekli firmalarda zaman kazanımı sağlamaktadır.

 

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

https://www.mshowto.org

TAGS: Devops Nedir,Devops Bize Ne sağlar,devops araçlar,devops blog

Bu İçeriğe Tepkin Ne Oldu?
  • 14
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 1
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Ben Nagihan 2014 yılında Ege Üniversitesi Bilgisayar Mühendisliği bölümünden mezun oldum ve aynı yıl içerisinde bir finans kuruluşunda Yazılım mühendisi olarak görev almaya başladım. Öncelikle .Net alanında kendimi geliştirdim sonrasında DevOps alanında kendimi geliştirmeye başladım.Paralelde İstanbul Üniversitesi Yönetim Bilişim Sistemleri bölümünde yüksek lisans yapmaktayım, aldığım dersler itibari ile de Data Mining ile ilgili çalışmalarım oluyor. Günlük hayatıma mümkün oldukça sporu dahil etmeye ve yeni yerler keşfedip öğrenmeye çalışıyorum.

Yazarın Profili
İlginizi Çekebilir

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir