Projeyi sunucu dosyasına manuel olarak dağıtmak en iyi yöntem midir?


26

Şimdilik çalıştığım firma henüz sürekli teslimat yapmıyor. Yine de projeyi el ile sunucuya, dosyaya dağıtıyoruz. Hangisi en iyi yöntemdir: Her bir dağıtım için bir proje eserini manuel olarak dağıtmak veya dosya-dosya dağıtımını sürdürmek?


12
Bu görev için uzaktan “tüm durumlar için tek bir uygulama” bile yoktur.
whatsisname,

26
Normalde “En iyi uygulama” ile ilgili bir soruyu neden kötü bir şey sormakla bağlantı kurardım? Bence hepimiz bunun en kötü uygulama olduğu konusunda hemfikir olabiliriz . "Sunucuya ateş yakmak" ın üzerinde hafifçe yer alıyor.


9
OP'nin bu soruyu sorduğundan şüpheliyim çünkü cevabı zaten biliyor, ve iş yeri Yanlış Yapıyor (tm) ve OP işlerini yapma şeklini değiştirmek için bir dava açmak için delil toplamaya çalışıyor.
user1936,

2
İkinci milenyumda bu şekilde yaptık. İyi olmalı! ;)
Don Branson

Yanıtlar:


103

Hangisi en iyi yöntemdir? bir dağıtımı bir dağıtımı el ile dağıtmak veya dosyayı dosya dağıtımı ile yapmaya devam etmek?

Ne.

En İyi Uygulama, dağıtımınızı tamamen ve özel olarak otomatikleştirmektir . Bu, kimsenin bir sunucuya manuel olarak hiçbir şey koymayacağı anlamına gelir .

“Özetin özetini özetlemek için: İnsanlar bir sorun.” (Douglas Adams)

İnsanlar hata yapar. Kopyalamayı unuttuğunuz dosyalardan biri, kapsamlı bir şekilde değiştirilen paylaşılan bir "kütüphane" ise, tüm Üretim sitesini çökertebilirsiniz.


17
@JohnHamilton Derlemeyi otomatikleştirmek zor bir iştirse, o zaman bu uzun vadede çözülmesi gereken bir şeydir. Tamamen otomatik dağıtma ile tamamlanmış geliştirme, test ve ön üretim ortamlarına sahip olmanız gerekmez, ancak standart bir dağıtım paketi oluşturulması standart bir uygulama olmalıdır.
Neil

20
Er, şirketin büyüklüğü gerçekten bir sorun değil (bir dereceye kadar). Maliyet, dağıtımın otomatikleştirilmesiyle ve ayrıca üretim ortamının karmaşıklığıyla ilgili olacak. Ancak, bir çıktıyı üretime kopyalamak için bir komut dosyası gibi basit şeylerden başlayarak (hemen maddi maliyet tasarrufuna sahip küçük yatırımlar) ve oradan daha da yükselmeye başlayan bir otomasyon derecesi ve "maliyet" (zaman / para) derecesi var. şirket büyüklüğünden daha fazla yönetim satın alması.
BurnsBA

39
@JohnHamilton: Kötü yönetilen daha küçük bir şirket, kendilerini düşünerek şaşırtabilir. Dosyaları kopyalamak otomatik olarak yapılması zor bir iş değildir ve herhangi bir çalışanın bunu düzenli olarak yapmasının maliyeti, bunun yerine en önemsiz senaryoyu bile yazmanın maliyetinden ağır basacaktır.
GManNickG

8
@ JohnHamilton: Manuel dağıtım sırasında yapılan hata riskine karşı otomasyonun maliyeti ölçülmeli.
Robert Harvey,

7
Mutlaka Jenkins'e ihtiyacınız yok. Sadece bir sürü scp komutunu içeren bir check-in betiği (veya elle yüklerken ne kullanıyorsanız) bir gelişme olabilir.
kullanıcı253751

14

Manuel adımlar çok çaba gerektirir ve riskli: gerekli bir dosyayı unutabilirsiniz. Belki de ekibinizdeki herkes hangi dosyaların kopyalanması gerektiğini bilmiyordur. Bu sorunların tümü konuşlandırmaları büyük, göz korkutucu ve nadir hale getiriyor - tamamen gereksiz yere. Otomasyon bunlara hitap eder.

En basit otomasyon adımının bile büyük faydaları olabilir, çünkü dağıtımlar önemsiz hale gelir. Dosyaları veya yapıtları (S) FTP veya Rsync veya başka bir teknoloji ile kopyalayan bir script, ilk adımdır. Daha sonra hizmetleri yeniden başlatma gibi, sunucuda dağıtım öncesi ve dağıtım sonrası adımları otomatik olarak gerçekleştirmek için bu komut dosyasını genişletebilirsiniz.


Toplam sunucu sayısı 2 veya daha azsa, manuel, otomatikten daha az risklidir. Otomatik kapsamlı hata kontrolünü gerektirir. Hiç önemsiz kalan önemsiz bir otomatik çözüm görmedim.
Joshua,

3
@Joshua Sunucu sayısının burada bir faktör olması gerektiğinden emin değilim. Otomasyon ayrıca aynı sunucuya birden çok kez dağıtırken değere sahiptir. Soru şu, kime daha çok güveniyorsunuz: bir kere çalışmış bir betiği sadık bir şekilde çalıştıran bilgisayar mı, yoksa her seferinde gerekli tüm adımları hatırlama yeteneğiniz? Yanılabilir ve unutkan bir insan olarak, işleri elle yapmamak konusunda güçlü bir tercihim var. Bazen tek seferlik görevleri bile yazıyorum, böylece çalıştırmadan önce komutları inceleyebiliyorum. Bu işe yarayana kadar rastgele şeyler yapmaktan çok daha az riskli!
amon

Her iki yönde de geniş deneyime sahibim. Manuel dağıtım için yaptığım şeyler xcopy kurulumudur, bu nedenle bazılarını unutmak için gereken adımlar yoktur.
Joshua,

9

En iyi uygulama, bir tür otomatik işlemi uygulamaktır.

Dikkate almanız gereken 'dosyaya göre dosya' yaklaşımının özel bir nedeni olmadığını kontrol etmeye dikkat edin.


1
Bu soruyu soruyorum çünkü sadece bunun dünyadaki en iyi uygulama olmadığından emin olmak istiyorum. Merak ediyorum, hala uygulamalarını / projelerini manuel olarak dağıtan herhangi bir şirket / geliştirici var mı ve daha da kötüsünü, geliştirmenin her yinelemesini dosya dağıtımına göre dosyalamaktır.
Jake Muller

4
Sorulacak en iyi soru "neden bu şekilde yapıyoruz?" Bir sebep düşünemiyorum, ama bazı firmaların tetikleyicide olduğu gibi manuel bir el tutmak istediklerini biliyorum
Ewan

8
@JakeMuller Bu cevabın satırları arasında okumanız gereken, kararların durum hakkında muhakeme ederek yapılması gerektiğidir, bilgisi olmayan bir kişinin her zaman doğru cevabı açıkladığını ilan edenlere bağlı kalmamak.
Blrfl

Dosyaya göre dosya yaklaşımının nedeni, dosyalar arasındaki bağımlılıklar olabilir ve bu nedenle dosya güncellemeleri, bu dosyalara bağlı olan diğer dosyalarda yapılan değişikliklerden önce dağıtılır. Dosyaları yanlış sırayla güncellemek, sistemi kısaca frenleyebilir.
bdsl

6

Sürekli Teslimat (veya Dağıtım, aslında) ve her bir dosyayı elle taşıma ile, iki uç noktaya bakıyorsunuz. Tam otomatik bir boru hattı (henüz) oluşturmak istemeyeceğiniz / istemeyeceğiniz tamamen anlaşılabilir bir durumdur. Ancak, işlemin parçalarını otomatikleştirmeyi düşünmelisiniz.

Her bir dosyayı elle taşımak oldukça risklidir ve bu riski örneğin kod deponuzu etiketleyerek, bilgisayarınızda bu etiketi kontrol ederek, eserlerinizi oluşturarak ve sunucunuza yükleyerek azaltabilirsiniz. Bu adımların her biri, birkaç fare tıklamasıyla yürütülecek şekilde otomatikleştirilebilir ve bu, bir dosyayı unutma veya yanlışlıkla bazı ek dosyaları almaya zorlama riskini büyük ölçüde azaltır.

Bir seferde adım adım yapabileceklerinizi otomatikleştirin. Tam otomatik bir CD boru hattına sahip olamayacağınız gerçeği, bazı parçaların otomatikleştirilmesini engellememelidir.


1

En iyi uygulama, kendi şirketinize özel dağıtımınız için bir maliyet / fayda analizi yapmaktır.

Genel cevap "işleri el ile yapma, otomatikleştirme" şeklindedir. Bu genellikle genel şirketler için doğru cevaptır. Aldığınız cevapların bütünlüğü, topluluğun bunu en iyi uygulamalar olarak ne kadar güçlü bulduğuna dair bir gösterge olmalıdır. Şirketiniz otomasyonun doğru araç olmadığını hissediyorsa, onları neyin benzersiz yaptığını anlamaları gerekir. Bu özgünlük karar verme sürecinize dahil edilmelidir. Örnek set 1 olduğunda "en iyi uygulamalar" yoktur.

"Kaç dosya" ve "ne sıklıkta güncelleme yapılır" ve "kırılmaların sonuçları nelerdir" ve "kötü bir değişikliği ne kadar çabuk geri alabilirsin" gibi sorular cevaplanması gereken sorulardır. Otomatikleştirirseniz, bu soruların çoğu önemsiz hale gelir, ancak el ile güncelleme işleminin maliyet ve faydalarını doğru şekilde atamak için çok önemlidir.


1

El ile dosya dosya kopyalama ve sürekli teslimat arasında bol miktarda gri ton vardır.

Dağıtım işleminin karmaşıklığını azaltarak, örneğin bir zip dosyası, rpm stili paketleme, kod yönetimi aracı olarak bir altyapı (kukla veya şef gibi) kullanarak veya hatta dosyaları sizin için kopyalayan basit bir komut dosyası kullanarak başlayın. ftp sunucusundaki hazırlama alanı.

Daha fazla manuel adım içeren dağıtım işlemlerinde hata yapma olasılığı daha yüksektir (ve dolayısıyla başarısız olur) - diğerlerinin dediği gibi, insan unsurunu bunun dışına çıkarın.

Tam kesintisiz teslimat uygulamanıza gerek yoktur (masraflı ve zamanla efor / yatırım / inovasyon alır) - basit başlayın, çalışmasını sağlayın, faydalarını gösterin - ve oradan gidin.


0

Kullandığınız yazılım teknolojisine (veya yığınına) (yorumlanmış dil, derlenmiş dil, masaüstü uygulaması, mobil vb.), Yumuşak olarak değişir. dev. departman politikaları, onu otomatikleştirmek için araçlara sahipseniz, uygulamanızın ne kadar kritik olduğu ve dikkate alınması gereken önemli bir husus da yazılım mimarinizdir (uygulamanızın nasıl tasarlandığı). Bu yüzden burada farklı cevaplar var. Genel bir kural olarak, en iyi yaklaşım dağıtım görevlerinde insan müdahalesini azaltmak, hataları önlemek için mümkün olacaktır. İyi bir uygulama, bir QA Sunucusundaki her şeyi test edecek (bütçe sorunsa sanal sunucuyu kullanmayı düşünün) dağıtımdan önce ve felaket durumunda önceki sürüme geri yüklemek için ters prosedürler uygulayın ( HER ZAMAN yedekler).

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.