DevOps

                                
                          


1. DevOps tanımı     

DevOps, bir felsefe, bir kültürel yaklaşımdır. Yazılımcılar (dev) ve sistem yöneticileri (ops) arası etkili iletişimi teşvik eder. DevOps, tasarım, geliştirme, test ve yüklemeden oluşan yazılım yaşam döngüsünde ve daha sonrasındaki destek aşamasında da ortaklaşa çalışmaları için gerekli faaliyetlerin bütününü temsil eder. DevOps, yazılımcıların (dev) kendi sistemlerinin çalışması için kullandığı tekniklerin, sistem yöneticileri (ops) tarafından da kullanılmasıdır. Bu araçlar, kaynak kodu kontrolünden (source code control) teste, oradan Agile geliştirme süreçlerine (Agile development processes) kadar uzanır. DevOps bir IT ürününün üretilme ve ürünün hayatını sağlıklı bir şekilde sürdürmesi için bütün paydaşların optimum verimle birlikte efektif çalışabildiği felsefik köklere de sahip olan bir frameworktür. 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.

1.1. DevOps Nedir, Ne Değildir?

  • Hedef değil yolculuk
  • DevOps bir araç veya yazılım değildir.
  • DevOps bir anda organizasyona uygulanmaz, her organizasyona uygun adımların belirlenmesi gereklidir.
  • DevOps bir kişiye verilen bir sorumluluk değildir, tüm takımların benimsemesi gereken bir yaklaşımdır.

2. DevOps yaşam döngüsü


DevOps, geliştirme (development) ve işlemler (operations) arasında agile bir ilişki tanımlar. Ürünün başlangıcından son aşamasına kadar geliştirme ekibi ve operasyon mühendisleri tarafından uygulanan süreçtir. DevOps'un yaşam döngüsü aşamalarını anlamadan DevOps'u anlamak tam değildir. Sürekli DevOps yaşam döngüsü yedi aşama içerir. Bu aşamalar: 


Continuous Development (Sürekli Gelişim)
Continuous Integration (Sürekli Entegrasyon)
Continuous Testing (Sürekli Test)
Continuous Monitoring (Sürekli Denetleme)
Continuous Feedback (Sürekli Geribildirim)
Continuous Deployment (Sürekli Dağıtım)
Continuous Operations (Sürekli İşlemler)

DevOps yaşam döngüsünün doğru uygulanmasıyla çok şey elde edilebilir, bu da uygulamaların üretimini daha etkili ve güvenli hale getirir. Gerçek şu ki DevOps, büyük küresel işletmeler için maksimum operasyonel verimlilik sağlayan üretim yaşam döngülerinin geleceğidir.

Sürekli Gelişim: Bu, yazılımın ‘planlama‘ ve ‘kodlamasını’ içeren aşamadır. Projenin vizyonuna planlama aşamasında karar verilir ve geliştiriciler uygulama için kod geliştirmeye başlar. Planlama için gerekli DevOps araçları bulunmaz, ancak kodu korumak için bir dizi araç vardır. DevOps sürekli geliştirme yaklaşımını izlediğinden, geliştirme ve işletim şemasında sürekli geri bildirim kullanarak mevcut kod üzerinde çalışmalar yapılabilir.

Sürekli Entegrasyon: Bu aşama, tüm DevOps yaşam döngüsünün kalbidir.Sürekli entegrasyon süreci geliştirme sonrasında otomatik olarak başlar. Bir sonraki aşamada yapılacak testlerin planlanması, ilk proje belgelerinde ihtiyaç duyulan sonucu üretme kodunun anlaşılması gibi birkaç adım içerir. Sürekli entegrasyon DevOps'ta sorunsuz bir süreçtir ve bir sonraki aşamaya verimli bir şekilde ulaşır.

Sürekli Test: Test işlemi DevOps'ta bir uygulamanın gerçek kullanımını kontrol eder. Beta test kullanıcıları sonuç verirken, uygulamanın amaçlanan kullanımını canlı bir ortamda kullanabilmesini sağlar. Sürekli test için Selenium, TestNG, JUnit, vb. Otomasyon test araçları kullanılır. Test süreci, bir uygulamanın farklı yönleri hakkında daha fazla bilgi verir ve bu da uygulamayı geliştirmek için bir fırsat olur.

Sürekli Denetleme: Bu, uygulamanızın performansını sürekli olarak izlediğiniz DevOps yaşam döngüsünün çok önemli bir aşamasıdır. Burada yazılımın kullanımı hakkında hayati bilgiler kaydedilir. Bu bilgiler, uygulamanın uygun işlevselliğini tanımak için işlenir. Düşük bellek, sunucuya erişilemiyor vb. sistem hataları bu aşamada çözülür. Herhangi bir sorunun temel nedeni bu aşamada belirlenir. Hizmetlerin güvenliğini ve kullanılabilirliğini korur. Uygulama sürekli kullanım konumundayken, belge biçiminde oluşabilecek veya uygulama parametreleri hakkında büyük veri üreten bir yazılım ürününün işletim verimliliğini artırır.

Sürekli Geri bildirim: Mevcut ürünü geliştirilmesinde ve yeni sürümlerin hızla yayınlanmasına yardımcı olur. Ürünün nihai sonucu analiz edilerek uygulama performansı sürekli olarak artırılır. Sürekli geri bildirim, müşteri geri bildiriminin, mevcut yazılım ürününün çalışmasını iyileştirmek ve yanıta göre yeni sürümleri hızlı bir şekilde yayınlamak için yazılım uygulamasının önemli bir aşamasıdır.

Sürekli Yayılma: Bu, kodun üretim sunucularına dağıtıldığı aşamadır. Kodun tüm sunuculara doğru bir şekilde dağıtıldığından emin olmak da önemlidir. Dağıtım işlemi, kodda yapılan herhangi bir değişikliğin yüksek trafikli web sitesinin çalışmasını etkilemeyeceği şekilde gerçekleştirilir.

Sürekli İşlemler: Tüm DevOps işlemleri, yayınlama sürecinin tam otomasyonu ile sürekliliğe dayanır ve kuruluşların sürekli olarak piyasaya sürülme süresini hızlandırmasına olanak tanır. 



DevOps kullanılarak, bir geri dönüş (feedback) döngüsüyle ürünlerin sürekli dağıtımı şu aşamaların yürütülmesi ile gerçekleşir.
  • Altyapı otomasyonu
  • Konfigürasyon yönetimi
  • Dağıtım Otomasyonu
  • Altyapı izleme
  • Log yönetimi
  • Uygulama ve performans yönetimi

3. DevOps’ un faydaları

Devops vasıtasıyla uygulamalarını gerçekleştiren şirketler Devops kullanmayan şirketlere kıyasla çok daha verimli bir şekilde işlerini hallediyor. Bunu sayısal bir veriye bağlamak gerekiyorsa bu yaklaşımı ile çalışmayanlara kıyasla 30 kata kadar çıkabilen daha fazla dağıtım yapabiliyorlar. Devops aracılığıyla ulaşılan en büyük değişim ise eskiden kopuk bir şekilde çalışan ve daha farklı yeteneklere sahip takım elemanlarının geliştirici mühendisler tarafından bu geliştirici veritabanı yöneticileri, sistem yöneticileri, sistem analistleri ile birlikte bir araya gelerek sadece bir takım oluşturmasıyla mümkün. Farklı rollerde bulunan bahsi geçen bu iş birliğinin birden çok da avantajı bulunuyor. Bu faydalar işletmeye sağlamış olduğu faydalar ve teknik faydalar olarak iki farklı açıdan incelenebilir.

Teknik faydaları 

  • Continuous delivery 
  • Karışıklıkların azalması
  • Sorunlara hızlı çözüm anında müdahale

İşletmeye olan faydaları

  • Ürün özelliklerinin daha hızlı teslimi 
  • Daha istikrarlı çalışan sistemler
  • İyileşme için zaman ayırma


4. DevOps Neden Önemlidir

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.

5. DevOps vs Agile


Despite their similarities, DevOps and agile are not the same, and some argue that DevOps is better than agile. To eliminate the confusion, it's important to get down to the nuts and bolts. Similarities Both are software development methodologies; there is no disputing this. Agile has been around for over 20 years, and DevOps came into the picture fairly recently. Both believe in fast software development, and their principles are based on how fast software can be developed without causing harm to the customer or operations. Differences The difference between the two is what happens after development. Software development, testing, and deployment happen in both DevOps and agile. However, pure agile tends to stop after these three stages. In contrast, DevOps includes operations, which happen continually. Therefore, monitoring and software development are also continuous. In agile, separate people are responsible for developing, testing, and deploying the software. In DevOps, the DevOps engineering role is are responsible for everything; development is operations, and operations is development. DevOps is more associated with cost-cutting, and agile is more synonymous with lean and reducing waste, and concepts like agile project accounting and minimum viable product (MVP) are relevant. Agile focuses on and embodies empiricism (adaptation, transparency, and inspection) instead of predictive measures.

6. DevOps Araçları

DevOps kültürü için sihirli bir dokunuş sağlayacak bir araç/uygulama diye bir şey aslında bulunmamaktadır. Ancak DevOps prensiplerinin gerçekleşmesi amacına hizmet eden ve otomasyonu ve işbirliğini destekleyen araçlar bir araya getirilerek bir araç seti (toolkit) olarak kullanılabilmektedir. Bu araçlara veritabanı, konfigürasyon yönetimi, uygulama dağıtımı, izleme, kaynak kodu versiyon kontrolü, yapılandırma ve test, zengin kaynak yönetimi, sürekli entegrasyon, bulut ve middleware örnek olarak verilebilir. DevOps’ un deyim yerindeyse periyodik tablosuna girmiş araçlar dahi aslında iş birliği ve otomasyonu destekleyen araçların seçiminin kolay olmadığını gösteriyor 🙂. 

7. DevOps Başarıyı yakalamış şirketler


Changing business models and increased competition have led to skyrocketing interest in DevOps over the last decade. From startups to Fortune 500 companies, businesses of all types are interested in improving the speed and quality of software development. These six organizations have seen success in their DevOps transformations. Some you might expect to find at the forefront of technology trends. Others, not so much. All of them are an inspiration for organizations at any stage of the DevOps journey.


Netflix

Over 100 million users turn to Netflix for a quality streaming experience. Maintaining its place as an industry leader without causing any glitches for their customers requires speed, flexibility, and attention to quality. Netflix operates a cloud-based infrastructure comprised of hundreds of microservices. Developers can automatically build pieces of code into deployable web images without relying on IT operations. As the images are updated, they are integrated into Netflix’s infrastructure using a custom-built, web-based platform. Automated monitoring is in place so that if the deployment of the images fails, the new images are rolled back and traffic is rerouted to the old version. Netflix’s DevOps success has not gone unnoticed. In 2015 when the company was unanimously chosen for the JAX Special Jury Award, JAXenter editor Coman Hamilton said, "The rate at which this entertainment game-changer has adopted new technologies and implemented them into its DevOps approach is setting new standards in IT."

NASA

You don’t have to be a rocket scientist to do DevOps, but DevOps did help real NASA scientists analyze data from the Mars Rover Curiosity. NASA’s Jet Propulsion Laboratory wanted real-time analytics on millions of telemetry data points being received from Curiosity daily. Building portable containerized data systems and tools for continuous deployment allows systems engineers and data scientists to quickly develop, analyze, and share their visualizations and algorithms. Data can be stored and processed using AWS services and scalable APIs.

Amazon

Amazon has a reputation for impressive DevOps. The transition to DevOps was a part of the company’s 2010 move from physical servers to the Amazon Web Services (AWS) cloud, a change that allowed them to save resources by scaling capacity up and down in single-serve increments. Amazon also began using a continuous deployment process managed by an internal system called Apollo, which gives developers the ability to deploy code whenever they want to whatever servers they need.By May 2011, Amazon was deploying new software to production servers an average of every 11.6 seconds. In the busiest hour, 1,079 new deployments were sent into the production environment. DevOps is designed to increase the frequency of deployment, but the most successful companies know that quality and risk management are as important as speed. Amazon’s implementation of a new load balancer ensured that only one out of every 100,000 deployments resulted in an outage on the Amazon website. According to John Jenkins, a former lead engineer at Amazon, the transition to agile DevOps is saving millions.

8. Kaynaklar





Yorumlar

Bu blogdaki popüler yayınlar

Operasyonel Mükemmellik (OPEX) Araçları

Kullanıcıların Senaryoları Use Case'ler

Değer Akışı Haritalama / Value Stream Mapping