Devops Nedir?

Metin Topcu
4 min readMar 26, 2023

--

En Basit Haliyle Devops

Yazılım geliştiricilerin, artan rekabet ve müşteri memnuniyeti için sistem mühendisleri, sürüm mühendisleri, veritabanı yöneticileri, network mühendisleri, güvenlik uzmanları gibi alt dallarla işbirliği içinde çalışması.

Yazılım Geliştiricisi(Development), Kalite Güvencesi(Quality Assurance)

DEV

“Dev”, genelde yazılım geliştiricileri için kullanılır, ancak gerçekte daha geniş bir topluluğu temsil eder ve “yazılım geliştirme için çalışan herkes”i kapsar.

OPS

“OPS”, “DEV”e göre daha geniş bir kapsamı olup sistem mühendisleri, sistem yöneticileri, sürüm mühendisleri, veritabanı yöneticileri (DBAs), network mühendisleri, güvenlik uzmanları ve daha birçok değişik alt displinler için kullanılır.

DEV Takımının Sorumlulukları

  • Oluşturulacak uygulamaya ait planları yapmak,
  • Uygulamayı oluşturmak(Kodlamak)
  • Uygulama release ve publish (versiyonlama ve yayınlama)
  • Uygulama iyileştirme (Update)
  • Uygulama Test süreçleri

OPS Takımının Sorumlulukları

  • Oluşan uygulamaların barındırılacağı ve kullanılacağı ortamı tasarlamak,
  • Uygulamaların çalışması için gereken sistem bileşenleri ile iletişime geçebilmeleri için gerekli ağ ve güvenlik yapılandırmalarının yapılmasını sağlamak,
  • Uygulamanın kaynak kullanımını belirlemek,
  • Uygulamanın gerekli izleme (Monitoring) araçları ile takibini sağlamak,
  • Uygulamanın sistem kaynaklarını kullanım düzeyine göre kaynak arttırımını sağlamak (Scale Up ve Scale Down)

Devops

Devops’un kesin bir tanımı yoktur. Devops için bir kültür diyebiliriz. Yazılımcılar yani Developerlar(DEV) ile sistem yöneticileri(OPS) arasındaki etkili iletişime vurgu yapar.

Developler (DEV) sistem yöneticilerinin(OPS) 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 Nasıl, Hangi İhtiyaçtan Ortaya Çıktı?

Günümüzde yazılım ürünlerinin (uygulamaların) sürüm (version/release) değiştirme hızı, ürünler arası rekabetin artmasıyla birlikte artmıştır ve artmaya devam etmektedir. Şirketler ve ürünleri, bu yarışa benzer ortamda müşterilerini memnun etmek için kaliteli sonuçlar da elde etmek zorundadırlar. Bazı şirketler kullanıcı deneyimini iyileştirmek, hataları düzeltmek veya yeni özellikler eklemek için bazen gün içinde onlarca, belki yüzlerce yazılım değişikliği yapmakta ve kullanıcılara gerçek zamanlı sunmaktadır. Bu şirketlere, Google, Amazon, Twitter ve Etsy örnek olarak gösterilebilir. İşte bu yüzden yazılım üretiminin, çeviklik (agility) ile yerine getirilmesi kaçınılmaz hale gelmiştir.

Eskiden “DEV” ve “OPS” birbirinden kopuk olarak çalışırken istenilen çeviklik elbette sağlanamıyordu, yazılım geliştiren şirketler kendi içlerinde verimsizlik yaşıyor ve nihayetinde müşteriler de durumdan memnun olmuyordu. Geciken projeler, hatalı ürünler, başarısız sürüm denemeleri, boşa harcanan para ve zaman, itibar kaybı… DevOps, işte bu gidişata dur diyecek bir hareket olarak ortaya çıkmış ve yazılım geliştiriciler (DEV) ve sistem yöneticileri (OPS) arasındaki iletişimi, işbirliğini ve bütünleşmeyi (entegrasyonu) vurgulamayı esas edinmiştir. Sonuç olarak, şirketlerin bilgi teknolojileri(IT) hizmetleriyle beraber yazılım ürünlerinin de daha hızlı ve daha sık teslim edilebilir (continuous delivery) olmasına yardımcı olmaya başlamıştır.

DevOps’un Avantaj ve Dezavantajları

Avantajları:

  • İş birliği arttıkça pazarlama süresi doğal olarak azalır.
  • Teknolojinin sürekli gelişmesiyle pazara ayak uydurmak gerekir ve DevOps buna ortam sunar.
  • Süreç bir döngü halinde ilerlediği için devamlılık sağlanır.
  • DevOps ile süreç otomatize edildiği için hızlı ürün ortaya çıkar ve insan hata riski ortadan kalktığı için güvenilirlik sağlanır.
  • İki ekip beraber bu süreci yönettiği için de ortalama kurtarma süresi de hızlanır.

Dezavantajları:

  • Ops ekipleri monitoring sürecinde sistemde oluşan sorunları dev ekibine bildiriyor. Bu işlem otomatik olduğu için dönüşler hızlı olur. Bu yüzden dev takımı oluşan sorunlara karşı daha hızlı çözüm üretmek zorunda kalır. Bu dev takımı için daha fazla efor saf etmesine sebep olduğundan geliştiriciler tarafından bir dezavantajken müşteri açısından avantaj olabilir.
  • Süreç otomatikleştikçe güvenlik riskleri oluşabilir.
  • Sürekli gelişen ve ilerleyen teknolojiye ekiplerin ayak uydurma süreci yıpratıcı olabilir.

DevOps Yöntemleri

Sürüm Denetimi (Version Control): Geliştiricilerin koddaki hataları güncellemeleri versiyonlar olarak yönetmesi.

Çevik Yazılım Geliştirme (Agile Software Development): Çevik geliştirme ekip işbirliğiyle beraber müşteri memnuniyetini de sağlayan bir yazılım geliştirme yöntemidir. Bu yöntem ile sürekli iyileştirme sağlanır.

Kod olarak Altyapı (Infrastructure as Code): Sistem ekiplerinin kaynakların yönetimi ve dağıtımını otomatikleştirmesine yardımcı olan bir yöntem.

Yapılandırma Yönetimi (Configuration Management): Kaynakların ve durumun yönetilmesi.

Sürekli İzleme(Continuous Monitoring): Dağıtım süreci başladığında sistemin izlenip ayakta kalması sağlanır.

Sürekli tümleştirme (Continuous Integration(CI)): Sürekli entegrasyon ile güncellenen kod sürekli test ve analiz edilir. Bu da geliştiricilerin çok az riskle yüksek kaliteli çözüm üretmesine olanak sağlar.

Sürekli dağıtım ve sürekli teslim (Continuous Delivery & Continuous Deployment(CD)): Sürekli entegrasyon aşamasının başarıya ulaşmasının ardından projenin otomatize bir şekilde dağıtımının yapılması sürecidir.

DevOps ve Agile

DevOps ile Agile yaklaşımın güçlü bağları vardır. Agile yazılım geliştirme müşteri ile ürün yöneticileri, geliştiriciler, bazen de kalite kontrolcüler arasındaki işbirliğini zenginleştirmeyi hedefler ve daha yüksek kaliteli, daha sık ve sorunsuz ürün çıktısı sağlar. Müşteri için yaratılan değer de aynı şekilde yüksek olur. DevOps, yazılım geliştiricilerin çıktısı olan ürünün diğer sistemlerle etkileşiminin de müşteriye sunulan değerin temel bir parçası olduğunu söyler ve böylece ürün geliştiriciler, sistemler etkileşimini de hesaba katmalıdır der. Yani, DevOps basit anlatımla Agile prensipleri daha da genişleterek sadece üretilen kodu değil hizmetin tamamını göz önünde bulundurur diyebiliriz.

Bu yazımda bir çok web sitesinden faydalandım bunlar;

--

--