Bazı büyük şirketleri duydum, örneğin Google, Facebook kullanımı Performansı
SVN / Git'in Performance'ın yerini alamamasının bir nedeni var mı?
Bazı büyük şirketleri duydum, örneğin Google, Facebook kullanımı Performansı
SVN / Git'in Performance'ın yerini alamamasının bir nedeni var mı?
Yanıtlar:
Gerekçe belki bir zamanlar olduğundan daha az ilişkilidir, ancak Performancece, büyük depolarda Subversion'dan daha iyi performans gösterme eğilimindedir. Bu, Microsoft'un Kaynak Depo'nu oluşturmak için Performans için kaynak lisansı edinmesinin nedenlerinden biri; NT'nin deposu bir canavardır ve ticari veya başka bir şekilde yapabilecek pek fazla ürün yoktur.
Ayrıca, en azından bir kerede, Performance'ın görsel araçları Subversion veya Git ile kutudan çıkanlardan çok daha iyiydi. Eğer Meld kullanıyorsanız, belki de bunlar bir zamanlar olduğundan daha az önemli, ama hala çok eskiden beri detaylı bir hatıra sahip olmasam da, dallanma ve birleştirme görselleştirmeleri de dahil olmak üzere Performance'ın çok güzel yaptığı bazı şeyler var. Performansa dokunduğumdan beri yaklaşık 3 yıl, örneğin, Github'ın buna yaklaşımından daha sofistike görünüyordu.
Performansı kullandığınızda, avantajlarının pratikte ne olduğunu anlayabilirsiniz. Uzun zamandır ücretsiz, iki kullanıcılı bir sunucu seçeneği teklif ettiler ve deneyimlediğiniz kaynak kod yönetimi sistemlerine bağlı olarak, ekibiniz bir süre test ettikten sonra, yükseltme maliyetine değiyor olabilir. Küçük mağazalar için bu, artı onu kullanan ve beğendiği geliştiricilerin ağ etkileridir. Performans'ın kullanıcılara ödeme yapmasının nedeni budur. Dmitri'nin alaycı sözlerinin aksine, küçük geliştirme ekipleri olan şirketlerde Performans Göstermek için muhtemelen CTO'ların çok fazla şarap tüketmesi ve yemek yemesi yoktur, ancak bu yerlerde kullanılır.
Microsoft dışında çalıştığım projelerin çoğu Git, Mercurial veya Subversion tarafından oldukça iyi bir şekilde karşılanabilir ve çalıştığım şirketlerin çoğunluğunun bu seçeneklerden birini kullanmak için olduğunu söyleyebilirim. Ancak, genellikle depo büyüklüğü, dallanma ve birleştirme modelinin ve insanların ticari araçları kullanmasına yol açan takım deneyiminin / tarihinin bir araya geldiği tatlı bir nokta var. Örneğin nadiren büyük Git depoları gördüm. Bu Git'in kendine özgü sınırlamaları nedeniyle olmayabilir; Bunun tamamen cehaletini itiraf ediyorum. Ancak bazı projelerde (Windows NT gibi) ücretsiz çözümler için bazı pratik sınırlamalar olabilir.
Hem kullanıcı olarak hem de sunucuların kurulmasında ve bakımında svn, git ve perforce konusunda oldukça uzmanım.
Bir şirket ya da benim gibi yalnız bir programcı için kaynak kontrolü, kod geliştiren ve satan gerçek para kazanma faaliyetini desteklemekte kullanılan bir maliyettir. Bu nedenle göz önünde bulundurulması gereken birkaç faktör var:
Bireysel sistemlerin artıları ve eksileri hakkında tl: dr detaylarını atlayacağım. Geçen yıl tam zamanlı danışmanlığa geri döndüğümde, müşterilerime kaliteli yazılımlar sunarak ve çok fazla para ödemeden gerek duymadan en fazla para kazanmama neden olacağına karar vermek için üçünü de gözden geçirdim. takılmak. "FOSS iyi ve FOSS olmayan şeytani" nin politik düşüncesini denklemin dışına çıkardığımda, Performance lisansı için ayrıldım.
İşte bu yüzden büyük şirketler de Performance'ı seçtiler.
İşte tl: dr yorumlardan detaylar, artı biraz daha.
Svn adreslenmesi kolaydır: Performans ile karşılaştırıldığında, köpek yavaşlatır. Linux'u cep telefonları için yerleştiren bir şirkette çalıştım ve kaynaklarımızın tamamı 9 GB oldu; Performans kullandılar. Kodu aldığınızda, en son kaynakların güncellenmesi normal olarak LAN’da birkaç saniye veya evimden bir VPN bağlantısı üzerinden birkaç dakika sürdü. Svn ile sırasıyla dakika ve saat olurdu.
Git vs. Performans daha karmaşıktır. Birçok şirket, erişim kontrolü ile merkezi bir depo kullanmak ve orada iş yapmayı kolaylaştırmak ve başka bir şey yapmayı zorlaştırmak için iyi iş nedenleri olduğunu düşünüyor - ve Performans, bu modele mükemmel bir şekilde uyuyor. Bununla birlikte, git, insanları yerel bir şubede çalışmaya teşvik eder ve farklı şekilde çalışabilmelerinin bir yolu yoktur. Bir geliştirici tamamen yerel bir branşta çalışabilir ve hiçbir zaman merkezi depoya bağlanamaz - bir şirket çalışanlarının bu şekilde çalışmasını istemiyorsa, Performans daha iyi bir seçenektir.
Bazı iş ihtiyaçları için git ile ilgili başka sorunlar var. Git'i kullanan bir şirkette çalıştım ve bu tartışmayı kaç kez duyduğumu bilmiyorum: "Keşke [bazı diğer VCS] kullanıyor olsaydık, çünkü [bunu] yapmam gerekiyor ve git ile yapamam ." "Tabii ki git ile bunu yapabilirsiniz." "Nasıl?" “Eh, önce bir bash betiği yazman gerekiyor ...” “Boşver.”
Ve sonra, çok fazla tarihi olan bir kaynak ağacını doldurmak için harcanan zaman var. Performans ile, tarih sunucuda tutulduğundan, sadece tüm dosyaların en yeni sürümlerini elde edersiniz, bu yüzden gerçekten hızlıdır - belirttiğim 9 GB ağacın tümünü bir VPN üzerinden sadece birkaç saat sürdü. Git ile uzun zaman ve sonsuzluk arasında bir yer alabilir. Bazen GTK + veya X server git repo'larını klonlamak zorunda kalıyorum ve bu uzun bir öğle yemeği molası veya belki de yatma zamanı.
Gerçekten, bu iş için doğru araç meselesi. svn, Apple'ın açık kaynaklı çabalarının çoğu için gayet iyi çalışıyor ve çekirdek korsanları için berbat olurdu. git GTK + için harika çalışıyor, ancak WebKit'in içinde çalışmak için inanılmaz derecede yavaş - kaynak ağacı ve tarih çok büyük (WebKit'in svn-to-go portalının koduyla çalışmanın zor yolunu bulduğum için). Dev bir kaynak ağacınız varsa ve merkezi kontrole ihtiyaç duyuyorsanız performans iyi çalışır. Her biri doğru bağlamda iyi çalışıyor.
pull
sahipleri , zaman zaman güncellemeleri veya yeni özellikleri elde etmek için alt modüllerini kullanacaklardır ve ancak o zaman bu havuzun kullanıcıları havuzun kendisinin kodundan daha büyük güncellemeler gerektirecektir.
Özellikle GIT ve bir dereceye kadar SVN o kadar eski değil - 90'lı yılların ortalarında sağlam sürüm kontrolüne ihtiyacınız varsa, SVN henüz başlangıç aşamasında olduğu ve CVS'nin CVS olduğu için neredeyse ticari bir satış yapmak zorundaydınız. Bir sisteme yatırım yaptınız mı, onu taşımak bir ayı olabilir.
Oh, ve bu kararları verenler muhtemelen sürüm kontrol sistemiyle hiçbir zaman etkileşime girmez, ancak söz konusu satış personeli tarafından kazanılır ve dinlenir.
Neredeyse 9 yıldır oyun endüstrisinde programcı oldum ve üzerinde çalıştığım her projede Performance kullanıldı. Belirli bir sektörde Performansı kullanımda tutan bir kaç şey olduğundan şüpheliyim.
Belki, Belki Performance'ı seviyorlar çünkü Performce daha iyi?
Tamam, bir Performce Fanboi olduğumu düşünmeden önce, bir şirkete Performce'yi en son tavsiye etmem yedi yıl önceydi. Performans maliyeti lisans başına 800 $ 'dır - ClearCase ile karşılaştırıldığında ucuz, ancak Subversion ile karşılaştırıldığında çok pahalı. Subversion Üzerine Performansı haklı çıkarmak konusunda çok zorlanıyorum.
Ayrıca, çoğu geliştirici Subversion'u kullanıyor. Subversion'dan farklı bir çalışma şekli olan Performance'ı öğrenmek istemiyorlar. Performans'ta bir istemci oluşturmanız ve dosyaları düzenlemeden önce düzenleme için dosyaları işaretlemeniz gerekir. Bunu Subversion ile yapmak zorunda değilsin.
Subversion Üzerinde Performans ile daha az entegrasyon var. Bunun bir kısmı müşterinin kullanımından kaynaklanıyor . Sadece VisualStudio ve hatta Hudson ile iyi oynamıyor. Bunun bir kısmı Performancece'nin müşteri entegrasyonlarını oluşturmak zorunda olmasından kaynaklanmaktadır.
Özel lisansın idari maliyeti aramasının bir bedeli vardır. Kullanıcı başına 1,00 ABD Doları karşılığında bir yazılım lisansı alabileceğinizi düşünün. Heck, iki bit yapalım. Binlerce lisans size sadece 250 dolara mal olacak.
Şimdi, lisansı yöneten tam zamanlı bir kişiye ihtiyacınız var. Ortalama bir teknik çalışan yaklaşık 2 yıl bir şirkette kalır. Yani her yıl 500 kişi gidiyor, 500 kişi daha geliyor. Her hafta on kişinin ruhsatının değişmesi gerekiyor. Daha sonra, projenin hazırlandığı zamanlar vardır ve 250 lisansa daha ihtiyacınız vardır. Bunlar sipariş edilmeli, girilmeli ve bakımı yapılmalıdır. Bu haftalar alabilir.
Bu yüzden birçok ticari firma açık kaynağa taşındı. Bu bir lisansın maliyeti değil. Bir geliştiriciye yılda 150.000 dolar ödüyorsunuz, Performance lisansı için 800 dolar daha nedir? Bu lisansı yönetiyor. ClearCase ile karşılaştırıldığında performans mükemmel görünüyor: Daha hızlı, daha kolay, daha ucuz, daha iyi. Ancak, Subversion'a karşı? Performans daha hızlı ve belki daha iyi olabilir, ancak 800 dolar daha mı iyi? Lisansı yönetmek daha mı iyi? İstenen bir aracı daha iyi kullanmıyor mu?
İşte bu yüzden Performance'ın problemleri olabilir.
Git, hepsi bir arada araç değil. Kimin bir depoya erişiminin merkezi olarak kontrol edilmesini istemediğiniz durumlarda harika çalışır. Ancak, birçok durumda bir ağrı olabilir. Benim koyduğum yol şu:
Merkezileştirilmiş yapılar yapıyorsanız, yine de herkesin tek bir depo kullanması gerekir. Dağıtılmış bir sistemin bu durumda avantajı nedir? Aslında, insanları çevrim dışında çalışmaya teşvik edebilir . Geliştiriciler sadece kendi mutlu yollarına girebilir ve son dakikaya kadar hiçbir şey yapamazlar. Daha sonra, iki çılgınca günü her şeyin tekrar çalışmasını sağlamak için harcıyorsunuz.
Git’e karşı değilim. Git'i birçok durumda tavsiye ettim. Bunlar arasında birbirleriyle zayıf bağlantıları olan dağıtılmış ekipler veya kaynak havuzuna erişimi olan herkesi izlemek istemediğiniz yerler var.
Örneğin, bir kolej bilgisayar bilimi bölümü, öğrencilerinin kaynak kontrolünü kullanmalarını ve öğretmenlerin bakması için kodlarını koymalarını istedi. İyi fikir. Çok sayıda çocuk standart yapı ve geliştirme prosedürlerini anlamadan üniversiteden ayrılıyor. Git'i tavsiye ettim.
Git'i kullanarak, depo yöneticisinin yalnızca profesörlerden emir alması gerekir. Bireysel öğrenciler için endişelenmeleri gerekmez. Profesörler, öğrencilerin depodaki sürümlerini taahhüt etmelerine izin verebilir. Öğrenciler gruplar halinde çalışabilir ve her grup havuzun versiyonunu paylaşabilir.
Eğer kolej Subversion kullanıyorsa, birileri tüm öğrencileri tanır ve hepsinin merkezi depoya erişmesine izin verirdi. Neyin nerede ve nerede olduğunu kimin kontrol edeceğini yönetmek zorunda kalacaklardı. Bir profesör bir grup projesine atanmışsa, bunun kurulması ve yönetilmesi gerekirdi. Bunu yapabilmek için tam zamanlı bir insana ihtiyacın olacak.
Bu, bir takımın diğerinden daha iyi olduğu bir futbol maçı değil. Araçlar farklı şekillerde çalışır ve her birinin avantajları ve dezavantajları vardır. Performans harika bir araçtır. Ne yazık ki, tavsiye etmeyi zorlaştıran durumlar ortaya çıkmıştır.
Git harika ama kişisel kaynak havuzum için Subversion'a geri dönüyorum. Sonuçta, ben paylaşmıyorum ve Subversion kullanımı sadece daha kolaydır. Git'i kişisel işlerim için kullanıyorum, çünkü küçük bir ekibim varsa, depolarımı internette tam zamanlı olarak tutmam gerekmiyor. Çoğu ticari site için Subversion'un en iyi sonucu verdiğini düşünüyorum. Ancak, Git'in parladığı durumlar vardır.
“Şarap ve akşam yemeği” rüşvetinin hala geçerli olup olmadığını bilmiyorum, ancak çoğu yönetici için bir ürün bulmaya karar verdiklerinde, çeşitli yayınlarda (yönetime yönelik) okumaya başlayacaklar ve ürünü elden çıkaran broşür ve broşürlere bakacaklar. erdemler.
Tahmin et, ne, FOSS ürünleri bu yerlerde özellik yok!
Bu nedenle, yönetim satın alma kararlarının çoğunun reklamcılık ve pazarlamadan kaynaklandığı neredeyse verilmişti. Değerlendirmeler yapabilir, ancak bu tür ürünlerden birkaçı.
Diğer sebep ise vadeden kaynaklanmaktadır. Bugün kullandığımız bazı ürünler son zamanlarda ciddi iş kullanımı için yeterince kararlı, bazıları destek seçeneklerine sahip değil, bazıları ticari çözümler olarak kanıtlanmış bir sicile sahip değil. Bunlar göz önünde bulundurulması gereken önemli konulardır (bir teknisyen olarak, onları kullanma ve başarısız olma riskini işletmeyi sürdürmek için minimum düzeyde tutarsa FOSS çözümlerini mutlu bir şekilde değerlendirebilirim) ve bazı yöneticiler de buralarda olmama konusunda temkinlidir. Patronlarına karşı sorumludurlar ve ürünün arkasında bir destek organizasyonu varsa, kendilerini daha rahat hissedecekler - sonuçta işiniz için bir tane var.
Son olarak, birçok FOSS ürünü arkalarında destek sağlarken (SVN için Collabnet veya Wandisco olduğunu düşünür), yine de 'arka yatak odasında ineklerin yaptığı' ününü kazanıyor. Hepimiz bunun genellikle b * * ** t olduğunu biliyoruz ve en iyi FOSS ticari tekliflerle inanılmaz derecede rekabet ediyor, ancak yöneticimin hala ikna olması gerekiyor. belki olgunlaşmamış ve olgun FOSS ürünleri arasındaki farkı anlamaz; belki umrunda değil.
Her neyse, Performce güzel bir SCM, onu seçmemek için hiçbir sebep yok. Diğer SCM'ler için de aynısını söyleyebilirim, ancak yine orada, diğerleri hakkında sadece kötü şeyler söyleyebilirim ve belirli bir çift ürün söz konusu olduğunda hala kabuslar görüyorum.
Çünkü Performce gibi araçlar, şarap satın almak ve satın almakla sorumlu insanları yemek için satıcılara sahipken, Git'tir. Tabii ki, konuşmamın sadece alaycı tarafı, ama süreci yakından görerek getirilen bir sinizmdir.
Sadece açıkça ortaya koymak: Ben do not size CIO koridordan sarhoş tökezleyerek görsem yeni sürüm sistemi sonraki çeyrek kullanarak bekliyoruz anlamına gelir. Sadece birçok kuruluşta kullanım ve satın alma arasında bir kopukluk var. Elbette, şirketlerin Performancece kullanması için başka nedenler de var: örneğin, iş akışlarında uygulamalarına ağır yatırım yapmış olabilirler. Ancak genel olarak --- ve bu soru çok genel --- FOSS araçlarını kullanmamanın hiçbir işlevsel avantajı yok.
Muhtemelen aynı sebep, şirketimin bir çok açık kaynaklı yazılım kullanmayı reddetmesi (aynı fikirdeyim değil):
Bir şeyler ters gittiğinde, arayabilecekleri ve bağırabilecekleri birini istiyorlar.
Tüm cevaplar P4 kullanan büyük şirketler hakkında konuşsa da (ve Google’ın neden P4 kullandığını cevaplıyorlar), Google’ın Performans kullanmaya devam etmesinin temel nedenlerinden biri, Performans’ın Git’le yapamayacağınız bir performansa sahip olmanızdır. Google'ınki gibi büyük kaynak repoları ile büyük bir fark yarattı.
Ve duyduğum kadarıyla, Facebook SVN ve Git-SVN kullanıyor
Çünkü SVN, SVN ve Performans (araçlar karşılaştırılırken 4 yıl öncesinden itibaren) SVN'den daha iyi şeyler yapıyor . (Dallanma sanırım aralarından biri.)
Ve GIT, dağıtıldığı gibi bir Dvcs'dir . Şirket ekipleri için dağıtılan kısım, ne umurunda ne de istemek bir şey olabilir.
Büyük şirketlerin büyük, klunky, "kurumsal" sürüm kontrol sistemleri satın alma eğiliminde olmasının bir diğer nedeni:
BT departmanlarındaki orta-üst yönetim, VCS'yi her bir projenin kullandığı ya da kullanımını zorlayabileceğiniz bir şey olarak görüyor. Bir VCS kullanımını zorladığınızda, o zaman neden oraya biraz da "süreç" koymuyorsunuz? Demek istediğim, "kurum çapında" bir sistem belirleme şansınız var, neden merkezi kontrol altına alınmıyor ve "olağanüstü durum kurtarma" ve bazı "iş akışı özellikleri" ekleniyor, böylece "Biz CMM Seviyesi StraightJacket" diyebilirsiniz Uysal!". Bir VCS, iş akışını zorlayıcı özellikler koymak için bir hedef için çok kolaydır, bunun sebebi budur.
Bazı ickky-poo, ufak tefek yazılımlar (Serena Dimensions) seçimine gelince, Bahamalar'daki birkaç 20 kişilik kadın satış personeli ile birkaç Bikini Bikini turunun bir Direktörü veya VP'yi her konuda ikna edebileceği söyleniyor.
Büyük şirketler merkezi bir modele ihtiyaç duyarlar. Geliştiriciler geliştirildikten sonra müşteri desteğine verilir. 50-200 dağıtılmış geliştirici deposunu taramak zorunda kaldıklarında gerçekten destek ayakkabılarında olmak ister misiniz? Ve yapılar merkezi depoya dayanarak yapılır, yapılar daima, her zaman, her zaman izlenebilir ve tekrarlanabilir olmalıdır. Bunu, aptalca bir patent ihlaliyle ilk kez mahkemeye çıkardığınızda öğreniyorsunuz.
Git bu modelde de çalışmıyor. Daha küçük bir şirketiniz veya VPN erişiminiz zayıfsa, gerçekten parladığı yer.
Çoğu büyük şirketin kullanmasının bir nedeni Performans, BT departmanında bu konuda çok fazla bilgisi olan ve bununla ilgili sorunları çözme konusunda uzun yıllara dayanan profesyonellerin bulunması olabilir.
Gelecekte şirketler Performance'ten ve daha fazlasından GIT'e doğru ilerlemeye başlayabileceklerini hissediyorum ... çoğu geliştirici bunu tercih ediyor gibi görünüyor !! Ayrıca http://whygitisbetterthanx.com/#git-is-fast'ın önümüzdeki yıllarda Performans'ın neden bu kadar baskın olamayacağına dair daha fazla kanıt için kontrol edin !!
Bazı zamanlar önce, bir VCS setinden (RCS, CVS, ClearCase, perforce daha önce kullanıldığından eminim, başkalarının da olabileceğini biliyorum) kullanılan benzersiz sistem olarak performansa geçtik. Bu küçük bir proje değildi: Göç bir yıldan fazla sürdü. Sorumlu olan takım (ben parçası değildim) birkaç VCS'yi değerlendirdi ve en azından git ve svn zaten kullanımda olanların yanı sıra değerlendirildi. Raporlarını hatırladığım gibi, araçları gerekli özelliklere sahip olmadan filtrelemişler ve ardından düşündükleri:
Özellikle uzak siteler için tipik kullanım performansı
kaynak gereksinimleri
çalışma alışkanlığında ihtiyaç duyulan değişikliklerin önemi
kullanılabilirliği ve maliyeti destekle
Performans ise oldukça açık bir kazanandı. git ilk nokta için biraz daha iyiydi, ama diğerleri için dezavantajdaydı.
Bir zamanlar, çok uzun zaman önce değil (IDE VI olarak adlandırılırken), tek özgür (açık kaynaklı) sistemler CVS, RCS ve SCCS idi.
Dışarıda birçok ticari kaynak kod kontrol sistemi vardı, bunların çoğu tek bir makine satıcısı (IBM, DEC, HP, vb.) Tarafından sağlandı ve yalnızca donanımlarını kullandı.
Ardından birkaç şirket, Performance ve ClearCase dahil çapraz platformlu ticari kaynak kodu kontrolü sattığını belirtti.
ClearCase, çok sayıda küçük ağ paketinin “tamamen açılmış” olması nedeniyle geniş alan ağlarında (henüz tek başına İnternet) iyi çalışmayan RPC üzerine inşa edilmiştir, ayrıca IBM ve rasyonel ClearCase'i “nakit inek” olarak görmüştür ve asla fazla göstermemiştir. Aşk.
Bu nedenle, halen yaygın olarak kullanılan tek “eski” ticari kaynak kod kontrol sistemleri Performanstır. Performans bir kez kullanıldığında ve yapım sistemlerine ve hata takip sistemlerine entegre edildiğinde , bir şirketin başka bir şeye taşınması için çok az kısa vadeli bir fayda vardır .
Yani, özetlemek gerekirse, performans, başka birçok seçenek olmadığında “kapıya ayak” a girdi ve insanların ondan uzaklaşmasını sağlamak için henüz yeterince karışıklığa sahip değillerdi .