ในฐานะโปรแกรมเมอร์เรามักจะใช้ sysadmins เพื่อรับสิทธิ์ ไม่กี่ครั้งที่ฉันไม่เคยดูแลระบบที่ดีมาก่อนก็ทำให้ฉันซาบซึ้งในสิ่งที่พวกคุณทำ เมื่อเราเข้าไปในสภาพแวดล้อมที่ไม่มีระบบการดูแลระบบคุณสามารถเสนอคำแห่งปัญญาให้เราได้บ้าง
ในฐานะโปรแกรมเมอร์เรามักจะใช้ sysadmins เพื่อรับสิทธิ์ ไม่กี่ครั้งที่ฉันไม่เคยดูแลระบบที่ดีมาก่อนก็ทำให้ฉันซาบซึ้งในสิ่งที่พวกคุณทำ เมื่อเราเข้าไปในสภาพแวดล้อมที่ไม่มีระบบการดูแลระบบคุณสามารถเสนอคำแห่งปัญญาให้เราได้บ้าง
คำตอบ:
ฉันจะเริ่มต้นด้วย:
<ใส่ข้อความปฏิเสธความรับผิดชอบโพสต์ใหญ่ที่นี่>
บางส่วนของแนวหินเหล่านี้เคยพูดมาก่อน แต่มันก็คุ้มค่าที่จะทำซ้ำ
เอกสารอ้างอิง:
บันทึกเอกสารทุกอย่าง หากคุณยังไม่มีให้ติดตั้งวิกิเรดาร์ภายใต้เรดาร์ แต่ให้แน่ใจว่าคุณสำรองไว้ เริ่มต้นด้วยการรวบรวมข้อเท็จจริงและวันหนึ่งภาพใหญ่ก็จะปรากฏขึ้น
สร้างไดอะแกรมสำหรับแต่ละกลุ่มตรรกะและปรับปรุงให้ทันสมัยอยู่เสมอ ฉันไม่สามารถนับจำนวนครั้งที่แผนผังเครือข่ายที่ถูกต้องหรือไดอะแกรมคลัสเตอร์ช่วยฉันได้
เก็บบันทึกการสร้างสำหรับแต่ละระบบแม้ว่าจะเป็นเพียงการคัดลอกและวางคำสั่งสำหรับวิธีการสร้าง
เมื่อสร้างระบบของคุณให้ติดตั้งและกำหนดค่าแอปทดสอบการทำงานและดำเนินการเปรียบเทียบของคุณ ตอนนี้เช็ดดิสก์ อย่างจริงจัง. 'dd' เมกะไบต์แรกที่อยู่ด้านหน้าของดิสก์หรือทำให้กล่องไม่สามารถบูตได้ นาฬิกากำลังฟ้อง: พิสูจน์ว่าเอกสารของคุณสามารถสร้างใหม่ได้ตั้งแต่ต้น (หรือดีกว่าพิสูจน์ว่าเพื่อนร่วมงานของคุณสามารถทำได้โดยไม่มีอะไรมากกว่าเอกสารของคุณ) นี่จะเป็นครึ่งหนึ่งของแผนการกู้คืนความเสียหาย
ตอนนี้คุณมีแผนกู้คืนภัยพิบัติในครึ่งแรกของคุณแล้ว วิธีคืนสถานะแอปพลิเคชันของคุณ (กู้คืนไฟล์จากเทปโหลดฐานข้อมูลจากการทิ้ง) รายละเอียดผู้ขาย / สนับสนุนข้อกำหนดเครือข่ายวิธีการและตำแหน่งที่จะรับฮาร์ดแวร์ทดแทน - สิ่งใดก็ตามที่คุณคิดว่าจะช่วยให้ระบบสำรองข้อมูล
ระบบอัตโนมัติ:
การตรวจสอบ:
การประยุกต์ใช้เครื่องมือวัดเป็นทองคำบริสุทธิ์ ความสามารถในการดูธุรกรรมที่ทำผ่านระบบทำให้การดีบักและแก้ไขปัญหาง่ายขึ้นมาก
สร้างการทดสอบแบบครบวงจรที่พิสูจน์ได้ว่าไม่เพียง แต่แอปพลิเคชั่นยังมีชีวิตอยู่ แต่ทำในสิ่งที่มันควรจะเป็นจริง คะแนนเป็นของคุณหากสามารถต่อเข้ากับระบบตรวจสอบเพื่อแจ้งเตือนได้ ทำหน้าที่สองหน้าที่นี้; นอกเหนือจากการพิสูจน์ว่าแอปใช้งานได้แล้วมันทำให้การอัพเกรดระบบง่ายขึ้นอย่างมาก (ระบบการตรวจสอบรายงานสีเขียวอัพเกรดทำงานได้เวลากลับบ้าน)
เกณฑ์มาตรฐานตรวจสอบและรวบรวมตัวชี้วัดในทุกสิ่งที่ควรทำ เกณฑ์มาตรฐานบอกคุณเมื่อต้องคาดหวังว่าบางสิ่งจะทำให้ควันวิเศษออกไป การตรวจสอบจะบอกคุณเมื่อมี ตัวชี้วัดและสถิติทำให้ง่ายต่อการรับชุดใหม่ (ด้วยควันเวทย์ใหม่) ผ่านการจัดการ
หากคุณไม่มีระบบการตรวจสอบให้ดำเนินการอย่างใดอย่างหนึ่ง คะแนนโบนัสหากคุณทำการทดสอบแบบ end-to-end ด้านบน
การรักษาความปลอดภัย:
"chmod 777" (หรือที่รู้จักกันว่าให้สิทธิ์การเข้าถึง / สิทธิ์ทั้งหมด) ไม่เคยเป็นทางออก
สมัครสมาชิกหลักการ 'น้อยที่สุด'; หากยังไม่ได้ติดตั้งคัดลอกหรืออาศัยอยู่บนดิสก์จะไม่สามารถทำลายได้ "อ่างล้างมือในครัว" การติดตั้งระบบปฏิบัติการและซอฟต์แวร์อาจทำให้ชีวิตง่ายขึ้นในระหว่างขั้นตอนการสร้าง แต่คุณต้องจ่ายเงินเพื่อติดตาม
รู้ว่าทุกพอร์ตที่เปิดอยู่บนเซิร์ฟเวอร์นั้นมีไว้เพื่ออะไร ตรวจสอบพวกเขาเป็นประจำเพื่อให้แน่ใจว่าไม่มีของใหม่ปรากฏขึ้น
อย่าพยายามทำความสะอาดเซิร์ฟเวอร์ที่ถูกบุกรุก จำเป็นต้องสร้างใหม่ตั้งแต่เริ่มต้น สร้างใหม่ไปยังเซิร์ฟเวอร์สำรองด้วยสื่อที่ดาวน์โหลดใหม่การกู้คืนข้อมูลจากการสำรองข้อมูลเท่านั้น (เนื่องจากไบนารีอาจถูกบุกรุก) หรือโคลนโฮสต์ที่ถูกบุกรุกไปยังที่อื่นที่แยกได้เพื่อการวิเคราะห์เพื่อให้คุณสามารถสร้างชุดใหม่ได้ มีฝันร้ายทางกฎหมายอยู่รอบตัวนี้ดังนั้นทำผิดทางด้านการดูแลรักษาในกรณีที่คุณต้องการดำเนินการทางกฎหมาย (หมายเหตุ: IANAL)
ฮาร์ดแวร์:
อย่าสันนิษฐานว่าอะไรจะทำตามที่พูดในกล่อง พิสูจน์ว่ามันทำในสิ่งที่คุณต้องการในกรณีที่มันไม่ คุณจะพบว่าตัวเองพูดว่า "ใช้งานได้" บ่อยกว่าที่คุณคาดหวัง
อย่าข้ามการจัดการฮาร์ดแวร์ระยะไกล คอนโซลการจัดการแบบอนุกรมและการจัดการไฟควรพิจารณาให้เหมาะสม คะแนนโบนัสสำหรับแถบพลังงานที่ควบคุมจากระยะไกลในช่วงเวลานั้นเมื่อคุณไม่มีตัวเลือก
(นอกเหนือจาก: มีสองวิธีในการแก้ไขปัญหาเวลา 3:00 น. หนึ่งครั้งเกี่ยวข้องกับความอบอุ่นทำงานบนแล็ปท็อปผ่าน VPN ในชุดนอนของคุณอีกวิธีหนึ่งเกี่ยวข้องกับแจ็คเก็ตหนาและไดรฟ์ไปยังดาต้าเซ็นเตอร์ / สำนักงาน ต้องการ.)
การจัดการโครงการ:
ให้ผู้คนมีส่วนร่วมในการรักษาระบบตั้งแต่วันแรกของวงจรชีวิตของโครงการ เวลานำในชุดและเวลาสมองสามารถและจะแปลกใจและไม่ต้องสงสัยเลยว่าพวกเขาจะ (ควร?) มีมาตรฐานหรือข้อกำหนดที่จะกลายเป็นการพึ่งพาโครงการ
เอกสารเป็นส่วนหนึ่งของโครงการ คุณจะไม่มีเวลาเขียนสิ่งต่าง ๆ ทั้งหมดหลังจากที่โครงการถูกปิดและระบบได้ย้ายไปที่การบำรุงรักษาดังนั้นให้แน่ใจว่ามันรวมอยู่ในความพยายามตามกำหนดเวลาที่เริ่มต้น
ใช้การล้าสมัยตามแผนในโครงการตั้งแต่วันแรกและเริ่มวงจรการรีเฟรชหกเดือนก่อนวันปิดที่คุณระบุในเอกสารโครงการ
เซิร์ฟเวอร์มีอายุการใช้งานที่กำหนดเมื่อเหมาะสมสำหรับใช้ในการผลิต จุดสิ้นสุดของอายุการใช้งานนี้มักจะถูกกำหนดเป็นเมื่อใดก็ตามที่ผู้ขายเริ่มคิดค่าบริการเพิ่มเติมในการบำรุงรักษารายปีมากกว่าที่จะเสียค่าใช้จ่ายในการรีเฟรชชุดอุปกรณ์หรือประมาณสามปี หลังจากเวลานี้พวกเขาเหมาะสำหรับสภาพแวดล้อมการพัฒนา / ทดสอบ แต่คุณไม่ควรพึ่งพาพวกเขาในการดำเนินธุรกิจ การกลับมาใช้สภาพแวดล้อมอีกครั้งใน 2 1/2 ปีให้เวลากับคุณในการจัดการห่วงและการเงินที่จำเป็นสำหรับชุดใหม่ที่จะสั่งซื้อและใช้การโยกย้ายที่ราบรื่นก่อนที่คุณจะส่งชุดเก่าไปยังผู้ขายรายใหญ่บนท้องฟ้า
การพัฒนา:
การสำรองข้อมูล
ข้อมูลที่คุณไม่ได้ทำการสำรองข้อมูลคือข้อมูลที่คุณไม่ต้องการ นี่เป็นกฎหมายที่ไม่เปลี่ยนรูป ตรวจสอบให้แน่ใจว่าความเป็นจริงของคุณตรงกับสิ่งนี้
สำรองข้อมูลยากกว่าที่พวกเขามอง; ไฟล์บางไฟล์จะเปิดหรือล็อคในขณะที่คนอื่น ๆ จะต้องสงสัยว่าจะมีความหวังในการกู้คืนและปัญหาเหล่านี้จะต้องได้รับการแก้ไข แพ็คเกจสำรองบางอันมีเอเจนต์หรือวิธีอื่น ๆ เพื่อจัดการกับไฟล์เปิด / ล็อค การดัมพ์ฐานข้อมูลลงในดิสก์และสำรองข้อมูลนั้นนับเป็นรูปแบบหนึ่งของ "quiescing" แต่ไม่ใช่วิธีการเดียว
การสำรองข้อมูลไม่มีค่าหากไม่ได้ทำการทดสอบ ทุกสองสามเดือนดึงเทปสุ่มออกจากที่เก็บถาวรตรวจสอบให้แน่ใจว่ามีข้อมูลอยู่ในนั้นและข้อมูลนั้นสอดคล้องกัน
และที่สำคัญที่สุด ...
เลือกโหมดความล้มเหลวของคุณมิฉะนั้นเมอร์ฟีจะ ... และเมอร์ฟีไม่ทำงานตามกำหนดเวลาของคุณ
ออกแบบสำหรับความล้มเหลวบันทึกจุดอ่อนที่ออกแบบไว้ของแต่ละระบบสิ่งที่กระตุ้นให้พวกเขาและวิธีการกู้คืน มันจะสร้างความแตกต่างเมื่อมีอะไรผิดพลาด
อย่าถือว่าง่าย ฉันรู้ว่าโปรแกรมเมอร์หลายคนที่คิดว่าเพียงเพราะพวกเขาสามารถติดตั้ง IIS หรือ Apache บนกล่อง dev มีที่พวกเขาสามารถเรียกใช้เว็บฟาร์ม ทำความเข้าใจกับงานที่เกี่ยวข้องและทำการวิจัยและการวางแผนของคุณไม่เพียง แต่คิดว่างานระบบดูแลระบบเป็นสิ่งที่ง่ายที่คุณสามารถทำได้ภายใน 10 นาทีเพื่อนำแอปไปใช้งาน
ความปลอดภัยไม่ได้เป็นในภายหลัง ในขณะที่แอพที่ถูกแฮ็กสามารถทำให้โปรแกรมเมอร์ดูไร้ความสามารถ แต่อย่างน้อยก็ต้องใช้เวลาในการตรวจสอบทำความสะอาดและ / หรือคืนค่าจากการสำรองข้อมูลสำหรับการดูแลระบบ
สำหรับเรื่องนั้นไม่ถือเป็นการสำรองข้อมูลเป็นตัวควบคุมเวอร์ชัน สำหรับการกู้คืนจากความเสียหายและไม่ได้ออกแบบมาเพื่อกู้คืนรหัสของคุณเพราะคุณลืมสิ่งที่คุณเปลี่ยน
และหยุดโทษ Windows Update อย่างไม่ระมัดระวังเนื่องจากรหัสของคุณเสีย ฉันไม่สนใจว่ามันใช้งานได้สบายบอกฉันทีว่าทำไมมันไม่ทำงานตอนนี้ - จากนั้นเราจะเห็นว่ามันเป็นความผิดของใคร
วิธีแก้ปัญหาเครือข่ายและดูโปรแกรมของคุณทำงานด้วยเครื่องมือดูแลระบบ ในฐานะโปรแกรมเมอร์ที่เริ่มต้นในการบริหารระบบฉันประหลาดใจที่โปรแกรมเมอร์หลายคนไร้สมรรถภาพกลายเป็นเครือข่ายเพียงครั้งเดียว "หยุด"
openssl s_client -connect target-host:port
บางครั้ง) สำหรับการเชื่อมต่อกับบริการเครือข่ายด้วยตนเองรู้วิธีแก้ไขปัญหา
มันง่ายมากที่จะผ่านการจ่ายเงิน (เช่นเครือข่ายของคุณกำลังปกปิดการสื่อสารของฉันกับฐานข้อมูล) อาจเป็นความผิดพลาดของเครือข่าย แต่คุณควรมีบันทึกแอปพลิเคชันที่มีข้อผิดพลาดที่ใช้ Google หรือดังนั้นอาจเปิดเผยปัญหาในการกำหนดค่าของแอป
ทุกคนชอบที่จะตำหนิฮาร์ดแวร์ระบบปฏิบัติการหรือเครือข่ายดังนั้นหากคุณฝึกฝนความขยันเนื่องจากคุณจะทำให้ผู้ดูแลระบบมีความสุข เพราะหากไม่มีอะไรอื่นคุณอาจชี้ไปในทิศทางที่เฉพาะเจาะจงกับสิ่งที่อาจผิด (ตรงข้ามกับการพูดว่า "เครือข่ายของคุณแย่ลง" หรือบางสิ่งที่มีประโยชน์เท่าเทียมกัน)
บันทึกเอกสารทุกอย่างที่คุณทำได้ ไม่สามารถบอกคุณได้ว่ากี่ครั้งที่ระบบดูแลระบบล่าสุดคิดว่ามันน่ารักที่จะไม่จัดทำเอกสารเกี่ยวกับ 'ความปลอดภัยในการทำงาน' หรือมีคนที่ต้องการเข้าออก เช่นเดียวกับโปรแกรมเมอร์ควรแสดงความคิดเห็นดี sysadmins ควรจัดทำเอกสาร แผนภาพของทอพอโลยีก็ดีเช่นกัน
แผนข
มีแผนการกู้คืนความเสียหายในใจเสมอเมื่อออกแบบและพัฒนาโซลูชัน ตระหนักถึงความล้มเหลวเพียงจุดเดียวที่สามารถนำไปสู่การหยุดทำงาน
เอกสาร: ไม่จำเป็นต้องไปที่ถั่ว แต่วิธีการทำงานของแอพพลิเคชั่นไดอะแกรมแสดงให้เห็นว่าบิตเหมาะสมและวิธีการทดสอบแต่ละองค์ประกอบเมื่อมันผิดพลาดทั้งหมด ข้อมูลตัวอย่างและผลลัพธ์เป็นสิ่งที่ดี
ข้อกำหนด: โมดูลใดที่ต้องพึ่งพา รุ่น? OS?
การตรวจสอบ: นักพัฒนาที่ดีเลิศจะรวมถึงข้อมูลการตรวจสอบและทดสอบด้วยแอปพลิเคชัน
การพูดของบรรจุภัณฑ์บรรจุภัณฑ์! ไม่มีอะไรจะแย่ไปกว่า "การปรับใช้" ซึ่งหมายถึงการตรวจสอบการแก้ไขใหม่ของไฟล์จาก VCS และคัดลอกไปยังเซิร์ฟเวอร์จำนวนมาก บ่อยครั้งที่โปรแกรมเมอร์ไม่ได้ชื่นชมความซับซ้อนของการปรับใช้ซอฟต์แวร์: มีเหตุผลว่าทำไมซอฟต์แวร์รุ่นที่ทำแพคเกจแล้วเป็นกระดูกสันหลังของระบบปฏิบัติการส่วนใหญ่
หากนักพัฒนามาหาฉันพร้อม RPM ซึ่งติดตั้งครั้งแรกด้วยเอกสารที่กระชับรัดกุมและการทดสอบ Nagios บางอย่างพวกเขาต้องการเป็นเพื่อนที่ดีที่สุดคนใหม่ของฉัน
ฉันประหลาดใจที่ไม่ใช่คำตอบ 17 ข้อที่ให้ไว้ ณ ที่นี้รวมถึงสิ่งใด ๆ เกี่ยวกับการรับรองว่าแอปพลิเคชันของคุณจะทำงานเมื่อเข้าสู่ระบบในฐานะผู้ใช้มาตรฐาน
นอกเหนือจากกระบวนการติดตั้งแอปพลิเคชันควรทำงานได้ดีเมื่อเข้าสู่ระบบด้วยบัญชีผู้ใช้มาตรฐาน
Backup Backup Backup .... ทดสอบการสำรองข้อมูล ... พร้อมที่จะย้อนกลับ
สิ่งนี้อาจใช้กับโปรแกรมเมอร์เริ่มต้นเท่านั้น แต่ฉันจัดการกับบางสิ่งในทุกโครงการที่มีโปรแกรมเมอร์บางคน
"มันใช้งานได้กับเครื่องของฉัน" ไม่ใช่คำสั่งที่ถูกต้อง เป็นความรับผิดชอบของโปรแกรมเมอร์ในการสร้างโปรแกรมติดตั้งสำหรับใช้บนเซิร์ฟเวอร์หรืออย่างน้อยก็เอกสารทุกการเชื่อมต่อและ dll และ Add-in ที่จะต้องมีบนเซิร์ฟเวอร์
(ฉันเคยได้ยินมาหลายครั้งแล้วดังนั้นโปรดอย่าหัวเราะ) ฉันเรียกใช้ exe บนเซิร์ฟเวอร์จากเครื่องของฉันและใช้งานได้ แต่เมื่อฉันเรียกใช้บนเซิร์ฟเวอร์ (Citrix, Terminal Server ฯลฯ ) มันไม่ทำงาน โปรดเข้าใจ dll's และ ocx's และสิ่งอื่นใดที่โปรแกรมของคุณต้องการและที่ไหนและอย่างไรที่พวกเขาลงทะเบียนและวิธีการใช้โปรแกรมของคุณ
สิ่งเหล่านี้อาจดูเรียบง่าย แต่ฉันจัดการกับมันตลอดเวลา
ไบรอัน
ตกลงนี่คุยโวเล็กน้อย แต่:
a) เมื่อการเข้ารหัสให้สมมติว่าโครงสร้างพื้นฐานนั้นอาจล้มเหลวและไม่ได้มาจากดินแดนที่มีความสุขตลอดเวลา หรือ Google
b) เราอาจไม่มีทรัพยากรที่จะนำไปใช้ประโยชน์อะไรเช่นโครงสร้างพื้นฐานที่คุณได้อ่านเอาไว้ดังนั้นเมื่อเรามีปัญหา เป็นไปได้ว่าเรารู้ว่าต้องทำอะไร แต่ไม่ว่าจะด้วยเหตุผลใดก็ตาม เราเป็นหุ้นส่วนของคุณ!
c) เช่นเดียวกับ jhs ที่กล่าวไว้ข้างต้นมันจะช่วยได้จริงๆถ้าคุณมีความคุ้นเคยในการใช้เครื่องมือในการแก้ไขปัญหาโครงสร้างพื้นฐานเช่น ping, traceroute (หรือรวมทั้ง - mtr), ขุดและอื่น ๆ คะแนนโบนัสจำนวนมากสำหรับการรู้เกี่ยวกับ Wireshark
d) ถ้าคุณตั้งโปรแกรมคอมพิวเตอร์คุณควรรู้ว่ามันเชื่อมต่อกับเครือข่ายอย่างไรและพื้นฐานเช่นการแยกวิเคราะห์เอาต์พุตของ ipconfig / all หรือ ifconfig คุณควรจะสามารถเชื่อมต่ออินเทอร์เน็ตของคุณและทำงานด้วยความช่วยเหลือน้อยที่สุด
ไม่อย่างนั้นฉันคิดว่าเอเวอรี่ค่อนข้างตอกย้ำมัน ผู้ที่ดูแลดูแลระบบเล็กน้อยมีค่าน้ำหนักในทองคำ! แต่อย่างเท่าเทียมกันผู้ดูแลระบบที่เข้าใจว่า devs ไปเกี่ยวกับสิ่งต่าง ๆ (รวมถึงเวอร์ชัน ฯลฯ ) มีความสำคัญมากในวันนี้และอายุ
ตอนนี้ดูเหมือนว่าจะอยู่ในอากาศแล้วฉันได้สังเกตการสนทนาเพิ่มเติมเกี่ยวกับความสัมพันธ์ dev / ops ในบล็อก - ลองดู
ว่าไม่มีใครในกลุ่มหรือฟังก์ชั่น 'ดีกว่า' อีกกลุ่มหนึ่งและไม่มีใครต้องการ 'สมองที่ใหญ่กว่า' ซึ่งกันและกัน ฉันเห็นว่าทั้งสองฝ่ายได้รับพรีมาโดน่าทั้งหมดใน บริษัท อื่น - คุณทุกคนพยายามบรรลุเป้าหมายเดียวกัน - มุ่งเน้นความคล้ายคลึงกันเหล่านี้ไม่ใช่ความจริงที่ว่าคุณใช้เครื่องมือที่แตกต่างกัน
สถาปนิกโครงสร้างพื้นฐานหันมาเขียนโปรแกรมอาจต้องการย้อนกลับการทำธุรกรรมนั้นในอนาคตแม้ว่า :)
ในฐานะที่เป็นคนที่เป็นผู้ดูแลระบบสำหรับนักพัฒนาซอฟต์แวร์และผู้พัฒนาเองคำแนะนำที่ได้รับไม่ใช่เพียงแค่ทองคำเท่านั้น แต่ควรเป็นส่วนหนึ่งของเอกสารการจ้างงานสำหรับนักพัฒนาใหม่สำหรับ บริษัท ต่างๆ
สิ่งที่ฉันยังไม่เห็น (อธิบาย) ก็คือนักพัฒนาซอฟต์แวร์ควรรู้ผลิตภัณฑ์ที่พวกเขาจะใช้เพื่อสร้างโปรแกรมที่พวกเขาได้รับเงิน จำนวนครั้งที่ฉันต้องอธิบายและกำหนดค่าเซิร์ฟเวอร์ apache การติดตั้ง eclipse และ Visual Studio และฐานข้อมูลบนเครื่องนักพัฒนานั้นค่อนข้างน่าเป็นห่วง