רברס עם פלטפורמה

299 Fogcast 25 - Package managers


Listen Later

אנחנו בפרק 299, ה 19 למרץ 2016. בפרק זה רן וליאור מדברים על Package Managers

1:16 - תקציר הפרק על AWS Lambda, ו Serverless architecture. רן בונה Web Crawler ולבסוף החליט שלא להשתמש בשירות של Lambda. הרושם חיובי, אבל חסר למערכת בגרות בשליטה על התהליך.

4:16 - בסביבות רבות כגון  Node.js, Rails יש חשיבות עליונה ל Package Managers. ב״עולם הישן״ של C++ , לא היו Package Managers ותחזוקת גרסאות של ספריות בתוך פרוייקט הייתה מטלה כבדה ומייגעת.

5:30 - יש להבדיל בין סוגי ה Package Managers השונים. למפתח מדובר בהתקנת ספריות (למשל ב Node.js, Ruby). לעומת זאת בעולם ה Infrastructure, מדובר בהתקנת Executables על הוסט מסויים למשל apt, yam.

6:15 - הגדרה - Package Manager מאפשר משיכת חבילה, לשלוט בגרסא הנמשכת, לעדכן את הגרסא, ולטעון את כל ה Dependencies -חבילות אחרות בהן החבילה המבוקשת תלויה (התלויות שלהן). כמשתמש הציפייה היא לבקש חבילה מסויימת ושכל ההליכים הנלווים יהיו מנוהלים אוטומטית.

7:53 - נושא ניהול החבילות הדינמיות תמיד היה בעייתי. בעבר DLL Hell היה אתגר נפוץ באקוסיסטם של מערכות הפעלה Windows. הקונספט שנועד לחסוך בשטח אחסון במחשב אפשר להוריד חבילה מסויימת ולהשתמש בה במגוון תוכנות במחשב. ה״גהינום של ה DLL״ החל כאשר תוכנות שונות השתמשו בגרסאות שונות של אותה חבילה, אך החבילה הייתה מותקנת אך ורק בגרסא אחת.


9:17 - הבעיה קיימת בעוד סביבות כמו Java או לינוקס גם כיום.

10:04 - בעיית ה Versioning היא יחסית פתירה כבעיה טכנית, ובסביבות שבהן נבנה Semantic Versioning מהיסוד של הטכנולוגיה, יש סדר יחסי. דוגמאות מוצלחות הן Node.js, ROR, אבל גם טכנולוגיות אחרות מתחילות להדביק את הפער.

12:38 - ה Package Manager מאפשר שליטה במה שמשתמשים בו בפיתוח ובפרודקשן.

12:47 ה Package Managers לפי סביבות הם :
Node.js - Npm
Ruby - Gem
Python - pip
Java - Maven

לכל שפה או טכנולוגיה כבר יש Package manager, אפילו ישנות כמו C.

13:21 - מספרי גירסאות מנוהלים ע״י Semantic Versioning - שלוש המספרים של גרסא. המספר הראשון הוא ה Major release - משתנה בד״כ אחת לכמה שנים. המספר השני מבטא שינויים ב API ויכול להגיע גם למאות. הנקודה האחרונה מבטאת שינויים שלא אמורים להשפיע על ה API, למשל תיקוני באגים.

15:44 - אין מעקב ריאלי או אכיפה אחרי שינויים הגרסאות - זה מערב פרוע. בפריימוורק אחד טוענים שיש אכיפה סביב הנושא והוא ELM (פריימוורק פרונט אנד לווב).

16:44 - מודל ה Semantic versioning איננו מושלם. יתכנו שינויים בתוצאות שמחזירות פונקציות מבלי לשנות את חתימתן, וכך לעקוף את מנגנון האכיפה.

17:24 - איך נמנעים מבעיית הגרסאות השונות בפרויקט אמיתי במצב בו ספריות ה Dependencies משתמשות באותה ספריה, אך בגרסאות שונות ולא תואמות? ב Java זה יכול להיות סיוט ואף ליצור בעיות רק בזמן ריצה. עם קצת מזל מוצאים גרסא שמתאימה לכל הדרישות אך זה ידני. החלופה השניה היא שימוש ב OSGI להכלה של חבילות, אך גם זה תהליך לא נעים.

19:57 - אלטרנטיבה לפתרון היא השמה של החבילות בצורה מקבילה כך שכל חבילה מבודדת את החבילות שבה היא תלויה, זה בזבזני באחסון וזכרון, אבל לא משמעותי ביחס ליתרון. נעשה שימוש בשיטה זו ב NPM מעל Node.js.

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

22:42 - הבעיות הללו היו פתירות ב C++ וגם Java, אבל דורשות מעקפים ״מלוכלכים״ של עריכת הקוד בחבילות הנדרשות והקוד שאותו צורכים.

24:38 - הבעיה קיימת גם בפייתון עם Hacks כמו טעינה דינמית או שינוי Path.

26:00 - באקוסיסטם של GO, יש חידוש בתחום ה Deployment - הקומפילציה נעשית ביחד עם ״משתני הסביבה״, ויוצרת Executable בודד כך שאפשר בקלות יחסית להעלות לשרת ללא תלויות.

27:31 - קול קורא: ישנה בעיה כיום של תקשורת ״דו-כיוונית״. המשתמש בחבילה צריך לדאוג לעדכן את החבילה בעצמו, ואילו אם כותב החבילה מתקן באג קריטי, אין לו יכולת ״להודיע״ למשתמשים בחבילה שעליהם לעדכן. דמיינו את העדכונים במערכות ההפעלה - היה טוב לו הייתה יכולת זו (לדחוף תיקונים ב Push) גם בעולם החבילות וה Package Managers.

29:21 - למאזיני פודקאסטים שאוהבים מדע בדיוני - ממליצים על  Escapepod.

הקובץ נמצא כאן, האזנה נעימה ותודה רבה לשי על התמלול
...more
View all episodesView all episodes
Download on the App Store

רברס עם פלטפורמהBy רברס עם פלטפורמה

  • 4.4
  • 4.4
  • 4.4
  • 4.4
  • 4.4

4.4

5 ratings


More shows like רברס עם פלטפורמה

View all
גיקונומי by ראם שרמן ודורון ניר

גיקונומי

92 Listeners

עושים היסטוריה עם רן לוי Osim Historia With Ran Levi by רשת עושים היסטוריה

עושים היסטוריה עם רן לוי Osim Historia With Ran Levi

154 Listeners

חיות כיס Hayot Kiss by כאן | Kan

חיות כיס Hayot Kiss

141 Listeners

שיר אחד One Song by כאן | Kan

שיר אחד One Song

170 Listeners

מפתחים חסרי תרבות by מפתחים חסרי תרבות

מפתחים חסרי תרבות

10 Listeners

מנועי הכסף by כלכליסט

מנועי הכסף

39 Listeners

עושים תוכנה Osim Tochna by רשת עושים היסטוריה

עושים תוכנה Osim Tochna

8 Listeners

Startup for Startup by Powered by monday.com

Startup for Startup

21 Listeners

בזמן שעבדתם by mako מאקו

בזמן שעבדתם

103 Listeners

אחד ביום by N12

אחד ביום

313 Listeners

מפלגת המחשבות by Beit Avi Chai

מפלגת המחשבות

95 Listeners

השקעות לעצלנים - פודקאסט על כסף, השקעות והחיים עצמם by תמיר מנדובסקי

השקעות לעצלנים - פודקאסט על כסף, השקעות והחיים עצמם

25 Listeners

מפתחים מחוץ לקופסה by שחר פולק ודותן טליתמן

מפתחים מחוץ לקופסה

1 Listeners

LangTalks by Lee Twito, Gal Peretz

LangTalks

0 Listeners

הקרנף - עם יואב רבינוביץ׳ by בית הפודיום

הקרנף - עם יואב רבינוביץ׳

25 Listeners