מה זה docker ולמה זה מגניב לאללה

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

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

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

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

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

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

גם אם דוקר בעצמו רץ בצורה מאוד יעילה על המכונה המארחת, לגבי התקשורת הסיפור יותר מורכב. מעבדי מחשבים אינם בנויים לבצע הרבה משימות קטנות, ז"א, היכולת שלהם לבצע פעולות תקשורות (הכוללות הרבה חבילות קטנות של נתונים המגיעים באופן מקבילי) הינה פחות טובה. כך שלמרות שביצועי ה- io של והחישוביות של דוקר הינם טובים, התקשורת שלהם עוברת דרך docker proxy שהוא רכיב תוכנה הלוקח יחסית הרבה משאבים ועלול להשפיע לרעה בעיקר על ה- latency, מהירות התגובה. במה שנוגע kubernetes הבעיות אף מורכבות יותר. מאחר שהמערכת כוללת גם הרבה רכיבי נוספים הדורשים גם הם משאבי מיחשוב.

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

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

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

זן ותכנון מסלולי רכיבה באופני הרים

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

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

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

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

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

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

 

כיצד למצוא עבודה בהייטק?

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

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

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

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

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

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

שאלת הטכנולוגיה היא קריטית. הטכנולוגיה הנבחרת, תקבע לעיתים קרובות את גבוהה השכר הממוצע בשוק. כי אין דין מפתח php למומחה c++, ואל יתהלל qa כמפתח.

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

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

כל המידע הזה מאוד חביב, אבל איך הוא עוזר למישהו למצוא עבודה?

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

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

ישנם מספר אתרים בהם תוכלו לבחון פרויקטם שכאלו:

http://freecode.com/

http://sourceforge.net/

https://github.com/

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

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

לא מצאתם? תתחילו אחת :) התבאסתם? לכו תבחרו אחרת.

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

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

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

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

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

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

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

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

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

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

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

נגישות