Sistem Yöneticileri Neden DevOps Mühendisi Olmalı?

Sistem Yöneticileri Neden DevOps Mühendisi Olmalı?

Hayatta öğrenmek için bugünden daha iyi bir zaman olamaz.


Yıl 2019 ve DevOps her zamankinden daha alakalı. Anabilgisayar devri gibi sistem yöneticilerinin devrinin de bittiğini söylüyorlar. Peki bu gerçekten böyle mi?
BT'de sıklıkla olduğu gibi durum değişti. DevOps metodolojisi ortaya çıktı ancak sistem yöneticisi becerisine sahip bir kişi yani Ops olmadan var olamaz.

DevOps yaklaşımı modern biçimini almadan önce kendimi Ops olarak sınıflandırıyordum. Ve bir sistem yöneticisinin henüz ne kadar çok şeyi yapamayacağını, öğrenmek için ne kadar az zamanının kaldığını fark ettiğinde neler yaşadığını çok iyi biliyorum.

Sistem Yöneticileri Neden DevOps Mühendisi Olmalı?

Ama gerçekten bu kadar korkutucu mu? Bilgi eksikliğinin büyük bir sorun olarak algılanmaması gerektiğini söyleyebilirim. Bu daha çok profesyonel bir mücadele.

Web ölçeğindeki ürünler Linux veya diğer açık kaynaklı yazılımlara dayanmaktadır ve piyasada bunları koruyabilecek kişi sayısı giderek azalmaktadır. Talep şimdiden bu alandaki profesyonellerin sayısını aştı. Bir sistem yöneticisi artık beceri düzeyini geliştirmeden çalışmaya devam edemeyecek. Birden fazla sunucuyu/düğümü yönetmek için otomasyon becerilerine sahip olmalı ve ortaya çıkan sorunları çözmek için bunların nasıl çalıştıklarını iyi anlayabilmelidir.

DevOps ekibinin bir üyesi olmadan önce oldukça uzun ama ilginç bir yolculuktan geçmeniz, yeni teknolojileri öğrenmeniz ve sistemi DevOps standartlarına göre sürdürmek için gerekli çeşitli araçları öğrenmeniz gerekiyor.

Peki bir sistem yöneticisi alışılagelmiş çalışma yaklaşımından yeni DevOps kavramına nasıl geçebilir? Her şey her zamanki gibi: önce düşüncenizi değiştirmeniz gerekiyor. Son on-yirmi yıldır takip ettiğiniz yaklaşımdan vazgeçip farklı şeyler yapmaya başlamak kolay değil ama gerekli.

Öncelikle DevOps'un bir şirketteki belirli bir pozisyon değil, bir dizi spesifik uygulama olduğunu anlamak önemlidir. Bu uygulamalar, yalıtılmış sistemlerin dağıtılmasını, hata ve hatalardan kaynaklanan zararın azaltılmasını, sık ve zamanında yazılım güncellemelerini, geliştiriciler (Dev) ve yöneticiler (Ops) arasında iyi kurulmuş etkileşimi ve ayrıca yalnızca kodun değil, aynı zamanda sürekli olarak test edilmesini de içerir. ayrıca süreç içindeki tüm yapı sürekli entegrasyon ve teslimat (CI/CD).

Düşünce biçiminizi değiştirmenin yanı sıra, uygulamaların, hizmetlerin ve yazılımların sürekli entegrasyonu ve sunumu için altyapının bakımını nasıl yapacağınızı ve istikrarlı çalışmasını, güvenilirliğini ve kullanılabilirliğini nasıl sağlayacağınızı öğrenmeniz gerekir.

Bir Operasyon uzmanı olarak eksik olabileceğiniz şey programlama becerileridir. Artık sistem yöneticilerinin bir sunucuya yamaları otomatik olarak yüklemek, dosyaları ve hesapları yönetmek, sorunları gidermek ve belgeleri derlemek için kullandıkları komut dosyalarının (komut dosyalarının) yazılmasının artık modası geçmiş olduğu kabul ediliyor. Komut dosyası oluşturma nispeten basit durumlarda hala geçerlidir ancak DevOps, uygulama, test, derleme veya dağıtım gibi büyük ölçekli sorunları çözmekle ilgilidir.

Bu nedenle otomasyonu öğrenmek istiyorsanız geliştirici olmasanız bile en azından biraz programlama konusunda uzmanlaşmanız gerekir çünkü gelişiminizin bu aşamasında altyapı otomasyonu DevOps'ta bu beceriyi gerektirir.

Ne yapalım? Bir uzman olarak talepte kalabilmek için ilgili becerileri edinmeniz gerekir; örneğin Python gibi en az bir programlama diline hakim olmanız gerekir. Profesyonel olarak yönetimle ilgilenen bir kişi için bu, yalnızca geliştiricilerin program yaptığını düşünmeye alışkın olduğu için zor görünebilir. Uzman olmanıza gerek yok, ancak programlama dillerinden birinin bilgisi (Python, Bash veya hatta olabilir) powershell), kesinlikle bir avantaj olacaktır.

Programlamayı öğrenmek biraz zaman alır. Dikkatli ve sabırlı olmak, DevOps ekip üyeleri ve müşterileriyle iletişim kurarken her şeyden haberdar olmanıza yardımcı olacaktır. Günde yarım saat, bir saat veya daha fazla bir programlama dili öğrenmek ana hedefiniz olmalıdır.

Sistem yöneticileri ve DevOps uzmanları benzer sorunları çözüyor ancak önemli farklılıklar var. Bir DevOps mühendisinin yapabileceği her şeyi bir sistem yöneticisinin yapamayacağına inanılmaktadır. Sistem yöneticisinin sunucu sistemlerinin performansını yapılandırmaya, sürdürmeye ve sağlamaya daha çok odaklandığını ancak DevOps mühendisinin tüm bu arabayı ve başka bir küçük arabayı çektiğini söylüyorlar.

Peki bu ifade ne kadar doğrudur?

Sistem yöneticisi: sahada bir savaşçı

Bu makalede belirtilen farklılıklara ve benzerliklere rağmen hala sistem yönetimi ile DevOps arasında önemli bir fark olmadığına inanıyorum. Sistem yöneticileri her zaman DevOps uzmanlarıyla aynı işlevleri yerine getirmiştir, ancak daha önce kimse buna DevOps adını vermemişti. Özellikle herhangi bir görevle ilgili değilse, özellikle farklılık aramanın bir anlamı olmadığına inanıyorum. DevOps'un sistem yöneticisinden farklı olarak bir pozisyon değil, bir kavram olduğunu unutmayın.

Bir önemli noktaya daha dikkat edilmelidir ki, bu olmadan hem yönetim hem de DevOps hakkındaki konuşmalar eksik kalacaktır. Sistem yönetimi, genel anlamda bir uzmanın belirli becerilere sahip olduğunu ve çeşitli altyapı türlerine hizmet vermeye odaklandığını varsayar. Bunun evrensel bir çalışan olması anlamında değil, tüm yöneticilerin gerçekleştirdiği bir takım görevlerin olması anlamında.

Örneğin, zaman zaman bir tür teknik tamirci gibi davranmak, yani kelimenin tam anlamıyla her şeyi yapmak zorunda kalıyorlar. Ve eğer tüm organizasyon için böyle bir yönetici varsa, o zaman genellikle tüm teknik işleri o yapacaktır. Bu, yazıcıların ve fotokopi makinelerinin bakımından, yönlendiricileri ve anahtarları kurma ve yönetme veya güvenlik duvarını yapılandırma gibi ağla ilgili görevleri gerçekleştirmeye kadar herhangi bir şey olabilir.

Ayrıca donanım yükseltmeleri, günlük incelemesi ve analizi, güvenlik denetimleri, sunucu düzeltme eki uygulama, sorun giderme, temel neden analizi ve otomasyondan (genellikle PowerShell, Python veya Bash komut dosyaları aracılığıyla) sorumlu olacaktır. Bir kullanım örneği senaryolar Kullanıcı ve grup hesaplarının yönetimidir. Kullanıcılar neredeyse her gün görünüp kaybolduğundan, kullanıcı hesapları oluşturmak ve izinleri atamak son derece sıkıcı bir iştir. Komut dosyaları aracılığıyla otomasyon, anahtarların ve sunucuların yükseltilmesi gibi daha önemli altyapı görevleri ve yöneticinin çalıştığı şirketin karlılığını etkileyen diğer projeler için zaman kazandırır (her ne kadar BT departmanının doğrudan gelir üretmediği genel olarak kabul edilse de).

Sistem yöneticisinin görevi hiçbir şekilde zaman kaybetmemek ve şirket parasından tasarruf etmektir. Bazen sistem yöneticileri, örneğin Linux, Windows, veritabanları, depolama vb. yöneticilerini birleştirerek büyük bir ekibin üyeleri olarak çalışırlar. Çalışma programları da farklılık göstermektedir. Örneğin, günün sonunda bir saat dilimindeki vardiya, vakaları başka bir zaman dilimindeki bir sonraki vardiyaya aktarır, böylece süreçler durmaz (güneşi takip et); veya çalışanların normal bir çalışma günü sabah 9'dan akşam 5'e kadardır; veya XNUMX/XNUMX veri merkezinde çalışıyor.

Zamanla sistem yöneticileri stratejik düşünmeyi ve önemli konuları rutin görevlerle birleştirmeyi öğrendi. Çalıştıkları ekipler ve departmanlar genellikle kaynak sıkıntısı çekiyor ancak aynı zamanda herkes günlük görevlerini sonuna kadar tamamlamaya çalışıyor.

DevOps: geliştirme ve bakım bir arada

DevOps geliştirme ve bakım süreçlerine yönelik bir tür felsefedir. BT dünyasındaki bu yaklaşım gerçekten yenilikçi hale geldi.

DevOps çatısı altında bir yanda yazılım geliştirme ekibi, diğer yanda bakım ekibi bulunmaktadır. Bunlara genellikle ürün yönetimi uzmanları, test uzmanları ve kullanıcı arayüzü tasarımcıları da katılır. Bu uzmanlar birlikte, tüm şirketin verimliliğini desteklemek ve geliştirmek amacıyla yeni uygulamaları ve kod güncellemelerini hızlı bir şekilde kullanıma sunmak için operasyonları kolaylaştırıyor.

DevOps, yazılımın tüm yaşam döngüsü boyunca geliştirilmesi ve çalıştırılması üzerindeki kontrole dayanmaktadır. Bakım personeli geliştiricileri desteklemelidir ve geliştiricilerin görevi sistemlerde kullanılan API'lerden daha fazlasını anlamaktır. Hataları daha iyi ele alabilmeleri, sorunları çözebilmeleri ve servis teknisyenleriyle etkileşim kurabilmeleri için, arka planda ne olduğunu (yani donanım ve işletim sistemlerinin nasıl çalıştığını) anlamaları gerekir.

Sistem yöneticileri, en son teknolojileri öğrenmek istiyorlarsa ve yenilikçi fikir ve çözümlere açıklarsa DevOps ekibine geçebilirler. Daha önce de söylediğim gibi, tam teşekküllü programcılar olmalarına gerek yok, ancak Ruby, Python veya Go gibi bir programlama diline hakim olmaları, ekibin çok faydalı üyeleri olmalarına yardımcı olacaktır. Sistem yöneticileri geleneksel olarak tüm işi kendileri yapsa ve genellikle yalnız biri olarak algılansa da DevOps'ta süreçteki herkesin birbiriyle etkileşime girdiği tamamen zıt bir deneyime sahiptirler.

Otomasyon konusu giderek daha alakalı hale geliyor. Hem sistem yöneticileri hem de DevOps uzmanları hızlı bir şekilde ölçeklendirme, hataları azaltma ve mevcut hataları hızlı bir şekilde bulup düzeltmeyle ilgileniyor. Dolayısıyla otomasyon iki alanın birleştiği bir kavramdır. Sistem yöneticileri AWS, Azure ve Google Cloud Platform gibi bulut hizmetlerinden sorumludur. Sürekli entegrasyon ve teslimat ilkelerini ve aşağıdaki gibi araçların nasıl kullanılacağını anlamaları gerekir: Jenkins.

Ayrıca sistem yöneticilerinin aşağıdaki gibi yapılandırma ve yönetim araçlarını kullanması gerekir: yanıtlayıcı ', on veya yirmi sunucunun paralel dağıtımı için gereklidir.

Ana konsept kod olarak altyapı. Yazılım her şeydir. Aslında sistem yöneticisi mesleğinin alaka düzeyini kaybetmemesi için vurguyu biraz değiştirmeniz yeterli. Sistem yöneticileri hizmet işindedir ve geliştiricilerle etkili bir şekilde iletişim kurabilmelidir; bunun tersi de geçerlidir. Dedikleri gibi, bir kafa iyidir ama iki kafa daha iyidir.

Ve bu mekanizmadaki son detay ise Git. Git ile çalışmak bir sistem yöneticisinin geleneksel günlük sorumluluklarından biridir. Bu sürüm kontrol sistemi geliştiriciler, DevOps uzmanları, Agile ekipleri ve diğerleri tarafından yaygın olarak kullanılmaktadır. Eğer işiniz yazılım yaşam döngüsü ile ilgili ise mutlaka Git ile çalışacaksınız.

Git'in birçok özelliği var. Muhtemelen Git komutlarının tamamını asla öğrenmeyeceksiniz, ancak bunun neden yazılım iletişimi ve işbirliğinde temel bir öğe olduğunu tam olarak anlayacaksınız. Bir DevOps ekibinde çalışıyorsanız Git hakkında kapsamlı bilgi sahibi olmak çok önemlidir.

Sistem yöneticisiyseniz Git'i daha iyi incelemeniz, sürüm kontrolünün nasıl oluşturulduğunu anlamanız ve ortak komutları hatırlamanız gerekir: git durumu, git taahhüt -m, git ekle, git çekme, git push, git rebase, git şube, git diff ve diğerleri. Bu konuyu sıfırdan öğrenmenize ve belirli becerilere sahip bir profesyonel olmanıza yardımcı olabilecek birçok çevrimiçi kurs ve kitap vardır. Ayrıca harikalar da var Git komutlarıyla hile sayfaları, yani hepsini tıka basa doldurmanıza gerek yok, ancak Git'i ne kadar çok kullanırsanız o kadar kolay olur.

Sonuç

Sonuçta DevOps uzmanı mı olmanız gerektiğine yoksa sistem yöneticisi olarak kalmanın mı daha iyi olduğuna siz karar verirsiniz. Gördüğünüz gibi geçişi gerçekleştirmek için bir öğrenme eğrisi var, ancak ne kadar erken başlarsanız o kadar iyi. Bir programlama dili seçin ve aynı anda aşağıdaki gibi araçları öğrenin: Git (versiyon kontrolü), Jenkins (CI/CD, sürekli entegrasyon) ve yanıtlayıcı ' (yapılandırma ve otomasyon). Hangi seçeneği seçerseniz seçin, sürekli öğrenmeniz ve becerilerinizi geliştirmeniz gerektiğini unutmayın.

Kaynak: habr.com

Yorum ekle