DevOps, geliştiricilerin artık altyapı ve sürümden sorumlu olduğu anlamına geliyor - ancak bu değişimin arkasındaki itici güçler neler?


18

DevOps, geliştiricilerin artık altyapı ve sürümden sorumlu olduğu anlamına geliyor - ancak bu değişimin arkasındaki itici güçler neler?

Kartlarımı masaya koyacağım: Ben bir geliştiriciyim ve hem "DevOps" hem de kültür dışı alanlarda çalıştım. Altyapı ve sürümler ile KG ve ilgili tören hakkında endişelenmek, iyi kod yazmaktan büyük bir dikkat dağıtır.

Ancak endüstri bu yönde ilerliyor, bunun nedenleri neler? "Eski" rol uzmanlığı modeli hangi sorunları doğurdu?


4
Başka şeyler yaptığınızdan veya kod miktarınızın düştüğünden kod kalitenizin düştüğünü mü söylüyorsunuz ?
Caleth

1
Kartlarınızı masadan çıkarın lütfen. Bu sadece olduğu gibi bir şikayet gibi okur.
svidgen

7
@svidgen Bu soru tamamen bir rant olsaydı, bu farklı olurdu, ancak OP fikirlerini ifade etme ve mükemmel geçerli bir soru sorma hakkına sahiptir.
Robbie Dee

1
@robbie eminim. Yine de cevap verdiğimi fark edeceksiniz ... ancak, bu sorunun "görüş" kısmı vücudun yarısından fazlasını tüketir, aynı temel soru arasında tekrarlanır ve bu durumda temel sorunun potansiyel saflığından uzaklaşır. Ama evet. Hala cevaplamaya değer ..
svidgen

Yanıtlar:


19

Ana sebep buluttur.

Eskiden kodunuzun diskete ve daha sonra CD'ye gönderilmesi ve daha sonra bir sunucuya dağıtılması ve daha sonra iki sunucuya (esneklik için) dağıtılmasıydı ... Ve tüm dağıtım elle yapılabilir böylece insanlar bunu yapmak için eğitildiler.

Bugün, kodunuz genellikle düzinelerce veya yüzlerce sunucuya gidiyor. Bu sunuculara sağlama, yapılandırma ve dağıtma işlemleri bir insan tarafından el ile gerçekleştirilemez. Artık Şef veya akrabalarını kullandığınız için sistem yöneticilerinizin bu işlemi otomatikleştirmek için yeterli komut dosyasını bilmesine ihtiyacınız var. Ama açıkçası, bunu yapabilecek kadar sys yöneticileri yoktu. Böylece geliştiriciler boşluğu almak için içeri çekildi.

Ve evet, geliştiricilerin gittikçe artan gereksinimlerine daha fazla beceri eklemek doğal olarak başka yerlerde yeteneklerini azaltacaktır. Fikir inşa / bırakma sürecine dev fikir izin onlar daha iyi sorunları tahmin veya onu geliştirmek için özerkliğe sahip olmasıdır. Fikir, sürüm kazanımlarının kod yazma kayıplarını geçtiği için her şeyin kalitesinin artmasıdır.

İnsanların ortaya çıkardığı sıklıkta takasın buna değeceğine kuşkuluyum.


2
Beni " Ana sebep popo " olarak kaybettin .
tedder42

15

Çeşitli kuruluşların DevOps'a geçmesinin birçok farklı nedeni vardır.
Sık karşılaşanları listelemeye çalışacağım.

Döngüyü değiştirme süresini kısaltın
talebinde bulunmak ve aslında kuruluşta kullanılması ve kullanılması arasında genellikle uzun bir zaman vardır. Birincisi, geliştiriciler tarafından geliştirme döngülerinden birinde, teslim edildikten sonra ise operasyonların serbest bırakma döngülerinden birinde planlanır. Her iki döngü de testleri içerir ve bir sorun olması durumunda her iki döngü de sıfırlanır. Geliştirme ve operasyon departmanlarını entegre ederek her iki süreci de düzenleyebiliriz.

Yazılım ve Donanım Sorunları
Bugs ve Daffy'nin ördek mevsimi mi yoksa tavşan mevsimi mi olduğunu tartıştığı Bugs Bunny çizgi filmini hatırlıyor musunuz? Şimdi, bunun geliştiricilerin bir donanım sorunu olduğunu ve operasyonların bir yazılım sorunu olduğunu iddia ettiği geliştiriciler ve operasyonlarla yaptığımızı hayal edin. Son kullanıcı için bu farksız bir ayrımdır. Sadece düzeltilmesini istiyorlar.
Geliştiricileri ve işlemleri bir araya getirerek sorunları çözmek zorunda kalacaklar. Ve bunun bir yazılım ve donanım sorunu olduğu ortaya çıkabilir.

Biz ve Onlar Geliştiriciler ve operasyonlar arasında benzer bir şey olması gerekir, çünkü hem alanlar olgunlaştıkça hem de süreçler daha fazla resmileştirildikçe ve standartlaştıkça, bu departmanlar arasındaki mesafe artmaktadır. Geleneksel modelle ilgili sorunlardan biri, geliştiriciler ve operasyonlar için "biz" ve "onlar" gibi görünüyor. Her ikisi de diğerinin sorumluluklarının zorluğunu tam olarak anlamıyor.
Birçok şirkette, test uzmanları ve geliştiriciler arasındaki mesafe, farklı departmanlar oldukları ve geliştirme döngüsünün gittikçe daha resmi ve standart hale geldiği için büyüyordu.
Agile'ın gelmesiyle birlikte, geliştiriciler ve testçiler birlikte daha yakın çalışıyorlar ve birbirimizin bakış açısını geliştirme döngüsü hakkında görmeye başladık ve hatta buna saygı duymaya başladık.

Beklentiler /
Üstler DevOps ile her iki uzmanlık alanı da geleneksel olarak diğeri tarafından gerçekleştirilen bazı becerileri öğrenecektir. Hiç kimse bir sistem yöneticisinin bir yazılım mühendisi veya bir geliştirici olarak ağ mühendisi olmasını beklemez, ancak her ikisinin de diğerinin sorumluluklarını alması beklenir. Bu, gerçekten fazladan ellere ihtiyacınız olduğunda, orada oldukları anlamına gelir.

Geliştiriciler için bazı kesin artışlar var: artık test ortamlarınız üzerinde daha fazla kontrole sahipsiniz, yazılımın kullanıcılara dağıtılmasını ve kuruluşunuzda zanaat sevginizi paylaşmak için daha fazla kişinin olmasını daha kolay bulacaksınız.


4
+1 - Çünkü sadece kodla değil son kullanıcıyla ilgilidir.
JeffO

3

Kalite kodu yazmak yeterli değildir. Siz sorunun ya da çözümün bir parçasısınız.

Birçok programcı için, bazı son kullanıcılar tarafından ödenen yazılımlar yazıyorsunuz. Kalite kodu yazmak iyi bir şeydir, ancak aynı zamanda müşterilerin / yöneticilerin her zaman hızlı ve hızlı yapmanız gerektiğini varsaydığı bir şeydir. Bir marangoz tahtaları doğru bir şekilde kesiyor demek gibi, ama aslında birisinin ödemek istediği bir şey mi inşa ediyorsunuz?

DevOps, geliştiricilere daha fazla kontrol sağlar ve umarım kodlarının sonuçla aynı çizgide olmasını sağlar. Operasyon sürecini otomatikleştirmek için kim en uygun? Son kullanıcı memnuniyeti ana ölçüm çubuğudur. Sadece kalite kodu yazmakla kalmaz, aynı zamanda müşteriyi de tatmin etmelidir. Üzgünüz, ama hiç kimse kod satırlarını kullanmaya geri dönmeyecek. Ortalama bir ev alıcısının, ağacı kesip kendi panolarınızı yapmayı umursamaması gibi, kendi ORM çerçevenizi sıfırdan oluşturup oluşturmamanız umursamaz. Herkes "yükseltme" onları varsayılan olarak geri ayarladığından, tüm yapılandırma dosyalarını yeniden yapmak istiyor mu?

Geliştirici pirzolalarınızı göstermek ister misiniz? İnsanların satın almak istediği ve kullanıcı deneyiminin tamamını içeren bir şey oluşturun. Kalite kodu yazmanız harika, ancak maalesef, ödeme yapan müşterinin memnuniyetine bırakılmıyorsa bir bonus alamayabilirsiniz. KG'yi suçlamaktan çekinmeyin, ancak şirketinizin size daha fazla ödeme yapmak için yeterli parası yok.


2
Eminim iyi yazılım devs işe zor biliyorum. Ve şimdi onların iyi iş analistleri olmaları, KG töreni ile ilgilenmeleri ve tahliye süreçleri hakkında endişelenmeleri gerekiyor. Yeni barı karşılayan kişi sayısı kaybolacak kadar az olacaktır.
Ben

2
@ Ben: "ve şimdi" yoktur; bunlar DevOps'un yeni bir şey olduğunu düşünmeden ve terimi icat etmeden önce iyi geliştiricilerin onlarca yıl yaptıkları şeyler. Bir geliştirici olarak sizin göreviniz, birisinin kodunuzu yazdıktan sonra ele alması gereken kişilerin zor zamanları olmadığından emin olmak için bir çözüm ihtiyacından kaynaklanan sorunları çözmektir. Bunlardan herhangi birini gözden geçirin ve kimse yuvarlak deliklere sürmek için on kiloluk bir kızağa ihtiyaç duyarlarsa kare mandallarınızın ne kadar güzel bir şekilde hazırlandığını umursamaz.
Blrfl

Bu, uzmanlaşmaya karşı bir argüman gibi görünüyor. Bir kişinin tüm esnafın hiç biri ustası olması gerektiğini. Bu, başka hiçbir endüstride önerilmiyor, bir ev inşa etme hakkındaki her küçük şeyi anlamaya çalışan elektrikçilik-duvarcı-tesisatçı-çatıcılarınız yok
Richard Tingle

2
@RichardTingle: Kimse her şeyi anlamanız gerektiğini söylemiyor, ancak ürününüzün kullanıldığında dokunacağı şeyleri anlamanız gerekiyor. Bir tesisatçı, elektrik teknisyenlerinin ne yaptığını bilmeli - ya da en azından biriyle çalışmalı - bunu yapmak için el aletleri olsa bile bir soğuk su borusunu bir kesici kutusundan geçirmenin güvenli olmadığını bilmelidir.
Blrfl

Soruyu cevaplamaya çalışmak bile zahmet etmiyor. -1
RubberDuck

2

Agile & Scrum ile el ele giden bir şey. Artık açıkça tanımlanmış iş rolleri yok - herkes bir "geliştirici".

Ve sadece ops değil. Geliştiriciler genellikle iş analizi, test, veritabanı yönetimi ve yapı yöneticisi rolleri üstlenmek zorundadır - liste uzar.

Sorunun merkezinde çalkalama diyebileceğiniz şey vardı . Bir projede yer alan farklı rollerin sayısı arttıkça, daha fazla toplantı, yanlış anlama ve kaynak çatışması meydana geldi. Yazılımları hızlı bir şekilde kullanıcıların önüne almak son oyun ve bunun yoluna girebilecek her şey biraz yol kenarında gitti.

Bu tamamen kötü bir şey değil. Şu anda reçel çok zayıflasa da ortalama geliştiriciniz yeteneklerini genişletiyor . Ayrıca kodlayıcılar ve sunucu yöneticileri arasında konuşlandırmalar armut yoluna çıktığında sorunların nerede olduğu konusunda tartışmalar çıkarır. Geliştiriciler genellikle en son teknolojiye sahip çözümleri ortaya çıkarmak ister ve sunucu yöneticileri genellikle kurulum kümesi ile birlikte sunulana kadar yönetici POV'sundan ne anlama geldiğini bilmezler.

Daha parlak ve daha ileri görüşlü şirketler nihayet T şeklindeki insanların iyi bir şey olduğunu fark etmeye başlıyorlar . Bununla birlikte, iyi bir şey olduklarını düşünmek ve bunun daha önce geleneksel bir kültürün benimsenmiş olduğu yerde sihirli bir şekilde gerçekleşmesini beklemek arasında bir fark vardır .


-1 "artık açıkça tanımlanmış roller değil - herkes bir geliştiricidir." Bu tam olarak doğru değil. Bir scrum takımının geliştiriciler, grafik sanatçılar, BT adamları, vb. İçeren çeşitli insanlardan oluşması gerekiyor. ayrı bölümler.
Andy

1
@Andy , scrum kılavuzunu tekrar okumanızı öneririm : Scrum, kişi tarafından yapılan iş ne olursa olsun, Geliştirme Ekibi üyeleri için Geliştirici dışında hiçbir başlık tanımaz; bu kuralın istisnası yoktur . İnsanlar elbette uzmanlaşıyorlar, ancak doğası gereği, kendi kendini organize eden bir varlık olması gerekiyordu.
Robbie Dee

Uzmanlığı olan birini Photoshop'ta grafik oluşturmak veya rolünü çeviren biri olarak adlandırdığınızda, bir geliştirici yazılım projelerinde geliştirici olarak yanıltıcıdır, yazılım geliştiricisi olarak evrensel olarak anlaşılmaktadır. Scrum kılavuzu bu ifadeyle yanlıştır.
Andy

0

Emin fazla geliştiriciler için birkaç iyi nedenler daha vardır değilim ayrıca operasyonları ve kalite kontrolü (bazen) yönetmek. İşte bunlardan üçü:

  • İlgi
    Bazı geliştiriciler aslında ürünün tüm yönleriyle çalışmak ister . Eğer bu konuda iyi iseler ve takımdaki bir boşluğu dolduruyorlarsa veya diğer rollerde mevcut ekip üyelerine iyi destek veriyorlarsa, onları durdurmak için herhangi bir sebep olmayabilir.
  • Maliyet
    Büyük şirketler uzman çalışanları karşılayabilir. Küçük şirketler bazen yapamazlar. Bu yerlerden bazıları, işlerini kapıdan çıkarmak için 1 veya belki 2 veya 3 geliştirici kiralayabilir .
  • Proje Büyüklüğü
    Her proje çok kişilikli bir proje değildir. "Küçük" bir uygulama oluşturuyorsanız, tamamlanması için 1'den fazla kişinin çalışması çok basit olabilir. Dahası, birçok kişinin belirli rollerde çalıştığı küçük projeler korkutucu . Hiç kimse için çalışmanız var - bile göze onlara 6 aydır o boş oturmak için tüm etrafta tutmak, iyi olanları kalmayacak. Eğer sıkılmazlarsa korkarlar, yoksa hiçbir şey için biraz ödediğinizi fark edersiniz. Her iki durumda da, iyi çalışanlarınız ayrılacak ve herkesten sizden uzak durmalarını söyleyecektir.

... ve diğer nedenler, eminim.


0

"Altyapı ve sürümler ile KG ve ilgili tören hakkında endişelenmek, iyi kod yazmaktan büyük bir dikkat dağıtır."

Bence DevOps, altyapı ve sürümler hakkında endişe duyduğunu ve KG'nin iyi kod yazdığını söylüyor.

DevOps dışı kültürlerde çalışan önceki görevlerde, tartışmasız bir DevOps kültürünün önleyebileceği çok sayıda sorun yaşadım; temsili olmayan platformlarda geliştirilen kodla ilgili performans sorunları, geliştiricilerin bir istemci tarafından kullanılan karakter kodlamalarından habersiz oldukları karakter kodlama sorunları, bir dereceye kadar tahmin edilmeden Ops ekibi için elle kodlanmış ve yetersiz dağıtım talimatları -iş.

Şimdi, hem Dev hem de Ops taraflarındaki artan uzmanlaşmanın bunlardan bazılarının üstesinden gelmemize izin verdiğini iddia edebilirsiniz, ancak yine de çok sayıda şey ancak ekiplerimiz arasındaki bazı bilgi ve çalışma paylaşımıyla çözülebilir.


0

DevOps'un "Dev şimdi de Ops yap" anlamına gelmesi gerekmez. Başlangıçta "Dev ve Ops insanları bir takımda sıkı bir şekilde birlikte çalışıyorlar " anlamına geliyordu . Bu does şeyleri otomatik hale programlama çeşit gerektirdiğinden Ops insanlar, daha Devs gibi olmaya gerekiyor ve eski manuel yolu kesmek (bu noktada daha ayrıntılı açıklama için diğer cevaplar bakın) etmediğini ortalama.

Gönderen Vikipedi :

DevOps (geliştirme ve operasyonların kırpılmış bir bileşimi), yazılım teslimatı ve altyapı değişiklikleri sürecini otomatikleştirirken hem yazılım geliştiricilerinin hem de diğer bilgi teknolojisi (BT) profesyonellerinin işbirliğini ve iletişimini vurgulayan bir kültür, hareket veya uygulamadır.

Benim düşünceme göre aslında bir Dev olarak aynı eski sorumluluklara ve ek olarak Operasyonların sorumluluklarına sahipseniz , bu yönetim kısmında yanlış bir hesaplama gibi görünüyor. Bir şeyleri otomatikleştirerek daha az Ops insana ihtiyacınız olacak ve bu yüzden aslında maliyet tasarrufu sağlayabilirsiniz. Ancak DevOps kesinlikle "Tüm Ops insanlarından kurtulacak ve Devs'i ek çalışmaya bırakalım" anlamına gelmez.

Buzzwords'de olduğu gibi, bir Anlamsal Yayılma meydana gelir ve aniden insanlar "Devs'i Ops yapsın, sanırım para biriktirebiliriz ..." diye düşünür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.