Soru Paylaşılan bir geliştirme sunucusuna sahip olmanın avantajları [kapalı]


Ekibimdeki geliştiriciler, yazılımı kendi bilgisayarlarında çalıştırmak yerine kullanmak üzere bir paylaşımlı geliştirme makinesi istiyorlar. Onların mantığı, sadece Fedora / CentOS / Red Hat'i serbest bırakmak için hedefliyoruz ve Mac'leri kullanıyorlar. Onlara yaptığımız şey için, hepsinin sunucu üzerinde köklere ihtiyaç duyacağını ve bunlardan birinin oldukça kolay bir şekilde yapabileceğini açıklamaya çalıştım. sudo rm -rf / (Kaza olsa bile), böylece herkesin kaynak kontrolüne bakılmayan çalışmalarını gözden geçirin. Onlara CentOS'u indirmelerini ve kodu çalıştırmak için VirtualBox kullanmasını söyledim.

Öyleyse sanırım burada soru kimin haklı olduğu? Bakış açımdan, devasa bir sunucuyu paylaşma sorunları, CentOS'u makinelerinde çalıştırmanın verdiği herhangi bir sakıncaya maruz kaldığında ağır ağır basar.


6
2017-10-29 01:55


Menşei


Tüm devlerin sunucuda root erişimi olması gerekiyorsa, yanlış yapıyorsunuz demektir. - EEAA
Devlerin mi muhtemelen için sudo rm -rf /? - ceejayoz
Muhtemelen paranoyak olmuyorum: D - BenGC
@BenGC bir sys yöneticisi olduğumu mu düşünüyorsun? Eğer öyleyse, paranoya iş açıklamanızın bir parçası. - canadiancreed
Her gece onu ele geçirmeyi öneririm ve aptalca bir şey yaparak herkes için bunu kırmaya çalışan herhangi bir geliştiricinin halka açık olacağını açıklığa kavuştururdum. - ceejayoz


Cevaplar:


Yukarıdaki yorumumu açıklamak için kesinlikle olmalı yok hayır Dev'lerinizin dev ortamınızda, paylaşılan veya başka bir şekilde root erişimine ihtiyaç duyması gerekir. Bir avuç sudo kuralları tarafından desteklenen iyi düşünülmüş dosya izinlerinin bir kombinasyonu ile, yapmaları gereken her şeyi yapabilmeleri gerekir.

Her geliştiricinin kendi ortamına sahip olduğu paylaşılan bir dev ortamı ile ilgili olarak: Geliştiricilerinizle buradayım. Her bir geliştiricinin kendi dev ortamını yönetmesiyle, tümüyle tamamen farklı yapılandırmalar, yazılım revizyonları, dosya izin yapıları, daemon sürümleri, çekirdek sürümleri vb. İle bitebilirsiniz. Bu bir kâbus Böcek ezmesi için.

Kararlı ve iyi yönetilen bir kalkınma ortamına ihtiyaç duyduklarını kabul ediyorlar. Kesinlikle haklılar, onlara ver!


22
2017-10-29 02:18



İlginç bir bakış açısı. Daha çok bir ops adamıyım, bu yüzden buralara, squash açından bakmadım. Teşekkürler! - BenGC
Her şeye katılıyorum ama böcek ezici argümanı. Geliştiricilerin, daha önce tespit edilen ve düzeltilen hataların olası sonuçları kadar farklı olan platformları kullanmasının iyi bir şey olduğunu düşünüyorum. Homojen test ortamları, test ortamında çalışmakta olan hataların sızmasına ve iltihaplanmasına izin verir. - David Schwartz
@DavidSchwartz - Sanırım ürüne bağlı. Çok sayıda farklı ortamda konuşlandırılacak bir uygulama ise, o zaman evet, heterojen bir dev ortamı iyidir. Dahili bir web uygulamasında veya SaaS türünde bir ürün üzerinde çalışıyorlarsa, uygulama öğesinin pratik olduğu kadar eşleşmesini istersiniz. - EEAA
Farklı yapılandırma problemi [Chef] gibi bir şey kullanılarak çözülebilir [opscode.com/chef/] ve [Vagrant] [vagrantup.com/]. Güzel olan şey, bu, üretim sunucusunu aynı şekilde sağlamak için kullanılabilir. - Andrew Vit
Dev ortamları tekdüze olmalıdır (ve sınıfının en iyisi, ancak buradaki konu bu değildir). Uygulamanız birden fazla ortam hedefliyorsa, Ölçek çoklu ortamlarda. Tercihen ayrı bir test ekibi aracılığıyla. - Nivas


Neden ikisi de değil - iş istasyonlarında geliştirin ve paylaşılan dev sunucusunda test edin?

Veri kaybıyla ilgili endişeleriniz varsa, her zaman dev sunucunun üst kısmında bir sanal makine çalıştırabilir, makinenin anlık görüntülerini yapabilir ve geliştiricilerin bu sanal makinede kod güncellemelerini gerçekleştirebilirsiniz. Daha da kötüsü, VM'yi her zaman önceki yedeklemeye geri döndürebilirsiniz.


8
2017-10-29 02:19





Benzer bir durumda, yerel kalkınma rotasını aldık ancak, yalnızca devler ve operasyonlar için (buna entegrasyon olarak adlandırıyoruz) test uygulayıp test etmek için çalışan uygulamanızın bağımsız bir yığınına sahibiz. Dev'lerin kök erişimi vardır, bu yüzden gerekirse araştırma ve sorun giderme işlemleri yapabilirler, ancak sistemin geçici olduğunu bilirler, böylece her zaman uçabilirler (ve bunu dağıtım komut dosyalarımı test etme yöntemi olarak yapıyorum).


3
2017-10-29 04:31





Ayakkabılarınızda olsaydım, evreleme sunucu kurulumunu yansıtan dev sistemlerinde kullanılabilecek bir VM oluşturmaya bakardım. Birilerine aptalca bir şey yapmadan onlara ihtiyaç duydukları şeyi verir. Üstelik eğer evreleme sunucusu hiç bir sebepten ötürü hiç düşmezse, tüm geliştiricilerinizin başparmaklarını ikiye katlamıyorsunuz, buna rağmen onu geri almayı deniyorsunuz ... ancak bu nadiren de olabilir. 'd' düşünün)


2
2017-10-29 13:59





Şirketimde hem dev sunucuları hem de kişisel yerel sunucuları paylaştık. Mesele şu ki, her iki dünyanın en iyisine sahip olamazsınız, ancak her iki dünyaya da sahip olabilirsiniz :) Paylaşılan dev sunuculara karşı yanımda olduğum ama her ikisinden de bahsedeceğim.

Yerel bir sunucu çalıştırmak sysadmin içine çok fazla olmayanlar için gerçek bir kabus. Devlerin daha çok Mac kullanıyor ve bu sadece işleri daha da kötüleştirdi. Bir sanal makine kullanmak farklı işletim sisteminin problemini çözüyor, ancak yine de kendi uzmanlık alanı olmayan bir sunucuyu yönetebilmelerini gerektiriyor. Olmak için çözüm buldum serseri. Bir Virtualbox sanal makinesi için yetkilendirme kodu oluşturmama izin veriyor ve benim dev'lerim bakım görevlerinden kurtarılabilir. Her yeni projeye başlamak için belki de günlerimi harcamak zorunda kalsam da, bu, insanların paketler kurması ve yapılandırması konusunda başkalarına yardımcı olmak için çok zaman harcadı.

Vagrant'ın bazı avantajları:

  • Dev'ler, Windows'ta Not Defteri dahil olmak üzere istedikleri aracı kullanabilirler.
  • Dev ortamlar yok edilip yeniden oluşturulabilir.
  • Her kodun geliştiriciye izlenebilir olmasını sağlayan ürpertici bir paylaşılan hesaba gerek yok.

Paylaşılan bir sunucu kullanma kendi dezavantajları vardır:

  • Aynı dosyayı düzenlemek için iki devrenin kullanımı kolaydır (özellikle farklı editörler kullanıyorlarsa, dosyanın zaten açık olup olmadığını algılayamazlar).
  • 2 devin aynı dosyayı düzenlememesi gerektiğinden, görevlerin paralel yürütülmesi daha zordur. Bir dosyayı düzenlemek zorunda olduğunuzu düşünün, ancak arkadaşınız zaten üzerinde biraz çalışma yapıyor ve yakında herhangi bir zamanda bitmeyecek.
  • Bunu yaparken devlerin ekstra dikkat gerektirir. git commitÇünkü diğer insanların değişikliklerini yapmak istemiyorsunuz.

Bununla birlikte, paylaşılan bir dev sunucusuna ihtiyaç duyduğunuz durumlar vardır. Benim deneyimlerimde şunları içerir:

  • Üretim sunucusuna dağıtılmadan önce kodun kaldığı yer olan evreleme sunucusu. Tüm sunucuların bu sunucuya erişmesi gerekmez.
  • Üçüncü bir taraftan geri arama gerektiren bir özellik geliştirmek / test etmek. Bunun bir örneği Paypal ile ödeme.

Paylaşılan bir dev sunucusunu kurmanın en kolay yolu, bir uygulama kullanıcısı oluşturmaktır, belki de kullanıcı adı olarak projenin adı ile. Bu kullanıcı projeyle ilgili tüm dosyalara sahip olmalıdır. Ardından dev'lerinizin genel anahtarlarını /home/<application>/.ssh/authorized_keys ve devlerin sadece kullanıcı olarak bir şeyler yapmaları için giriş yapabilirler. Paylaşılan hesabı kullanarak, taahhütlerinizi taahhüt mesajına eklemek gibi bir sözleşmenin olması yararlı olacaktır, böylece hangi işlemlerin hangi devrelere ait olduğunu bilmeniz mümkün olacaktır.


1
2017-10-29 06:50





Uygulamanıza bağlı olarak sürekli dağıtım düşünün. Geliştiriciler, tüm değişikliklerini bir sürüm kontrol sistemine (CVS, SVN, GIT veya neyse) kontrol etmelidir. Yapılan değişiklikleri dağıtmak için bir gönderiyi tetikleme tetikleyicisi kurun.

Bazı ortamlarda bir çeşit sürekli inşa sürecine ihtiyacınız olacak. (Saatlik bir yapı yeterli olabilir.) Bu, geliştiricilere, değişikliklerinin diğer geliştiricinin değişiklikleriyle nasıl çalıştığını doğrulayan bir yer sağlar.

Geliştiricilerinizi yerel bir sunucu çalıştırmak için kullanmanız gerekiyorsa, kurulumu ve yapılandırmayı standartlaştırın. Kodlanmış bir kurulum sağlamak, hatta tüm yapılandırmayı revizyon kontrol sisteminize kontrol etmek mümkün olabilir. Geliştiricilerinizi sunucuları kendi başlarına yönetmelerini beklemeyin.


1
2017-10-29 18:45





Openindiana'yı kullan. Bölgeler, işletim sistemi düzeyinde sanallaştırma sağlar. Her devine, kök erişimine sahip oldukları bir bölge verin. yol sanal bir makineden daha verimli.

Yine de neden root erişimine ihtiyaç duyduğunuzdan emin değilsiniz, ama bu benim şartımdır, bölgeler size bir çözüm sunacaktır.


-3
2017-10-29 09:22





TÜM NOKTASI YANİ MİSİNİZ ????

WEB GELİŞTİRME İÇİN: Dev sunucu, uygulamanın CANLI ÜRETİM'de yer alacağı canlı sunucunun MÜKEMMEL BİR YANSIMASI olmalıdır. NİYE YA? Donanım açısından bakıldığında, canlı sunucunuzun tüm malzemelerinizi test ettiğiniz Dev sunucusu gibi EXACTLY çalışacağından emin olmak istersiniz. Donanım farklıysa, sonuçlar (okumak için: WILL) değişebilir.

SVN veya hatta Dreamweaver'ın SourceSafe (kilitleme sistemi) kullanıyorsanız, web geliştiricilerinizin ne yaptığını bildiği sürece hatalardan korunuyorsunuz. Herkesin doğrudan bir projeye katkıda bulunabilmesi için sahip olunması gereken harika ilerleme ve işbirliği, geliştiricilerin birbirleriyle ilgili daha fazla bilgi edinmelerine yardımcı olabilir ve sonraki projeleri daha kolay ve kolay bir şekilde gerçekleştirebilir.

YAZILIMIN GELİŞTİRİLMESİ İÇİN: Sadece bahsettiğim ekip çalışması ahlakı hala geçerli. Herkes tek bir geliştirme sunucusunu paylaşıyorsa, ekip çalışması ve komisyonsuzdan faydalanmaya devam ediyorlar, fakat elbette ki yazılımla, üzerinde çalışmak istediğiniz platform (lar) ı düşünmeniz gerekiyor. Öyleyse, projeye göre bir proje olduğunu söyleyebilirim. Çözümünüz, uyumlu olmaya çalıştığınız platformların donanım özelliklerini karşılamak için "Birden Çok Paylaşılan Dev Sunucu" olabilir.

Bu söyleniyor - Microsoft veya Adobe olduğunuz sürece (okumak için), "yeterli" tipte sistemleri asla test etmeyeceksiniz ...


-3
2018-01-03 21:36



Hayır, bu yüzden montaj / hazırlık ortamlarınız var. - growse