ניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר
-
שלום,
בה"ה, אני מנהל כ-20-30 שרתים עם צוות של 6-8 עובדים, חלקם כבר כמה שנים וחלק מהם אני מנסה לפעם ראשונה (פרילאנסרים).
השאלה שאני תמיד חושב היא אבטחת שרתים, וזה כולל כמה נושאים:
אבטחה כללית
אבטחה מול הטכנאים שלי (שלא יגנבו)
אבטחה מול הטכנאים שלי (שלא יזיקו)
מה הכי מומלץ לגיבוי להרבה שרתיםיש כאן הרבה פרטים:
לתת לכל טכנאי גישה רק למה שהוא צריך ורק לזמן שהוא צריך
לראות כל טכנאי מה הוא עושה כל יום
אפשרות שכל קוד צריך אישור (אבל בלי לגרום לאיטיות של הפרויקט, כלומר שהם יוכלו לבדוק את הקוד שלהם)יש עוד הרבה שאלות בעניין, אבל מה שמעניין אותי הוא שאני לא היחיד שעובד על זה, אני בטוח שיש איזו אפליקציה שיכול לעזור לי עם הרבה דברים במקום אחד.
אז מי שיש לו מידע בנושא, מוזמן לשתף.
-
@google3 כתב בניהול כ 20 שרתים עם צוות של 6 טכנאים - תובנות וכלים שיכול לעוזר:
אני יודע מ Git GitLab אבל לא חברתי לזה
הפתרון שאני מכיר שיכסה את רוב השאלות שמנית זה לעבוד עם git אתה לא חייב לעבוד עם GitLab יש חברות אחרות שמספקות שרתי git אבל בכל אופן תצטרך לדעת (או להעסיק מישהו שאתה סומך עליו) איך להגדיר את git בצורה טובה בכל פרוייקט.
אבל בסופו של דבר זה הדרך לבודד בין המפתחים לקוד ולחזור לשלב קודם אם משהו השתבש.
לא מכיר פתרון אחר שעובד בטווח הארוך (אפשר להשתמש בכל מיני כלים אבל בסוף הכל חייב לעבור דרך git כדי שתוכל לעקוב תמיד מה קרה מתי וע"י מי) אפשר לנהל גם את כל ההגדרות של השרתים עם קבצי הגדרות שגם הם מנוהלים בגיט עם כלים כמו terraform docker וכו' -
מה הקשר גיט שזה ניהול גירסאות קוד, לבין ניטור גישה למשאבים פרטיים?
שכל טכנאי שירצה לעשות שינוי יכתוב אותו בטקסט ויעלה לגיט ואחראי אחד יחיל את ההגדרה בשרת המתאים?
זה בכלללל לא מציאותי.
ואם הכונה שכל טכנאי יעשה את ההגדרות על מחשב פיתוח ומשמה זה יעבור לאמיתי, מלבד שרוב הגדרות Windows הם לא מבוססים קבצי טקסט, וגם הגדרות linux מפוזרים ברחבי כל המערכת, זה בכל מקרה חורג באופן קיצוני מהייעוד של ניהול גירסאות של פרוייקט. -
צודק!
למעשה, האבטחה הכי קריטית היא לעשות גיבוי. מה הכי מומלץ לזה להרבה שרתים?
ולתת גישה באופן מאובטח (וגם באופן קל, לדוגמה עכשיו יש מתכנתת חדשה, אני צריך לתת לה גישה לכ-7 שרתים שנוגעים לפרויקט זה, אז איך עושים את זה? ואם זה רק לזמן מוגבל? ואיך אני צריך לזכור ולהסיר גישה מכל השרתים? יש למשל את Termius בתשלום אבל גם זה הוא רק גישה כללית ולא מאפשר לנהל בתוך שרת קבוצות משתמשים וכדומה האם אין GUI שעוזר עם זה?)
ומה עם פשוט לראות לוג של כל משתמש, אילו קבצים הוא עובד עליהם?
-
לא הבנתי אם מדובר על תכנות או טכנאות,
אם מדובר בתכנות אתה צריך למצוא איש אמין בעל ידע תכנותי מגוון ובעל יכולת ניהול צוות, ושהוא היחידי שיהיה לו גישה לשרתים, הוא ינהל את כל המתכנתים (להלן מנהל מחלקת תכנות).
כל המתכנתים לא אמור להיות להם גישה, המנהל מחלקת תכנות שלך יידע כבר איך לתת להם עבודה ואיך לקבל מהם את התוצרת בלי להעניק להם גישה. -
@dovid כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
לא הבנתי אם מדובר על תכנות או טכנאות,
אם מדובר בתכנות אתה צריך למצוא איש אמין בעל ידע תכנותי מגוון ובעל יכולת ניהול צוות, ושהוא היחידי שיהיה לו גישה לשרתים, הוא ינהל את כל המתכנתים (להלן מנהל מחלקת תכנות).
כל המתכנתים לא אמור להיות להם גישה, המנהל מחלקת תכנות שלך יידע כבר איך לתת להם עבודה ואיך לקבל מהם את התוצרת בלי להעניק להם גישה.בקיצר לא קבלתי כאן שום תשבה
ואם אני רוצה להיות "האיש האמין בעל ידע תכנותי מגוון ובעל יכולת ניהול צוות"?
הלו, גם לאדם הזה יש כלים שיכולים לעזור, ואני שואל מה הם.
האם יש בקוד פתוח כלי שאפשר לייעל ולהפעיל גיבוי יומי וחודשי? אם כן (ואני יודע שיש), מהו הכי טוב ומומלץ?
האם יש בקוד פתוח מקום שממנו אפשר לנהל השרתים מבחינת גישה וכד'? אם כן, מהו?
אותו דבר עם לראות לוגים וכד'.
ואם יש הכל במקום אחד הכי טוב !!
-
@google3 כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
@dovid כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
לא הבנתי אם מדובר על תכנות או טכנאות,
אם מדובר בתכנות אתה צריך למצוא איש אמין בעל ידע תכנותי מגוון ובעל יכולת ניהול צוות, ושהוא היחידי שיהיה לו גישה לשרתים, הוא ינהל את כל המתכנתים (להלן מנהל מחלקת תכנות).
כל המתכנתים לא אמור להיות להם גישה, המנהל מחלקת תכנות שלך יידע כבר איך לתת להם עבודה ואיך לקבל מהם את התוצרת בלי להעניק להם גישה.בקיצר לא קבלתי כאן שום תשבה
ואם אני רוצה להיות "האיש האמין בעל ידע תכנותי מגוון ובעל יכולת ניהול צוות"?
הלו, גם לאדם הזה יש כלים שיכולים לעזור, ואני שואל מה הם.
האם יש בקוד פתוח כלי שאפשר לייעל ולהפעיל גיבוי יומי וחודשי? אם כן (ואני יודע שיש), מהו הכי טוב ומומלץ?
האם יש בקוד פתוח מקום שממנו אפשר לנהל השרתים מבחינת גישה וכד'? אם כן, מהו?
אותו דבר עם לראות לוגים וכד'.
ואם יש הכל במקום אחד הכי טוב !!
כתבו: 'איש עם ידע תכנותי' משתמש בגיט לצרכי ניהול התכנות.
זה לא קשור ישירות לניהול השרתים ולוגים שאתה רוצה בנפרד. -
@google3 כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
הלו, גם לאדם הזה יש כלים שיכולים לעזור, ואני שואל מה הם.
אתה רוצה שאגלה לך באיזה כלי הוא ישתמש? הוא לא צריך כל כך כלים כי הוא לא נותן לשום מתכנת גישה, רק הוא בעל הגישה.
הכלי שאיתו הוא מעביר את הקוד הוא כפי ש@nigun אמר, גיט עונה על הבעיות שהזכרת, אלא שגם לגיט אפשר להכניס קוד עויין או מסוכן, ולכן האדם האחראי שיידע תכנות במידה רבה, הוא זה שיאשר כל commit לתוך הענף הראשי.
לא הייתי ממליץ לך אדם שדרך הניהול שלו תעבור דרך המון כלים ופחות לעבור על הקוד שנכתב.
למה אתה יכול לשלם לשישה מתכנתים ולא למנהל אחד? אתה נעלב שהתשתמע ממני שאתה לא מתאים למלאכה? לא הייתי ממליץ לך לקחת אדם שירגיע אותך שאמנם הוא לא יודע טוב לקרוא קוד בXYZ, אבל הוא נעזר בכלים מצוייינים שהמליצו לו בפורום. האחראי חייב לדעת לקרוא קוד ולבקש הסברים כשהוא לא מבין ולהיות מסוגל לאמת את ההסברים.בקשר לתשובה שרצית מאוד, הנה אני כותב אותה:
תוכנת ServerCodeManage (המצאתי שם) נותנת מענה מושלם להאצלת סמכויות למפתחים.
תוכלו לנהל מי יכול לגשת לאיפה, לצפות איזה גישה הייתה בפועל בזמן אמת ולאחר זמן, לזהות התנהגות חריגה, ובנוסף כל השינויים מגובים וניתן בכל עת לחזור לגירסאות קודמות.
ככה תוכלו לתת למפתחים לעבוד על הקוד שלכם, בלי כל סיכון.אני מבין מה שתיארת לעצמך, אבל זה לא מציאותי לפחות לגבי הקוד, זו לא הדרך שבה עובד העולם של פיתוח. משפטי הפרסומת שכתבתי הם מופרכים. מי שיש לו גישה לשרת והוא כותב שמה קוד שרץ בפרודקשיין, שום דבר בעולם לא מגן ממנו.
בתכלס הוא יכול לעשות מה שבא לו (גם אם הוא לא מנהל, אם אתה נותן לו לשים בשרת קוד ואתה ברוב טובך תפעיל את הקוד). -
אם יורשה לי לשאול - במידה ואחד המתכנתים צריך להתקין חבילה ב-apt get, להריץ פקודת composer, או להתקין מרכזיית אסטריסק. בשביל זה בעל השרת צריך לתת להם הרשאת root והאפשרות לראות את ההיסטוריה באמצעות פקודת
history
מסורבלת ולא מאפשרת לקבל במהירות מידע מי ביצע כל פקודה.
האם cockpit נותן מענה לזה? -
@איש-נחמד כל הדברים שאמרת אינם במסגרת תפקידו של מתכנת אלא של איש שנקרא DevOps או טכנאי.
חייב להיות אחד כזה עם אמון, ושום כלי לא יכול נגדו כי הוא יצטרך הרשאות ניהול.
מתכנת בהגדרה לא מתקין ולא מריץ כלום במחשב שאיננו שלו, הוא כותב קוד ותמעביר את הקוד עם הנחיות. -
@איש-נחמד כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
אם יורשה לי לשאול - במידה ואחד המתכנתים צריך להתקין חבילה ב-apt get, להריץ פקודת composer, או להתקין מרכזיית אסטריסק. בשביל זה בעל השרת צריך לתת להם הרשאת root והאפשרות לראות את ההיסטוריה באמצעות פקודת
history
מסורבלת ולא מאפשרת לקבל במהירות מידע מי ביצע כל פקודה.
האם cockpit נותן מענה לזה?אם הכל מנוהל עם docker אף מפתח לא צריך להריץ שום פקודה על המכונה.
ואם מישהו שאתה לא סומך עליו נגע במכונה אתה לא יכול לסמוך על הקובץ היסטוריה -
@nigun כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
@איש-נחמד כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
אם יורשה לי לשאול - במידה ואחד המתכנתים צריך להתקין חבילה ב-apt get, להריץ פקודת composer, או להתקין מרכזיית אסטריסק. בשביל זה בעל השרת צריך לתת להם הרשאת root והאפשרות לראות את ההיסטוריה באמצעות פקודת
history
מסורבלת ולא מאפשרת לקבל במהירות מידע מי ביצע כל פקודה.
האם cockpit נותן מענה לזה?אם הכל מנוהל עם docker אף מפתח לא צריך להריץ שום פקודה על המכונה.
ואם מישהו שאתה לא סומך עליו נגע במכונה אתה לא יכול לסמוך על הקובץ היסטוריהאני אישית עובד עם docker לוקאלי, אבל הבנתי שזה לא מיועד ל-production
-
@איש-נחמד כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
@nigun כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
@איש-נחמד כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
אם יורשה לי לשאול - במידה ואחד המתכנתים צריך להתקין חבילה ב-apt get, להריץ פקודת composer, או להתקין מרכזיית אסטריסק. בשביל זה בעל השרת צריך לתת להם הרשאת root והאפשרות לראות את ההיסטוריה באמצעות פקודת
history
מסורבלת ולא מאפשרת לקבל במהירות מידע מי ביצע כל פקודה.
האם cockpit נותן מענה לזה?אם הכל מנוהל עם docker אף מפתח לא צריך להריץ שום פקודה על המכונה.
ואם מישהו שאתה לא סומך עליו נגע במכונה אתה לא יכול לסמוך על הקובץ היסטוריהאני אישית עובד עם docker לוקאלי, אבל הבנתי שזה לא מיועד ל-production
למה לא?
בקוברנטיס הכל עם קונטיינרים ואין פרודקשן יותר מזה -
דוקר != קוברנטיס, אבל כמובן שדוקר או כל טכנולוגיית קונטיינרים אחרת מיועדת גם לפרודקשן.
בכל מקרה, לעצם השאלה, קצת קשה לענות בלי להבין מה המוצר שאתם מפתחים, האם זה מלא אתרים? האם זה בכלל מרכזיות?
הפתרון שלך יצטרך להיות בכל מקרה תהליך מוגדר ומדויק ("פרוסס") שבו שינוים עוברים ביקורות על ידי אנשים שאתה כן נותן בהם אמון. לרוב מדובר בתפקיד DevOps, אל תחשוב בכלל לעשות את זה בעצמך אלא אם הידע שלך בעולם הרשתות, הפיתוח, וכלים שונים ומשונים הוא מספיק רחב. לא סתם המשרה הזאת נחשבת אחת היקרות.אם כל מה שאתה מחפש זה פתרון גיבוי - תשתמש בגיבוי של הענן שלך כדי לשמור סנאפשוטים, או בrestic ושמירה לS3.
אם אתה מחפש משהו יותר מזה, מוזמן לפרט פה יותר על תחום העיסוק שלך, מה התוצרים שלך ומה המתכנתים בד"כ עושים על השרתים.
בהצלה -
בקריאה נוספת אני מבין שאתה פשוט רוצה שמות של כלים ולא רוצה להבין איך לנהל את התהליכים אצלכם יותר טוב, אז אני יזרוק פה כמה שמות:
https://goteleport.com - לניהול גישה מרחוק למשתמשים שונים
restic & cloudflare / wasabi - לגיבוים -
@aaron כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
בקריאה נוספת אני מבין שאתה פשוט רוצה שמות של כלים ולא רוצה להבין איך לנהל את התהליכים אצלכם יותר טוב, אז אני יזרוק פה כמה שמות:
https://goteleport.com - לניהול גישה מרחוק למשתמשים שונים
restic & cloudflare / wasabi - לגיבויםקודם תודה על המענה
אכן אני מחפש שמות של כלים ובפרט עם יש כלים שיש כאן עם נסיון שזה טוב ועוזר למטרה@dovid
כדי להסביר לך, אני לא יכול בשלב זה לעשות כפי שאתה מציע-
עלות של אדם אמין בארה"ב לעבודה כזה היא כ-150,000 דולר לשנה, רק כדי להתחיל
-
רוב הפרויקטים עדיין בשלבי פיתוח, (אף על פי שחלקם מתקדמים עם לקחות כבר). כל דבר ידרוש עיבוד נוסף, מה שיכול לאט את הפרויקט באופן משמעותי. לא לדבר על חוסר בשני שרתים נפרדים לפיתוח ולפרודקשן, שאין לי בשלב זה, אז לפעמים (או תמיד) הטכנאי צריך לראות מה הוא עושה בזמן אמת, וזה יכול להיות שינוי קטן. עם כל דבר צריך להיות תחת עניין של פתוח אחר, זה יקח פי שלושה יותר זמן.
-
בנוסף להנ"ל יש לי המתכנטים בכל שעות היום, כך אני יצטרך לשלם לשני מנהלים ?
-
המתכנתים שלי, חלקם עובדים איתי כבר שנים, לא אוהבים את הרעיון שיצטרכו לשאול מישהו על כל דבר.
-
חלק המתכנתים שלי גם עושים DevOps/טכנאות, וכשיש תקלה הם טופלים בה
בסך הכול, במצבי הנוכחי, כאשר אני לא חברה מספיק גדולה, אני לא יכול לשעות זאת, (ויש רבים אחרים במצב דומה)
מה שאפשרי לעשות הוא להציע שמות של כלים, כמו @aaron נוקרה לזה, שיכולים לעזור במצב זה. למשל, אם יש לי 30 שרתים, הרבה יותר נוח לראות במקום אחד מי יש לו גישה, מה ההרשאות שלו וכו'. וכן, לראות במקום אחד את כל הגיבויים של השרתים, אם הגיבוי היומי הצליח ועוד, במקום לרוץ משרת לשרת 30 שרתים. -
-
@google3 כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
למשל, אם יש לי 30 שרתים, הרבה יותר נוח לראות במקום אחד מי יש לו גישה, מה ההרשאות שלו וכו'. וכן, לראות במקום אחד את כל הגיבויים של השרתים, אם הגיבוי היומי הצליח ועוד, במקום לרוץ משרת לשרת 30 שרתים.
אם אתה מתייחס למקרה שיש לך 30 שרתים, כדאי לך להקצות אחד לפחות לפיתוח
@google3 כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
לא לדבר על חוסר בשני שרתים נפרדים לפיתוח ולפרודקשן, שאין לי בשלב זה
-
@איש-נחמד כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
@google3 כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
למשל, אם יש לי 30 שרתים, הרבה יותר נוח לראות במקום אחד מי יש לו גישה, מה ההרשאות שלו וכו'. וכן, לראות במקום אחד את כל הגיבויים של השרתים, אם הגיבוי היומי הצליח ועוד, במקום לרוץ משרת לשרת 30 שרתים.
אם אתה מתייחס למקרה שיש לך 30 שרתים, כדאי לך להקצות אחד לפחות לפיתוח
@google3 כתב בניהול כ 20 שרתים עם צוות של 6 מתכנתים - תובנות וכלים שיכול לעוזר:
לא לדבר על חוסר בשני שרתים נפרדים לפיתוח ולפרודקשן, שאין לי בשלב זה
עד כה לא היה לי, והעניין הוא שכל שרת הוא פרויקט אחר.
אכן, אני יכול לבדוק לשים הכל בתוך שרת אחד על ידי דוקר או שרתים וירטואלי, אבל בכל מקרה, מינימום זה יהיה מאוד קשה ויקח המון זמן. מקסימום זה כמעט בלתי אפשרי (לדוגמה, שרת של אסטריקס, פריסוויץ', קמליה וכד')
@איש-נחמד אני חושב שיש לך קצת ידע פרויקטם שאני מדבר..... (תגיד אתה אם אני יכול לעשות פשוט)