יום ראשון, 23 ביוני 2019

371 Bumpers 59

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

רן - 
  • מאחורי הקלעים (ידוע גם כ”שאלת הראיון הקלאסית”) - “מה קורה כש…”: גרסת Kubernetes - מההקשות על המקלדת, דרך שלל הפרוטוקולים ועד שהביטים מגיעים ליעדם
    • אז זו גרסת Kubernetes - מה קורה לכל אחד מהרכיבים החל מ - kubectl Deploy דרך ה- Kubelets ועד לפרישה מוצלחת, קריאה מעניינת לכל מי שעוסק בעולם הזה
    • רגע - מה זה בכלל Kubectl Deploy?! למי שמעולם לא השתמש ב - Kubernetes אולי לא בהכרח כדאי להתחיל מכאן, אבל למי שכן זו דרך טובה להבין מה קורה בפנים
  • עוד מעולם Kubernetes - פרויקט קוד פתוח חדש של חברת RANCHER בשם k3OS
    • החברה מספקת תשתיות בעיקר ל Kubernetes, וזו מערכת הפעלה שהיא “K8s native” - יש node של K8S שמגיע עם מערכת ההפעלה (בלי למשל להתקין קודם Ubuntu ועליו K8s וכו’)
    • המערכת מאוד “רזה” ומינימליסטית, ומכילה רק את מה ש-K8s צריך, מה שמאפשר להריץ אותה על חומרה מאוד בסיסית (“חלשה”), שמתאימה למכונות קצה (Edge) דוגמאת Raspberry Pi וכו’.
    • מה בעצם יש להרוויח מהרצת K8s על חומרה חלשה? זה לא שיהיה אפשר להריץ המון משימות (כי החומרה, ובכן,  חלשה…)
      • יש מקרים בהם נרצה רק את ה - Orchestration features, בלי צורך ב - Scale, למשל: הרבה מאוד רכיבים קטנים (VPN Gateway?) בהרבה מקומות בעולם. באופן הזה מתקבל מישור ניהול אחיד ונוח להכל ביחד (גם ל-Data Center וגם עבור תחנות הקצה)
      • ה - Workload מן הסתם יפוצל באופן לא אחיד, אבל הניהול יהיה ממקום אחד, עם אותם כלים ואותו Monitoring וכו’.
      • יתרון אפשרי נוסף הוא שיקולי Security ו - Hardening (לא מריצים מה שלא צריך, חלק שאין לא יתקלקל), חוץ מזה צריך שפחות חומרה כמעיין Side Benefit
      • האם נריץ על המקרר? כנראה שלא, אבל שווה לבדוק
      • ואם כבר מחפשים צרות - מה קורה עם Updates? יש סעיף שמתייחס לזה, אבל כרגיל זו נקודה עדינה ששווה לשים לב אליה
      • שאלת בונוס - האם האייטם הקודם רלוונטי לכאן? כן . . . בסוף זה עדיין K8s. ההבדל המשמעותי הוא במערכת ההפעלה (מעיין Linux שהורידו ממנו כמעט הכל והוסיפו K8s)
  • ויש עוד דברים, למשל - כנס GitHub Universe, שכלל כמה הכרזות מעניינות, בהן - 
    • תוכנית חדשה בשם Sponsors - עכשיו אפשר לקבל sponsorship לפרוייקטי קוד פתוח דרך GitHub
      • הנה לינק ל - Keynote בדקה הרלוונטית
      • יש אינטגרציה ואגרגציה למערכות קיימות (למשל Gittip), ו- GitHub מספקים את הממשק ומציגים את הפרטים בחזית הבמה של הפרויקט
      • אולי יקח זמן, אבל עם פוטנציאל למהפכה אמיתית - מאפשר ליותר מפתחים לעבוד לבד או בקבוצות קטנות עם בסיס כלכלי
      • ראוי לציין שזה בסך הכל מאוד קל - הוספה של קובץ קונפיגורציה ל Repo וזהו בגדול
      • נקודה שעלולה להסתבך - לאן בדיוק הולך הכסף? צריך להגדיר לאיזה Contributor מגיע מה, ומאחורי הקלעים חבויה בעיה לא פתורה של איך בדיוק מחלקים כסף בפרויקט קוד פתוח, או יותר נכון - מהו מבנה האחזקה של פרויקט Open Source ואיך מעדכנים אותו (למשל כשיש Contributor ראשי שכבר לא כל כך תורם וכו’)? . . . ומה בעצם ההבדל בין זה לבין Bug bounty? כסף כרגיל מסבך את העניינים . . .
        • אולי יהיה Use Case מעניין לחברות שיוכלו להקצות זמן רשמי לעבודה על קוד פתוח תמורת קבלות
        • כרגיל יהיה יותר מעניין כשיכנס לסיפור Corporate Money (אלפי $ ומעלה) עם הצבת דרישות (SLA, תמיכה וכו’), פותח אפיק שקודם לא היה קיים - עד עכשיו היה אפשר לעבוד בחברה או לפתח מודל עסקי סביב הקוד הפתוח (Elastic Search style  וכו’, ואז AWS מגיעים וזה כבר Rabbit hole חדש בפני עצמו . . . ); עכשיו אולי יש משהו באמצע למפתחים קטנים שרוצים להתפרנס מהתחום.
        • יהיה מעניין לפרויקטים ללא גב של Corporate (למשל D3, כנראה שה - Linux foundation יסתדרו גם בלי)
      • היו ניסיונות למערכות תגמול של פרויקטי תכונה, ובטח יצוצו עכשיו עוד סטארטאפים בתחום
    • ועוד הכרזה - GitHub Package Registry
      • מאפשר לארח Registries בסגנון npm, Maven, Rubygems וכו’ - ב - GitHub
      • לא שאי אפשר היה קודם, אבל אפשר לקוות לאינטגרציה יותר טובה (ואולי גם Security משופר)
      • עדיין בבטא, כמו ה - Sponsors.
  • מצגת של מפתח Go ותיק בשם Dave Cheney תחת הכותרת Clear is better than clever
    • יש גם וידאו
    • משתמש ב - Go כמדיום, אבל האמירות עצמן מאוד כלליות (ולא בהכרח צריך להכיר Go לעומק על מנת להנות מהמצגת) - איך לכתוב קוד שהוא קל להבנה, תחזוקה וקריאה, תוך טענה שזה עדיף על קוד חכם
      • אמ;לק - אל תתחכמו
    • כתוב ומוצג מאוד יפה, לא נכנס למחקרים וכו’ אלא מאוד Down to Earth ואינטואיטיבי - רק שבכל זאת נוטים לפספס הרבה פעמים
    • מתחבר לקו של Clean Code ו - Uncle Bob, וזו עוד שכבה, מומלץ לחפש עוד מחקרים בנושא
  • מאמר של Facebook על מערכת פנימית בשם Tupperware - כלי ה - Orchestration ו - Deployment הפנימי של Facebook (סוג של “ה - K8s המקומי”)
    • לא קוד פתוח, אבל המאמר מתאר את ה - Design Principals וה - Trade-offs שנלקחו
    • זה לא היה ממש סודי גם קודם, אבל המאמר כן צולל יותר לעומק על שינויים שנעשו לאחרונה - למשל העובדה (?) ש - Facebook רצים על חומרה יחסית חלשה (שצורכת פחות חשמל, הרבה שימוש במעבדים מבוססי ARM), מה שמכתיב החלטות Orchestration שונות ממקומות אחרים.
      • היה מאמר של Uber שעסק ב - Workloads עם דפוסים שונים (Online לעומת Batch וכו’) על אותה חומרה לניצול מקסימלי - וטען שזה נכון עבור סוגים ספציפיים (וקונפיגורציות ספציפיות) של חומרה, ולא בהכרח נכון עבור חומרה יחסית “רזה” (כשלפעמים עדיף לשים workload ספציפי על חומרה ספציפית לניצולת טובה יותר).
      • באופן דומה, יש הרצאה של AWS על איך ה - Framework של Lambda עובד  - בהתחלה ניסו לשים את האפליקציות של אותה החברה על אותם השרתים ולא הגיעו לניצולת טובה, ואז התחילו לנסות ב - Random - ועכשיו בכלל עברו להיעזר ב - Machine Learning לניצולת מקסימלית
      • בסוף זה כנראה עניין של רמת ה - Fragmentation שניתן להגיע אליה באופן יעיל, משהו שחברה שיש לה Ownership מלא על כל ה - Stack, כמו Facebook או Uber, יכולה לעשות ו - AWS למשל לא יכולים.
    • יש עוד דברים מעניינים, והמאמר עצמו מעניין ברמה ההנדסית ויחסית מפורט (שוב - לא קוד פתוח)
  • מאמר ישן של Peter Norvig (בין היתר משמש כ Head of Research ב - Google) על איך ללמוד לתכנת בעשר שנים
    • אמ;לק - דני סנדרסון אמר את זה קודם (לימוד שחייה בהתכתבות וכו’), כל הסדנאות של “למד לתכנת ב-21 ימים” לא שוות הרבה, והוא מגבה בהרבה טיעונים מעניינים על הטמעת חשיבה אלגוריתמית וכו’
    • עוד נקודה מעניינת - המאמר תורגם להרבה מאוד שפות, כולל עברית (לא תרגום מלא ומדלג על חלק, אבל נחמד לראות)

אלון - 
  • מזמן לא עסקנו ב - K8s, אז עכשיו Tinder פרסמו מאמר על המעבר שלהם ל - Kubernetes
    • מסתבר שהיו להם המון קשיים במעבר, והמאמר הוביל להרבה תגוובת בסגנון “הנה דוגמא למה לא כולם צריכים לעבור ל - K8s” . . .
    • המאמר הזה אינו מופע יחיד - צרות DNS ו - Network ועוד - בהתחלה זה נחמד, אבל אז רוצים מעיין “K8s ענק שמנהל את כל הצי” לטובת “ניצול משאבים נכון”, ואז מגיעים כל שאר האילוצים והכל מסתבך, ו - DNS הופך להיות single point of failure . . . מה גם שיש עננים שאינם של Google שעליהם כל הסיפור עובד פחות טוב, ולא תמיד נעים שצריך להיות Core Developer של K8s כדי לפתור בעיות
      • חשוב לזכור שב - Scale ש - Tinder רצים עליו כנראה שתמיד יהיו בעיות, שלא בהכרח היו נמנעות גם בלי מעבר ל- K8s.
      • מצד אחד הייתה מערכת שעבדה לפני כן, וכמות הבעיות ושנתיים עבודה לא נראים שווים את זה
      • מצד שני, אמנם תרופת קסם זה בטח לא, ושנתיים עבודה זה כנראה הסדר גודל שצריך לקחת בחשבון - אבל בסוף הגיעו להישגים מרשימים.
      • ובואו לא נתחיל עם מה יש לדבר על הענן של Google. לפחות החיפוש אחלה.
  • קצת עצוב - How @DigitalOcean just killed our company
    • חברה בשם @raisupcom ש @DigitalOcean החליטו מסיבה כלשהי שהם Malware, ומשם העניינים הסתבכו. מאוד.
    • העסק לגיטימי, המערכת החליטה שהם לא - גם אחרי שתוקן ידנית. לא ברור איך נגמר אבל מרמז בעדינות שעדיף אולי לשקול לבחור ספק ענן אחר.
  • ואם כבר ספקי ענן אהובים - Google outage disappointed face 
  • מאמר מעניין על Lessons learned scaling PostgreSQL database to 1.2bn records/month
    • מדבר על Hosted PostgreSQL ב - GCP וגם ב - AWS (ולא סתם - טוען שהביצועים ב - GCP טובים יותר)
    • מאמר מאוד טכני, בגדול עושה רושם שכל ספק ענן משקיע יותר ב - SQL Cloud שלו (Aurora, Spanner) ופחות ב - Open source אחרים, עשוי להוביל להתכנסות לספקים הגדולים, אבל בלי קשר - הרבה נתונים מעניינים.
  • קצת על React - יצא מאמר שמסביר מתי להשתמש ב useMemo לעומת useCallback
    • כולל דוגמאות אינטראקטיביות והסבר על ביצועים
    • שווה לקרוא למי שמפתח ב React עם hooks (ומי שלא - שיעבור קודם ואז יקרא)
    • למתנגדי Hooks - נראה שה  -Hype גדול אבל המחיר הוא קצת יותר מדי “קסמים”. מצד שני לא כולם מתנגדים (ע”ע המאמר על זה שקוד קריא זה עדיין ערך) . . .
  • ספרייה נחמדה בשם Argo
    • מתחרה ב - Airflow ו Luigi על Workflow management
    • מתוחזקת ע”י Intuit ו”נולדה לK8s” - משתמשת בכל ה  -Ecosystem שזה נחמד
    • מגיע ל flow managements מפלצתיים ב-YAML שזה פחות נחמד
    • יש עדיין קצת באגים של פרוייקט צעיר אבל נראה מאוד מבטיח (אולי עדיין לא ב - Production מלא, אבל מועמד)
    • יש הרבה דוגמאות למערכות מעל K8s - כמו למשל TensorFlow מעל K8s בשם KubeFlow, ונראה שנוצר מעיין Ecosystem של K8s אופטימליים עבור use case מסויים, ולא “סתם אוסף של CPU”.
    • יש מצב שאולי Kubernetes יתפוס יום אחד (יש להם עד 1 באפריל 2020).

דותן - 
  • כי מזמן לא עסקנו ב - K8s, אז draft.sh הוא פרויקט מעל K8s שמנסה ליצור מעיין Seamless deployments (בסגנון Heroku)
  • ועכשיו פרויקט על מנת להרוס אותו - chaoskube יוצר כאוס מעל K8s
    • כי אם כבר הצלחת לקנפג אותו ממש טוב, למה להוציא עיניים?
  • כתבה מעניינת על תיוג של Docker Images תחת הכותרת Tagging Docker images the right way
    • מאוד חשוב בהקשר של Registers ו - Dockers images ב- Scale גדול
  • קצת על Deep Learning - 
    • אולי repository קצת פחות מוכר עם הרבה מודלים שאפשר להשתמש בהם בשם (המפתיע ברמה של מחשב צה”לי) Deep Learning Models
    • ואחד קצת יותר מוכר ועם שם קצת יותר מושקע בשם ModelZoo - המון מודלים עם דירוג ופורמטים (Caffe, Keras, PyTorch וכו’) - למי שרוצה לנסות בלי ללמוד הרבה תיאוריה
  • גרסא חדשה של הקורס של fast.ai בשם Practical deep learning for coders
    • מוכוון למפתחים, זו כבר הגרסא השלישית
  • סכמת צבעים שערוריתית (!) עבור vscode בשם synthwave-vscode
    • צבעים של שנות השמונים (הרבה שחור, מה חשבתם?), ועם מעיין Glow סביב האותיות
    • דותן עובד עם vscode ונשאר עם זה . . . אם זה עובד גם עליכם, נסו את Ready Player One
    • ואם לא - הנה עוד סכמה בשם Horizon שהייתה ברשימה ונפלה מההקלטה
  • שני כלים שכתובים ב - Rust (למי שמחפש נקודת התחלה) - 
    • פרויקט נחמד בשם Just
      • עבור פרויקטים שבהם אין באמת כלי להרצת משימות (Rake למשל), עם פרמטרים, תלויות וכו’
    • כלי “effectiveness” נוסף בשם bliss - בוחר קבצי Git Ignore לפרויקט שלכם
      • מאפשר ליצור קובץ git Ignore אחוד של Rust ו - Python למשל, מאוד שימושי
  • יש Repository חדש בשם react-native-community ובו יש חלק ששייך רק ל - CLI
    • חוויית CLI יותר מהירה שקצת נעצרה מהשילוב, והכיוון הזה נראה מעודד
  • ועוד קצת פוקוס על Rust - 
    • יש Repo בשם elements-of-rust
      • חברה בשם Ferrous systems שעושה embedded ב - Rust ,ונותנים רשימה של Best Practices שעוזרים להישמר מטעויות למי שרק מתחיל
    • עוד Repo בשם insta - נכתב ע”י mitsuhiko שנחשב כוכב עולה בתחום
    • ועוד אחד אחרון - Not-yet-awesome Rust - מעיין קריצה לכל ה- Awesome* Repos, שמראה את כל מה שעדיין קצת פחות Awesome ואולי לא כדאי להכנס אליו, שווה לקרוא.
  • אייטם של Uncle Bob, והפעם - Types and Tests
    • טוב שזה עולה שוב, עם החזרה של ה- type systems, מהנה לקרוא עם ראייה, תובנות וזוויות חדשות.
    • יש דוגמאות עם lisp, לא להיבהל
  • מתוך כנס בשם The 2019 Python Language Summit, מאמר של Amber Brown שנחשבת דמות מובילה בכנס, ומדברת על האופי של Python שבו הכל כלול אבל קצת דולף - Batteries Included, But They're Leaking
  • כלי בשם FormsJS - מבטיח data flow analysis in the browser
    • ועוד -  Experimental dynamic data flow analysis tool for FE JS . .  לא פחות
    • תכל’ס - מוסיפים וזה מראה ב - Browser מאיפה ה Data הגיע לנקודה הספציפית.
    • דותן ניסה וזה לא ממש עבד . . . אולי יש רשימת דרישות לטכנולוגיות ספציפיות (מישהו עוד כותב ב CoffeeScript?! חוץ מ CodeMonkey?)
    •  נראה מעניין בכל מקרה, שווה לבדוק
  • מחוץ לכל מה שדיברנו היום - Trello Board בשם Good coding practices in unity
    • למי שמפתח משחקים זה repo ממש מגניב. אמנם הפורמט קצת מוזר (בדר”כ מגיע כ Git repo . . .) אבל די כייפי בסך הכל (מתאים לאווירה של משחקים).
  • ולסיום - רובוטים! repo בשם Automagica, פרויקט קוד פתוח ל Robotic Process Automation
    • נראה ש RPA זה עולם שצומח מהר, עם הרבה חברות וכלים (כאן יש דוגמא והסבר מעניין).
    • אין באמת רובוטים (חומרה) בסיפור, אלא כלי אוטומזציה רגילים, אוטומציה של דפדפן. אין רובוטים. בכלל. נראה יותר בכיוון של QTP, Selenium וכאלה . . . - בגדול: הטרנד חוזר, הכינו את החולצות המשובצות.

והחלק האמנותי (קצר הפעם) - 
  • צוקרברג מחייך! ועכשיו אתם יודעים למה . . . (הפרק הוקלט לפני ההכרזה, נראה שאפקט פרקי 1 באפריל עובד גם לאורך השנה)
  • שווה לשקול מיתוג מחודש - Robotic Smile Automation! אם כי RSA כבר די תפוס חזק.

כנס רברסים 2019 כבר קרה בזמן שאתם שומעים / קוראים את זה, אז נקווה שהיה כנס מוצלח (TL;DR - היה).

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