DevOps nedir?
DevOps, uygulama planlama, geliştirme, teslim ve operasyonlardaki kişileri, süreci ve teknolojiyi birleştirmek için geliştirme (Geliştirme) ve işlemleri (Ops) birleştirir. DevOps, geliştirme, BT operasyonları, kalite mühendisliği ve güvenlik gibi eski silolu roller arasında koordinasyon ve işbirliği sağlar.
Ekipler, derledikleri uygulamalara olan güveni artırmak, müşteri ihtiyaçlarına daha iyi yanıt vermek ve iş hedeflerine daha hızlı ulaşmak için DevOps kültürünü, uygulamalarını ve araçlarını benimser. DevOps, ekiplerin daha iyi, daha güvenilir ürünler üreterek müşterilere sürekli değer sağlamasına yardımcı olur.
DevOps ve uygulama yaşam döngüsü
DevOps, uygulama yaşam döngüsünü planlama, geliştirme, teslim ve operasyon aşamaları boyunca etkiler. Her aşama diğer aşamalara dayanır ve aşamalar role özgü değildir. DevOps kültürü, bir ölçüde her aşamadaki tüm rolleri içerir.
Aşağıdaki diyagramda DevOps uygulama yaşam tarzının aşamaları gösterilmektedir:
DevOps hedefleri ve avantajları
Bir ekip DevOps kültürünü, uygulamalarını ve araçlarını benimsediğinde harika şeyler elde edebilir:
Pazarlama süresini kısaltın
Artan verimlilikler, geliştirilmiş ekip işbirliği, otomasyon araçları ve sürekli dağıtım sayesinde ekipler, ürün başlangıcından pazara sunulmasına kadar geçen süreyi hızla kısaltabiliyor.
Pazara ve rekabete uyum sağlama
DevOps kültürü, ekiplerin müşteri öncelikli bir odak noktası oluşturmasını talep eder. Ekipler çeviklikle, ekip işbirliğiyle evlenerek ve müşteri deneyimine odaklanarak müşterilerine sürekli değer sağlayabilir ve marketteki rekabet gücünü artırabilir.
Sistem kararlılığını ve güvenilirliğini koruma
Ekipler sürekli iyileştirme uygulamalarını benimseyerek dağıttığı ürün ve hizmetlerin kararlılığını ve güvenilirliğini artırabilir. Bu uygulamalar hataları ve riski azaltmaya yardımcı olur.
Ortalama kurtarma süresini iyileştirme
Ortalama kurtarma süresi ölçümü, bir hata veya ihlalden kurtarmanın ne kadar sürdüğünü gösterir. Yazılım hatalarını, güvenlik ihlallerini ve sürekli geliştirme planlarını yönetmek için ekiplerin bu ölçümü ölçmesi ve geliştirmek için çalışması gerekir.
DevOps kültürünü benimseme
DevOps'yi tam olarak uygulamak için bir DevOps kültürünü benimsemeniz gerekir. DevOps kültürünün yetiştirilmesi için insanların çalışma ve işbirliği yapma biçiminde derin değişiklikler yapılması gerekir. Kuruluşlar bir DevOps kültürüne bağlandığında, yüksek performanslı ekiplerin gelişmesi için bir ortam oluşturur. DevOps uygulamalarını benimsemek, teknoloji aracılığıyla süreçleri otomatikleştirir ve iyileştirirken, kuruluştaki ve kişileri içindeki devOps kültürüne geçiş yapmadan DevOps'un tüm avantajlarından yararlanamazsınız.
Aşağıdaki görüntü, Microsoft'un canlı site kültürünün önemli yönlerini yakalar.
Aşağıdaki uygulamalar, DevOps kültürünün temel bileşenleridir:
- İşbirliği, görünürlük ve hizalama: İyi durumdaki DevOps kültürünün bir işareti, ekipler arasındaki işbirliğidir. İşbirliği görünürlükle başlar. Geliştirme, BT ve diğer ekipler DevOps süreçlerini, önceliklerini ve endişelerini birbirleriyle paylaşmalıdır. Birlikte çalışmalarını planlayarak, işle ilgili olarak başarı hedeflerine ve ölçülerine uygun şekilde daha iyi konumlandırılırlar.
- Kapsam ve sorumluluktaki geçişler: Ekipler uyumlu hale geldikçe sahiplik alır ve yalnızca rollerinin merkezi olan yaşam döngüsü aşamalarına değil diğer yaşam döngüsü aşamalarına da katılır. Örneğin, geliştiriciler yalnızca geliştirme aşamasında oluşturulan yenilik ve kalite süreçlerinde değil, aynı zamanda kendi yaptıkları değişikliklerin, çalıştırma aşamasında sergilediği performans ve devamlılık açısından da sorumlu hale gelir. Bununla birlikte, BT operatörleri plan ve geliştirme aşamalarına idare, güvenlik ve uyumluluğu da mutlaka dahil eder.
- Daha kısa sürüm döngüleri: DevOps ekipleri, kısa döngülerde yazılım yayımlayarak çevik olmaya devam eder. İlerleme artımlı olduğundan ve sistem devamlılığı üzerindeki etkiyi azalttığından daha kısa sürüm döngüleri, planlamayı ve risk yönetimini kolaylaştırır. Sürüm döngüsünün kısaltılması, kuruluşların gelişen müşteri gereksinimlerine ve rekabet baskısına ayak uydurarak bunların üstesinden gelmesini de sağlar.
- Sürekli öğrenme: Yüksek performanslı DevOps ekipleri bir büyüme zihniyeti oluşturur. Hızlı başarısız olurlar ve öğrenmeleri süreçlerine eklerler. Sürekli olarak gelişmeye, müşteri memnuniyetini artırmaya, yenilik ve pazara uyarlanabilirliği hızlandırmaya çalışırlar.
DevOps uygulamalarını uygulama
Uygulama yaşam döngüsü boyunca DevOps uygulamalarını izleyerek (izleyen bölümlerde açıklanmıştır) DevOps'u uygularsınız. Bu yöntemlerin bazıları belirli bir aşamanın hızlandırılmasına, otomatikleştirilmesine ve iyileştirilmesine yardımcı olur. Bazıları da birden fazla aşamayı kapsar ve ekiplerin, üretkenliğin artmasına yardımcı olan sorunsuz süreçler oluşturmasına yardımcı olur.
Sürekli tümleştirme ve sürekli teslim (CI/CD)
Sürekli Tümleştirme (CI), geliştirme ekipleri tarafından kodu otomatikleştirmek, birleştirmek ve test etmek için kullanılan uygulamadır. CI, hataları geliştirme döngüsünün başlarında yakalamaya yardımcı olur ve bu da düzeltilmesi daha az maliyetli olmasını sağlar. Otomatikleştirilmiş testler, kaliteyi sağlamak için CI işleminin bir parçası olarak yürütülür. CI sistemleri yapıtlar üretir ve sık dağıtımları yönlendirmek için bunları yayın süreçlerine besler.
Sürekli Teslim (CD), kodun derlendiği, test ettiği ve bir veya daha fazla test ve üretim ortamına dağıtıldığı bir işlemdir. Birden çok ortamda dağıtım ve test etme, kaliteyi artırır. CD sistemleri altyapı ve uygulamalar dahil olmak üzere dağıtılabilir yapıtlar üretir. Otomatik sürüm işlemleri, mevcut sistemlere yeni sürümler ve düzeltmeler yayınlamak için bu yapıtları kullanır. Uyarıları izleyen ve gönderen sistemler, CD işleminin tamamına görünürlük sağlamak için sürekli olarak çalışır.
Sürüm Denetimi
Sürüm denetimi, kodun kolayca gözden geçirilip kurtarılabilmesi için düzeltmelerin ve değişiklik geçmişinin izlenmesini içeren, kodun sürümler halinde yönetilmesi yöntemidir. Bu uygulama genellikle birden çok geliştiricinin kod yazmada işbirliği yapmasına olanak tanıyan Git gibi sürüm denetim sistemleri kullanılarak uygulanır. Bu sistemler aynı dosyalarda gerçekleşen kod değişikliklerini birleştirmek, çakışmaların üstesinden gelmek ve değişiklikleri daha eski durumlarına geri almak için net bir süreç sağlar.
Temel bir DevOps yöntemi olan sürüm denetiminin kullanılması, geliştirme ekiplerinin birlikte çalışmasına, kodlama görevlerini ekip üyeleri arasında paylaştırmasına ve gerektiğinde kolay kurtarma işlemi için tüm kodu saklamasına yardımcı olur. Sürüm denetimi sürekli tümleştirme ve kod olarak altyapı gibi diğer yöntemlerde de gerekli olan bir faktördür.
Çevik yazılım geliştirme
Çevik Geliştirme, ekip işbirliğini, müşteri ve kullanıcı geri bildirimini, kısa sürüm döngüleriyle değişime yüksek düzeyde uyum sağlamayı öne çıkaran bir yazılım geliştirme yaklaşımıdır. Çevik Geliştirmeyi uygulayan ekipler müşterilere sürekli değişik ve iyileştirme sunar, onların geri bildirimlerini alır, ardından müşteri isteklerini ve gereksinimlerini öğrenerek bunlara göre düzenlemeler yapar. Çevik Geliştirme, sıralı aşamalarla tanımlanan uzun sürüm döngülerinin oluşturduğu şelale modeli gibi daha geleneksel çerçevelerden temel olarak farklıdır. Kanban ve Scrum, Çevik Geliştirme ile ilişkili iki popüler çerçevedir.
Kod olarak altyapı
Kod olarak altyapı, sistem kaynaklarını ve topolojileri ekiplerin kaynakları kodlama yapar gibi yönetmesine olanak tanıyan açıklayıcı bir şekilde tanımlar. Bu tanımlar yine kodda olduğu gibi gözden geçirilip geri döndürülebilen sürüm denetimi sistemlerinde de depolanabilir ve bunların sürümü oluşturulabilir.
Kod olarak altyapının uygulanması ekiplerin sistem kaynaklarını güvenilir, tekrarlanabilir ve denetimli bir şekilde dağıtmasına yardımcı olur. Kod olarak altyapı, dağıtımın otomatikleştirilmesine ve başta karmaşık yapıdaki büyük ortamlar için geçerli olmak üzere insan hatası riskinin azaltılmasına yardımcı olur. Ortam dağıtımına yönelik bu tekrarlanabilir ve güvenilir çözüm, ekiplerin üretim ortamıyla aynı geliştirme ve test ortamlarını kullanabilmesini sağlar. Aynı şekilde ortamların farklı veri merkezlerinde ve bulut platformlarında çoğaltılması da basitleşerek daha verimli hale gelir.
Yapılandırma yönetimi
Yapılandırma yönetimi sunucular, sanal makineler ve veritabanlarından oluşan bir sistemde kaynakların durumunun yönetilmesi anlamına gelir. Ekipler yapılandırma yönetimi araçlarını kullanarak değişiklikleri denetimli ve sistemli bir şekilde kullanıma sunar. Böylece sistem yapılandırmasının değiştirilmesiyle ilişkili riskler azaltılmış olur. Ekipler sistem durumunu takip etmek ve sistem kaynağı yapılandırmasının kendisi için tanımlanmış istenen durumdan zaman içinde sapmasına neden olan yapılandırma kaymasının önlenmesine yardımcı olmak için yapılandırma yönetimi araçlarını kullanır.
Kod olarak altyapının yanı sıra, ekiplerin karmaşık ortamları büyük ölçekte çalıştırmasına yardımcı olan sistem tanımı ve yapılandırmasını kolayca ayarlayıp otomatikleştirebilirsiniz.
Sürekli izleme
Sürekli izleme, tüm uygulama yığınının performansı ve durumu hakkında tam ve gerçek zamanlı görünürlüğe sahip olmak anlamına gelir. Bu görünürlük, uygulamayı çalıştıran temel altyapıdan daha üst düzey yazılım bileşenlerine kadar değişir. Görünürlük, telemetri ve meta verilerin toplanması ve operatör tarafından dikkat gerektiren önceden tanımlanmış koşullar için uyarıların ayarlanması yoluyla gerçekleştirilir. Telemetri, sistemin çeşitli bölümlerinden toplanan ve analiz edilip sorgulanabilecekleri bir yerde saklanan olay verilerinden ve günlüklerinden oluşur.
Yüksek performanslı DevOps ekipleri büyük miktarlarda veriden içgörü elde edebilmek için eyleme dönüştürülebilir ve anlamlı uyarılar ayarlayıp zengin telemetri verileri topladığından emin olur. Bu içgörüler ekibin, sorunları gerçek zamanlı olarak azaltmasına ve ileride gerçekleşecek geliştirme döngülerinde uygulamanın nasıl iyileştirileceğini görmesine yardımcı olur.
Planlama
Planlama aşamasında DevOps ekipleri, oluşturmayı planladıkları uygulama ve sistemlerin özelliklerini ve özelliklerini belirler, tanımlar ve açıklar. Ekipler, tek ürünlerden birden çok ürün portföyüne kadar düşük ve yüksek ayrıntı düzeylerinde görev ilerleme durumunu izler. Ekipler çeviklik ve görünürlük ile planlama yapmak için aşağıdaki DevOps uygulamalarını kullanır:
- Kapsamlar oluşturun.
- Hataları izleme.
- Scrum ile Çevik yazılım geliştirmeyi yönetin.
- Kanban panolarını kullanın.
- Panolarla ilerleme durumunu görselleştirin.
Şirketin yazılım ekiplerinde DevOps planlamasını desteklemek üzere Microsoft'un benimsediği çeşitli derslere ve uygulamalara genel bakış için bkz . Microsoft DevOps ile nasıl planlanır?
Geliştirme
Geliştirme aşaması, yazılım kodu geliştirmenin tüm yönlerini içerir. Bu aşamada DevOps ekipleri aşağıdaki görevleri yerine getirin:
- Bir geliştirme ortamı seçin.
- Kodu yazın, test edin, gözden geçirin ve tümleştirin.
- Kodu çeşitli ortamlara dağıtmak için yapıtlar halinde oluşturun.
- Kod üzerinde işbirliği yapmak ve paralel çalışmak için sürüm denetimini (genellikle Git) kullanın.
DevOps ekipleri, kalite, kararlılık ve üretkenlikten ödün vermeden hızla yenilik yapmak için:
- Yüksek verimli araçlar kullanın.
- Sıradan ve el ile gerçekleştirilen adımları otomatikleştirin.
- Otomatik test ve sürekli tümleştirme (CI) aracılığıyla küçük artışlarla yineleme yapın.
Microsoft'un DevOps'a geçişini desteklemek üzere benimsediği geliştirme uygulamalarına genel bir bakış için bkz . Microsoft DevOps ile geliştirme.
Teslim etme
Teslim, uygulamaları sürekli teslim (CD) aracılığıyla üretim ortamlarına tutarlı ve güvenilir bir şekilde dağıtma işlemidir.
Teslim aşamasında DevOps ekipleri:
- Açık el ile onay aşamalarıyla bir yayın yönetimi süreci tanımlayın.
- Uygulamaları aşamalar arasında müşterilere son sürüme kadar taşımak için otomatik geçitler ayarlayın.
- Ölçeklenebilir, yinelenebilir, denetlenebilir ve iyi test edilmiş hale getirmek için teslim işlemlerini otomatikleştirin.
Teslim, teslim ortamının temel altyapısını dağıtmayı ve yapılandırmayı da içerir. DevOps ekipleri, tam olarak yönetilen altyapı ortamları sunmak için kod olarak altyapı (IaC), kapsayıcılar ve mikro hizmetler gibi teknolojileri kullanır.
Kasa dağıtım uygulamaları sorunları müşteri deneyimini etkilemeden önce belirleyebilir. Bu uygulamalar DevOps ekiplerinin kolayca, güvenle ve gönül rahatlığıyla sık sık teslim etmelerine yardımcı olur.
Microsoft'un verimli teslim sistemleri sağlamak için geliştirdiği temel DevOps ilkeleri ve süreçleri, Microsoft'un DevOps ile yazılım sunma şekli bölümünde açıklanmıştır.
Operations
İşlem aşaması, hibrit veya Azure gibi genel bulutlar dahil olmak üzere üretim ortamlarında uygulamaların bakımını, izlenmesini ve sorun gidermeyi içerir. DevOps ekipleri sistem güvenilirliğini, yüksek kullanılabilirliği, güçlü güvenliği ve sıfır kapalı kalma süresini hedefler.
Otomatik teslim ve güvenli dağıtım uygulamaları, ekiplerin ortaya çıkan sorunları hızla belirlemelerine ve azaltmalarına yardımcı olur. Dikkatli olmak için zengin telemetri, eyleme dönüştürülebilir uyarılar ve uygulamalar ile temel alınan sistemler üzerinde tam görünürlük gerekir.
Microsoft'un karmaşık çevrimiçi platformları çalıştırmak için kullandığı uygulamalar, Microsoft'un DevOps ile güvenilir sistemleri nasıl çalıştırdığı konusunda açıklanmıştır.
Sonraki adımlar
- DevOps ile verimli iş yükleri planlama
- DevOps ile modern yazılım geliştirme
- DevOps ile kaliteli hizmetler sunma
- DevOps ile güvenilir sistemler çalıştırma
Diğer kaynaklar
- Azure'da DevOps çözümleri
- Microsoft'ta DevOps yolculuğu
- Azure ile DevOps yapmaya başlama
- DevOps'ta Güvenlik (DevSecOps)
- Platform mühendisliği nedir?
Eğitim ve Sertifikalar
- Azure DevOps ile çalışmaya başlama
- DevOps Dojo'yu tanıtın: İşletmenizi destekleyen verimlilikler oluşturma
- AZ-400: DevOps dönüşüm yolculuğuna başlama
- İletişimi ve işbirliğini kolaylaştırma
- AZ-400 Sınavı: Microsoft DevOps Çözümlerini Tasarlama ve Uygulama
- AZ-400: Uyumluluk için güvenlik uygulama ve kod temellerini doğrulama