


Talentra olarak her hafta farklı bir uzmanlık alanında meslek-eğitim geçişlerine, o alanın gelişim noktalarına, kariyer projeksiyonlarına değiniyoruz. Yazı serimizde bu kez, öne çıkan uzmanlıklardan DevOps Engineer ‘i ele alacağız.
Farklı deneyimlere sahip DevOps Mühendisleri Halid Busayr Ceylan, Mustafa Yıldırım ve Elifcan Çakmak sorularımızı yanıtladı. Kendilerine çok teşekkür ediyoruz. Devops konusunu ele almaya devam edeceğiz.
Her 3 katılımcımıza da şu soruları ilettik:
Başarılı bir DevOps mühendisi sizce hangi yetkinliklere ve hangi deneyimlere sahip olmalı?
Siz neden kariyer olarak DevOps Mühendisliğine yöneldiniz? Görevinizin sizi çeken tarafları nelerdir?
Türkiye’de DevOps alanındaki kariyer fırsatlarını nasıl görüyorsunuz? Yurtdışındaki fırsatları nasıl görüyorsunuz?
Sizce iyi bir DevOps’cu nasıl bir okul formasyonundan geliyor olmalı, DevOps alanında önereceğiniz eğitimler var mı?
Bu alanda son dönemde dikkatinizi çeken kitap ve / veya blog önerebilir misiniz?

1) Bu soruyu yanıtlamadan once gelin hep birlikte DevOps oncesi duruma bakalım.
DevOps kültürü ile tanışmadan önceki geleneksel yazılım/ürün geliştirme süreçlerinde temelde 2 farklı takım vardı: Yazılım geliştiriciler ve sistem yöneticileri. Yazılım geliştiriciler kodlarını yazar ve genellikle iş takip sistemi üzerinden bir görev oluşturup sistem yöneticilerinden yazdıkları kodu üretim(production) ortamında çalıştırmalarını beklerlerdi. Bu kültürde geliştiriciler sadece yazdıkları kod ile ilgilenirken sistem yöneticileri de sadece uygulamanın sağlıklı bir şekilde hizmete devam etmesi ile ilgileniyorlardı.
Sistem yöneticilerinin kod yazma ile ilgili çok az bilgisi varken, yazılım geliştiricilerin de operasyonel uygulamalar hakkında çok az bilgisi vardı. Bu kültürde geliştirilen uygulamanın 2 taraf arasında sıkça alınan hatalar, güvenlik sorunları, performans kalitesi gibi nedenlerden dolayı git-gel yapmasını ve asıl hedef olan müşteriyle buluşmasınıi geciktiriyor, bazen de engelliyordu.
DevOps, geliştiriciler ve sistem yöneticileri arasındaki bu engelleri ortadan kaldırmak için tasarlanmış bir dizi uygulama ve kültürdür. Bu terim bir kültürün tanımı olsa da ekosistem DevOps mühendisi adında bir unvan ile bu kültürü yönetmeye ve uygulamaya çalıştı, çalışıyor.
Bu anlamda, DevOps mühendisi yazılım geliştiriciler ile birlikte çalışan ve altyapıları(infrastructure) tasarlayıp yöneten, güvenlik önlemlerini uygulayan, uygulamaların geliştirme(dev) ve üretim(production) ortamlarına dağıtılması(deploy) ile ilgili süreçleri tasarlar ve uygular.
Toparlayacak olursak, ekosistem DevOps mühendisinin iyi bir network bilgisi ile ağ altyapısını tasarlayabilmesini, işletim sistemlerine hakim olarak -ozellikle linux- uygulamaların kurulmasını ve yönetilmesini, konteynerlar ile mikroservis yapıların tasarlanmasını ve dağıtım süreçlerini tasarlayıp yönetmesi beklenmektedir.
2) Açıkçası kariyerim Sistem Teknisyeni olarak başladı ve daha sonra System Engineer, Linux System Administrator, DevOps Engineer görevleriyle devam etti. Kariyerimde hep bir sonraki adımı hedef olarak seçtim ve bu yönde ilerlemeye gayret ettim.
16 yıllık kariyerimin ilk 8 yılı veri merkezlerinde fiziksel ve sanal altyapilari tasarlamak ve yönetmekle geçti. O yıllarda otomasyon daha çok bash scriptlerden ibaretti ve bende çokça kullandım. Ancak ekosistem cloud teknolojilerinin de hızla gelişmesi ve yaygınlaşmasıyla daha çok yüksek erişilebilir, ölçeklenebilir ve dağıtık sistemler tasarlanması yönunde evrildi. Bu ihtiyacı ve trendi farkedip kendimi bu yönde geliştirdim. Çünkü altyapıları ve sistemleri tasarlayıp Infrastructure as Code pratiklerini kullanarak otomasyon ile uygulamak, müşterilere en güvenli ve hızlı çözümü sunmak en az onlar kadar beni de mutlu ediyor.
3) DevOps kültürü şirketlere ürünlerini hızlı ve güvenli şekilde müşterileri ile buluşturmanın bugüne kadar ki en iyi yolu gibi görünüyor. Bu yüzden şirketler bünyelerinde bu kültürü uygulamak ve DevOps mühendisleri ile inşa etmek istiyorlar. Bu anlamda, gerek ülkemizdeki gerek yurtdışındaki şirketlerin en önemli mühendislik ihtiyacını oluşturuyor. Kendisini yukarıda bahsettiğimiz alanlarda yetiştiren mühendislerin iş bulmaları çok kolay oluyor diyebilirim hatta ben de onlardan biriyim. Özellikle son 4 yıldır Türkiye’de ve şu anda İngiltere’de kurduğum danısmanlık şirketi ile Avrupa’nın önde gelen büyük şirketlerine AWS, Kubernetes danışmanlığı yaparak kariyerime devam ediyorum.
4) Açıkçası okul her meslekte olduğu gibi DevOps alanında da amaç değil araç oluyor. İyi bir DevOps olabilmek dolaylı olarak Bilgisayar Mühendisliği bölümünde okumak ile beraber öğrencilerin okul süresince zamanının belli bir kısmını yazılım ve operasyonel alanlarında aldığı online egitimler alarak, stajlar ve projeler yaparak kendini ne kadar geliştirebildiğiyle doğrudan ilgilidir. Bu anlamda Python ve Golang gibi yazılım dillerini, AWS, GCP ve Azure gibi cloud teknolojilerini, Kubernetes gibi konteyner orkestrator araçlarını öğrenmeleri diğer adaylar arasından kolayca sıyrılmalarını ve DevOps kariyerlerinde başarılı olmalarını sağlayacaktır.
5) The DevOps Handbook ve Kubernetes in Action ilk aklıma gelenler ve bu kitaplar ekosistemdeki güncel problemlerin DevOps kültürü ile organizasyonlarda nasıl çözülebileceği hakkında okuyucuları fikir sahibi yapacaktır. Genellikle Türkçe içeriklere sahip şu gruplar ayrıca takip edilebilir. https://devopsturkey.org/ https://devopsdays.istanbul/ https://medium.com/devopsturkiye

1) Yetkinlik denildiğinde aklıma genelde teknik yeterlilik geliyor, ilgili araçların kullanımı gibi ama benim fikrimce iyi bir DevOps mühendisinin iletişim yetenekleri, sorun çözmedeki kabiliyeti, sorun çıktığındaki soğukkanlılığı, adaptasyon yeteneği yüksek olmalıdır. Günün çoğunda bilgisayarla çalışıyor olsak da karar vermemiz gereken zamanlarda kişilerle iletişim halinde oluyoruz. O sebeple iletişim yeteneği birinci planda olmalı. Deneyim kısmına gelirsek çoğu DevOps ekipte yol gösterici olmak durumundadır, bu sebeple farklı durumlarda daha rahat karar verebilmek, sorunları çözebilmek için farklı disiplinlerde (yazılım, sistem, network) tecrübeli olmalıdır.
2) Benim kariyerim biraz olağandan farklı ilerledi, üniversitedeyken okulun network yönetim grubunda öğrenci stajyer olarak 2,5 sene çalışma fırsatı yakaladım, burada okul süresince çok fazla bilgisi verilmeyen network konularında eğitim aldım, sonrasında profesyonel hayata sistem yöneticisi olarak başladım, sonrasında yazılım ekibinde çalışma fırsatı buldum, sonrasında da projede DevOps mühendisi ihtiyacı doğduğunda öne çıkan aday oldum, bundan sonrada DevOps mühendisi olarak devam ettim kariyerime. Görevin çeken tarafları insanların yüklerini hafifletmek, farklı disiplinlere dokunacak şekilde çalışmak ve isleri otomatize edilmesi hoşuma gidiyor.
3) Özellikle son 3-4 yılda şirketlerin donuşum yapmak istemeleriyle beraber bu alana artan bir ilgi var, yurtdışında ise çok daha fazla çalışacak insan açığı bulunmaktadır, çoğu DevOps mühendisine hiç gelmiyorsa ayda en az 4-5 farklı şirket/ülkeden teklif geliyordur.
4) İşin okulunun okunması gerektiğini düşünen bir insanım (alanında gayet başarılı alaylılara edecek bir sözüm yok, onları takdir ederim) erken yaşta okuldaki eğitim ve projelerle deneyim kazanmaya başlıyorsunuz, bazen bilinmesi gereken bir detayı okul zamanındaki bir desten anımsayabiliyorsunuz. DevOps'luk terzilik gibidir, her bir kişiye farklı ölçülerde, renklerde, desende ürün dikerek onun için güzel ve yararlı bir elbiseyi dikersiniz. Her bir şirket, kültürü, kullandığı araçları, çalışan insanları ile beraber farklılık gösterir (Unique). O sebeple çalışacağınız yerdeki ortama, takım arkadaşlarınıza göre istenen yetkinlikler değişecektir. Önerebileceğim şey sürekli öğrenme pesinde olmalarıdır, deneyim kazandıracak islerle uğraşmalılar.
5) Kitaplar basılıp çıkana kadar o teknoloji güncelliğini yitirmekte ve insanların ilgisini kaybetmektedir, yeni dünya düzeni ile birlikte video içerikler ve blog yazıları önem kazanmaktadır. Kaynak olarak Linux Academy sitesini kullanmaktayım, medium üzerinde çok fazla kişiyi takip ediyorum bilgi alabilmek için. Bir DevOps mühendisinin meraklı olması ve keşfetmeyi sevmesi gerekir, o sebeple yararlanabileceği kaynakları da arama motorlarında bir iki arama yaparak bulabilirler. Medium üzerindeki https://medium.com/@riilifast blogumdaki takip ettigim kisiler uzerinden ilerleyebilirler.

1) Bence önce başarılı bir DevOps mühendisi olmak ne demek önce onu konuşmalıyız. Başarı, herkese göre değişebilen bir kavram. Benim için başarılı olmak yaptığım işi ne olursa olsun, -küçük bir script yazmak veya büyük bir projeyi geliştirmek farketmez- hakkıyla yapmakken bir başkası için başarılı olmak çalıştığı şirkette sürekli yükselmek olabilir. Benim kendi başarı tanımıma göre iyi bir DevOps mühendisi olmak için detaylara dikkat eden, problem çözmeyi seven, karşılaştığı herhangi bir zorlukta çabuk pes etmeyen bir insan olmanız gerekiyor. Bence DevOps işi biraz puzzle çözmeye benziyor. Birbiriyle bağlantılı parçaları bir araya doğru bir şekilde getirebiliyorsanız iyi bir DevOps mühendisi olabilirsiniz. Bunun dışında deneyim açısından konuşacak olursak son zamanların yükselen yıldızı Cloud teknolojileri hakkında bilgi ve deneyim sahibi olmak şart.
2) Aslında yukarıda belirttiğim sebeplerden dolayı diyebilirim. Ben her zaman problem çözmeyi, saatlerce bir sorun hakkında fikir yürütmeyi, araştırma yapmayı ve yeni şeyler öğrenmeyi çok seven bir insan oldum. DevOps mühendisliği benim çok sevdiğim iki şeyi bir araya getiriyordu. Kod yazmayı da seviyorum, sistem tasarlamayı da seviyorum. Bunun yanında oturup günlerce kod yazarak büyük bir proje geliştirmek ilgimi o kadar da çekmiyor. Biliyorsunuz otomasyon DevOps’un en önemli kısımlarından birisi. kendi özel hayatımda da günlük küçük işleri otomatik hale getirmek de hep ilgimi çekmiştir. Bu tarafı da benim ilgimi en çok çeken taraflarından birisi diyebilirim.
3) Türkiye’de DevOps bence henüz hakkettiği ilgiyi görmüyor. Daha da doğrusu şöyle söyleyeyim, DevOps henüz pek anlaşılamamış durumda. “Kod yazmayı beceremeyen DevOps’cu oluyor” dan tutun da “Eskiden full-stack vardı şimdi DevOps var” a kadar pek çok garip yorum duydum. Halbuki, DevOps genel anlamıyla yalnızca bir pozisyon değil, bir bakış açısı olarak değerlendirilmeli. Şirketinizde DevOps departmanı olmadan tabi ki yazılım projeleri yapabilirsiniz. Ama DevOps’un size katacağı artı noktalardan faydalanmadan ne kadar verimli olur, tartışılabilir. Yine de yavaş yavaş Türkiye’de de bu alanda güzel kariyer fırsatları oluşmaya başladığını görüyorum. Yurtdışında ise benim gördüğüm kadarıyla DevOps’cu eşittir Cloud mühendisi olmaya başlamış durumda. Bunun da çok doğru olmadığını düşünüyorum ama şimdilik gidişat oraya doğru gibi gözüküyor.
4) Bu benim için zor bir soru aslında. Tarafsız cevaplayabilir miyim bilmiyorum. Ben iyi bir yazılımcı veya DevOps’cu olmak için bilgisayar mühendisliği bitirmenin zorunlu olmadığını düşünüyorum. Ama tabi ki bunun sebebi benim de bilgisayar mühendisliği okumamış olmam :) Tabi ki mühendislik eğitimi temel kavramları oturtabilmek ve teorik bilgiyi doğru yorumlayabilmek için çok önemli. Bunu asla gözardı etmiyorum. Fakat okul eğitimi iyi bir DevOps’çu olmanız için size pek bir şey katmıyor. DevOps biraz da görece yeni bir alan olduğu için zaten okul müfredatlarında olmayabilir bile, emin değilim. Bence öncelikli olarak en ama en önemli eğitim Linux eğitimi. Bunun için Linux Academy’yi öneririm. Bunun dışında özel olarak önerebileceğim bir eğitim yok. Herkes gibi ben de Udemy ve Coursera gibi siteleri önerebilirim. Fakat alacağınız kurslar ve eğitimlerden çok sizi en çok geliştirecek şeyin kendi elinizin altındaki sistemleri kırmak, bozmak, yeniden kurmak, test etmek ve bunu cok fazla kere yapmak olduğunu düşünüyorum.
5) Son dönemde çok fazla kitap okuduğumu söyleyemeyeceğim ne yazık ki. Blog olarak da Docker, Kubernetes, AWS bloglarını takip ediyorum. Bunun dışında medium’da DevOps ile ilgili çok güzel yazılar yazan çok yetkin insanlar var. Aslında kitap veya blog takip etmektense Twitter üzerinden DevOps gurularını takip etmeyi tercih ediyorum diyebilirim.