Ana içeriğe atla

DevOps Yolculuğum - 1 - Continous Delivery


DevOps Yolculuğum

2018 yılıyla birlikte kariyerime DevOps Mühendisi olarak devam edeceğim. Bu zamana kadar IT altyapı ve operasyon ekiplerinde kazandığım, server operasyon ve yönetimi, veritabanı operasyon ve yönetimi, uygulama operasyon ve geliştirme deneyimlerimi DevOps için kullanacağım. Bu süreçte fırsat buldukça DevOps adına öğrendiklerimi blog yazılarımda toparlamayı hedefliyorum. Umarım hem yeni kariyer hedefimde hem de blog zinciri hedefimde başarılı olabilirim:)

Bu zincirdeki ilk yazımda Continous Delivery mekanizmasından bahsetmeyi düşündüm. Umarım bana ve okuyan herkese faydası dokunur.

Continous Delivery Nedir?

Continous Delivery temelde software release sürecinin tamamını etkileyen yazılım mühendisliği yaklaşımıdır. Test otomasyonu, uygulama deploymentlarının otomasyonu ve development sırasında kullanılan süreçlerin otomasyonu Continous Delivery'nin önemli bileşenleridir. Continous Delivery'in temel hedefi büyük ölçekli dağıtık ortamlara, kompleks production ortamlarına predict edilebilir deployment yapabilmektir. Bu hedefe ulaşabilmek için development sırasında en başta tekrarlayan süreçlerimiz olmak üzere süreçlerimizin mümkün olan adımlarını otomasyona uyumlu olarak tekrar dizayn etmeli, development ortamından test ortamına kodu otomatik deploy edebilmeli, test ortamındaki testlerimizi de insan hatasını ortadan kaldırabilmek için yine test otomasyon toollarıyla yapabilmeliyiz. Bileşenlerden bir tanesinin otomasyon yerine manuel süreçlerle ilerlemesi, hataya yol açabileceğinden dolayı bu bileşenlerin herhangi birisinin CD süreçlerinin içerisinden çıkarılması düşünülemez. 
Tüm bunlar organizasyonel yapıda ciddi değişikliklere gidilmesini, kişilerin bu yapıya uygun çalışma yapılarını da düzeltmesini gerektirmektedir. Bir uygulama release'ine ve deployment'ina dokunan herkes bu sürece uyumlu çalışmalıdır. 
Özetle Continous Delivery, deployment ve release süreçlerinde çeviklik (agility) ve hızı (velocity) arttırmak adına ortaya çıkarılmış bir mekanizmadır. 
 
Peki neden Continous Delivery mekanizmasını software release süreçlerimize entegre etmeliyiz?
  • CD'nin birincil hedefi uygulama deploymentlarının daha az sancılı ve esnek olabilmesini sağlamaktır. Zero-downtime hedefine ulaşabilmeyi hedefler.
  • Daha çevik ve hızlı yazılım geliştirmesiyle pazarda öncü olmayı hedefler. 
  • Süreçleri hatasız devam eden bir sowftware release döngüsüyle daha kaliteli kod hedefler.
  • Otomasyon süreçleri sayesinde tekrarlayan işlerde harcanan kaynaklar boşa çıkacağı için aslında daha düşük kaynak kullanımını hedefler.
  • Operasyonel ve tekrarlayan işlerden uzaklaşan takımların daha üretken ve mutlu olmasını hedefler.








Yorumlar

Bu blogdaki popüler yayınlar

Check Computer Object is Alive On Domain

Powershell'in gücü system admin rolündeki kişiler için tartışılmaz. Zaman zaman üzerinde aging tanımı olmayan ortamlarda, düzgün yönetilemeyen domain ve dns ortamlarında aslında kapalı olan ve kapalı olmamasına rağmen domainden düşmüş computer objelerinin tespit edilebilmesi için aşağıdaki gibi bir script geliştirmiştim. Umarım faydası olur, her türlü ek geliştirme için hakkiogretmen@gmail.com adresine mail atabilirsiniz. Import-Module ActiveDirectory $myServers = @("servers") If (Test-Path "D:\Temp\PasswordLastSetResult.txt"){ Remove-Item "D:\Temp\PasswordLastSetResult.txt" } $Servers_OU =  "OU=ServersOU,OU=ABCServersOU,DC=mydomain,DC=dmn,DC=com" foreach ($myserver in $myServers)         {         $mycomp = Get-ADComputer –SearchBase $Servers_OU –SearchScope SubTree -Filter { OperatingSystem -like "Windows Server*"} -Properties PasswordLastSet,IPv4Address | Select * | Where-Object {$_.Name -eq $myserver} trap [Syste...

Powershell Kullanarak Windows Features Yönetimi (Import And Export)

Bu yazı Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2 ve Windows Server 2016 işletim sistemleri üzerinde kullanılabilecek bilgiler içerir. Yazıyı okumaya başlamadan önce yazı içerisinde kullanılacak Get-WindowsFeature ve Add-WindowsFeature cmdletleriyle ilgili detaylı bilgileri inceleyebilirsiniz. Kendi ortamınızda test yapmadan önce ServerManager modülünü import etmelisiniz, Import-Module cmdlet için de yine MSDN üzerindeki bilgilerden faydalanabilirsiniz. Umarım faydalı bir yazı olmuştur. Birden fazla sunucuya benzer kurulumları yapmak istediğimizde karşımıza operasyonel zorluklar çıkabiliyor. Bu işlemleri hızlandırmanın & standart bir hale getirmenin bir çok yolu var ancak bu yazıda bir sunucu üzerinde kurulu Windows Feature'ların powershell ile toplanarak, diğer bir sunucuda kurulması için en basit olduğunu düşündüğüm yöntemi paylaşacağım. İlk olarak servermanager modülünün Powershell sessionımıza import edilmesi gerekmekted...

Windows Feature Batch Deployment

Aşağıdaki function ile bir sunucu üzerinde oluışturduğumuz configuration file dosyası ile uzak lokasyondaki birden çok sunucuya yükleme yapabiliriz. Umarım faydalı olur, her türlü ek geliştirme için hakki.ogretmen@gmail.com adresine mail atabilirsiniz. function Invoke-WindowsFeatureBatchDeployment { param ( [parameter(mandatory)] [string[]] $ComputerNames, [parameter(mandatory)] [string] $ConfigurationFilePath ) # Deploy the features on multiple computers simultaneously. $jobs = @() foreach($ComputerName in $ComputerNames) { $jobs += Start-Job -Command { Install-WindowsFeature -ConfigurationFilePath $using:ConfigurationFilePath -ComputerName $using:ComputerName -Restart } } Receive-Job -Job $jobs -Wait | Select-Object Success, RestartNeeded, ExitCode, FeatureResult }