שאלה אילו דברים מתכנתים צריכים לדעת כל מתכנת?


בתור מתכנת, אנו נוטים לקחת sysadmins כמובן מאליו. כמה פעמים הייתי ללא סיסדמין טוב באמת גרם לי להעריך מה אתם עושים. כאשר אנו עוברים לסביבה ללא עשב, אילו מילות חוכמה אתה יכול להציע לנו?


96






תשובות:


אני אתחיל ב:

  1. תמיד יש מערכת גיבוי כלשהי. אפילו יותר טוב אם יש לו היסטוריה.
  2. שקול נקודות בודדות של כישלון וכיצד להתמודד איתם אם הם נכשלים.
  3. בהתאם לכמות המחשבים המעורבים, להסתכל לתוך דרך ליצור וליצור תמונה סטנדרטית על פני מחשבים יעשה את החיים של כולם קל יותר - לא "זה עובד על שלי" כי יש להם תוכנית כזו וכזאת לא מותקן בדרך כלל.
  4. מסמך הכל, ולו רק בגלל שאתה רצון לשכוח איך אתה מגדיר משהו.
  5. התעדכן בעדכוני אבטחה.

70



מתעד את כל השלבים הוא משהו שראיתי sysadmins טוב לעשות, ואני התחלתי לעשות את זה בעצמי. מאוד מועיל, אכן. - Nathan DeWitt
שקול מערכות תיעוד עצמי. לדוגמה, מדוע לשמור על רשימה של שמות המארח בקובץ טקסט או בוויקי איפשהו כאשר קובץ אזור העיר היטב הוא המקור הקנוני של מידע. - Dave Cheney
דייב, האם זה אזור היטב תגובות אזור נגיש על ידי כל? אם אני אדם חדש מגיע על הסיפון, זה לא קל יותר להיות אמר "ללכת על ויקי זה עבור כל התשובות שלך" ולא "הכל מתועד בכל מקום. DNS מתועד בהגדרות DNS. Whozit מתועד whozit config. מסד הנתונים מתועד בקובץ תצורת מסד הנתונים. " זה נראה מאוד ... לא ידידותי לי. - Nathan DeWitt
נתן, דייב: הטריק הוא כמובן להשתמש בסקריפט כדי לעדכן את ויקי מהמקור הקנוני. זה עבד פלאים בשבילי, אני באמת מצטער שאני לא יכול להשתמש בו איפה אני עובד עכשיו. - Anders Eurenius
הייתי מוסיף לזה: בניית מערכת בדיקה. אתה צריך סביבה שבה כישלון הוא אופציה. יש לי שרת פועל VirtualBox עבור זה, אבל השתמשתי תחנת העבודה האישית שלי כאשר השרתים אינם זמינים - Mark Porter


<הוסף הודעת ויתור גדולה כאן>

כמה מהם כבר אמרו בעבר, אבל זה שווה לחזור.

תיעוד:

  • מסמך הכל. אם אין לך אחד, התקן מתחת ל-ויקי-מכ"ם, אבל הקפד לגבות אותו. התחל עם איסוף העובדות, ויום אחד, תמונה גדולה תיווצר.

  • יצירת דיאגרמות עבור כל נתח לוגי ולשמור אותם מעודכנים. לא יכולתי לספור את מספר הפעמים שמפת רשת מדויקת או דיאגרמת אשכול הצילה אותי.

  • שמור לבנות יומנים עבור כל מערכת, גם אם זה רק להעתיק ולהדביק פקודות איך לבנות את זה.

  • בעת בניית המערכת שלך, להתקין ולהגדיר את היישומים שלך, לבדוק את זה עובד ולבצע את benchmarking. עכשיו, נגב את הדיסקים. ברצינות. 'dd' את מגה בייט הראשון מול החלקים של הדיסקים או אחרת להפוך את התיבה unbootable. השעון מתקתק: להוכיח את התיעוד יכול לבנות מחדש את זה מאפס (או, אפילו טוב יותר, להוכיח את העמית יכול עם לא יותר מאשר את התיעוד). זה יהיה טופס מחצית התוכנית שלך התאוששות מאסון.

  • עכשיו יש לך את המחצית הראשונה שלך תוכנית התאוששות מאסון, מסמך את השאר; כיצד לקבל את המדינה של היישום בחזרה (לשחזר קבצים מהקלטת, לטעון מחדש מסדי נתונים מ dumps), הספק / פרטים תמיכה, דרישות הרשת, איך והיכן לקבל חומרה חלופית - כל מה שאתה יכול לחשוב על זה יעזור לקבל את המערכת שלך לגבות.

אוטומציה:

  • אוטומציה ככל שתוכל. אם אתה צריך לעשות משהו שלוש פעמים, ודא השני הוא השקיע בפיתוח אוטומציה שלך כך השלישי הוא אוטומטי לחלוטין. אם אתה לא יכול להפוך אותו, לתעד אותו. יש אוטומציה סוויטות בחוץ - לראות אם אתה יכול לגרום להם לעבוד בשבילך.

ניטור:

  • מכשור היישומים הוא זהב טהור. היכולת לראות עסקאות עובר דרך המערכת עושה איתור באגים ופתרון בעיות כל כך הרבה יותר קל.

  • יצירת בדיקות מקצה לקצה שמוכיח לא רק כי היישום הוא חי, אבל באמת עושה מה זה אמור. נקודות הם שלך אם זה יכול להיות jacked לתוך מערכת ניטור למטרות התראה. זה משרת שירות כפול; מלבד הוכחת האפליקציה פועלת, זה עושה שדרוגי מערכת קלה יותר (דוחות מערכת ניטור ירוק, לשדרג עבד, הזמן ללכת הביתה).

  • Benchmark, לפקח ולאסוף ערכים על כל דבר שפוי לעשות זאת. Benchmarks לספר לך מתי לצפות משהו ייתן את עשן הקסם. ניטור אומר לך מתי זה. מדדים וסטטיסטיקות מקל על קבלת ערכת חדש (עם עשן קסם טרי) באמצעות ניהול.

  • אם אין לך מערכת ניטור, ליישם אחד. נקודות בונוס אם אתה באמת עושה את ג 'ק מעל בדיקות מקצה לקצה לתוכו.

אבטחה:

  • "chmod 777" (aka מעניק כל גישה / הרשאות) הוא אף פעם לא הפתרון.

  • הירשם לעקרון 'לפחות ביט'; אם זה לא מותקן, להעתיק או אחרת החיים על הדיסק, זה לא יכול לקבל בסכנה. "כיור המטבח" OS והתקנות תוכנה עשוי להקל על החיים במהלך שלב לבנות, אבל בסופו של דבר אתה משלם עבור אותו במסלול.

  • לדעת מה כל יציאה פתוחה בשרת היא. בדוק אותם לעתים קרובות כדי לוודא שלא יופיעו חדשים.

  • אל תנסה לנקות שרת שנפגע; זה צריך להיות מחדש מאפס. לבנות מחדש את שרת חילוף עם מדיה שהורדו זה עתה, לשחזר רק את הנתונים של גיבויים (כמו קבצים בינאריים עלול להיות בסכנה) או לשכפל את המארח שנפגע איפשהו מבודדים לניתוח, כך שתוכל לבנות מחדש על אותה ערכת. יש סיוט משפטי שלם סביב זה, כך לטעות בצד שימור במקרה שאתה צריך להמשיך דרכים משפטיות. (הערה: IANAL).

חומרה:

  • לעולם אל תניח שום דבר יעשה מה שהוא אומר על הקופסה. להוכיח שהוא עושה את מה שאתה צריך, רק במקרה זה לא. אתה תמצא את עצמך אומר "זה כמעט עובד" בתדירות גבוהה יותר מאשר אתה מצפה.

  • לא לקמץ על ניהול חומרה מרחוק. קונסולות סדרתי ואת האורות את ההנהלה צריך להיחשב חובה. נקודות בונוס עבור כוח מבוקרת מרחוק רצועות עבור אותם פעמים כאשר אתה מתוך אפשרויות.

(חוץ מזה: ישנן שתי דרכים לתקן בעיה בשעה 3:00, אחד כולל להיות חם, עובד על מחשב נייד על VPN בפיג'מה שלך, השני כרוך ז 'קט עבה כונן למרכז הנתונים / אני יודע איזה מהם אני מעדיף).

ניהול פרוייקט:

  • לערב את האנשים שישמור על המערכת מהיום הראשון של מחזור החיים של הפרויקט. זמני ההובלה בערכת הזמן והמוח יכולים להפתיע, ואין ספק שהם יצטרכו לעמוד בתקנים או דרישות שיהפכו לתלות בפרויקט.

  • תיעוד הוא חלק מהפרויקט. אתה אף פעם לא מקבל זמן לכתוב את כל העניין לאחר הפרויקט נסגר המערכת עברה תחזוקה, כדי לוודא שזה נכלל במאמץ על לוח הזמנים בהתחלה.

  • ליישם את התיישנות המתוכננת בפרויקט מהיום הראשון, ולהתחיל את מחזור הרענון שישה חודשים לפני יום ההחלפה שציינת בתיעוד הפרויקט.

שרתים יש חיים מוגדרים כאשר הם מתאימים לשימוש הייצור. סוף חיים זה מוגדר בדרך כלל כאשר הספק מתחיל לגבות יותר תחזוקה שנתית מאשר זה יעלה כדי לרענן את הערכה, או סביב שלוש שנים, הקצר ביניהם. לאחר זמן זה, הם נהדרים עבור פיתוח / סביבות הבדיקה, אבל אתה לא צריך לסמוך עליהם לנהל את העסק. Revisiting את הסביבה ב 2 1/2 שנים נותן לך הרבה זמן לקפוץ דרך ניהול חובה חישוקים האוצר עבור ערכת חדשה להיות הורה וליישם העברה חלקה לפני שאתה שולח את ערכת הישן של הספק הגדול בשמים.

התפתחות:

  • ודא שמערכות הפיתוח וההזמנה שלך דומות לייצור. VM או טכניקות וירטואליזציה אחרות (אזורי, LDOM של, vservers) להפוך את העולם האמיתי בכל-חוש-אבל-ביצועים שיבוטים הייצור קל.

גיבויים

  • הנתונים שאתה לא מגבה הוא הנתונים שאתה לא רוצה. זהו חוק בלתי משתנה. ודא את המציאות שלך תואם את זה.

  • גיבויים קשים יותר מכפי שהם נראים; כמה קבצים יהיו פתוחים או נעולים, ואילו אחרים צריכים להיות quiesced יש תקווה כלשהי של התאוששות, וכל הנושאים האלה צריכים להיות מטופלים. כמה חבילות גיבוי יש סוכנים או שיטות אחרות להתמודד עם קבצים פתוחים / נעול, חבילות אחרות לא. הטלת מסדי נתונים לדיסק וגיבוי אלה נחשב כסוג אחד של "quisscing", אבל זה לא השיטה היחידה.

  • גיבויים הם חסרי ערך, אלא אם כן הם נבדקו. כל כמה חודשים, למשוך קלטת אקראית מתוך הארכיון, לוודא את זה למעשה יש נתונים על זה, ואת הנתונים הוא עקבי.

והכי חשוב...

בחר את מצבי הכישלון שלך, או מרפי יהיה ... ו מרפי לא עובד על לוח הזמנים שלך.

עיצוב לכישלון, לתעד כל מערכת של נקודות תורפה תוכנן, מה מעורר אותם וכיצד להתאושש. זה יעשה את כל ההבדל כאשר משהו משתבש.


44



+1 זה כאילו מישהו הסתכל לתוך המוח שלי - וזה היה יפה, עמ ' - Oskar Duveborn
"בנצ'מרק, לפקח ולאסוף מדדים על כל דבר שפויה לעשות זאת.בדיקות לציין לך מתי לצפות משהו ייתן את העשן הקסום.ניטור אומר לך כאשר יש.ערכים וסטטיסטיקות להקל על קיט חדש (עם קסם טרי עשן) באמצעות ניהול. "  זהב טהור - T.J. Crowder


אל תניח את זה קל. אני יודע מתכנתים רבים שחושבים כי רק בגלל שהם יכולים ההתקנה IIS או אפאצ 'י על שם dev תיבת כי הם יכולים לנהל חוות אינטרנט. להבין מה העבודה כרוכה ולעשות את המחקר ואת התכנון, לא רק חושב את העבודה sysadmin היא דבר קל שאתה יכול לעשות בתוך 10 דקות כדי לקבל את היישום לפרוס.


43



+1 עבור זה. זה לא בגלל שאנחנו עושים את זה תראה קל כי זה באמת. - Gert M
בתור הגנרל עושה את שניהם מנהל ועבודת תכנות, אני מבין את מצוקתך. +1 - Avery Payne
זה הולך בדרך אחרת כמובן, מצאתי כמה סוגים של מערכי מי באמת לא מבין את ההבדל בין סוג של סקריפטים ותוכניות השירות קטן אנחנו יכולים כל לדפוק ו "אמיתי" תכנות. - Rob Moir
+1 רוברט: או את sysadmin אומר "זה פשוט אם הצהרה" כדי לעקוף ארכיטקטורת רשת מעוצב גרוע. כבוד הדדי והבנה היא המפתח. - Steven Evers


  • מבין כי, לטוב או לרע, רבים של שרתים ו / או ציוד רשת הם נוטים מאוד דומים לילדים ממשפחה שנייה. אלה התינוקות שלהם.  הם נוטים אותם, עוזרים להם לחולים, ומפקחים עליהם בשקדנות על צרות. זה לא צריך בדרך זו, אך לאחר שנים רבות, זה לעתים קרובות. זכור זאת כאשר אתה מתקשר אליהם את החששות שלך לגבי ציוד שאינו פועל כראוי או לציפייה. ואם אתה מקבל תשובה אתה לא מבין, לנסות לסנן את זה דרך תצוגת העולם.
  • להיות על תנאי עבודה טובים. נשמע צ 'יז, אבל זה שווה את משקלו בזהב. יום אחד, תצטרך קצת טובה מיוחדת. ויום אחד, המעשה הזה ישמח לצאת מדרכם כדי להקל על חייך, רק הפעם.
  • יחסי עבודה זה הולך בשני הכיוונים. אם המעבד הוא עסוק מאוד, ואתה יכול לעשות את החיים קצת יותר קל על ידי כתיבת סקריפט קטן או תוכנית, ואז לעשות את זה! הם יעריכו את זה יותר ממה שאתה יודע.
  • להיות ברור מאוד. "זה מבאס" לא ברור כמו "חיבור רשת לסירוגין הוא קצת מעצבן, כל סיכוי שאתה יכול להסתכל על זה?"
  • אם אתה סבור שהאפליקציה שלך תתרחב, שאל את מנהל המערכת בעבר בהנחה זה יהיה. הם עשויים "לראות" משהו שאתה לא, או יודע משהו על גבולות הביצועים של הציוד אתה הולך לפרוס ב.
  • אם היישום שלך זקוק לכוונון, אך נראה שהוא אינו מהווה בעיה בקוד, שאל יפה לגבי הביצועים של השרתים. Sysadmins נוטים המכונות שלהם עם טיפול אוהב ולא מרוצים כאשר הם "חולה" או "misbehaved". שואל יפה יהפוך מכונה חולה סביב (או לקבל את זה לתקן / להחליף).
  • (כפי שצוין במקום אחר) מתעד את ההגדרות שבהן אתה משתמש ו למה אתה משתמש בהם. רק לאחר "קבע את תיבת הסימון X" או "Uncomment config קובץ קו Y" לא עוזר. אתה יכול להיות הגדרת אפשרות מוחקת את כל הנתונים שלך על אתחול הבא עבור כל מה שאתה יודע.
  • אם אין לך זמן לתעד את ההגדרה על נייר, נסה לתעד אותה במערכת אם אפשר. עם קבצי תצורה, זה צריך להיות כמעט רגיל בפועל - כל שינוי הגדרה צריך להיות datestamped, עם ראשי תיבות, את ההשפעה הצפויה של הגדרה זו, ואת הסיבה למה הוא שונה (ראה נקודת תבליט קודמת). הרגל קטן זה הציל את בייקון שלי יותר מפעם אחת בזמן קראנץ '. "למה עשינו את זה?" "בגלל שאנחנו המנדט X מדיניות, ואת ההגדרה Y נותן לנו את ההתנהגות שאנחנו צריכים עבור מדיניות X".
  • בירה. אור קולה. או אפילו מים. משקאות תמיד מתקבלים בברכה. להיות sysadmin היא עבודה צמא.

27



עבור קובץ התיעוד התיעוד / שינוי הבעיה, אני ממליץ לשים את כל קבצי התצורה במערכת בקרת גרסאות. זה צריך להיות קל מאוד עבור מתכנתים לעשות, שכן הם בתקווה כבר באמצעות מערכת כזו עבור קוד המקור שלהם. אם הם גם להוסיף הערה בכל פעם שהם מבצעים שינוי, זה יהיה קל לחזור בהיסטוריה ולראות מה השתנה מתי, ולמה. - Anders Sandvig
+1 עבור זה, כפי שהוא "סוגר את הלולאה" על ניהול השינוי. הצעה מצוינת. - Avery Payne
הצעה מצוינת למתן דוחות שגיאה ברורות. שום דבר לא מתסכל אותי יותר מאשר אחרי שנאמר לי שיש בעיה, ויודע שזה יכול להשפיע על הרבה אנשים, אני צריך להקניט את הפרטים של מתכנת חסר עניין - Dave Cheney


אבטחה היא לא מחשבה נוספת. בעוד App פריצה יכול להפוך את המתכנת נראה חסר יכולת, זה (לפחות) אבוד בסוף השבוע בילה אימות, ניקוי ו / או שחזור מ גיבויים עבור מנהל המערכת.

לצורך העניין, אל תטפל בגיבויים כבקרת גרסאות. הם נועדו להתאוששות מאסון, והם לא נועדו באמת לשחזר את הקוד שלך מפני ששכחת מה שינית.

וגם להפסיק עיוור להאשים את Windows עדכונים קוד שלך להיות שבור. לא אכפת לי שזה עבד, תגיד לי למה זה לא עובד עכשיו - אז אנחנו יכולים לראות מי אשמתו.


23





כיצד באגים בעיות ברשת ולראות את התוכנית שלך לרוץ עם כלים sysadmin. בתור מתכנת שהתחיל בניהול המערכת, אני נדהם איך מתכנתים רבים אימפוטנט הופכים פעם ברשת "רק מפסיק".

  • ווירשארק, כדי לראות את הקוד שלך לרוץ באופנה שחורה, מנות לפי מנות
  • כדי להתחבר ישירות לשירותי רשת:
    • Telnet, netcat או socat עבור חיבורים פשוטים על TCP או UDP
    • OpenSSL עבור אותו דבר עם הצפנה (רמז: לנסות openssl s_client -connect target-host:port מתישהו), לחיבור ידני לשירותי רשת
  • לחפור (בחבילה BIND 9) לפתרון שם באגים
  • היכולת לדעת איזה חלק של מחסנית הרשת נכשלה בהתבסס על התזמון ועל מאפיינים אחרים של חיבור כושל
  • אולי HTTPFox ו / או Firebug

17



+1. כל מפתח שכותב יישום תלוי בביצועי רשת מוצקים צריך לקרוא 'TCP / IP Illustrated v1', על ידי W. Richard Richard Stevens המנוח, לפני שתתחיל בקוד. - Murali Suriar
תודה על כל החבר 'ה upvotes. זה היה bammed אותי במשך שנים לראות מתכנתים על קיפאון חסר אונים ברגע הרשתות הבסיסית נכשל. בימים אלה, כמעט כל התכנות הוא תכנות רשת. - jhs


למד כיצד לפתור בעיות.

קל מאוד להעביר את הכסף (למשל, הרשת שלך משדרת את התקשורת שלי עם מסד הנתונים). ייתכן שזו תקלה ברשת, אך יש צורך ביומני יישומים עם שגיאות שבהן, באמצעות Google או SO, עשוי לחשוף בעיה בתצורה של אפליקציה.

כולם אוהבים להאשים את החומרה, מערכת ההפעלה או הרשת, כך שאם אתה נוהג קצת יותר נאותות נאותה, אתה תעשה את האדם מעביר אדם מאושר. כי אם שום דבר אחר, ייתכן שתוכל להצביע עליהם בכיוון מסוים לגבי מה שעלול לטעות (בניגוד לומר "הרשת שלך מבאס" או משהו מועיל באותה מידה).


14



בהחלט. אני לא יכול להתחיל לספור את השעות שאני ביליתי בחיפוש אחר בעיות במקומות הלא נכונים בגלל שאנשים הצביעו לי שגוי כיוון - Gert M


מסמך כל מה שאתה יכול. אני לא יכול להגיד לך כמה פעמים את האחרון sysadmin חשבתי שזה יהיה חמוד לא לתעד משהו עבור 'עבודה אבטחה' או מישהו רק רוצה להיכנס ולצאת. בדיוק כמו מתכנת צריך להשאיר הערות טובות, sysadmins צריך לתעד. תרשים של הטופולוגיה יהיה נחמד מדי.


8





תוכנית ב.

תמיד יש תוכנית התאוששות מאסון לזכור בעת תכנון ופיתוח של פתרון. לזהות נקודות בודדות של כישלון שיכול להוביל להפסקה.


7





תיעוד: אין צורך ללכת אגוזים, אבל איך היישום עובד, דיאגרמה המראה כיצד להתאים את סיביות דרכים לבחון כל רכיב כאשר הכל משתבש. נתונים לדוגמה פלט הוא נחמד.

דרישות: מה מודולים זה מסתמך? גרסאות? OS?

ניטור: אידיאלי מפתחים יכלול ניטור מידע ובדיקות עם היישום.

אם כבר מדברים על אריזה, אריזות! שום דבר גרוע יותר מאשר "פריסה" כלומר לבדוק תיקון חדש של קובץ מ VCS ולהעתיק אותו חבורה של שרתים. לעתים קרובות מדי מתכנתים אינם מעריכים את המורכבות של פריסת תוכנה: ישנן סיבות מדוע תוכנת גרסאות, ארוזות מהווה את עמוד השדרה של רוב מערכות ההפעלה.

אם מפתח הגיע אלי עם סל"ד אשר התקינה לראשונה עם תיעוד תמציתית מקיפה וכמה בדיקות Nagios הם יהיו החבר הכי טוב שלי.


6