Bir programcı olarak, verilenler için sistem yöneticileri almaya meyilliyiz. İyi bir sysadmin olmadığım birkaç kez, yaptığınız şeyi takdir etmemi sağladınız. Sisadminsiz bir ortama girerken, bize hangi bilgelik sözlerini sunabilirsiniz?
Bir programcı olarak, verilenler için sistem yöneticileri almaya meyilliyiz. İyi bir sysadmin olmadığım birkaç kez, yaptığınız şeyi takdir etmemi sağladınız. Sisadminsiz bir ortama girerken, bize hangi bilgelik sözlerini sunabilirsiniz?
Yanıtlar:
Şununla başlardım:
<buraya büyük sorumluluk reddi beyanı ekleyin>
Bunlardan bazıları daha önce söylendi, ama tekrar etmeye değer.
Belgeler:
Her şeyi belgeleyin. Eğer bir tane yoksa, radar altında bir wiki yükleyin, ancak yedeklediğinizden emin olun. Gerçekleri toplamaya başlayın ve bir gün büyük bir resim oluşacak.
Her bir mantıksal öbek için diyagramlar oluşturun ve bunları güncel tutun Doğru bir ağ haritasının veya küme diyagramının beni kurtardığı sayısı sayamadım.
Her bir sistem için derleme günlükleri tutun, nasıl yapılacağına ilişkin yalnızca kopyala ve yapıştır komutları olsa bile.
Sisteminizi oluştururken, uygulamalarınızı kurun ve yapılandırın, test edin ve kıyaslama işlemlerinizi gerçekleştirin. Şimdi diskleri silin. Ciddi anlamda. Disklerin önündeki ilk megabayt 'dd' ya da aksi takdirde kutunun açılmaz olmasını sağlar. Saat geçiyor: belgelerinizin sıfırdan yeniden oluşturulabileceğini kanıtlayın (veya daha iyisi, iş arkadaşınızın belgelerinizden başka bir şey yapamayacağını kanıtlayın). Bu, Olağanüstü Durum Kurtarma planınızın yarısını oluşturacaktır.
Şimdi, Olağanüstü Durum Kurtarma planınızın ilk yarısına sahipsiniz, gerisini belgeleyin; Uygulamanızın durumunu nasıl geri alacağınız (dosyaları teypten geri yükleme, veri tabanlarını çöplüklerden yeniden yükleme), satıcı / destek detayları, ağ gereksinimleri, yedek donanımı nasıl ve nerede alacağınız - bunun sisteminizin geri alınmasına yardımcı olacak herhangi bir şey.
Otomasyon:
İzleme:
Uygulama enstrümantasyonu saf altındır. Sistemden geçen işlemleri izleyebilmek hata ayıklamayı ve sorun gidermeyi çok daha kolaylaştırır.
Yalnızca uygulamanın canlı olduğunu kanıtlamakla kalmayıp, gerçekten de yapması gerekeni yapan testler oluşturun. Uyarı amacıyla izleme sistemine bağlanabilirse puanlar sizindir. Bu çifte görev yapar; Uygulama çalışmalarının kanıtlanmasının yanı sıra, sistem yükseltmelerini önemli ölçüde kolaylaştırır (izleme sistemi yeşil raporlar, yükseltme çalıştı, eve gitme zamanı).
Yapılması gereken her şeyin ölçütlerini ölçün, izleyin ve toplayın. Benchmarklar size ne zaman bir şey bekleyeceğinizi söyler, sihirli dumanın çıkmasına neden olur. İzleme, ne zaman bulunduğunu gösterir. Metrikler ve istatistikler, yönetim aracılığıyla yeni bir kit (taze sihirli dumanlı) almayı kolaylaştırır.
Bir izleme sisteminiz yoksa, bir tane uygulayın. Bonus, eğer gerçekten yukarıdaki uçtan uca testleri zorlarsanız puanlar.
Güvenlik:
"chmod 777" (aka tüm erişim / ayrıcalıklara izin ver) hiçbir zaman çözüm değildir.
'En az bit' prensibine abone olun; Takılı değilse, kopyalanmadığında veya diskte bulunmuyorsa, tehlikeye atılamaz. "Mutfak lavabosu" işletim sistemi ve yazılım yüklemeleri, yapım aşamasında hayatı kolaylaştırabilir, ancak bunun peşinden para ödersiniz.
Bir sunucudaki her açık portun ne işe yaradığını öğrenin. Yenilerinin görünmediğinden emin olmak için sık sık denetleyin.
Tehdit edilmiş bir sunucuyu temizlemeye çalışmayın; sıfırdan yeniden inşa edilmesi gerekiyor. Yeni indirilen medya içeren yedek bir sunucuya yeniden oluşturun, yalnızca yedeklerden verileri (ikili dosyalar tehlikeye atılabildiğinden) geri yükleyin veya aynı ana makineyi yeniden oluşturmak için analizden izole edilmiş bir yere kopyalayın. Buralarda yasal bir kabus var, bu yüzden yasal caddeleri takip etmeniz gerekebileceği için koruma tarafında. (Not: IANAL).
Donanım:
Asla hiçbir şeyin kutuda yazanları yapacağını varsaymayın. İhtiyacınız olanı yaptığını kanıtlayın, sadece yapmazsa diye. "Neredeyse işe yarıyor" diyerek kendinizi beklediğinizden daha sık bulacaksınız.
Uzaktan donanım yönetimine dokunmayın. Seri konsollar ve ışıklandırma yönetimi zorunlu olarak kabul edilmelidir. Seçenek dışı olduğunuz zamanlar için uzaktan kumandalı elektrik prizleri için bonus puanları.
(Bir yana: 3'te bir sorunu çözmenin iki yolu var, biri sıcak olmak, pijamalarınızdaki bir VPN üzerinden bir dizüstü bilgisayarda çalışmak, diğeri kalın bir ceket ve veri merkezine / ofisine gitmek. tercih etmek.)
Proje Yönetimi:
Proje yaşam döngüsünün ilk gününden itibaren sistemi koruyacak kişileri dahil edin. Kit ve beyin zamanındaki teslim süreleri sürpriz olabilir ve olacaktır ve proje bağımlılığı haline gelecek standartlara veya gereksinimlere sahip olacaklarından (?
Belgeler projenin bir parçasıdır. Proje kapatıldıktan ve sistem bakıma geçtikten sonra her şeyi yazmak için asla zaman kazanamayacaksınız, bu nedenle başlangıçta programa çaba olarak dahil edildiğinden emin olun.
Projeye ilk günden itibaren planlanan eskime uygulayın ve proje belgelerinde belirttiğiniz kapanış gününden altı ay önce yenileme döngüsüne başlayın.
Sunucular, üretimde kullanım için uygun olduklarında belirli bir ömre sahiptir. Bu kullanım ömrünün sonu genellikle, satıcı, yıllık bakımda kiti yenilemenin maliyetinden daha fazla veya üç yıl (hangisi daha kısa ise) daha fazla şarj etmeye başladığı zaman olarak tanımlanır. Bu süreden sonra, geliştirme / test ortamları için mükemmeldir, ancak işi yürütmek için onlara güvenmemelisiniz. 2/2 yılda çevreyi tekrar ziyaret etmek, yeni kitin sipariş edilmesi için gerekli yönetim ve finansman kasnaklarına atlamanız ve eski kiti gökyüzündeki büyük satıcıya göndermeden önce sorunsuz bir geçiş uygulaması için size bolca zaman kazandırır.
Geliştirme:
Yedekler
Yedeklemediğiniz veriler istemediğiniz verilerdir. Bu değişmez bir yasadır. Gerçekliğinizin bununla eşleştiğinden emin olun.
Yedekler göründüklerinden daha zor; bazı dosyalar açık veya kilitli olacak, diğerlerinde ise herhangi bir kurtarma umuduna sahip olmak için sorgulanmaları ve tüm bu sorunların ele alınması gerekiyor. Bazı yedek paketler, açık / kilitli dosyalarla uğraşmak için aracılara veya başka yöntemlere sahiptir, diğer paketlerde yoktur. Veritabanlarını diske atmak ve bu yedekleri yedeklemek bir "sorgulama" biçimi olarak sayılır, ancak tek yöntem bu değildir.
Testler yapılmadıkça, yedeklemeler değersizdir. Her birkaç ayda bir, rasgele bir bandı arşivlerden çıkarın, gerçekte veri bulunduğundan ve verilerin tutarlı olduğundan emin olun.
Ve en önemlisi...
Başarısızlık modlarını seç, yoksa Murphy ... ve Murphy programına uymaz.
Başarısızlık için tasarım yapın, her sistemin tasarlanmış zayıf noktalarını, onları neyin tetiklediğini ve nasıl kurtarılacağını belgeleyin. Bir şeyler ters gittiğinde her şeyi değiştirecek.
Kolay olduğunu farz etme. Ben sadece bir web çiftliği çalıştırabilir orada dev kutusu üzerine IIS veya Apache ayarlayabileceklerini düşünen birçok programcı biliyorum. İşin neler içerdiğini anlayın ve araştırma ve planlamanızı yapın, yalnızca sysadmin çalışmasının, uygulamanızı dağıtmak için 10 dakika içinde yapabileceğiniz en kolay şey olduğunu düşünmeyin.
Güvenlik bir düşünce değildir. Saldırıya uğramış bir uygulama programcının beceriksiz görünmesine neden olsa da (en azından) bir sysadmin için yedeklerden doğrulama, temizleme ve / veya geri yükleme yapmak için harcanan (en azından) kaybedilen bir hafta sonu.
Bu nedenle, yedeklemeleri sürüm kontrolü olarak kabul etmeyin. Olağanüstü durum kurtarması için tasarlandılar ve kodunuzu geri yüklemek için gerçekten tasarlanmadılar, çünkü değiştirdiğiniz şeyi unuttunuz.
Kodunuzun kırılmasından Windows Güncelleştirmeleri'ni suçlamayı da kesin. İşe yaramaz olması umurumda değil, neden şimdi işe yaramadığını söyle - o zaman kimin suçu olduğunu görebiliriz.
Ağ sorunları ve hata ayıklama sysadmin araçları ile çalışmasını izlemek nasıl. Sistem yönetimine başlayan bir programcı olarak, birçok programcının bir zamanlar "sadece durduğunu" ağa bağlanması ne kadar iktidarsız olduğuna şaşırdım.
openssl s_client -connect target-host:port
Ağ servislerine manüel olarak bağlanmak için OpenSSL şifrelemeyle aynı şey için (ipucu: bazen deneyin )Sorunların nasıl giderileceğini öğrenin.
Parayı iletmek çok kolay (örneğin, ağınız veritabanımla olan iletişimi takip ediyor). Ağın hatası olabilir, ancak Google veya SO kullanarak bir uygulamanın yapılandırmasında bir sorun ortaya çıkarabilecek hata içeren uygulama günlükleriniz olmalıdır.
Herkes donanımı, işletim sistemini veya ağı suçlamayı sever, bu nedenle biraz daha titizlik gösterirseniz, sysadmin'i mutlu bir insan yaparsınız. Çünkü, eğer başka bir şey yoksa, onları neyin yanlış olabileceğine dair belirli bir yöne işaret edebilirsiniz ("ağınız berbat" derken ya da eşit derecede yararlı bir şey).
Yapabildiğiniz her şeyi belgeleyin. Son sysadmin 'in kaç kez' iş güvenliği 'için bir şeyler belgelemenin ya da sadece içeri girmek ve dışarı çıkmak isteyen birini belgelemenin hoş olacağını düşündüğünü söyleyemem. Tıpkı bir programcının iyi yorumlar bırakması gibi, sysadmins de bunu belgelemelidir. Topolojinin bir diyagramı da iyi olurdu.
Dokümantasyon: fındık kullanmaya gerek yok, ancak uygulamanın nasıl çalıştığı, bitlerin nasıl uyduğunu ve her bir bileşen yanlış gittiğinde test etme yollarını gösteren bir şema. Örnek veri ve çıktı güzel.
Gereksinimler: hangi modüllere dayanıyor? Sürümleri? İŞLETİM SİSTEMİ?
İzleme: İdeal olarak geliştiriciler uygulamada izleme bilgilerini ve testleri içerir.
Ambalajın konuşması, PAKETLEME! Bir "konuşlandırma" dan daha kötü bir şey olamaz; bu, VCS'den bir dosyanın yeni bir revizyonunu kontrol etmek ve onu bir sürü sunucuya kopyalamak anlamına gelir. Programcılar çoğu zaman yazılım dağıtmanın karmaşıklığını takdir etmezler: sürümlenmiş, paketlenmiş yazılımların çoğu işletim sisteminin omurgasını oluşturmasının nedenleri vardır.
Bir geliştirici bana ilk kez kısa, kapsamlı belgeler ve bazı Nagios testleriyle yüklenen bir RPM ile geldiyse, en iyi arkadaşım olurlardı.
Bu sadece yeni başlayan programcılar için geçerli olabilir, ancak bazı projecilerle birlikte her projede birkaç şey ile ilgileniyorum.
"Makinemde çalışıyor" hiçbir zaman geçerli bir ifade değildir. Sunucuda kullanılmak üzere bir yükleme programı oluşturmak veya en azından sunucuda gerekli olacak her bağlantı ve dll ve eklentiyi belgelemek programcının sorumluluğundadır.
(Bunu defalarca duydum, lütfen gülmeyin) Sunucudaki exe'yi makinemden çalıştırıyorum ve çalışıyor. Ancak, sunucuda çalıştırdığımda (Citrix, Terminal Server vb.) Çalışmaz. Lütfen dll ve ocx'leri ve programınızın ihtiyaç duyduğu her şeyi ve bunların nerede ve nasıl kaydedildiğini ve programınızın bunları nasıl kullandığını anlayın.
Bunlar basit görünebilir ama ben sürekli bununla ilgileniyorum.
Brian
Tamam, bu biraz esiyor ama:
a) Kodlama yaparken, altta yatan altyapının başarısız olabileceğini ve her zaman mutlu olan arazilerden gelmediğini kabul edin. Veya Google.
b) Muhtemelen okuduğunuz altyapı gibi herhangi bir şeyi uygulayacak kaynağa sahip değiliz, bu yüzden işler düştüğünde bizi rahatlatın. Ne yapılması gerektiğini bilmemiz muhtemel, ancak ne sebeple olursa olsun henüz gerçekleşmedi. Biz ortağınızız!
c) Yukarıda belirtilen jhs gibi, ping, traceroute (veya her ikisini birleştiren - mtr), kazmak, vb. gibi altyapıyı gidermek için araçlara aşina olmanız gerçekten yardımcı olacaktır.
d) Bir bilgisayarı programlarsanız, ağa nasıl bağlandığını ve ipconfig / all veya ifconfig çıktısını ayrıştırma gibi temel hususları gerçekten bilmeniz gerekir. İnternet bağlantınızı kurup asgari yardımla çalışabilmelisiniz.
Aksi halde, Avery'nin onu çok çivilediğini düşünüyorum. Küçük bir sysadmin yapan devler altın cinsinden ağırlıklarına değer! Ancak, eşit olarak, dev'lerin bazı şeyleri (sürümleme vb. Dahil) nasıl yürüdüğünü anlayan sistem yöneticileri bu gün ve çağda oldukça önemlidir.
Bu şu anda havada görünüyor, bloglardaki dev / op ilişkileri hakkında daha fazla tartışma gördüm - göz atın
Hiçbir grubun veya işlevin diğerinden daha iyi olmadığı ve hiçbirinin birbirinden daha büyük beyinler gerektirmediği. Her iki tarafın da diğerlerinin şirketlerinde prima-dona'lar elde ettiğini gördüm - hepiniz aynı hedefleri başarmaya çalışıyorsunuz - bu benzerliklere odaklanın ve farklı araçlar kullandığınız gerçeğine değil.
Altyapı mimarı programcı döndü, gelecekte bu işlemi geri almak isteyebilir :)
Geliştiriciler için bir sistem yöneticisi ve kendim de bir geliştirici olan biri olarak, burada verilen tavsiyeler sadece altın değil, aynı zamanda tüm şirketler için yeni geliştiriciler için işe alma belgelerinin bir parçası olmalıdır.
Görmediğim (henüz) açıklama yapmadığım bir şey, geliştiricilerin ödedikleri programları oluşturmak için kullanacakları ürünleri gerçekten bilmeleri gerektiğidir. Geliştirici makinelerinde apache sunucularını, eclipse ve Visual Studio kurulumlarını ve veritabanını açıklamak ve yapılandırmak zorunda kaldığım süre biraz endişe verici.