הבדלים בין Snapshot לגיבוי

במקומות רבים ברשת אפשר לראות דיונים רבים בעניין שמירת קבצים, גיבויים וכו' כשאחת המנטרות שחוזרות שוב ושוב בתגובות של אנשים היא ש-"snapshot זה לא גיבוי". האם הטענה הזו נכונה? כן ולא. תלוי במימוש.

על מנת להדגים זאת, ניקח שני מימושים שונים שיהיו מוכרים לרוב הגולשים:

  • מימוש ראשון VMWare Snapshot
  • מימוש שני – AWS Snapshot

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

עכשיו נעקוב אחר התהליך הנ"ל מקרוב. ברגע שיצרנו את ה-Snapshot לאותו VM, הוא מתחיל בגודל 0 בתים (או משהו קרוב לכך, יכול להיות שה-snapshot יכלול בתים ספורים בהתחלה). ברגע שערכנו את אותו קובץ טקסט ושמרנו אותו, הוא אינו שומר את השינוי לדיסק הקשיח הוירטואלי, אלא שומר אותו לתוך ה-snapshot. אם נבדוק, נוכל לראות שגודל ה-snapshot גדל בכמות הבתים שהוספנו לאותו קובץ טקסט (את הדברים הרבה יותר קל לראות "מבפנים" אם משתמשים במערכת ZFS, שהיווה "השראה" ל-VMWare כיצד ליצור snapshots). אם לאחר שיצרנו קובץ Snapshot, עבר זמן ויצרנו קובץ snapshot חדש, כל השינויים שניצור מעתה ישמרו ב-Snapshot החדש, וה-snapshot הקודם יעבור למצב read only.

המימוש השני של snapshot לשם הדוגמא יהיה AWS EBS Snapshot: הקמנו Instance (כלומר VM) עם מערכת ההפעלה שבחרנו, ולאחר מכן ביצענו מספר שינויים בהגדרות, הוספנו אפליקציות ועוד, וכעת אנחנו יוצרים Snapshot ב-AWS. ה-Snapshot הראשון שניצור ישמור את השינויים מהקמת ה-VM עד לרגע זה. אם ניצור Snapshot נוסף, הוא ישמור את השינויים שנוצרו מאז ה-Snapshot הראשון, כלומר כל שינוי שביצענו אחר ה-Snapshot הראשון ישמר בדיסק EBS ולא ב-snapshot ורק אם ניצור snapshot נוסף, השינויים יועתקו אליו.

המימוש של AWS Snapshot מאוד דומה לגיבוי אינקרמנטלי שאפשר ליצור עם תוכנת גיבוי לטייפ או VTL – אנחנו קודם כל יוצרים גיבוי מלא, ולאחר מכן כל גיבוי אינקרמנטלי מגבה בעצם את השינויים (Delta) מאז הגיבוי המלא האחרון.

מכאן נעבור לנקודה היותר "פילוסופית" – האם snapshot יכול להחליף את מקומו של הגיבוי? זה תלוי.

במקרים כמו VMWare התשובה היא "לא ממש" הואיל ויצירת Snapshot הוא דבר שצריך לבצע "ידנית". המערכת לא תיצור עבורך snapshot אוטומטית (למרות שלמערכת יש בהחלט דבר שנקרא Changed Block Tracking שמופעל אוטומטית ובכך המערכת יודעת לזהות כל שינוי שבוצע בדיסק, ואין זה משנה איזו מערכת הפעלה מדובר, כי אותה מערכת עובדת בבלוקים, לא ב-File system) ולכן גיבוי של המערכת ע"י תוכנת גיבוי (Veeam, Arcserve ושאר תוכנות) היא דבר חשוב ואף הכרחי.

בעננים ציבוריים כמו AWS לעומת זאת, יש צורך לעבוד בשיטה שונה (שלצערי יש לא מעט שמתחילים לעבוד עם AWS ולא מפנימים זאת): ב-AWS כדאי לבנות את מכונות ה-VM כ"שלדים" (templates) ולשמור את הקבצים המשתנים ב-EFS או ב-S3. כך, בונים VM, מגדירים את הדברים הקבועים, מוסיפים סקריפט שידע להעתיק את הקבצים הנחוצים מ-S3 או EFS, יוצרים snapshot ולאחר מכן ממירים את זה ל-Image בפורמט AMI סגור. נדפק ה-VM? פשוט מקימים חדש מה-AMI כשאחד הפרמטרים הוא בעצם הרצה של הסקריפט שיצרנו כך שלאחר הקמת ה-VM/Instance – הוא יעתיק את הקבצים וידווח לנו מה כתובת ה-IP הפנימית של ה-VM החדש.

ב-ZFS הדברים שונים. מכיוון ש-Snapshot ב-ZFS אינו תופס מקום בדיסק (0 בתים), ישנה שיטה פשוטה ליצור אוטומטית snapshots כל זמן שתרצה. אני לדוגמא עובד עם ZFS שיוצר snapshots כל שעה, כל יום, כל שבוע, כל חודש, כל שנה – ומגדיר את המערכת שתשמור לי 50 snapshots אחורה. מבחינת שרידות, ZFS תומך במערך RAID (שנקרא RAIDZ) עד רמה שלישית (כלומר: המערכת יכולה לתפקד עד למצב שבו יש שלושה דיסקים תקולים) עם תמיכה מלאה ב-Hot Spare. מעבר לכך, מערכת ZFS נותנת גם "להשתולל" עם מערכי RAIDZ כך שניתן להקים שתי מערכות RAIDZ3 ולצוות אותן יחד כ-RAIDZ1. בזבוז מטורף של דיסקים? בהחלט, אבל למי שיש תקציב – בכיף. מה עם גיבוי לטייפ? יש כאלו שמגבים אחת לזמן מה לטייפ ויש כאלו שפשוט מעדיפים להשתמש בתשתית ה-ZFS ופקודות ה-send/receive המובנות על מנת לגבות את ה-ZFS למערכת מרוחקת. (אפשר כך לבנות אחסון DR בזול. אגב, מקומות רבים בחו"ל משתמשים בשיטה הזו).

לסיכום: "snapshot אינו מחליף גיבוי" – זו הצהרה שאינה נכונה תמיד. יש מקרים שזו הדרך היחידה שלך לגבות (עננים ציבוריים), ויש מקרים שמימוש ה-Snapshots (כמו ב-ZFS) אינו מצריך גיבוי לקלטת כל יום. לגיבוי יש מקום חשוב ול-snapshot יש גם מקום חשוב וביטול אחד ו"הילול" הדרך השניה אינה בהכרח התשובה הנכונה.

שינויים בעולם ה-IT בחברות

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

אחד התחומים שהייתי רוצה להיכנס אליו (וזה מאוד קשה) הוא תחום ה"בין לבין": נניח ויש לנו את אלון, איש לינוקס בחברה גדולה ואלון החליט לעזוב את החברה לטובת משרה בחברה אחרת או שהחברה החליטה לאמר שלום לאלון. הכלל הפשוט הוא, שככל שהחברה גדולה יותר, כמות הזמן שיקח לאייש את המשרה – ארוכה יותר, וכאן יכולה להיווצר הזדמנות לפרילאנסר לקבל אולי עבודה למספר שבועות או חודשים לאייש את המשרה. מדוע זה קשה? כי זהו בדיוק התחום שחברות כמו מטריקס, Ness, One, SQLink ואחרות מכירות את הנפשות ומרוויחות יפה מהתחום.

יחד עם זאת, יצא לי בכמה פעמים לשוחח עם מספר מנמר"ים, CTO ומנהלי מחלקות IT. השיחה בד"כ נסובה על דברים שהם מחפשים במועמד הבא לאייש משרה בתחום ה-IT, ושמתי לב לכמה דברים מעניינים שאני רוצה לשתף עמכם:

  • הדרישות גדלו: אם פעם היו מחפשים אצל המועמד ידע ב-Windows, ידע התחלתי-בינוני בלינוקס, ידע ב-VMWare ואולי קצת ידע ב-Networking, הפעם רוצים שהמועמד יהיה בעל נסיון בתחומים שהם אינם IT כל כך: תדע Jenkins, GitLab, Code bucket – ולא מדובר על ידע של התקנת הכלי (כמה זמן לוקח להתקין Jenkins? דקות ספורות, לא כולל plugins שאינם רשמיים וכו') – אלא גם כתיבת Pipelines, ידע בניהול גרסאות ב-GIT, ידע ב-Docker, ידע ב-Kubernetes, ידע בהגדרות עננים ציבוריים (AWS, Azure ולפעמים גם GCP). לא שמעתי על הרבה שרוצים ידע ב-Terraform אבל אני מניח שאת זה הם משאירים לאיש DEVOPS (כן, Devops זה מתודות, אבל לך תתקן אנשים).
  • משכורות – אתה הולך לרכוש דירה? הולך להרחיב את המשפחה? הולכת להיות לך הוצאה גדולה? כדאי שתעזוב את תחום ה-IT לטובת תחומים אחרים יותר רווחיים. המספרים ששמעתי נעים בין 13-20K ברוטו. טוב לצעירים, פחות טוב לנשואים, אבות לילדים וכו' וכו'.
  • Kubernetes, Helm, Terraform, Ansible, AWS, Azure – ורצוי גם ידע ב-Python, אלו הדרישות שדורשים מאנשי Devops, חוץ מידע בכלי CI/CD. שימו לב: בסטארטאפים מצפים מכם שתלמדו הרבה יותר ממה שציינתי – ומהר. כלי נוסף שחברות עדיין לא ממש גילו ויש מצב שירצו להריץ אותו – נקרא KOPS. ממליץ לכם להכיר אותו.
  • שכר לאנשי Devops: משום מה במקומות רבים חושבים שהשכר של איש Devops אמור להיות שכר כמו של איש IT. עצתי לכם: תדעו למכור את עצמכם ולהתמקח. עם כל הכבוד לתחום ה-IT, איש Devops צריך לדעת הרבה יותר וללמוד מהר דברים חדשים, התחום מתקדם במהירות מטורפת!
  • אל "תינעלו" על ענן ציבורי מסוים! ידוע לי שבחברות גדולות רבות פשוט "מתים" על Azure, אבל בשוק יש המון חברות (ובמיוחד סטארטאפים) שמשתמשים ב-AWS ו-GCP ועדיף לכם להכיר את כולם. כל ספקי הענן הציבורי מציעים כמות קרדיטים חינמית בתור התחלה אבל זה לא תמיד מספיק (תזכרו: הקרדיטים הראשוניים הם לזמן קצוב בלבד של חצי שנה או שנה). לכן אני ממליץ: תתנחמדו לאנשי מכירות של ספקי הענן הציבורי ותבקשו בנימוס קרדיטים. טיפ קטן: אני ממליץ ללמוד את הנושאים דרך Linux Academy (למרות השם שלהם, הם מלמדים גם על דברים שאינם לינוקס) ולהשתמש ב-Lab שלהם, אתם תקבלו מספר מכונות וירטואליות חינמיות שפועלות במשך זמן קצוב.
  • קראו בין השורות לגבי משרות. בלא מעט מקרים באתרים כמו Alljobs ניתן לקרוא את המפרט של נושאים שהחברה רוצה שהמועמד ידע ויכיר, אבל לפעמים אפשר לראות שהחברה בעצם מחפשת איש Devops שיהיה גם איש IT ואם אפשר – שיכין קפה לפעמים. ממשרות כאלו אין הרבה לאן להתקדם, חפשו דברים שמתאימים לכם, לא להיות כלבויניקים.
  • הנה משהו מעניין ששמעתי ולא מאדם אחד: אין לכם נסיון (חוץ ממה שהתנסיתם בבית)? אל תבקשו לעבוד בחינם. אתם יכולים לדבר על משכורת התחלתית כלשהי שתעלה לאחר תקופה מסויימת/דיון שכר וכו' – והכי חשוב, להיות כן: אם אין לך נסיון מספק, תאמר זאת ותאמר שאתה מוכן בשביל זה להסתפק במשכורת כלשהי (עדיף לא לציין מספר). תנסו לתחמן, יש סיכוי גדול שיתפסו זאת ולא יזמנו אתכם להמשך תהליך.

תחום ה-IT עובר שינויים וחברות רבות מנסות "לדחוף" תחומים שאינם IT קלאסי למשרה. במקביל, יותר ויותר חברות עוברות לעננים ציבוריים וכמות משרות ה-IT מצטמצמת (רואים זאת כיום במיוחד בתחום התקשורת, אגב – זה שיש לך ידע מעולה עם CCNA זה נחמד, איך הידע שלך ב-VPC ושאר דברים הקשורים בתקשורת בענן מעבר ל-VPN?). העננים הציבוריים תופסים יותר ויותר מקום, החל מחברות קטנות, סטארטאפים ועד לחברות גדולות שכבר עושות מספר פעמים "חושבים" אם לרכוש ברזלים נוספים וכל עניין DEVOPS נהיה דבר מובן מאליו בתוך החברה.

המעבר לענן ציבורי – התהליכים המקדימים

דמיינו לעצמכם סיטואציה פשוטה: יש לכם 20 שרתים בחברה (פיזיים) שמערכת vSphere רצה עליהם. הכל מתקתק ועובד טוב עד שיום אחד האחראי על ה-vSphere בחברה מפוטר עקב סיבה כלשהי. האם יהיה קשה למצוא עובד חלופי לאותה משרה? לא ממש, השאלה למה אתה מצפה: אם לדוגמא העובד שפוטר היה כותב סקריפטים ב-Powershell או ב-PERL לאוטומציה של ה-vSphere ורוב העבודה היתה נעשית באוטומציה כלשהי ללא שימוש ב-GUI – אז כן, אתה תתקשה למצוא מחליף (וגם אם תמצא, תצטרך לשלם לו הרבה יותר ממה שחשבת). אם לעומת זאת אתה מחפש מישהו שינהל רק ברמת הממשק Web, תמצא לא מעט כאלו בקלות ותוכל לשלם להם משכורת יותר נמוכה אפילו (תלוי בכישורי המו"מ שלך והבטחון העצמי של המועמד). מצד שני, אם יש לך תקלות שמתאפיינות במסך סגול וגוגל לא ממש עוזר – תתכונן לשלם והרבה, בין אם זה ל-VMware או למישהו מומחה.

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

מה בעצם העבודה שהרוב יציעו ויעשו? הם יעשו מה שאני קורא "Copy Paste". נניח שיש 10 מכונות VM, הם פשוט יעלו אותן לענן כ-Instances, יקצו להן כתובות IP חיצוניות פר Instance (תתפלאו כמה חוסר מקצועיות יש בנושא), יגדירו Security Group שנושאת מטוסים יכולה לעבור דרכו, חס ושלום VPC חדש ונורמלי, או ניתובים קצת יותר מוקשחים. אם הלקוח מתעקש על Firewall, אז יתקינו איזה משהו שקיים ב-Market עם חוקים מאוד "רפים". אני לא מנסה "ללכלך", אני בדרך כלל מי שמגיע אחרי כן לבדוק מדוע הדברים לא עובדים טוב וזה מה שאני מוצא. אני כמובן שלא אומר שכולם כך, יש דווקא לא מעט אנשים מקצועיים בתחום.

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

בהעברת התשתית לענן יש לנו 3 מטרות חשובות:

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

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

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

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

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

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

בניית מכונות VM בצורה יותר טובה

תחום הקונטיינרים קיבל בשנים האחרונות דחיפה רצינית תודות לפתרונות כמו Docker, OpenShift, Kubernetes ומערכות רבות נוספות, ואחד הדברים הראשונים שכל מי שנכנס לעולם הקונטיינרים לומד הוא שקונטיינרים זה דבר זמני – אתה מפעיל, מכבה, וכל התוכן שבקונטיינר עצמו – נעלם, ולכן משתמשים בפונקציות כמו Volume (במערכות כמו Kubernetes יש לנו את PV/PVC) כדי למפות משאב חיצוני (כמו תיקייה במכונה) אל קונטיינר ושם יאוחסן המידע, כך שגם אם הקונטיינר נמחק, ה-DATA נשאר.

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

הדבר שאני מדבר עליו – חלוקה.

נניח ואנחנו צריכים VM שיתן לנו שרות מסוים. נניח SQL, שרת Web, שרת GIT, ועוד ועוד, כל דבר שנותן לנו שרות. ברוב המקרים שאני ראיתי – מקימים VM, מתקינים עליו את מערכת ההפעלה הרצויה ואת האפליקציה שתתן לנו את השרות הרצוי. היכן יאוכסן ה-DATA שאותו אפליקציה תנגיש? בתוך ה-VM. אחרי הכל – תמיד אפשר להגדיל דיסקים וירטואליים, זכרון וכו'.

אבל הבעיה הכי גדולה במכונות VM כאלו שבונים – קשורה לשחזור נתונים. נניח שהקמנו שרת Gitlab או שרת MySQL או שרת SQL וכל הזמן זורמים אליו נתונים חדשים ועדכוני נתונים. לפתע מכונת ה-VM מפסיקה לפעול או שיש תקלה שיקח זמן לתקן אותה. מכיוון שזו מכונת VM, בדרך כלל אפשר פשוט לשחזר אותה מגיבוי (או אם בוצע snapshot לאחרונה).

הבעיה הגדולה משחזור גיבוי של מכונה כזו: אתם תאבדו נתונים שנכנסו מאז הגיבוי האחרון. נכון, במקרים של SQL או MySQL אפשר פשוט ליצור DUMP לפי הרצת שחזור ואז למחוק את הנתונים לאחר השחזור ולהעלות את ה-DUMP, אבל במקרים אחרים זה קצת יותר מסובך: מה אתם עושים עם שרת Gitlab לדוגמא שמאבד את הסנכרון? יש לכך כמובן פתרונות, אבל שוב – אפשר להימנע מכל הבעיות האלו.

איך נמנעים? די פשוט: מתחילים להשתמש בשרותי ה-Network File שקיימים, דוגמאות:

  • אם אנחנו מרימים MySQL או SQL של מיקרוסופט על לינוקס, אפשר למפות את התיקיות DATA שהשרות נזקק להן – למפות ל-NFS Share (אם אתם מריצים SQL של מיקרוסופט על לינוקס עם NFS, ודאו כי מדובר ב-NFS 4.2 וה-mount צריך לכלול את הפרמטר nolock)
  • אם אתם מרימים שרת אפליקציית GIT או שרת WEB – אפשר למפות ל-NFS את התיקיה שה-DATA עצמו (כמו קבצי php,html, גרפיקה וככו') יאוחסן. כל מה שצריך זה פשוט ליצור בסטורג' את ה-NFS Share ולבצע mount שיוגדר בקובץ fstab.
  • ב-Windows נשתמש באותן שיטות, רק עם SMB במקום NFS.

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

אני מניח שיהיו לא מעט מתנגדים לשיטה (במיוחד מנהלי סטורג' שפתאום מגיעים אליהם עם דרישות ליצור עוד ועוד NFS/CIFS Share) אך זו השיטה שבין כה תצטרכו להשתמש בה עם קונטיינרים בעתיד, ובסופו של יום – שיטה זו חוסכת זמן רב אם מכונה שנותנת שרות למשתמשים רבים נופלת באמצע היום ואין הרבה זמן לבדוק ולטפל בבעיה (במיוחד אם אין ידע מספק בחברה על התקלה ואיך לטפל בה), וזו בדיוק הסיבה שאני ממליץ לחברות ועסקים "להמיר" מכונות VM לעבוד בשיטה כזו ולחסוך זמן התאוששות. אגב, אחד המקומות שבהם גם תוכלו להשתמש בשיטה כזו היא בעננים ציבוריים (באמזון זהו שרות EFS שמספק NFS לכל ה-Instances שלך לדוגמא).

לסיכום: מכונות VM לא צריכות להיות "מפלצות VM" עם דיסקים בגדלים של מאות ג'יגה עד טרהבייטים. בדרך כלל אין צורך ש-VM מבוסס לינוקס לדוגמא יהיה בגודל של יותר מ-10-20 ג'יגהבייט. אם ה-VM נותן שרותים, אני ממליץ פשוט לאחסן את הנתונים לשרותים דרך NFS/CIFS, כך גם תקבלו מהירות read/write יותר גבוהה (דיסקים וירטואליים עדיין יותר איטיים בהשוואה ל-NFS "טבעי", אגב), וגם כשתצטרכו לשחזר מ-snapshot או גיבוי, לא תצטרכו לדאוג לגבי עניין האם ה-DATA החשוב מעודכן.

האם תוכניות DR באחסון ישראלי שוות את הכסף?

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

כשזה מגיע ל-DR בארץ, כל הגורמים המשתתפים בהקמה – בדרך כלל יכולים לחייך. אם חברה X רוצה להקים DR, הספקים והאינטגרטור מחייכים. מדוע? כי כשחברה צריכה DR, צריך לרכוש ציוד. זה מתחיל בסטורג' זהה למה שיש לחברה כיום (ברוב המקרים), שרתים, סוויצ'ים, אולי הרחבה של התקשורת היעודית בין החווה המקומית לחוות שרתים ששם תשכון תשתית ה-DR, אולי גם VPN, רשיונות מערכות הפעלה, רשיונות פלטפורמות, וירטואליזציה ובקיצור, מדובר על "לשפוך" כמות גדולה של כספים. תזכרו את הפיסקה הזו, נגיע אליה בהמשך.

אחד הדברים הראשונים שהכי חשובים לזכור לגבי DR ולא חשוב מה הפלטפורמה שמשתמשים קשור ל-איך זה יוקם ומה השימוש: ה-DR מטרתו לתת לנו המשכיות עבודה לזמן קצר (שעות, ימים) ואחת ההחלטות הראשונות שצריך להחליט היא בעצם איזה חלק מהתשתית יש צורך להקים כ"מראה" בצד של חוות השרתים החיצונית. על מנת לפשט את הדברים, נניח שיש חברה בשם "אבגד" שיש להם תשתית מקומית של 50 שרתים, 2 מכונות סטורג', ומספר מתגים. החברה בודקת אם להקים DR מול החווה של בזק נניח. האם החברה רוצה להקים בבזק 2 מכונות סטורג', 50 שרתים פיזיים ומתגים? או שהחברה רוצה לעשות DR שהתשתית בצד של בזק תהיה יותר מצומצמת כך שרק הדברים ההכרחיים ירוצו? בכל צד יש יתרונות וחסרונות וזהו שיקול חשוב שהחברה תצטרך לשקול.

מכיוון שיש ערימות של פלטפורמות ופתרונות DR שעובדות ומסנכרנות נתונים בדרכים שונות, אתאר את התהליך באופן כללי: אחרי שרכשנו את הציוד, ומתוך הנחה שהחברה משתמשת בוירטואליזציה, אנחנו נתקין את מערכת הוירטואליזציה הבסיסית (ESXI) בשרתים ולאחר שמכונות הסטורג' יסתנכרנו, נחבר דרך ה-vCenter את הסטורג' לשרתים, נגדיר את המתגים, כתובות IP ועוד ועוד. אחרי שמסיימים את הכל, התוכנה שמבצעת את עבודת הרפליקציה בין הסטורג' בחברה לחווה – ממשיכה לעבוד 24/7 וברוב הזמן היא מרפלקת לכיוון אחד (כי בצד של החווה אף אחד ברוב הזמן לא עובד על השרתים, עד למצב חרום או "תרגיל"). ברוב המקרים כשתהיה נפילה, פתרון תוכנת ה-DR ידע לשנות את הפרמטרים הנחוצים על מנת לאפשר עבודה מול החווה של בזק.

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

ומה לגבי פתרונות בעננים ציבוריים? הנה משהו שהרבה מאוד אינטגרטורים יציעו שלא להשתמש כפתרון DR בגלל כל מיני סיבות: מחיר, Latency, ועוד…

מבחינת מחיר – אכן, עננים ציבוריים אינם דבר זול, אך בניגוד לתוכנות DR רבות, ב-AWS עם שימוש פלטפורמה כמו CloudEndure, אתה יכול לבחור אלו מכונות להעביר לענן בפקודה (או בקליק פשוט) וכל עוד יש בחברה ידע בשימוש AWS לדוגמא, כל תהליך ה-DR יקח מספר שעות (תלוי ברוחב הפס שיש לחברה). עלות השרות היא 99$ למכונה + עלות המכונה (Instance) עצמו כפי שניתן לראות כאן. וכאן ניתן לראות הדגמה של גיור מספר מערכות לענן של אמזון עם CloudEndure.

האם ניתן לקבל פתרונות יותר זולים? כן, אבל אז מדובר בעבודה "ידנית" של העלאת מכונות VM לתוך Region אצל ספק הענן, יש צורך בבניית רשת תקשורת לוגית, ואחרי שהכל הועבר בפעם הראשונה, אפשר להשתמש בשרות כמו Datasync לרפליקציה מתמשכת מחוות השרתים לענן הציבורי. מכיוון שמדובר ברפליקציה שברובה תתבצע בכיוון אחד, אין תשלום על התעבורה והתשלום לגבי נתוני הרפליקציה הוא ברובו על האחסון ו-4 סנט פר ג'יגהבייט על שרות Datasync.

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

ומה לגבי עניין ה-Latency? ובכן, אחד היתרונות הגדולים של ספקי הענן, הוא שאין צורך לשלם מראש או לשלם סכום חודשי קבוע בכדי לנסות שרות, אפליקציה, פלטפורמה וכו'. אם לדוגמא אתם רוצים לדעת אם יש Latency רציני עם אפליקציות פרודקשן שאתם צריכים שירוצו ב-DR, כל מה שתצטרכו לעשות זה להיכנס ל-Market Place של אמזון לדוגמא, "לשכור" את התוכנה (המערכת תקים עבורכם את המכונות ותתן לכם כתובת IP עם פרטי התחברות). ברגע שזה רץ, מעלים נתונים ומגדירים את המערכת, ופשוט מנסים זאת. אצל ספק הענן תמיד ניתן יהיה לבחור מכונה יותר קטנה או גדולה מבלי לאבד נתונים וזה לוקח דקות ספורות.

אחרי שהקמתם ו"שיחקתם" עם המערכת, יהיו בידיכם נתונים ברורים האם ה-Latency משחק תפקיד, האם זה רץ יותר מהר או לאט ממה שיש לכם כיום (אפשר תמיד לבחור דיסק עם יותר IOPS והמכונות הן יותר חדשות ממה שיש לכם ויותר מהירות) – ואז תוכלו להחליט. עלות כל הבדיקה הזו – דולרים ספורים. לאחר שסיימתם, אל תשכחו למחוק את המכונה.

לסיכום: ענן ציבורי צריך לעניות דעתי להיחשב כאופציה נוספת לפני שמחליטים על תוכנית DR, איזה DRaaS וכו'. המחירים יקרים – כשמשלמים לפי שעה (אם לדוגמא משלמים מראש ל-3 שנים, יש עד 75% הנחה פר VM באמזון, לדוגמא). אין צורך לרכוש ציוד נוסף ותלוי בתהליך ה-DR שבחרתם, הוא יכול להתבצע תוך זמן קצר או כפרויקט. יכול להיות שההצעות מספקים מקומיים יהיו יותר זולים, אולי כדאי לחשב את הדברים מראש כתשלום ל-3 שנים ואז להשוות (שימו לב: כל ספקי הענן, ברוב המקרים, ישמחו לתת לכם אלפי עד עשרות אלפי דולר כקרדיטים לשנה הראשונה, כך שזה יכול בהחלט להשפיע על מחיר וההחלטה). אל תקשיבו לאלו שישר פוסלים הצעות של עננים ציבוריים, עדיף שיהיו בידכם המספרים המדוייקים והמעודכנים – ואז תוכלו להחליט.

(גילוי נאות: "חץ ביז" מציע את שרותי ה-DR לעננים ציבוריים)

כמה מילים על ענני צעצוע

כשפתחתי את "חץ ביז" לפני מס' שנים, התחום הראשון שנכנסתי אליו היה עסקי ה-Hosting עם טוויסט מסוים: יש לי נסיון עשיר באופטימיזציה, כך שהלקוחות מקבלים מכונות VM מהירות על שרתים שלא יהיו עמוסים. התחרות באותן שנים היתה רצינית מאוד, וספקי הענן הציבורי הציעו תצורות יקרות, ולא ממש קלות לשימוש ולהגדרה על ידי משתמש ממוצע שאין לו מושג ירוק מה זה AWS. אחרי כשנתיים, כשראיתי שההכנסות מהתחום לא ממש מכסות את ההוצאות (במיוחד לאחר שמחיר התשתית ששכרתי עלה ביום אחד ב-100%) – העברתי את הפעילות העסקית הזו לקבוצת OMC.

חלפו מספר שנים מאז אותה תקופה, והתחרות נהייתה הרבה יותר רצינית – מחו"ל. חברות כמו Linode, Digital Ocean ואחרות הציעו חבילות במחיר מפתה ולשוק הזה נכנסה בשנים האחרונות אמזון עם חבילות Lightsail שהוצעו במחירים המתחרים באותם ספקי Hosting. כאן בישראל לעומת זאת, נסגרו מספר ספקי Hosting ונכנסו ספקים גדולים – רוב ספקי התקשורת וה-Hosting הגדולים בארץ – שהחלו להציע "ענן" ללקוחות פרטיים ועסקים. במקביל, בשנתיים האחרונות ספקי CDN החלו "לגלות" את ישראל והם הקימו כאן נקודות Edge כך שלקוחות ישראלים יוכלו להנות ממהירות גלישה מקומית (לאתרים שמשתמשים באותן רשתות CDN).

בעסקים כמו בעסקים, אף חברה לא תציע שרותי ענן אם אין לה הכנסות כמו שהיא מצפה או שפתרון ענן לא נותן לה את מה שהיא מצפה (לדוגמא: "ענן" כ-Loss leader כשהכסף הרציני מגיע מהשכרת שרותים שהחברה מספקת לאותם לקוחות ענן). איך חברות עננים מקומיות מרוויחות מהשכרת מכונות VM? פשוט: חוסר ידע של לקוחות. מישהו מקצועי שמבין טוב בלינוקס לדוגמא שיודע להריץ מספר אפליקציות Benchmark, היה מסתכל על המספרים ומיד מבטל את העיסקה תוך שעה-שעתיים, אך מכיוון ש-99% מאותם לקוחות לא מבינים איך אפילו להריץ Benchmark, הם שוכרים תוך מחשבה שהם מקבלים יתרונות של ענן כמו משאבים חזקים, שרידות, גדילה וכו'.

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

  • שרידות – אם VM נופל ומריצים אותו מחדש, הוא ירוץ על מכונה אחרת. אצל ספק צעצוע: זה ירוץ מחדש על אותו שרת, כך שאם יש תקלה בשרת, יהיה מצב שמכונת ה-VM תיפול שוב ושוב.
  • אחסון – אצל ספק ענן ציבורי, ה"דיסק" של המכונה הוירטואלית יושב במערך ענק של דיסקים עם שרידות הרבה יותר גבוהה מ-Five Nines. אצל ספק ענן צעצוע? או שזה ישב בדיסקים מקומיים בשרת או על סטורג' כלשהו, והביצועים ירדו ככל שיש יותר ויותר מכונות VM.
  • HA – ברוב מוחלט של המקרים אין את זה לספקי ענני צעצוע. אצל ספק ענן ציבורי ניתן להגדיר זאת די בקלות, הנה דוגמא ב-AWS.
  • גדילה דינמית – קיים אצל ספק ענן ציבורי, לא קיים אצל ספק ענן צעצוע.
  • אחסון אובייקטים – כנ"ל.

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

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

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

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

קצת על CDN וישראל

לא מעט אנשים שמבינים בבניית תשתית, שרתים, פלטפורמת Web, הפצת תכנים וכו' יוכל לאמר לך שכיום אין יתרון ממשי לארח אתרים בישראל. בעבר, רבים הקימו פה בארץ אתרים לקהל הישראלי עקב מחשבה על SEO (לא בגלל מחירים), אבל מי שקצת מבין באמת ב-SEO ולא הולך לפי אמונות תפלות (ולא חסרים כאלו) יכול להבין מהר מאוד שלגוגל ממש לא אכפת אם תאכסן את האתר/שרת וירטואלי שלך בקוטב הצפוני – כל עוד קהל המטרה המוגדר (נניח ישראל) מקבל את הדפים והאתר במהירות, ובשביל זה יש CDN ולגוגל ממש אין בעיה עם CDN (אדרבא, הם מציעים שרות כזה במסגרת שרותי הענן הציבורי שלהם).

הדוגמא הכי פשוטה שאני יכול לתת היא בלוג זה שאתם גולשים בו כרגע. הוא מתארח ב-AWS בוירג'יניה, אך הוא נעזר בשרותי CDN של Cloudflare וכ-600-1500 איש גולשים בו ביום, הם מקבלים את הדפים במהירות, והעלות הכוללת היא מזערית (20$ + מע"מ לחודש). בלי שרותי CDN, המכונה הקטנה הזו (2 ליבות, 4 ג'יגה זכרון) לא היתה מחזיקה מעמד עם אותה כמות של גולשים ובלוגים שאני כותב.

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

  • שרתים וירטואליים (או פיזיים) שמפוזרים ביבשות ובמדינות מפתח שונות הכוללים שרתי Web, שרתי אפליקציה, שרת (או שרותי) בסיסי נתונים, שרות DNS ועוד ועוד. לחלופין במקום שרתים, אפשר להשתמש (ומומלץ) בקונטיינרים עם שרותי קונטיינריזציה שספקי ענן ציבורי מציעים (או להקים משלכם, אם כי בעננים ציבוריים זה קצת פחות מומלץ והרבה יותר מסובך).
  • תשתית שמאפשרת לבצע Scaling דינמי
  • תשתית אחסון
  • תשתית ניטור
  • הגנה – חומת אש, WAF…
  • CDN
  • ועוד ועוד..

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

ישנם לא מעט חברות המציעות שרותי CDN. כל ספקי הענן הציבורי מציעים זאת, וכמובן חברות כמו Cloudflare, Akamai, Brightcove, Incapsula ועוד ועוד. ספציפית לגבי ישראל, לכל ספקי ה-CDN היעודיים יש בארץ נקודות שמזרימות תכנים אל גולשים ישראליים ומבחינת ספקי ענן – כרגע רק אמזון מציעה נקודה כזו (שנקראת POP) בישראל.

אחרי שאנחנו מבינים את הצורך ב-CDN, נשאלת השאלה – איזה CDN כדאי להשתמש?

שרותים כמו Incapsula ו-Cloudflare מציעים פתרון שמאוד מזכיר דבר כמו Reverse Proxy. אתה צריך להעביר את ניהול ה-DNS שלך לספק כזה ומאותו רגע, כל התעבורה אל ומהאתר שלך עוברת דרך אותו ספק ענן (אפשר כמובן להחריג בכך שבוחרים רשומות A records מסויימים שלא יעברו דרך הענן). בשיטה זו יש יתרון גדול בכך שאותו ספק CDN יכול לאפשר לך דברים כמו:

  • חסימת כתובות IP מסויימים או חסימת גלישה ממדינות שונות
  • שרותי הגנה נגד התקפות שונות
  • SSL חינמי
  • שרות DNS מאובטח
  • אופטימיזציה של התכנים מבחינת תעבורה
  • טעינה זריזה של דפים
  • שמירת Cache מקומית
  • ועוד

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

ה-CDN של ספקי הענן הציבורי – שונה והוא יותר ה-CDN ה"קלאסי" המוכר. אתה ממשיך להשתמש בשרותי ה-DNS שלך (או בשרותי ה-DNS של ספק הענן, גם אם זה ספק ענן אחר ממה שאתם משתמשים לארח את התשתית האחרת שלכם) ואתה צריך לפתוח A record נוסף שישמש לשרותי ה-CDN וכמו כן עליך לבצע שינויים באתרים שלך על מנת שתוכלו להשתמש בשרותי ה-CDN (במקרה של אמזון יש ספר שנגיש דרך אפליקציית Kindle במחיר של 0$ כאן איך להשתמש בשרותי ה-CDN שלהם).

יש מספר יתרונות של ה-CDN של ספקי ענן כמו אמזון מול שרותי CDN כמו Cloudflare:

  • אין צורך בשרתים ובאחסון להנגיש תכנים סטטיים. פשוט מאחסנים אותם ב-Object Storage כמו S3 ומגדירים את ה-CDN להנגיש אותם לפי הצורך.
  • ניתן להנגיש דרך ה-CDN תכנים מוגנים כמו וידאו, מוסיקה, וקבצים מיוחדים שמיועדים ללקוחות משלמים בין כהורדה ובין כהזרמה (Stream).
  • ניתן לקבל Raw Access Log (ב-Cloudflare זה בתשלום, ב-Cloudfront זה ללא תשלום נוסף) שניתן להכניס למערכת עיבוד לוגים (Elastic Stack וכו')
  • ניתן להשתמש ב-Wildcard SSL
  • ניתן "לדחוף" תכנים

(מצאתי כאן טבלה שמשווה בין Cloudflare ו-Cloudfront אך היא אינה מעודכנת לגמרי).

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

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

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

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

פרויקט נימבוס – מחשוב הענן הממשלתי

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

anan

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

  1. אחד הדברים הבולטים לטובה במסמך הוא התייחסות למחשוב ענן כמו שספקי הענן הציבורי מציגים ומוכרים ולא כל מיני "ענני צעצוע" שכל מיני חברות בארץ מציעות/מוכרות. התנאים עצמם ישר פוסלים את אותם "ענני צעצוע" בכך שיש דרישות שלספקים בארץ אין אותם, הן מבחינת הכנסות והן מבחינת Availability Zones (שמשום מה במסמך הם נקראים "Domains"), מיקומים גיאוגרפים וכו' ואף אחד מהספקים בארץ גם לא מציע 500+ שרותים שונים באותו ענן.
  2. אני שמח לראות שבמשרד האוצר מחפשים שהזוכה יקים בעצם Region אחד ובתוכו Availability Zones אולם לעניות דעתי, חשוב שבמשרד יתעקשו על כך שה-AZ יהיו במרחק רב אחד מהשני.
  3. נקודה שלדעתי חסרה במסמך וחשוב שתצוין (ושהמשרד יעמוד על כך) – שה-AZ יהיה מחובר בחיבורי תקשורת מספקי אינטרנט שונים ולא מספק יחיד. רק לפני חודשים ספורים אלפי אתרים נותקו מהאינטרנט עקב "תקלת תקשורת" של ספק אינטרנט מרכזי. האם משרד האוצר רוצה לחוות חוויה כזו?
  4. אם המתמודדים הם בעצם ספקי הענן הציבורי, מומלץ לבקש לדעתי במסמכי המכרז כי הספק הזוכה ייבא וישתמש בציוד שלהם ולא בציוד COTS. הציוד של ספקי הענן שונה לחלוטין מציוד שחברות רוכשות החל ברמת המעבדים, זכרונות, לוחות, אחסון, תשתיות תקשורת וכו' ויש סיבה טובה לכך – ביצועים הרבה יותר גבוהים.
  5. בבקשה, בבקשה – בלי Azure Stack. כתבתי כאן מדוע לא.
  6. נקודה נוספת שאולי כדאי שמשרד האוצר יחשוב לגביה – שה-AZ יהיו מחוץ ל-Data Centers של ספקי האינטרנט שונים במיקומים כמו הגליל ובאר שבע לדוגמא. בחירה במקומות כאלו יכולה לייצר באופן ישיר מספר מקומות עבודה ובאופן עקיף לאורך זמן – יותר ויותר חברות שיעבדו במקומות אלו.

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

  • מיקרוסופט – Azure
  • אמזון – AWS
  • גוגל – GCP
  • אורקל – Oracle Cloud
  • IBM Cloud

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

יש משהו אחד שקצת לא מסתדר לי עם המכרז והפרויקט עצמו. כן, זה בהחלט דבר טוב שמשרד האוצר עושה צעדים להקים פה Region, אבל הבעיה הגדולה ביותר קשורה לשיטות העבודה והפיתוח במשרדי הממשלה השונים ושוחחתי בעבר עם לא מעט עובדים במשרדים הממשלתיים על כך: צריך לשנות מקצה לקצה את כל מתודות העבודה. להתחיל לעבוד מול GIT, לשלב CI/CD, אוטומציה, להוריד כמה שיותר את העבודה עם מכונות וירטואליות ולהתחיל לעבוד מול קונטיינרים ומול שרות/פלטפורמה כמו Kubernetes/OpenShift, לעבוד במתודה של Scale Out, להשתמש ב-Object Storage, להתחיל לעבוד במתודות Serverless אולי, ועוד ועוד – וכל אלו הם דברים שונים ממה שהמשרדים משתמשים כיום. אם משרד האוצר הולך לשלם על Region עם מספר AZ ושיטות העבודה ישארו השיטות הישנות, אז ניצול ה-Region יהיה אחוזים בודדים בלבד, ובכך יווצר בזבוז כספים משווע (ומה לעשות, לא מדובר פה בתשלום חד פעמי אלא חודשי), ולכן אני תוהה אם משרד האוצר מוכן כבר עכשיו לתכנן מהלך הדרגתי לעבור למתודות העבודה החדשות.

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

מעבדי EPYC דור שני – סקירה

אני רוצה לפתוח את הפוסט עם סיפור קצר "מאחורי הקלעים".

תכננתי זמן רב לכתוב את הפוסט הזה ולשחרר אותו היום (לאחר שהסתיים האמברגו אתמול) על המעבדים החדשים של AMD לשרתים, מעבדי EPYC דור שני (סידרה 7002) ולהשוות אותם למעבדים הנוכחיים של אינטל שמגיעים עם עד 56 ליבות במעבד. מהנדסי אינטל עשו עבודה מצויינת והמעבדים עם 40 או 56 ליבות יכולים לתת "פייט" מצוין למעבדי EPYC דור שני של AMD, אבל קרה מה שקורה לפעמים בחברות גדולות – בהנהלה באינטל "נפתח התאבון" והם החליטו שמעבדים בסידרה 92XX יהיו שונים פיזית ממעבדי Xeon Scalable האחרים. אם תיקחו מעבד כזה ותהפכו אותו, לא תמצאו פינים או ריבועי זהב קטנטנים. אתם תמצאו כדורים או מה שנקרא בשפה המקצועית BGA (כלומר Ball Grid Array), ובמילים אחרות – המעבדים הללו חייבים להיות מולחמים ללוח אם. בנוסף, אינטל החליטו שיצרן המעוניין לרכוש מעבדים כאלו ומעוניין לשלב אותם בשרתים – יצטרך גם לרכוש מאינטל עוד כמה שבבים והם מחוייבים להיות מוטמעים בשרתים ומה לעשות – אותם שבבים מתחרים בדיוק במה שהיצרנים מוכרים מבחינת ניהול – iDrac, iLO וכו'.

כך שכיום – גם אם יש לכם כסף, מערכות X86 הכוללים מעבדים עם יותר מ-28 ליבות –  לא תוכלו לרכוש כי אף יצרן לא מוכן לתנאים הללו. באינטל הבינו את השגיאה הפטאלית רק לפני מס' חודשים והיא תתוקן ב-2020 עם המשפחה החדשה Ice Lake AP.

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

המעבדים החדשים של AMD – סידרה 7002 הם מעבדים שרבים מאוד בתעשיות השונות חיכו להם. מעבדי EPYC דור ראשון (סידרה 7001) היוו כניסה מחדש של AMD לתחום השרתים לאחר ש-AMD שחררה לפני יותר מעשור את מעבדי ה-Opteron שהיו מאכזבים בכל תחום למעט המחיר ואינטל לא היו צריכים להתאמץ יותר מדי בכדי לכבוש 99% מהשוק מאז 2006. ל-AMD לא היו שום פתרונות עם שהם פיתחו את ארכיטקטורת ZEN וגם כש-AMD הוציאו את ה-EPYC דור ראשון, לאותם מעבדים היה יתרון בהרצת מכונות וירטואליות, פתרונות VDI וקונטיינרים, אבל כשזה מגיע להרצת אפליקציות גדולות ופלטפורמות פיתוח על כל המעבדים בשרת (ללא וירטואליזציה) – אינטל ניצחה מבחינת ביצועים כמעט בכל קטגוריה.

בדור שני של ארכיטקטורת ZEN, ה-ZEN-2, הפיקו ב-AMD לקחים רבים ובאותה הזדמנות החליטו לשנות הכל. ה-EPYC סידרה 7002 זו ארכיטקטורה שונה לחלוטין מהדור הראשון, לא רק בתוספות ש-AMD הוסיפו, אלא גם בתכנון עצמו. בדור הראשון של EPYC היו בעצם 4 מעבדים שיצרו תצורת NUMA שהצריכו הגדרות וכיוונונים שונים על מנת לקבל ביצועים טובים וגם אז – היה Latency לא קטן עקב התצורה. בדור השני לעומת זאת, ישנו Chiplet מרכזי גדול (כפי שאתם יכולים לראות בתמונה לעיל) שאחראי לכל ה-I/O וכל שבבי הליבות "מדברים" דרכו בלבד, מה שחוסך בצורה ניכרת את ה-Latency. ככלל, תצורת המעבדים הללו (כמו גם מעבדי ה-Ryzen ש-AMD שחררו ומעבדי ה-Threadripper שישוחררו כנראה בחודש הבא) היא תצורה חדשה ושונה לחלוטין ממה שאינטל מתכננים ומייצרים מעבדים – וזה גם הכיוון שאינטל יעברו אליו במהלך השנה שנתיים הקרובות. חברה קטנה כמו AMD מקדימה את אינטל הענקית. כמה מרענן לראות זאת.

כפי שכתבתי, יצרניות רבות של שרתים, ספקי הענן הציבורי, יצרנים תעשייתיים של ציוד לשרתים וכו' חיכו ל-EPYC החדש מהסיבה הפשוטה שסוף סוף אפשר להתחיל מאפס עם טכנולוגיות יותר מתקדמות ממה שאינטל מציעה. עם 128 נתיבי PCIe אפשר לבנות דברים מדהימים ללא צורך ברכיבי מיתוג סופר-יקרים ליצרן (שמגלגל זאת כמובן ללקוח הסופי), אפשר להשתמש בזכרון יותר מהיר (3200 מגהרץ), אפשר לקבל תקשורת יותר מהירה כי כמעט כל תושבות ה-PCIe הם PCIe 4.0 עם רוחב פס של 16 ג'יגהבייט לשניה (כפול מ-PCIe 3.0), אפשר להכניס הרבה יותר דיסקים SSD NVME (לנובו בהחלט "משתוללים" בקטע הזה עם השרתים מבוססי EPYC שהם מציעים החל משבוע הבא. צפו בוידאו הזה), יש מעבדים עם עד 64 ליבות, יש זכרון מסמון בגודל 256 מגהבייט, ועוד ועוד. מי שרוצה את "רשימת המכולת" מוזמן לעיין בפוסט הארוך ש-STH שחררו כאן.

להלן טבלה שמראה את ההבדלים בין הדור השני של Xeon Scalable מבית אינטל ל-EPYC דור שני מבית AMD:

אחת השאלות שכמובן מיד עולה היא: איך הביצועים? וכאן AMD מפתיעה. ברוב מוחלט של המבחנים מעבדי ה-EPYC פשוט עוקפים את המעבדים בקצה הגבוה (28 ליבות) של אינטל עם 50-90% ביצועים יותר מהירים, גם כשלאינטל יש יתרון כמו AVX512 – מעבדי EPYC עוקפים זאת (ע"י שימוש ברוחב פס כפול לתעבורת פקודות) ובמילים אחרים – לא חשוב מה ה-Work Load שאתה צריך להריץ, אם אתה חושב לרכוש ברזלים חדשים או לקחת Instances אצל ספק ענן ציבורי – כדאי מאוד להסתכל על מכונות המכילות את מעבדי EPYC החדשים. אגב, מיקרוסופט וגוגל הכריזו כי ניתן כבר מהיום לשכור Instances מבוססי EPYC דור שני. באמזון אם הבנתי נכון, זה יוצע בחודש הבא.

ומה בנוגע למחיר?

ובכן, בקצה הגבוה של מעבדי אינטל מהסידרה 9200 (כן, אלו שאי אפשר לרכוש כרגע מהיצרנים הפופולריים) אינטל דורשת לבלב, ריאה או משכנתא קטנה. מעבד בקצה הכי גבוה – Xeon 9282 עם 56 ליבות, מתחיל במחיר של $25000 (המחיר כמובן הוא לא מחיר ללקוח סופי, אלא ליצרן שרתים, אז המספר יעלה). לעומת זאת, המעבד בקצה הכי גבוה של AMD, ה-EPYC 7742 עם 64 ליבות עולה פחות משליש – ב-AMD מסתפקים ב-$6950.

ככלל, המשוואה ש-AMD מציעה היא פשוטה: תחליט כמה ליבות פר מעבד אתה צריך במעבדים של המתחרים. יש לך מספר? יפה. תוסיף בערך 100-150$ ותקבל כמות ליבות כפולה ובאותה הזדמנות יש מצב שלא תצטרך שרת עם 2 מעבדים אם אתה רוכש מעבד מבוסס EPYC דור שני.

יתרון גדול נוסף ללקוח הסופי הוא מבחינת רישוי. AMD מציעה לך מעבדים עם עד 64 ליבות ואם אתה משתמש בוירטואליזציה של VMWare, אז אתה חוסך 50% פר שרת במחיר הרישוי.

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

  • HPE – מציעים את ה-DL325, DL385 ו-Apollo 35. את השרתים הללו ניתן לרכוש כבר כיום עם מעבדי EPYC דור ראשון או שני (יש תאימות אחורה). HPE הכריזו כי במהלך 2019-2020 הם יוציאו עוד 9 דגמים של שרתים מבוססי EPYC דור שני. השרתים המוצעים כיום הם עם PCIe 3.0 ולא עם PCIe 4.0.
  • DELL מציעים את שרתי R7425, R7415, R6415. את כל השרתים הללו ניתן לרכוש עם מעבדים דור קודם או נוכחי. בחודש ספטמבר DELL יציגו שרתים חדשים ובמהלך השנה הבאה יוצגו עוד 6 שרתים מבוססי EPYC דור שני.
  • LENOVO מציעים את SR635 ו-SR655. לנובו הם היחידים שמציעים החל משבוע הבא שרתים עם לוח אם שתוכנן מאפס למעבדי דור EPYC דור שני. גם לנובו יציעו החל מתחילת הבאה עוד מספר דגמי שרתים מבוססי EPYC דור שני.
  • Supermicro – החברה מציעה כרגע 4 שרתים דור 12 (H12) שניתן לראות כאן (נכון לכתיבת שורות אלו יש להם כמה בעיות באתר) כאשר Supermicro דוחפת יותר לכיוון ה-Twin (כלומר 2 שרתים במארז 2U).
  • Gigabyte – החברה החליטה להוציא לא פחות מ-13 שרתים מבוססי EPYC דור שני (די מדהים, בהתחשב שבדור הקודם של EPYC היו לחברה .. רק 2 שרתים להציע). אתם יכולים לראות את הרשימה כולה כאן.
  • TYAN (יש להם נציג בארץ?) – מציגים 6 שרתים ו-2 לוחות אם (לבנייה ואינטגרציה). הרשימה – כאן.
  • ASUS – בעת כתיבת שורות אלו, החברה הכריזה על שרתים חדשים (E10) ולוחות אם מבוססי EPYC דור שני. האתר עצמו עדיין לא מכיל את רשימת השרתים, סביר להניח שזה יעודכן היום או מחר.

לסיכום: אם אתם הולכים לרכוש שרתים בקרוב, סביר להניח שתיתקלו בשם "EPYC" מכאן ועד הודעה חדשה מצד כל יצרן שרתים. מבחינת ביצועים – מדובר בשיפור מאוד שנותן ביצועים יותר גבוהים בהשוואה למה שאינטל נותנת ומבחינת המחיר, מדובר בהנחה משמעותית מאוד בהשוואה לכל ה-SKU של אינטל. לאינטל יש מענה למעבדים הללו, אבל המענה (Ice Lake לשרתים) יצא רק בשנה הבאה – בערך באותו זמן ש-AMD תוציא את EPYC דור שלישי (Milan).

עכשיו אחרי ש-AMD הוציאו את EPYC, החברה הולכת לשחרר כנראה בחודש הבא את Threadripper דור שלישי שיהיה שונה משמעותית מהדורות הקודמים והוא מיועד לתחנות עבודה ועל כך אכתוב בפוסט אחר.

למעוניינים, להלן כמה קטעי וידאו שיכולים לעניין אתכם מבחינת ביצועים:

הראשון – מבחן ביצועים VMMark של VMWare:

השני – קונטיינרים (מבוססי Docker):

קצת על שדרוג מכונות תעשיתיות

בשנים האחרונות, בכל חברה שיש בה מחשבים, הגיע הצורך לשדרג מערכות הפעלה עקב הפסקת תמיכה מצד היצרן. המקרים הכי ידועים הם כמובן מערכות ההפעלה של מיקרוסופט, הן ה-Windows Server והן Windows לדסקטופ. ברוב המקרים השדרוג אינו מסובך – צריך לוודא שהאפליקציות הקיימות תואמות למערכת החדשה (או שיש גרסאות חדשות שירוצו ויתמכו במערכת החדשה), ושיש דרייברים לציוד שנמצא במכונה. אחרי שבדקנו ניתן להריץ את השדרוג ישירות מהמערכת הקיימת או להתקין את הדברים מחדש. כמעט כל איש IT מכיר את התרגול הזה.

אבל כשזה מגיע למכונות יצור, לא מומלץ ממש לבצע את הדברים לעיל.

בין אם מדובר במחשב שנמצא במפעל שמפעיל רובוט/ים, בין אם מדובר בכספומט ובין אם מדובר בכל מערכת סגורה ללקוח שרכש את המערכת – אותו מחשב לא נבנה עבור שדרוג. אני לא מכיר שום יצרן מכונות שיענה לך במייל "סבבה, שדרג ל-Windows 10, אין בעיה" וזאת מהסיבה הפשוטה שברוב מוחלט של המקרים, מותקנות במערכת ההפעלה שבמחשב מספר אפליקציות ומספר דרייברים (תלוי בציוד שאליו מחובר המחשב) שניבנו עבור אותה מערכת הפעלה ישנה ומה שהותקן כלל לא נוסה על מערכת הפעלה חדשה. יותר מכך, במקרים רבים הדרייברים של הציודים המחוברים במחשב לא יעבדו ב-Windows 10 (תצורת הדרייברים שונה מהותית בין Windows XP/7 לבין WIndows 8/10).

ליצרנים הסיטואציה הזו היא דווקא דבר מבורך, עוד דרך להרוויח מהלקוח. רוצה שהמחשב של מכונת היצור ירוץ עם Windows 10? בשמחה! שלם כך וכך עשרות אלפי שקלים ותקבל מחשב חדש עם ציוד/כרטיסים חדשים שמריץ Windows 10 ואת התוכנה הקניינית.

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

  • הרצה של המערכת הישנה כ-VM בתוך המחשב התעשייתי שיריץ Windows 10: רעיון נחמד אבל בעייתי במיוחד אם המחשב מחובר עם כרטיסים שונים לרובוטים. מה לעשות, Windows לא מאפשר מיפוי של כרטיסים אל מערכת הפעלה וירטואלית (תאשימו את מיקרוסופט, בלינוקס זה דווקא עובד) וגם אם תנסו להתקין לינוקס עם VM של מערכת ההפעלה החדשה, זה לא אומר שזה יעבוד כי מעבדים ישנים אינם כוללים תמיכה של VT-D, מה שאומר שברגע שתפעילו את ה-VM, המכונה הפיזית תאפס את עצמה (אין תקשורת DMA טובה).
  • התקנה של Windows 10 והרצה במצב Compatibility: גם זה רעיון נחמד, אבל לא בטוח שהציוד במחשב נתמך בכלל ב-Windows 10 (נסו את זה עם כרטיסי MOXA ישנים לדוגמא או עם כרטיסי FPGA מלפני 2005, ותקללו כל רגע שהחלטתם להכניס את הראש לצרה הזו), מה גם שבאותו רגע שתעשו זאת – יש מצב שאתם מבטלים את חוזה האחריות והתמיכה מצד היצרן.
  • העברת כרטיסים מהמחשב שהוא חלק ממכונת היצור לשרת והרצת VM תחת ESXI: גם זה רעיון נחמד, אבל ברגע שתפעילו את ה-VM, יש מצב שהשרת או יתקע או יתאפס לגמרי (הכרטיסים לא יודעים לתמוך ב-IOMMU ומכיוון ש-VM מנסה לאפס את הכרטיס ב-Boot, הכרטיס או יסרב ואז יכול להתבצע Reset או פשוט להתקע).

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

על מנת להימנע מהבעיות לעתיד, חשוב לדרוש את אחד הדברים הבאים:

  • אם המערכת מגיעה רק עם Windows והיצרן לא מאפשר בחירת מערכת הפעלה אחרת (לינוקס) – תוודאו שזו גירסת Windows Embedded (רשימה נוכחית של גרסאות – כאן). גרסאות אלו מקבלות שדרוגים ותיקונים במשך זמן רב ובדרך כלל העדכונים והתיקונים מגיעים מיצרן המכונה, לא דרך מערכת WSUS או Windows Update.
  • אם אפשר – עדיף לינוקס. היתרון בלינוקס הוא בכך שניתן גם להחליף להפצה מודרנית אחרי כמה שנים ולשמור על תאימות בינארית גם עשור אחורה. יש כמובן מגבלות לשדרוגים כאלו אם מדובר לדוגמא בדרייבר 32 ביט או דרייבר שקומפל רק לגירסה מסויימת של קרנל ואין קוד מקור לו.

לסיכום: למרות שהמכונות הללו נראים כמו עוד מכונת דסקטופ עם ציוד יחודי שמחובר אליה כך שאין-שום-בעיה לשדרג ל-WIndows 10 – אני ממליץ להימנע מהרפתקאות מיותרות. מכונת יצור מושבתת אומר הפסד כספי ניכר והיצרנים מבטלים אחריות במהירות אם יש להם אפילו חשד קל שמישהו "שיחק" עם המערכת. עדכנו גירסה נוכחית, והפרידו רשתות ברמה הפיזית. הבוס מתעקש על Windows 10? היצרן ישמח לספר לכם על הגירסה החדשה של התוכנה שלהם שתוכלו לקבל יחד עם Windows 10 ומחשב חדש – במחיר "מפתיע".