DevOps'a neden ihtiyaç duyulur ve DevOps uzmanları kimlerdir?

Bir uygulama çalışmadığında meslektaşlarınızdan duymak isteyeceğiniz son şey "sorun sizden yana" sözüdür. Sonuç olarak kullanıcılar sıkıntı çekiyor ve arızadan ekibin hangi kısmının sorumlu olduğunu umursamıyorlar. DevOps kültürü, son ürüne yönelik ortak bir sorumluluk etrafında geliştirme ve desteği bir araya getirmek için tam olarak ortaya çıktı.

DevOps kavramında hangi uygulamalar yer alıyor ve bunlara neden ihtiyaç duyuluyor? DevOps mühendisleri ne yapar ve neler yapabilmelidirler? EPAM uzmanları bu ve diğer soruları yanıtlıyor: Sistem mühendisi ve DevOps müjdecisi Kirill Sergeev ve önde gelen sistem mühendisi ve şirketin DevOps ekiplerinden birinin koordinatörü Igor Boyko.

DevOps'a neden ihtiyaç duyulur ve DevOps uzmanları kimlerdir?

DevOps'a neden ihtiyaç duyulur?

Daha önce geliştiriciler ve destek (sözde operasyonlar) arasında bir engel vardı. Kulağa çelişkili geliyor ama aynı şeyi yapmalarına rağmen farklı hedefleri ve KPI'ları vardı. Geliştirmenin amacı, iş gereksinimlerini mümkün olduğunca hızlı bir şekilde uygulamak ve bunları çalışan bir ürüne eklemekti. Destek, uygulamanın istikrarlı bir şekilde çalışmasını sağlamaktan sorumluydu ve herhangi bir değişiklik istikrarı riske atıyordu. Bir çıkar çatışması var; DevOps'un bunu çözdüğü ortaya çıktı.

DevOps nedir?

Bu iyi bir soru ve tartışmalı bir soru: Dünya henüz bu konuda nihai olarak anlaşmaya varmadı. EPAM, DevOps'un teknolojileri, süreçleri ve bir ekip içindeki etkileşim kültürünü birleştirdiğine inanıyor. Bu dernek, son kullanıcılara sürekli olarak değer sunmayı amaçlamaktadır.

Kirill Sergeyev: “Geliştiriciler kodu yazar, test uzmanları onu inceler ve yöneticiler son ürünü üretime dağıtır. Uzun bir süre boyunca ekibin bu kısımları dağınık durumdaydı ve daha sonra onları ortak bir süreç aracılığıyla birleştirme fikri ortaya çıktı. DevOps uygulamaları bu şekilde ortaya çıktı.”

Geliştiricilerin ve sistem mühendislerinin birbirlerinin çalışmalarıyla ilgilenmeye başladıkları gün geldi. Üretim ve destek arasındaki engel ortadan kalkmaya başladı. Uygulamaları, kültürü ve ekip etkileşimini içeren DevOps böyle ortaya çıktı.

DevOps'a neden ihtiyaç duyulur ve DevOps uzmanları kimlerdir?

DevOps kültürünün özü nedir?

Gerçek şu ki, nihai sonucun sorumluluğu her ekip üyesine aittir. DevOps felsefesindeki en ilginç ve zor şey, belirli bir kişinin yalnızca kendi çalışma aşamasından değil, tüm ürünün nasıl çalışacağından da sorumlu olduğunu anlamaktır. Sorun kimseden kaynaklanmıyor; paylaşılıyor ve her ekip üyesi sorunun çözülmesine yardımcı oluyor.

DevOps kültüründe en önemli şey yalnızca DevOps uygulamalarını uygulamak değil, sorunu çözmektir. Üstelik bu uygulamalar “birinin tarafında” değil, ürünün tamamında uygulanıyor. Bir projenin kendi başına bir DevOps mühendisine ihtiyacı yoktur; bir soruna çözüm bulunması gerekir ve bir DevOps mühendisinin rolü, farklı uzmanlıklara sahip birkaç ekip üyesi arasında dağıtılabilir.

DevOps uygulamalarının türleri nelerdir?

DevOps uygulamaları yazılım yaşam döngüsünün tüm aşamalarını kapsar.

İgor Boyko: “İdeal durum, DevOps uygulamalarını projenin başlangıcında kullanmaya başlamamızdır. Uygulamanın nasıl bir mimari peyzaja sahip olacağını, nerede konumlanacağını ve nasıl ölçekleneceğini mimarlarla birlikte planlıyor ve platform seçimini yapıyoruz. Günümüzde mikro hizmet mimarisi moda - bunun için bir düzenleme sistemi seçiyoruz: uygulamanın her öğesini ayrı ayrı yönetebilmeniz ve diğerlerinden bağımsız olarak güncelleyebilmeniz gerekir. Bir diğer uygulama ise “kod olarak altyapı”dır. Proje altyapısının sunucularla doğrudan etkileşim yerine kod kullanılarak oluşturulduğu ve yönetildiği bir yaklaşımın adıdır.

Daha sonra geliştirme aşamasına geçiyoruz. Buradaki en büyük uygulamalardan biri CI/CD oluşturmaktır: Geliştiricilerin değişiklikleri ürüne hızlı, küçük porsiyonlarda, daha sık ve sorunsuz bir şekilde entegre etmelerine yardımcı olmanız gerekir. CI/CD, kod incelemesini, ana kopyanın kod tabanına yüklenmesini ve uygulamanın test ve üretim ortamlarına dağıtılmasını kapsar.

CI/CD aşamalarında kod, kalite kapılarından geçer. Onların yardımıyla geliştiricinin iş istasyonundan çıkan kodun belirlenen kalite kriterlerini karşılayıp karşılamadığını kontrol ederler. Birim ve kullanıcı arayüzü testleri buraya eklenir. Hızlı, sorunsuz ve odaklanmış ürün dağıtımı için uygun dağıtım türünü seçebilirsiniz.

Bitmiş ürünün desteklenmesi aşamasında DevOps uygulayıcılarının da yeri vardır. İzleme, geri bildirim, güvenlik ve değişiklikleri tanıtmak için kullanılırlar. DevOps, tüm bu görevlere sürekli iyileştirme perspektifinden bakar. Tekrarlayan işlemleri en aza indiriyor ve otomatikleştiriyoruz. Buna geçişler, uygulama genişletme ve performans desteği de dahildir."

DevOps uygulamalarının faydaları nelerdir?

Modern DevOps uygulamaları hakkında bir ders kitabı yazıyor olsaydık ilk sayfada üç nokta olurdu: otomasyon, sürümlerin hızlandırılması ve kullanıcılardan hızlı geri bildirim.

Kirill Sergeyev: “İlk şey otomasyondur. Ekipteki tüm etkileşimleri otomatikleştirebiliriz: kodu yazdık - kullanıma sunduk - kontrol ettik - kurduk - geri bildirim topladık - başlangıca geri döndük. Bütün bunlar otomatiktir.

İkincisi, sürümün hızlandırılması ve hatta geliştirmenin basitleştirilmesidir. Ürünün mümkün olan en kısa sürede pazara girmesi ve rakiplerine göre daha erken fayda sağlamaya başlaması müşteri için her zaman önemlidir. Ürün teslim süreci sonsuz şekilde geliştirilebilir: süreyi kısaltır, ek kontrol işaretleri ekler, izlemeyi geliştirir.

Üçüncüsü, kullanıcı geri bildiriminin hızlanmasıdır. Yorumları olursa hemen düzenleme yapıp uygulamayı hemen güncelleyebiliriz.”

DevOps'a neden ihtiyaç duyulur ve DevOps uzmanları kimlerdir?

"Sistem mühendisi", "inşaat mühendisi" ve "DevOps mühendisi" kavramları nasıl ilişkilidir?

Bunlar örtüşüyor ancak biraz farklı alanlara aitler.

EPAM'da sistem mühendisi bir pozisyondur. Asistandan baş uzmana kadar farklı seviyelerde bulunurlar.

Bir inşaat mühendisi daha çok bir projede gerçekleştirilebilecek bir roldür. CI/CD'den sorumlu kişilere bu ad verilir.

DevOps mühendisi, bir projede DevOps uygulamalarını uygulayan bir uzmandır.

Hepsini özetlersek şöyle bir şeyle karşılaşıyoruz: Sistem mühendisi konumundaki bir kişi, bir projede inşaat mühendisi rolünü üstleniyor ve orada DevOps uygulamalarının hayata geçirilmesinde yer alıyor.

Bir DevOps mühendisi tam olarak ne yapar?

DevOps mühendisleri bir projeyi oluşturan tüm parçaları bir araya getirir. Programcıların, test uzmanlarının, sistem yöneticilerinin çalışmalarının ayrıntılarını biliyorlar ve işlerini basitleştirmeye yardımcı oluyorlar. İşletmenin ihtiyaçlarını ve gereksinimlerini, geliştirme sürecindeki rolünü anlarlar ve süreci müşterinin çıkarlarını dikkate alarak oluştururlar.

Otomasyon hakkında çok konuştuk; DevOps mühendislerinin öncelikle ve en önemli uğraştığı konu budur. Bu çok büyük bir nokta, diğer şeylerin yanı sıra ortamın hazırlanmasını da içeriyor.

Kirill Sergeyev: “Güncellemelerin ürüne uygulanmadan önce üçüncü taraf bir ortamda test edilmesi gerekiyor. DevOps mühendisleri tarafından hazırlanmıştır. Projenin tamamına bir DevOps kültürü aşılıyorlar: DevOps uygulamalarını projelerinin tüm katmanlarına tanıtıyorlar. Bu üç prensip: otomasyon, basitleştirme, hızlandırma; ulaşabilecekleri her yere getiriyorlar.”

Bir DevOps mühendisi neleri bilmelidir?

Genel olarak farklı alanlardan bilgi sahibi olması gerekir: programlama, işletim sistemleriyle çalışma, veritabanları, montaj ve konfigürasyon sistemleri. Bunlar, bulut altyapısı, orkestrasyon ve izleme sistemleriyle çalışma yeteneği ile tamamlanmaktadır.

1. Programlama dilleri

DevOps mühendisleri otomasyon için birkaç temel dil biliyor ve örneğin bir programcıya şunları söyleyebilir: “Kodu elle değil, her şeyi otomatikleştiren komut dosyamızı kullanarak yüklemeye ne dersiniz? Bunun için bir config dosyası hazırlayacağız, hem sizin hem de bizim okumamız kolay olacak, istediğimiz zaman değiştirebileceğiz. Ayrıca kimin, ne zaman ve neden değişiklik yaptığını da göreceğiz.”

Bir DevOps mühendisi şu dillerden birini veya birkaçını öğrenebilir: Python, Groovy, Bash, Powershell, Ruby, Go. Bunları derinlemesine bilmek gerekli değildir - sözdiziminin temelleri, OOP ilkeleri ve otomasyon için basit komut dosyaları yazma yeteneği yeterlidir.

2. İşletim sistemleri

Bir DevOps mühendisi, ürünün hangi sunucuya kurulacağını, hangi ortamda çalışacağını ve hangi hizmetlerle etkileşime gireceğini anlamalıdır. Windows veya Linux ailesinde uzmanlaşmayı seçebilirsiniz.

3. Versiyon kontrol sistemleri

Sürüm kontrol sistemi bilgisi olmadan DevOps mühendisi hiçbir yerde olamaz. Git şu anda en popüler sistemlerden biridir.

4. Bulut sağlayıcıları

AWS, Google, Azure - özellikle Windows yönünden bahsediyorsak.

Kirill Sergeyev: “Bulut sağlayıcıları bize CI/CD'ye mükemmel uyum sağlayan sanal sunucular sağlıyor.

On fiziksel sunucunun kurulumu yaklaşık yüz manuel işlem gerektirir. Her sunucunun manuel olarak başlatılması, gerekli işletim sisteminin kurulması ve yapılandırılması, uygulamamızın bu on sunucuya kurulması ve ardından her şeyin on kez iki kez kontrol edilmesi gerekir. Bulut hizmetleri bu prosedürü on satırlık kodla değiştirir ve iyi bir DevOps mühendisinin bunlarla çalışabilmesi gerekir. Bu hem müşteri hem de şirket için zamandan, emekten ve paradan tasarruf sağlıyor."

5. Düzenleme sistemleri: Docker ve Kubernetes

Kirill Sergeyev: “Sanal sunucular, her birinde uygulamamızı kurabileceğimiz konteynerlere bölünmüştür. Çok sayıda konteyner olduğunda bunları yönetmeniz gerekir: birini açın, diğerini kapatın, bir yere yedekleme yapın. Bu oldukça karmaşık hale gelir ve bir düzenleme sistemi gerektirir.

Önceden, her uygulama ayrı bir sunucu tarafından yönetiliyordu; işletimindeki herhangi bir değişiklik, uygulamanın hizmet verilebilirliğini etkileyebilir. Konteynerler sayesinde uygulamalar izole edilir ve her biri kendi sanal makinesinde ayrı ayrı çalışır. Bir arıza meydana gelirse, sebebini arayarak zaman kaybetmenize gerek yoktur. Eski kabı imha edip yenisini eklemek daha kolay.”

6. Konfigürasyon sistemleri: Chef, Ansible, Puppet

Tüm bir sunucu filosunun bakımını yapmanız gerektiğinde, aynı türden birçok işlemi yapmanız gerekir. Uzun ve zordur ve manuel çalışma aynı zamanda hata olasılığını da artırır. Yapılandırma sistemlerinin kurtarmaya geldiği yer burasıdır. Onların yardımıyla programcılar, DevOps mühendisleri ve sistem yöneticileri için okunması kolay bir komut dosyası oluştururlar. Bu script sunucularda aynı işlemlerin otomatik olarak yapılmasına yardımcı olur. Bu, manuel işlemleri (ve dolayısıyla hataları) azaltır.

Bir DevOps mühendisi nasıl bir kariyer geliştirebilir?

Hem yatay hem de dikey olarak geliştirebilirsiniz.

İgor Boyko: “Yatay gelişim açısından bakıldığında DevOps mühendisleri artık en geniş beklentilere sahip. Her şey sürekli değişiyor ve çeşitli alanlarda beceriler geliştirebilirsiniz: sürüm kontrol sistemlerinden izlemeye, konfigürasyon yönetiminden veritabanlarına kadar.

Bir çalışan, bir uygulamanın yaşam döngüsünün tüm aşamalarında - geliştirmeden desteğe kadar - nasıl çalıştığını anlamakla ilgileniyorsa, sistem mimarı olabilirsiniz.

Nasıl DevOps mühendisi olunur?

  1. Phoenix Projesi ve DevOps El Kitabı'nı okuyun. Bunlar DevOps felsefesinin gerçek temelleridir; ilki bir kurgu çalışmasıdır.
  2. Yukarıdaki listeden teknolojileri öğrenin: kendi başınıza veya çevrimiçi kurslar aracılığıyla.
  3. Açık kaynaklı bir projeye DevOps mühendisi olarak katılın.
  4. Kişisel projelerinizde ve iş projelerinizde DevOps uygulamalarını uygulayın ve sunun.

Kaynak: habr.com

Yorum ekle