DevOps nedir?
DevOps’un müşterilere daha hızlı bir şekilde daha iyi ürünler sunmak için insanları, süreçleri ve teknolojiyi nasıl bir araya getirdiğini öğrenin.
DevOps tanımı
Geliştirme (Dev) ve operasyonların (Ops) birleşimi olan DevOps müşterilere sürekli olarak değer sunmak için bir araya gelen kişiler, süreçler ve teknolojiler bütünüdür.
DevOps’un ekipler için anlamı nedir? DevOps, daha iyi ve daha güvenilir ürünler üretmek amacıyla koordinasyon ve işbirliği gerçekleştirmek için, eskiden birbirinden ayrı düşünülen geliştirme, BT operasyonu, kalite mühendisliği ve güvenlik rollerine olanak tanır. DevOps yöntemlerinin ve araçlarının yanı sıra bir DevOps kültürünü benimseyen ekipler müşteri gereksinimlerine daha iyi yanıt verme becerisi kazanıyor, oluşturdukları uygulamalara olan güvenlerini artırabiliyor ve iş hedeflerine daha hızlı bir şekilde ulaşabiliyor.
DevOps’un avantajları
DevOps kültürünü, yöntemlerini ve araçlarını benimseyen ekipler performanslarını artırarak, daha fazla müşteri memnuniyeti için daha iyi ürünleri daha hızlı bir şekilde üretmeye başlıyor. İşbirliğinin ve üretkenliğin bu şekilde artması, şunun gibi iş hedeflerinin gerçekleştirilmesinde kritik rol oynuyor:
Pazarlama süresini kısaltma
Pazara ve rekabete ayak uydurma
Sistem devamlılığını ve güvenilirliğini sağlama
Ortalama kurtarma süresini iyileştirme
DevOps ve uygulama yaşam döngüsü
DevOps, planlama, geliştirme, teslim ve çalıştırma aşamaları boyunca uygulama yaşam döngüsü üzerinde etki sahibidir. Her bir aşama bir diğeriyle bağlantılıdır ve aşamalar role özel değildir. Gerçek bir DevOps kültüründe her rolün, aşamaların her biriyle belirli bir ölçüde ilişkisi vardır.
Plan
Planlama aşamasında DevOps ekipleri, oluşturdukları uygulamaların ve sistemlerin özelliklerini tasarlar, tanımlar ve açıklar. Tek ürünlü görevlerden birden fazla üründen oluşan portföyleri kapsayan görevlere kadar ilerlemeyi düşük ve yüksek ayrıntı düzeylerinde izler. Kapsam oluşturma, hataları izleme, Scrum ile çevik yazılım geliştirme sürecini yönetme, Kanban panolarını kullanma ve ilerlemeyi panolarla görselleştirme DevOps ekiplerinin çeviklik ve görünürlük ile planlama yapmak için kullandığı yöntemlerden bazılarıdır.
Geliştirme
Geliştirme aşaması, kodun ekip üyeleri tarafından yazılması, test edilmesi, gözden geçirilmesi ve tümleştirilmesini içerecek şekilde, kodlamanın tüm yönlerini ve bu kodun çeşitli ortamlarda dağıtılabilen derleme yapıtlarının oluşturulmasını içerir. DevOps ekipleri kaliteden, devamlılıktan ve üretkenlikten ödün vermeden hızlı bir şekilde yenilik gerçekleştirmek ister. Bunu yapmak için son derece üretken araçları kullanır, el ile gerçekleştirilen günlük adımları otomatikleştirir, otomatikleştirilmiş test ve sürekli tümleştirme yoluyla küçük artımlar halinde yineleme yapar.
Teslim etme
Teslim, uygulamaları üretim ortamında tutarlı ve güvenilir bir şekilde dağıtma sürecidir. Teslim aşaması, tam anlamıyla yönetilen ve bu ortamları oluşturan temel altyapının dağıtılmasını ve yapılandırılmasını da kapsar.
Teslim aşamasında ekipler el ile onaylamaya yönelik net aşamalarla bir sürüm yönetimi işlemi tanımlar. Uygulamalar müşterilerin kullanımına sunulana kadar bunları aşamalar arasında taşıyan otomatik geçitler de ayarlarlar. Bu işlemlerin otomatikleştirilmesi bunları ölçeklenebilir, tekrarlanabilir ve denetimli hale getirir. Böylece, DevOps’u uygulayan ekipler kendilerine güvenerek kolayca ve gönül rahatlığıyla sık sık üretkenlik sergileyebilir.
İşletme
Çalıştırma aşaması, üretim ortamlarında uygulamaların bakımını yapma, uygulamaları izleme ve uygulama sorunlarını giderme süreçlerini içerir. DevOps yöntemlerini benimsenmesiyle ekipler, sitem güvenilirliği ve yüksek kullanılabilirlik sağlamak için çalışır, güvenlik ve idareyi güçlendirirken sıfır kapalı kalma süresi hedefler. DevOps ekipleri, sorunları müşteri deneyimini etkilemeden önce tanımlamak ve oluştukları anda bu sorunları hızla azaltmayı amaçlar. Bu özeni sürdürmek zengin telemetri, eyleme dönüştürülebilir uyarı sistemi ve uygulamalar ile temel sistem açısından tam görünürlük gerektirir.
DevOps kültürü
DevOps yöntemlerini benimsemek, süreçleri teknolojiyle otomatikleştirip iyileştirse de her şey kurum içi kültür ve bu kültürün bir parçası olan insanlarla başlıyor. Bir DevOps kültürünün geliştirilmesi, insanların çalışma ve işbirliği yapma biçiminde kapsamlı değişiklikler gerektirir. Ancak kurumlar kendilerini bir DevOps kültürüne adadığında yüksek performanslı ekiplerin gelişmesi için elverişli bir ortam oluşturabilir.
İşbirliği, görünürlük ve uyum
İyi bir DevOps kültürünün göstergelerinden biri, ekipler arasında görünürlükle başlayan işbirliğidir. Geliştirme ve BT operasyonları gibi farklı ekipler DevOps işlemlerini, önceliklerini ve endişelerini birbirleriyle paylaşmalıdır. Bu ekipler birlikte çalışma planları yapmanın yanı sıra işle ilgili hedefleri ve başarı ölçüleri konusunda da birbirleriyle uyum içinde hareket etmelidir.
Kapsam ve sorumluluk ile ilgili değişiklikler
Ekipler birbiriyle uyum sağladıkça yalnızca rollerine özgü aşamalar için değil ek yaşam döngüsü aşamaları için de sorumluluk alır ve bunlara katılım gösterirler. Ö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, yazılımları kısa döngülerde kullanıma sunarak çevik kalır. İ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ı, kurumların gelişen müşteri gereksinimlerine ve rekabet baskısına ayak uydurarak bunların üstesinden gelmesini de sağlar.
Sürekli öğrenim
Yüksek performanslı DevOps ekipleri bir büyüme mantığı inşa eder. Hızlı başarısız olurlar ve öğrendiklerini süreçlerine dahil ederek sürekli olarak iyileşir, müşteri memnuniyetini artırır, yeniliği ve pazar uyarlanabilirliğini hızlandırırlar. DevOps süregelen bir yolculuk olduğundan büyümeye her zaman yer vardır.
DevOps yöntemleri
Bir DevOps kültürü oluşturmanın yanı sıra ekipler uygulama yaşam döngüsü genelinde belirli yöntemleri uygulayarak DevOps’a hayat katar. 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)
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ı ile birlikte uygulanan sistem tanımı ve yapılandırması, kolayca şablon haline getirilip otomatikleştirildiğinden ekiplerin karmaşık ortamları uygun ölçekte yönetmesine yardımcı olur.
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 yöntem genellikle birden fazla geliştiricinin kod yazarken işbirliği yapmasına olanak tanıyan Git gibi sürüm denetimi 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ı ile birlikte uygulanan sistem tanımı ve yapılandırması, kolayca şablon haline getirilip otomatikleştirildiğinden ekiplerin karmaşık ortamları uygun ölçekte yönetmesine yardımcı olur.
Sürekli izleme
Sürekli izleme, uygulamayı çalıştıran temel altyapıdan daha yüksek düzeydeki yazılım bileşenlerine kadar tüm uygulama yığınının performansının ve durumunun eksiksiz ve gerçek zamanlı görünürlüğü anlamına gelir. Bu görünürlük, telemetri verilerinin ve meta verilerin toplanmasının yanı sıra bir operatörün dikkatini çekmeye yönelik olarak önceden tanımlanmış koşul uyarılarının ayarlanmasından oluşur. 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.
DevOps araçları
Ekipler kurumlarında bir DevOps kültürü oluşturmalarına yardımcı olabilecek çok sayıda DevOps aracına sahiptir. Çoğu ekip, uygulama yaşam döngüsündeki her aşama için gereksinimlerine uyan özel araç zincirleri oluşturmak için çeşitli araçlardan yararlanır. Belirli bir aracın veya teknolojinin benimsenmesi DevOps’un benimsenme süreciyle aynı olmasa da DevOps kültürü mevcut olduğunda ve süreçler tanımlandığında insanlar uygun araçları seçerek DevOps yöntemlerini uygulayabilir ve basitleştirebilir. DevOps’u uygulamaya geçirmek için araçları edinin:
DevOps ve bulut
Bulutun benimsenmesi, ekiplerin uygulama oluşturma, dağıtma ve çalıştırma biçimini büyük ölçüde dönüştürdü. DevOps’un benimsenmesiyle ekipler artık yöntemlerini iyileştirme ve müşterilerine daha iyi hizmet sunma konusunda daha fazla fırsat sahibi oluyor.
Bulut çevikliği
Çok bölgeli bulut ortamlarını sınırsız sayıda kaynak kullanarak hızlı bir şekilde sağlama ve yapılandırma olanağı sayesinde ekipler uygulamalarını dağıtma konusunda çeviklik kazanıyor. Fiziksel sunucu satın alma, yapılandırma ve bunlara bakım yapma zorunluluğunun ortadan kalkmasıyla ekipler artık karmaşık bulut ortamlarını dakikalar içinde oluşturabiliyor, bu bulut ortamlarına artık ihtiyaç duyulmadığında bunları kapatabiliyor.
Kubernetes
Kapsayıcı teknolojisini daha fazla uygulama kullandıkça Kubernetes, kapsayıcıları uygun ölçekte düzenlemeye yönelik bir sektör çözümü haline geliyor. Kapsayıcıları CI/CD işlem hatlarıyla oluşturma ve dağıtmanın yanı sıra bu kapsayıcıları üretimde izleme süreçlerinin otomatikleştirilmesi Kubernetes çağının önemli yöntemleri haline geliyor.
Sunucusuz bilişim
Altyapıyı yönetme yükünün büyük oranda bulut sağlayıcısına devredilmesiyle ekipler temel altyapı yerine uygulamalarına odaklanabiliyor. Sunucusuz bilgi işlem, sunucuları yapılandırma ve bunlara bakım yapma zorunluluğu olmadan uygulamaları çalıştırma olanağı sunuyor. Bazı seçenekler dağıtım ve operasyonlarla ilgili karmaşıklığı ve riski azaltıyor.
DevOps yolculuğunuza başlayın
Çeşitli yöntemlerin ve çözümlerin uygulaması söz konusu olduğundan DevOps başlangıçta karmaşık görünebilir. Bu işin püf noktası küçük ölçekte başlamak ve başkalarının birikiminden yararlanmaktır.
Sık sorulan sorular
-
DevOps bir kurumdaki farklı rollerde uygulanır ve bu rollerin birçoğunun birbiriyle yakın şekilde işbirliği içinde olmasını gerektirir. Çoğu durumda DevOps rolleri arasında geliştirme, BT, operasyon, güvenlik ve destek yer alır.
-
DevOps tek bir rol ile sınırlı değildir. Uygulama yaşam döngüsü aşamalarında rol oynayan herkes DevOps kültürünü benimsemelidir. Ancak bazı kurumlarda birkaç kişinin veya ekibin tek odağı otomasyon sağlamak, yöntemler tanımlamak ve CI/CD işlem hatlarını uygulamaktır. Bazen bu roller için kullanılan resmi unvan DevOps mühendisi veya DevOps uzmanı olabilir.
-
Büyük bir kurumda DevOps’un benimsenmesi son derece zorlu olabilir. Büyük bir kurumun kültürünü değiştirmenin yanı sıra süreçleri ve araçları standartlaştırmak da sabır ve kalıcılık gerektirir. Çoğu büyük kurumda DevOps yöntemlerini erken benimseyenler mevcuttur. Bu yöntemler olgunluğa ulaşıp olumlu sonuçlar getirdikçe diğer ekipler de DevOps yolculuklarına başlayarak sürece dahil olur.
Microsoft ekiplerinin DevOps kültürünü nasıl benimsediğini öğrenin.
-
DevOps’un gerçek anlamı müşterilere sürekli değer sunmaktır. DevOps’u benimsemenin sonuçları iş hedefleriyle bağlantılı olarak ölçülebilir. DevOps ekipleri bu hedefler çerçevesinde uyum içinde çalışarak kısa sürüm döngüleri içinde bunlara ulaşır. Bu döngüler, müşteri geri bildirimleriyle pazara çevik bir şekilde yanıt verilmesine ve sürekli öğrenmeye olanak sağlar.
-
DevOps ve Çevik bir ürünün, lansmanın veya sürümün oluşturulmasına yönelik modern yazılım geliştirme çerçeveleridir. DevOps, yazılımın geliştirilmesi ve bakımıyla ilgili olan tüm roller arasında işbirliğine olanak tanıyan bir kültürdür. Çevik geliştirme, üretkenliği koruyup değişen ihtiyaçların ortak gerçekliği ile yazılım sürümlerinin çıkarılmasına olanak tanıyan bir geliştirme yöntemidir. DevOps ve Çevik birbirini dışlamaz, genellikle birlikte uygulanır.
-
Sürekli tümleştirme, sürekli teslim ve sürekli dağıtım yöntemlerinin yanı sıra yazılım sunma aşamalarını otomatikleştiren yöntemler vardır.