DevOps, kurumların ürünleri geleneksel yazılım geliştirme ve altyapı yönetim süreçlerini kullanan kurumlara göre daha hızlı geliştirmesini ve iyileştirmesini sağlayarak, uygulama ve hizmetleri yüksek hızda sunma becerisini artıran kültürel felsefelerin, yöntemlerin ve araçların birleşimidir. Bu hız, kurumların müşterilerine daha iyi hizmet sunmasına ve piyasada daha etkili bir şekilde rekabet etmesine imkan tanır.

DevOps Nedir?

Bir DevOps modelinde geliştirme ve operasyon ekipleri artık birbirinden kopuk değildir. Bazen bu iki ekip tek bir ekip haline getirilir ve ekipteki mühendisler geliştirme ve testten dağıtım ve operasyona kadar bir uygulamanın yaşam döngüsünün tamamında çalışırken tek bir işlevle kısıtlı olmayan bir dizi beceri edinir.

Bazı DevOps modellerinde kalite güvencesi ve güvenlik ekipleri de uygulamanın yaşam döngüsü boyunca geliştirme ve operasyon ekibiyle daha yakın bir entegrasyon içinde olur. Bir DevOps ekibindeki herkes güvenliğe odaklanıyorsa buna bazen DevSecOps denir.

Bu ekipler, daha önce manuel olarak gerçekleştirilen ve uzun zaman alan süreçleri otomatikleştiren uygulamalar kullanır. Uygulamaları hızlı ve güvenilir bir şekilde çalıştırıp geliştirmelerine yardımcı olan bir teknoloji yığını ve araçlar kullanırlar. Bu araçlar ayrıca, mühendislerin normalde diğer ekiplerden yardım almasını gerektirecek görevleri (kod dağıtma veya altyapı tedarik etme gibi) bağımsız olarak yapmasına yardımcı olarak ekiplerin hızını daha da artırır.

Yüksek bir hızda hareket ederek müşterileriniz için daha hızlı yenilik yapabilir, değişen pazarlara daha iyi uyum sağlayabilir ve iş sonuçlarına ulaşmada daha verimli hale gelebilirsiniz. DevOps modeli, geliştiricilerinizin ve operasyon ekiplerinizin bu sonuçları elde etmesine imkan tanır. Örneğin mikro hizmetler ve sürekli teslim, ekiplerin hizmetleri sahiplenmesine ve ilgili güncellemeleri daha hızlı sağlamasına imkan tanır.

Yenilikler yapıp ürününüzü daha hızlı geliştirebilmek için yayın sıklığını ve hızını artırın. Yeni özellikleri ve hata düzeltmelerini ne kadar hızlı yayınlayabilirseniz, müşterilerinizin ihtiyaçlarına o kadar hızlı yanıt verebilir ve rakipleriniz karşısında avantaj sağlayabilirsiniz. Sürekli entegrasyon ve sürekli teslim, derlemeden dağıtıma kadar yazılım yayınlama sürecinin tamamını otomatikleştiren uygulamalardır.

Uygulama güncellemelerinin ve altyapı değişikliklerinin kalitesinden emin olarak hem daha hızlı ve güvenilir şekilde teslim gerçekleştirebilir hem de son kullanıcı deneyiminin olumlu kalmasını sağlayabilirsiniz. Sürekli entegrasyon ve sürekli teslim gibi uygulamalar aracılığıyla her değişikliğin işlevsel ve güvenli olup olmadığını test edin. İzleme ve günlüğe kaydetme uygulamaları, performansı gerçek zamanlı olarak takip etmenize yardımcı olur.

Altyapınızı ve geliştirme süreçlerinizi gerekli ölçekte çalıştırın ve yönetin. Otomasyon ve tutarlılık, karmaşık ya da değişen sistemleri verimli bir şekilde ve daha az riskle yönetmenize yardımcı olur. Örneğin kod olarak altyapı modelini kullanmak geliştirme, test ve üretim ortamlarınızı daha verimli ve tekrarlanabilir şekilde yönetmenize yardımcı olur.

Sahiplenme ve sorumluluk gibi değerleri vurgulayan bir DevOps kültür modeli altında daha etkili ekipler kurun. Geliştiriciler ve operasyon ekipleri daha yakın bir şekilde iş birliği yapar, birçok sorumluluğu ortak olarak üstlenir ve iş akışlarını birleştirir. Bu sayede verimsizlikler azalır ve zaman tasarrufu sağlanır (örneğin geliştiriciler ile operasyon ekibi arasındaki devir sürelerinin kısalması ve kodun çalışacağı ortam göz önünde bulundurularak yazılması).

Denetim ve uygunluktan ödün vermeden daha hızlı hareket edin. Otomatik uygunluk politikaları, ayrıntılı denetimler ve yapılandırma yönetim teknikleri sayesinde güvenlikten taviz vermeden bir DevOps modelini benimseyebilirsiniz. Örneğin, kod olarak altyapı ve kod olarak politika ile, uygunluğu gerekli ölçekte tanımlayabilir ve ardından izleyebilirsiniz.

Yazılımlar ve internet, dünyada ve alışverişten eğlenceye ve bankacılığa kadar tüm sektörlerde dönüşüm yaratmıştır. Bir işletme için destek işlevinin çok daha ötesine geçen yazılımlar, artık her işletmenin olmazsa olmaz bileşenleri haline gelmiştir. Şirketler müşterileriyle çevrimiçi hizmetler veya uygulamalar olarak sunulan ve her tür cihazda kullanılabilen yazılımlar aracılığıyla etkileşim kurmaktadır. Değer zincirinin lojistik, iletişim ve operasyon gibi her bir halkasında değişim yaratarak operasyonel verimliliği artırmak için de yazılımları kullanırlar. Fiziksel ürünler üreten şirketlerin 20. yüzyıl boyunca tasarım, üretim ve teslimat süreçlerini otomasyon aracılığıyla dönüştürmesine benzer şekilde, günümüz dünyasındaki şirketlerin de yazılımları geliştirme ve teslim etme süreçlerini dönüştürmesi gereklidir.

DevOps'a geçiş için hem kültür hem de anlayışın değişmesi gereklidir. DevOps, en basit ifadeyle, geleneksel olarak birbirinden kopuk çalışan geliştirme ve operasyon ekipleri arasındaki engellerin kaldırılmasını amaçlar. Bazı kurumlarda geliştirme ve operasyon ekipleri ayrı dahi olmayabilir ve her iki işi de mühendisler yapıyor olabilir. DevOps modelinde, hem geliştiricilerin üretkenliğinin hem de operasyonların güvenilirliğinin optimize edilmesi için iki ekip birlikte çalışır. Sık iletişim kurmak, verimliliği artırmak ve müşterilere sağladıkları hizmetlerin kalitesini yükseltmek için çaba gösterirler. Son kullanıcının ihtiyaçlarını ve bu ihtiyaçların karşılanmasına nasıl katkıda bulunacaklarını düşünerek ve bunu yaparken de çoğunlukla geleneksel olarak tanımlanan rollerinin ya da unvanlarının ötesine geçerek hizmetlerini sahiplenirler. Kalite güvencesi ve güvenlik ekiplerinin de bu ekiplere yakından entegre olması sağlanabilir. DevOps modelini kullanan kurumlarda, kurumsal yapılarından bağımsız olarak, geliştirme ve altyapı yaşam döngüsünün tamamını kendi sorumluluğu kapsamında gören ekipler bulunur.

Kurumların yazılım geliştirme ve altyapı yönetimi süreçlerini otomatikleştirme ve modernleştirme yoluyla daha hızlı yenilik yapmasına yardımcı olan birkaç önemli uygulama vardır. Bu uygulamaların birçoğu, doğru araçların kullanılmasıyla hayata geçirilebilir.

En temel uygulamalardan biri, çok sık ancak küçük güncellemeler yapmaktır. Kurumların müşterileri için daha hızlı yenilik yapmasının yolu budur. Geleneksel yayın modellerinde seyrek olarak gerçekleştirilen güncellemelerle karşılaştırıldığında bu güncellemeler, yapıları gereği genellikle daha küçük değişikliklerden oluşur. Güncellemelerin sık ve küçük olması, her dağıtımın daha az riskli olmasını sağlar. Ekipler hataya yol açan en son dağıtımı belirleyebildiğinden, bu güncellemeler ekiplerin hataları daha hızlı gidermesine yardımcı olur. Güncellemelerin temposu ve boyutu değişiklik gösterse de, DevOps modelini kullanan kurumlar geleneksel yazılım geliştirme modellerini kullanan kurumlardan çok daha sık güncelleme dağıtır.

Kurumlar, uygulamalarını daha esnek hale getirmek ve daha hızlı yenilik yapabilmek için bir mikro hizmet mimarisi de kullanabilir. Mikro hizmet mimarisi büyük ve karmaşık sistemleri ayrıştırarak basit ve bağımsız projelere dönüştürür. Uygulamalar, birçok tekil bileşene (hizmet) ayrıştırılırken her bir hizmetin kapsamı tek bir amacı veya işlevi yerine getirecek şekilde belirlenir ve ayrıca uygulamadaki diğer hizmetlerden ve bir bütün olarak uygulamadan bağımsız bir şekilde çalıştırılır. Bu mimari, uygulamaların güncellenmesine ilişkin koordinasyon yükünü hafifletir ve her hizmetin, hizmeti sahiplenecek küçük ve çevik ekiplere atanması sayesinde kurumlar daha hızlı hareket edebilir.

Ancak, mikro hizmetler ile yayın sıklığındaki artış birlikte ele alındığında, dağıtım sayısı önemli ölçüde artar ve bu durum operasyonel zorluklara yol açabilir. Bu noktada, sürekli entegrasyon ve sürekli teslim gibi DevOps uygulamaları, bu sorunları çözmenin yanı sıra kurumların güvenli ve güvenilir bir şekilde teslim gerçekleştirmesini mümkün kılar. Kod olarak altyapı ve yapılandırma yönetimi gibi altyapı otomasyon uygulamaları, sık değişiklikler karşısında işlem kaynaklarının esnek hareket etmesine ve hızla uyum sağlamasına yardımcı olur. Ayrıca, izleme ve günlük kaydı kullanımı, mühendislerin uygulama ve altyapı performansını izleyerek sorunlar karşısında daha hızlı yanıt vermesine yardımcı olur.

Bu uygulamalar bir araya geldiğinde kurumların müşterilerine daha hızlı ve daha güvenilir güncellemeler sunmasına yardım eder. Aşağıda, önemli DevOps uygulamalarına genel bir bakış sağlanmıştır.


En iyi DevOps uygulamaları şunlardır: 

Bu uygulamaların her biriyle ilgili daha fazla bilgiyi aşağıda bulabilirsiniz.
Sürekli Entegrasyon

Sürekli entegrasyon, geliştiricilerin kod değişikliklerini düzenli aralıklarla merkezi bir depoda birleştirdiği ve ardından otomatik derleme ve test işlemlerinin gerçekleştirildiği bir yazılım geliştirme uygulamasıdır. Sürekli entegrasyonun ana hedefleri arasında hataları daha hızlı tespit edip gidermek, yazılım kalitesini geliştirmek ve yeni yazılım güncellemelerinin doğrulanması ve yayınlanması için gereken süreyi kısaltmak bulunur.

Sürekli entegrasyon hakkında daha fazla bilgi edinin »


Sürekli Teslim

Sürekli teslim, kod değişikliklerinin otomatik olarak oluşturulduğu, test edildiği ve üretim ortamına yayınlanmaya hazırlandığı bir yazılım geliştirme uygulamasıdır. Derleme aşamasından sonra tüm kod değişikliklerini bir test ve/veya üretim ortamına dağıtarak sürekli entegrasyonun kapsamını genişletir. Sürekli teslim uygulaması doğru şekilde hayata geçirildiğinde, geliştiricilerin elinde her zaman standart bir test sürecinden başarıyla geçmiş, dağıtıma hazır bir derleme yapıtı olur.

Sürekli teslim ve AWS CodePipeline hakkında daha fazla bilgi edinin »


Mikro Hizmetler

Mikro hizmet mimarisi, tek bir uygulamanın bir dizi küçük hizmet şeklinde oluşturulduğu bir tasarım yaklaşımıdır. Her hizmet kendi süreci içinde çalışır ve diğer hizmetlerle, basit bir mekanizma kullanan iyi tanımlanmış bir arabirim üzerinden iletişim kurar (genellikle HTTP tabanlı bir uygulama programlama arabirimi (API) kullanılır). Mikro hizmetler, işletme yetkinliklerine göre oluşturulur ve her hizmetin kapsamı tek bir amaçla sınırlıdır. Çeşitli çerçeveleri veya programlama dillerini kullanarak mikro hizmetler yazabilir ve bunları bağımsız olarak, tek bir hizmet şeklinde veya bir hizmet grubu biçiminde dağıtabilirsiniz.

Amazon Container Service (Amazon ECS) hakkında daha fazla bilgi edinin »

AWS Lambda hakkında daha fazla bilgi edinin »


Kod Olarak Altyapı

Kod olarak altyapı, altyapının sürüm denetimi ve sürekli entegrasyon gibi kod ve yazılım geliştirme teknikleri kullanılarak tedarik edildiği ve yönetildiği bir uygulamadır. Kaynakların manuel olarak ayarlanıp yapılandırılması ihtiyacını ortadan kaldıran API destekli bulut modeli, geliştiricilerin ve sistem yöneticilerinin altyapı ile programlama yoluyla ve gerekli ölçekte etkileşim kurmasına imkan tanır. Bu sayede mühendisler, kod tabanlı araçlar kullanarak altyapıyla arabirim bağlantısı kurabilir ve altyapıyı, uygulama kodu için kullandıkları yaklaşıma benzer bir yaklaşımla ele alabilir. Altyapı ve sunucular kodla tanımlandığı için, standartlaştırılmış modeller kullanılarak hızla dağıtılabilir, en son düzeltme ekleri ve sürümlerle güncellenebilir veya tekrarlanabilir şekillerde çoğaltılabilir.

AWS CloudFormation ile altyapınızı kod olarak yönetmeyi öğrenin »

Geliştiriciler ve sistem yöneticileri kod kullanarak işletim sistemi ve konak sunucu yapılandırmasını, operasyonel görevleri ve daha fazlasını otomatikleştirebilir. Kod kullanımı, yapılandırma değişikliklerinin tekrarlanabilir ve standart olmasını sağlar. Geliştiricilerin ve sistem yöneticilerinin işletim sistemlerini, sistem uygulamalarını veya sunucu yazılımlarını manuel olarak yapılandırma yükünden kurtulmasını sağlar.

Amazon EC2 Systems Manager ile hem Amazon EC2'deki hem de şirket içindeki sistemleri nasıl yapılandırabileceğinizi ve yönetebileceğinizi öğrenin »

AWS OpsWorks ile yapılandırma yönetimini kullanmayı öğrenin »

Altyapının ve altyapı yapılandırmasının buluta uygun olarak kodlanması sayesinde kurumlar, uygunluğu dinamik olarak ve gerekli ölçekte izleyip uygulayabilir. Kodla tanımlanan altyapı bu sayede otomatik bir şekilde izlenebilir, doğrulanabilir ve yeniden yapılandırılabilir. Bu sayede, kurumların kaynaklardaki değişiklikleri yönetmesi ve güvenlik önlemlerinin (örneğin bilgi güvenliği veya PCI-DSS ya da HIPAA'ya uygunluk) dağıtılmış bir biçimde ve doğru olarak uygulandığından emin olması kolaylaşır. Uygunluk gerekliliklerini karşılamayan kaynaklar, otomatik olarak daha kapsamlı incelenmek üzere işaretlenebileceği ve hatta otomatik olarak uygunluk gereklilikleriyle uyumlu hale getirilebileceği için kurum içindeki ekipler daha yüksek bir hızda hareket edebilir.

AWS Config ve Config Rules ile altyapınız için uygunluğu nasıl izleyip uygulayabileceğinizi öğrenin » 


İzleme ve Günlük Kaydı

Kurumlar, uygulama ve altyapı performansının, ürünlerindeki son kullanıcı deneyimini nasıl etkilediğini görmek için ölçümleri ve günlükleri izler. Kurumlar, uygulamaların ve altyapının ürettiği veri ve günlükleri alıp kategorilendirdikten sonra analiz ederek değişikliklerin veya güncellemelerin kullanıcıları nasıl etkilediğini anlamanın yanı sıra sorunların veya beklenmedik değişikliklerin temel nedenlerine yönelik öngörüler sağlar. Hizmetlerin 7/24 erişilebilir olması gereksinimine ek olarak uygulama ve altyapı güncelleme sıklığının artması nedeniyle, aktif izlemenin önemi gittikçe artmaktadır. Uyarıların oluşturulması veya bu verilerin gerçek zamanlı olarak analiz edilmesi de, kurumların hizmetlerini daha proaktif olarak izlemesine yardımcı olur.

Amazon CloudWatch'u kullanarak altyapı ölçümlerinizi ve günlüklerinizi nasıl izleyebileceğinizi öğrenin »

AWS CloudTrail'ı kullanarak AWS API çağrılarını nasıl kaydedip günlüğe aktarabileceğinizi öğrenin »


İletişim ve İş Birliği

DevOps'un ana kültürel özelliklerinden biri, bir kurumdaki iletişim ve iş birliğinin artmasıdır. DevOps araçlarının kullanılması ve yazılım teslim sürecinin otomatikleştirilmesi, geliştirme ve operasyon ekiplerinin iş akışlarını ve sorumluluklarını fiziksel olarak bir araya getirerek bir iş birliği kültürü oluşmasını sağlar. Bu kültürden güç alan ekipler sohbet uygulamaları, sorun veya proje izleme sistemleri ve wiki sayfaları aracılığıyla bilgi paylaşımına ve iletişimi kolaylaştırmaya ilişkin güçlü kültürel normlar belirler. Geliştiriciler, operasyon ekipleri, hatta pazarlama ya da satış gibi diğer ekipler arasındaki iletişimin hızlanmasına yardımcı olan bu kültür, kurumdaki tüm birimlerin hedefler ve projeler üzerinde birlikte daha uyumlu çalışmasını sağlar.

DevOps modeli, ekiplerin müşterileri için hızlı ve güvenilir bir şekilde dağıtım ve yenilik yapmasına yardımcı olan etkili araçlara dayanır. Manuel olarak gerçekleştirilen görevleri otomatikleştiren bu araçlar, ekiplerin karmaşık ortamları gerekli ölçekte yönetmesine ve mühendislerin DevOps'un sağladığı yüksek hızı denetim altında tutmasına imkan tanır. AWS, DevOps için tasarlanmış ve öncelikli olarak AWS Cloud ile kullanılmak üzere geliştirilmiş hizmetler sunar. Bu hizmetler, yukarıda açıklanan DevOps uygulamalarını kullanmanıza yardımcı olur.

AWS DevOps hizmetleri hakkında bilgi edinin »

AWS çözüm ortakları tarafından sunulan çözümler hakkında bilgi edinin »