DevOps Hakkında

Oğuzhan GEDİK
Neyasis Technology
Published in
5 min readFeb 19, 2020

Selamlar, bu dökümanı DevOps hakkında genel nitelikte bir bilgi paylaşımı sağlamak amacıyla sizlerle paylaşıyorum.

DevOps merak edilen bir konu ve ufak çaplı da olsa gizemli diyebileceğimiz bir süreci ifade ediyor çünkü kapsamı oldukça geniş dolayısıyla tek bir tanım içine sığdırmaya çalışmak istediğinizde tam olarak ne olduğunu anlamış olmuyorsunuz. Benzer bir durum Bulut Bilişim için de geçerlidir onlarca hizmetin olduğu platformu tek bir tanıma sığdırmaya çalışmanın zor olması gibi... Dolayısıyla DevOps’un nedirleri ile birlikte ne değildirlerini de ilgili konu başlıklarında ele aldım çünkü DevOps’un ne olduğunu, ne olmadığını anlayarak da pekiştirebiliriz.

DevOps Nedir?

Dev — Ops, Development ve Operations kelimelerinin kısaltmalarından meydana gelir. Buradan yazılım ve operasyonel birimlerin birlikte iletişim halinde çalışması gerektiğini çıkarsayabilirsiniz. Burada Development, yazılım geliştirme departmanlarını, Operations ise kısaca bunun dışında kalan departmanları kapsar Planlama, Satın Alma, Deployment, Donanım, Pazarlama, İK, Muhasebe departmanları vs…

DevOps her şeyiyle bir yazılım yaşam döngüsü felsefesidir. Ekseri olarak gücünü kişilerin, sistemlerin ve bu tarafların kendi içlerinde ve birbirleriyle iletişim yeteneklerinden alır.

Donovan Brown’un ifadesiyle “İnsanların, süreçlerin ve ürünlerin, son kullanıcıya değerlerin sürekli aktarımı için birleşmesidir.” Dolayısıyla DevOps’u en genel ifadesiyle bir iş süreci kültürü olarak ele alabiliriz. Buradaki “kültür” kelimesi dikkate değerdir. Nasıl ki toplumlardaki çeşitli değerler kültürlerini şekillendiriyor ve belirliyor, şirketlerin de yaptıkları işlere bağlı olarak konumlandıkları öncelikleri değerlerini, bunlar da çalışma kültürlerini yani DevOps süreçlerini nasıl şekillendireceklerini belirler. Dolayısıyla DevOps’u sabit bir iş süreci aracı gibi düşünmemeliyiz, tamamen şirketin değerlerine göre şekillenir yani elastik ve çevik olmayı esas alır.

Amacı, Mantığı ve Önemi

DevOps’un ana mantığı, proje yönetim döngülerimizin Development ve Operations ekiplerinin senkronize çalışacak şekilde kurgulamasından geçer. DevOps süreçlerinin sizlerin yaşam kalitenizi arttırması, etkileşimi ve iletişimi güçlendirerek iş süreçlerinizi hızlandırması gerekiyor.

Peki neden bu kadar önemli? Çünkü yazılım projelerindeki başarı oranının düşük olması ya da daha da yükseltilmesi amacı burada belirleyici unsurlar. Bunun bazı etkenleri var : Projelerin doğru yönetilememesi, projelerin yanlış analiz edilmesi ve en önemlilerinden birisi de operasyon ekipleri ile yazılım ekiplerinin uyumsuz şekilde çalışmalarıdır. Örneğin operasyon ekibinden bilgi girişi yapanların, test mühendislerinin ya da deployment ekiplerinin yazılım ekiplerinden kopuk olmaları ya da koordine çalışmamaları gibi…

İnsan Faktörü

DevOps’un en kritik argümanı elbette insandır. Sürecin doğru işlemesi için ilk olarak doğru personeller ile çalışılması çok önemlidir. Çünkü DevOps süreçleri ekseri olarak hususi anlamda iş yükünü arttıran, netice olarak zamandan ya da maliyetten daha çok kazandıran bir süreç olabiliyor bazı uzmanlar bunu vurguluyorlar. Dolayısıyla elastik ve çevik çalışabilme becerisi olan ve değişim ve öğrenmeye bağlı çalışmaya uyum sağlayabilecek ve iletişim yetisi güçlü elemanlar, hem doğru DevOps süreçleri için önemlidir, hem de bu da DevOps’un doğru bir şekilde uygulaması biçimidir esasen. Recursive bir yapı gibi düşünün, DevOps’u doğru DevOps için uygulama!

Biz DevOps’un Neresindeyiz?

Öncelikle DevOps’un hemen hiçbir IT personelinin bütün bütün dışında olmadığı bir süreç olduğunu bir mukayese üzerinden belirterek başlayalım. IT kapsamında kalmak şartıyla teorisyenler ve aktif sektör personelleri arasında yapılan işlerdeki dikkat çeken farklardan birisi, teorisyenlerin bir işi yapmasalar dahi o işin veya sürecin yahut süreç elemanlarının terminolojilerine hakim olurken, sektör personelinin bu süreç dahilindeki işleri pratiğe dökebilir iken yaptıkları iş, süreç veya süreç elemanlarının terminolojisine mutlak hakim olmamalarıdır. Bu belirsizlik özellikle KOBI nevi şirketlerde kendini daha çok hissettirir, hatta bu belirsizlik ortamının yarattığı çoklu öğrenme ve çalışma sürecinin keyfini çıkaran personeller bunu daha iyi anlarlar. Bu örneği vermemin sebebi, aslında ne yaparsanız yapın, mutlaka DevOps sürecinin düşük bir yüzde ile olsa da içinde olduğunuz gerçeğidir. Yani DevOps sıfırdan her şeyin bir kenara atılıp yepyeni bir süreç olarak ele alabileceğimiz bir süreç değildir, kendinizi DevOps süreçlerine çok yakın hissedebilirsiniz. Eğer iş süreçlerinizi otomatize etmeye çalışıyor, belirsizlikleri belirginleştiriyor, rework maliyetlerini düşürmeye çalışıyor , hususi manada efor artsa dahi işlerin end to end delivery kapsamında daha hızlı bitmesini sağlayabiliyor ve management’taki blur yapıyı daha berrak hale getirebiliyorsanız, kısacası yapılması gereken işlerin, hitap ettiği son kullanıcılara maksimum değer, şirkete minimum maliyet sağlamak amacıyla süreçleri sürekli optimize etmeye çalışıyorsanız, DevOps’çusunuz ama farkında değilsinizdir.

İletişim

DevOps süreçlerine ayak uydurabilmek için iletişimin güçlü olmasından bahsetmiştik. Tabi bu süreç, farklı departmanların birbirlerini anlayabilecekleri bilgi seviyelerine sahip olmalarını da gerekli kılıyor. Örneğin yazılım ekipleri tarafından kullanılan bazı araçların başlangıç seviyesinde de olsa operasyon ekipleri tarafından öğrenilmesi ve kullanılması gerekebilir ya da bir bütçe planı yapılacaksa bu sürecin projeye etkisi, gecikmeleri, yansımaları, riskleri gibi süreçler operasyon ekibi tarafından yazılım ekipleri ile paylaşılması gerekebilir.

Süreç — Araç Dengesi

Nasıl ki yazılım projelerinin geliştirmeleri, planlanmaları, analizleri, testleri, ortamları, dağıtımları, otomatize edilmeleri vs… gibi süreçler için çeşitli araçlar kullanılıyorsa, DevOps süreçleri için de çeşitli araçlar kullanılmaktadır ki zaten bu bahsettiğim tüm araçlar aynı zamanda DevOps sürecinin araçlarıdır. Dolayısıyla DevOps araçları denildiğinde aklınıza ilk olarak nev’i şirketlerin DevOps postfix’li ürünleri gelmesin. Bunu farkındalığınızı arttırmak için vurgulamak istiyorum. Çünkü DevOps zaten sizlerin neredeyse tüm iş süreçlerinizi kapsamaktadır. Yani sizlerin yazılım geliştirirken kullandığınız IDE dahi DevOps kapsamına dahildir! İnanmıyorsanız IDE leri uçurup notepad’te, onu da uçurup nano editörde, onu da uçurup vim editörde, onu da uçurup terminalde kod yazarak, süreçlerinizde oluşacak çöküntüleri yaşayarak görebilirsiniz (Tavsiye etmiyorum). Yani DevOps toollar topluluğu değildir ama doğru DevOps için araçlar önemlidir.

Belli bir seviyede DevOps bilgisi olan arkadaşların süreç ile ilgili araçların çokluğunun sanki daha iyi bir DevOps kültürü ortamını desteklediği yanılgısına düşme ihtimalleri var. Bu durum DevOps’a bakışın araç öncelikli olması yanılsamasıdır. Halbuki iş sürecinizde ihtiyacınız olmayan ya da maliyeti ihtiyacınızı karşılama noktasında çok yüksek yahut ziyade kalan araçlar, tam tersine sürecinizi hantallaştıracaktır. Bu yanılgılardan en önemlilerinden birisi deployment environments dediğimiz TEST, QA, PILOT(UAT), PROD gibi ortamların her proje için olması ya da birbirinden ayrı ayrı olması yanılgısıdır. Bunu uç bir örnek olarak: masaüstünde kullanılacak 4 işlem yapan basit bir hesap makinesi yazılımının sizden başka kullanıcısı olmayacaksa, o halde bu program parçası için CI/CD kullanarak bahsettiğim ortamların her birisini ayağa kaldırmaya ya da business intelligence araçlarını kullanmaya gerek yoktur. Hatta DevOps kültürünün belirtilen ana amaç ve mantığını göz önüne aldığımızda gerekirse sürecimizde bize gerçekten katkı sağladığına kanaat etmediğimiz araçları devre dışı bırakmamız bile gerekebilir. Yine bir diğer yanılgı; DevOps süreciyle beraber Agile yaklaşımların uygulanmasının zorunlu olmasıdır. Halbuki waterfall yaklaşımın daha uygun olduğu her şeyin belirli olduğu küçük çaplı projelerde waterfall uygulanması, doğru DevOps süreci için gereklidir. Yani yukarıda bahsettiğim esneklik ve çeviklik direk aklınıza Agile’ı getirmesin. Think flexible!

Özetle bu yazıda DevOps’un ne olduğunu genel hatlarıyla ele almaya çalıştım. Spesifik olarak bir araçtan veya uygulanabilir bir senaryodan bahsetmedim. Bir sonraki yazımda da uygulanabilir örnekler ile bazı araçların kullanımlarını ve DevOps laşma olgusu üzerinde duracağım.

Kaynaklar :
https://www.donovanbrown.com/post/what-is-devops
https://opensource.com/article/19/5/values-devops-mindset
https://www.youtube.com/watch?v=_RdkWHGZhoU
https://www.youtube.com/watch?v=YyCQbJ9-gIs

--

--