הפלטפורמה: הזדהות, מודלים, תצפית וכלי קוד
נכתב בידי עוזר AI שעובד עם יוסף, מתוך תיעוד העבודה במרכז, כרקע לפגישה ב־20.10.
״הפלטפורמה״, בעמוד הזה, היא כל מה שהמוצרים של המרכז יושבים עליו ואף אחד מהם לא מחזיק לבד: הקלאסטרים והסביבות, האחסון, ההזדהות, השער למודלים, הטרייסים והדשבורדים, וסוכני הקוד שהמפתחים עובדים איתם. המשתמשים הישירים שלה הם המפתחים, אנשי הדאטה סיינס ואנשי המוצר של המרכז. דרך ההזדהות ודרך שער המודלים היא נוגעת גם בכל רופא שפותח את SmartER, את אליס או מכתב שנוצר ב־AI Flows.
הבעלות מפוצלת, וכדאי לדעת אותה מראש. את התשתית עצמה, הקלאסטרים, ArgoCD, GitLab, האחסון והרשת, מחזיק צוות ה־DevOps, מיולי 2026 בראשותו של קווין צימרמן. את Keycloak ואת LiteLLM בנה ומחזיק סלע ענבר. גיא דולינסקי הוא הסמכות הארכיטקטונית לאורך כל התקופה: הוא הוביל את הגירת התשתית של 2025, קבע את כללי השחרור והורה על המעבר ל־LiteLLM. יוסף בן יהודה כתב כמה שכבות בתוך זה: את KPT ואת ה־API של PUMA, חלקים מ־arc_login יחד עם גיא, את קו התצפית סביב arc-analytics, ואת הכנסת סוכני הקוד לרשת של שיבא.
התשתית: קלאסטרים, סביבות ואחסון
הבסיס קדם לרוב הצוות הנוכחי. בין 16.4 ל־16.7.2023 הוקמו בתוך הרשת של שיבא שלושה קלאסטרים של Kubernetes, Origin, Beta ו־Production, מסיבה שלא השתנתה מאז: בית חולים שלא מוציא מידע של מטופלים החוצה צריך סביבת אפליקציות ו־GPU משלו. על הבטא רצו אז Medtalk, JupyterHub ו־PUMA, ועל הפרוד Medtalk ו־Vicuna, ומ־19.11.2023 גם GPT-4. דניאל בראנץ רשום כבעלים של הקלאסטרים ושל כל תיקון בהם מאז ההקמה. בפברואר 2024 נפתחו הלוחות שמחזיקים את התשתית, ARC Devops Infra ו־ARC AppTime, ובמרץ 2024 לוח תשתיות לדאטה סיינס, משום שלאנשי הדאטה לא הייתה סביבה משותפת בכלל.
עד ספטמבר 2024 הפעיל את כל זה איש DevOps אחד, שהיה באתר פעם בשבוע. ב־9.9.2024 גל גושן, שניהל אז את הצוות, הודיע שמצטרף איש DevOps מנוסה יותר. באותו חודש הגיע יוסף, וישב עם גיא ועם איש ה־DevOps החדש כדי לתכנן איך מפתח בכלל עובד בתוך שיבא. לפי מה שגיא כתב ב־23.9.2024, נדרשו כעשרים ניסיונות עד שקמה סביבה אחת שעובדת. באותה תקופה עוד לא היה Artifactory, ולא היה מקור מסודר לחבילות Python. ב־10.9.2024 מאור שגיא ניסח את מפת ההסלמה שמחזיקה עד היום: החסימות שמונעות מכלים חיצוניים לעבוד בפנים הן החלטות של אבטחת המידע של בית החולים, ולא של DevOps.
שנת 2025 הייתה שנת הבנייה מחדש. ב־19.2.2025 יאיר גינת קיבל את כל משטח ה־DevOps: ה־CI, הקלאסטרים, ArgoCD, GitLab ו־Harbor. ב־30.3.2025 נכנס לתוקף תהליך ה־CI/CD הראשון, בשיחה אחת באותו אחר צהריים: יאיר קבע שהכול נדחף קודם לבטא, יערה כץ קבעה שאסור לדחוף ישירות למיין, וגיא הציע את הפתרון שאומץ, מעבר מבטא למיין דרך Pull Request. בין 23.4 ל־7.5.2025 באה סדרת תקלות תשתית שקבעה את הטון של השנה: GitLab ו־Argo למטה, קלאסטר הבטא לא זמין, ושרת ה־DGX שנתקע בשלב העלייה. מ־30.4.2025 דניאל אחראי על GitLab ועל כל שדרוג שלו.
ביולי 2025 הגיעה הגירת Origin, האירוע המכונן של התשתית. ב־13.7 הוכנס בלי תיאום חוק חומת אש בין שרתים, שחסם שירותים קריטיים בבטא ובפרוד, וזה סיבך את ההגירה. גיא קבע את הסדר ב־27.7, והפרוד עבר ב־31.7. בהודעת הסיכום של יאיר: מעבר משרת בודד לשלושה שרתים ב־High Availability, Kubernetes מגרסה 1.23 ל־1.32.5, ושדרוג של Argo ושל Harbor. יאיר ייחס את ההגירה לגיא בשמו, שעבד עליה לאורך כל השבוע. החלק של יוסף היה משימה ידנית שהוטלה עליו: העברה של תשעים מאגרים, אחד אחד, מבטא לפרוד. שבוע אחר כך נמצאה אפליקציה אחת שלא עלתה כלל, כי קובץ ה־Argo שלה לא הופנה ל־GitLab החדש.
בסוף אוגוסט 2025 נסגר נתיב ה־USB להכנסת קבצים, ומודלים ומשקולות עוברים מאז דרך כספת מאובטחת. ב־7.9 נכנסה מערכת מורשית להעברת קבצים. ב־4.9 עבר הבנייה מ־Kaniko ל־BuildKit עם cache פנימי, ובאותו יום אביעד בוסקילה קבע את כללי ה־git שהצוות עובד לפיהם: ענף לכל משימה, מרוענן, ונמחק אחרי המיזוג. ב־28.10.2025 נפתח GitHub של המרכז בתוך שיבא, עם כניסה אחידה.
סוף 2025 שינה את אופן העבודה של כל מפתח. ב־13.11 שדרוג של Argo מחק את כל האפליקציות, ודניאל החזיר הכול תוך כשעתיים. ב־17.11 אלון אגמון אמר שהמרכז נמצא במצב שבו היעדרות של אדם אחד מכניסה אותו לצרות, וזה הוביל לשני מהלכים: דחיפה לתיעוד, וסגירת הגישה הישירה לקלאסטרים. ב־23.11 הודיע יאיר שהגישה ל־Rancher נחסמת לכל מי שאינו ב־DevOps, אחרי כמה מקרים של פגיעה בקלאסטרים בגלל עבודה לא זהירה, וב־27.11 זה נאכף. מאז ArgoCD הוא משטח התפעול היחיד, העבודה עברה ל־GitOps עם מאגר קונפיגורציות נפרד ממאגרי הקוד, ו־DevOps יוצרים את האפליקציות במקום המפתחים. ב־19.12 יערה קבעה קוד ריוויו על כל דחיפה, ב־24.12 יאיר הגן על ענף הבטא במאגרים המרכזיים, וב־31.12 גיא ניסח את הכלל שעדיין מחייב: אין cherry-pick בין בטא לפרוד, כדי שקוד לא בדוק לא יגיע לפרוד.
היום, בקצרה, כך זה עובד. כל מאגר נבנה ב־GitLab ונפרס דרך Helm charts ו־ArgoCD. יש שלוש סביבות. סביבת show קמה אוטומטית לכל Merge Request, כולל מסד נתונים חדש, ומאוגוסט 2026 סקריפט יומי סוגר סביבות שפתוחות יותר מיומיים. אחריה באות בטא ופרוד. ערכי הבטא לא מועתקים לפרוד, כי הקבצים שונים בכוונה. מ־11.8.2026 גם פריסה לפרוד היא canary: התנועה עולה בשלבים, מעשרים אחוז עד מאה, ובשלב הראשון ניתוח אוטומטי של הלוגים מחליט אם להמשיך או לעצור. לצד זה יש קלאסטרי GPU לאימון ולהסקה, צומת B200 שאנשי הדאטה סיינס מבקשים בו משאבים, ושיתוף GPU דרך עמית קפלן. חלוקת העבודה ב־DevOps היום: דניאל אחראי על GitLab, Grafana, Loki ומפעיל ה־Postgres; יאיר על הקלאסטרים, ה־CI, ArgoCD, סביבות ה־show, ה־canary והאחסון; עמית על ה־GPU ועל תשתית המחקר; וקווין מוביל את הצוות.
בשכבת האחסון יש שלושה רכיבים עיקריים. הראשון הוא MongoDB, שהמוצרים עוברים בהדרגה לגרסה המנוהלת שלו מעל מפעיל Percona, עם שארדים; רוזטה בטא עברה ב־17.9.2026. השני הוא Valkey, שמשמש cache, וברוזטה מחזיק מאוגוסט 2026 את הנתונים המבניים של קמיליון, יחידות וכותרות, שמתרעננים פעם ביום. השלישי הוא RustFS, אחסון אובייקטים תואם S3 שיאיר הרים במרץ 2026, ועליו יושבים בין השאר מאגר המטופלים של אליס ותוצאות השאילתות השמורות של רוזטה. כל שלושתם היו מעורבים בתקלות השנה: שארד של Mongo שאיבד רפליקות והפיל את SmartER בבוקר 16.8; דליפת חיבורים ו־timeouts ב־Valkey באוגוסט; ונפח לוגים שנגמר בספטמבר. בבדיקה שנעשתה ב־17.9 על הקונפיגורציה החדשה של רוזטה נמצאו כמה פריטים חסרים, כמו anti-affinity ל־RustFS והגדלה אוטומטית של נפחי ה־Mongo, והם עברו לתור.
הזדהות: מ־SAML ל־Keycloak ול־arc_login
הבעיה שההזדהות פותרת פשוטה לתיאור: חשבון אחד, שפעיל בכמה אפליקציות, ויודע מי המשתמש באמת. רופא או אחות, איזו מחלקה, ולאילו מטופלים מותר לו לגשת לפי קמיליון. הדרישה הופיעה כבר באפיון ניהול משתמשים ביולי 2024, ובינואר 2025 ״Login״ היה אחת הקבוצות המוצהרות של צוות הפול־סטאק.
עד 2026 היא מומשה בשירות login מבוסס SAML, ודרכו עברו רוב המוצרים. שי גנכיל כתב אותו והחזיק אותו ב־2025, וב־30.3.2025 תיקן בו את טיפול ה־redirect. ב־19.6.2025 גיא קבע שה־login איטי מדי ומפיל חיבורים, ומשם התחיל מהלך שיפור של כחודש וחצי. ב־1.7 גיא ויוסף הוסיפו לולאת ניסיון חוזר, כך שספרייה שלא עונה לא מפילה את השירות. ב־15.7 גיא עשה את עבודת ה־LDAPS, ב־21–22.7 קבע ש־Mongo של ה־login חייב להיות משורד, וב־23.7 איתר באג באימות מול Mongo. ב־30.7 שי הכריז שה־login ״נוצח״, וב־1.8.2025 גיא עשה refactor שקיצר את זמני הכניסה לאפליקציות פי שלושים. ב־18.9.2025 סלע קיבל את ה־login, עם חובת קוד ריוויו שנשארה בתוקף. בסתיו הוא בנה לו מסך כניסה חדש, ובתחילת נובמבר הריץ את הגירת ה־SAML אפליקציה אחר אפליקציה.
ב־31.3.2026 סלע מצא את Keycloak, מימוש קוד פתוח של אותו רעיון, והציע לאמץ אותו. ב־16.4 עלו Open WebUI בבטא וקבוצות ותפקידים מהספרייה של בית החולים, וב־19.4 סלע בנה בתוך Keycloak מסך כניסה שהצוות יכול לערוך. ב־27.4 אלון החליט על השחרור של CWC מעל החיבור החדש, ב־14.5 ענף של TMR רץ על arc_login מחובר ל־Keycloak, וב־19.5 גיא קבע שהמעבר ל־Keycloak הוא הדבר החשוב ביותר.
התוצאה היא שני רכיבים, בכוונה עם שני בעלים. הראשון הוא Keycloak עצמו, ספק הזהויות. הוא רץ מעל מפעיל משלו, ב־High Availability, עם Postgres. הוא שואב משתמשים מהספרייה של בית החולים וממפה קבוצות ותפקידים ל־client scopes, ולכל אפליקציה יש client משלה. השני הוא arc_login, החבילה שכל אפליקציה מטמיעה. היא עושה את ה־redirect של OIDC, מחזיקה session, מרעננת את פרטי הגישה וחושפת לאפליקציה את הקבוצות וההרשאות. בצד השרת, כל backend משתמש ב־arc_login כדי לקבל אישור גישה בשם ה־client שלו. ב־9.6.2026 יוסף ניסח את הגבול בין השניים: מה ששייך לקוד של arc_login לא שייך ל־Keycloak, ולהפך.
על arc_login עבדו גיא ויוסף יחד. ב־30.5.2026 הם עשו בו refactor שמחק 98 אחוז מהקוד. ב־4.6 גרסה שלו עבדה ב־TMR בלי ה־SAML הישן. ב־8.6 תוקנו חמש תקלות בנתיב ההתחברות, ואחת מהן הייתה redirect רקורסיבי שבו הכתובת גדלה בכל ניסיון עד ש־Keycloak דחה אותה. ב־9.6 רץ הסקריפט שמיפה את הקבוצות מקמיליון ל־Keycloak עבור כחמישים אלף משתמשים. ב־28.6 התברר שכל קבוצה עולה בפרוד כמאה מילישניות, ונדרשה מחיקה של עשרות אלפי קבוצות. ב־1.7 נוצר realm ייעודי, וכל client חיצוני עבר אליו. ב־6.7 נוצרו service accounts לכל הצוות, ורוזטה עברה ל־arc_login.
מעבר אחד מהקיץ מלמד משהו על המערכת. ה־refactor החליף את צורת ההזדהות הישנה בפורמט client נפרד, והשינוי שבר במהלך הקיץ שלושה מוצרים, אחד אחרי השני. ב־13.7, בפריסה של arc_login לפרוד, ה־client נוצר רק ב־realm החדש, וסלע השלים את החסר באותו יום. להערכת הסוכן, הלקח הטכני הוא שחבילה שכל המוצרים מטמיעים צריכה לתמוך בשני הפורמטים בתקופת מעבר. מאז שכבת Keycloak של סלע נמצאת בכל המוצרים, וב־12.8.2026 Keycloak בפרוד עבר כולו ל־realm הייעודי ומנוהל דרך קובץ provisioning.
היום כולם על Keycloak. SAML ירד מ־TMR, מאליס ומ־CWC, ולרופאים יש כניסה אחת, עם ״זכור אותי״ שעובד. אבל ההזדהות היא גם נקודת כשל יחידה של המרכז: נפילה של שרת login הפילה את אליס בפרוד ב־20.8. העמדה שיוסף הציג אחרי התקלה היא ש־arc_login נעזר ב־Mongo רק כדי לאשר רענון של הגישה, ולכן הוא צריך להתדרדר בעדינות ולא להפיל את הפרוד. בעיה נוספת שחוזרת היא גודל ה־cookie: מי שיש לו הרבה מאוד הרשאות בקמיליון, למשל ראש מחלקה, מקבל cookie שהדפדפן לא מסכים לשאת. ב־29.6 זה התבטא במסך ריק אצל ראש מחלקה, ב־5.10 תוקן בקיצוץ כפתרון זמני, והוחלט שהשכתוב המלא הוא עבודת תשתית. פתוחה גם בעיית CORS מרוזטה ל־Keycloak מאז סוף אוגוסט, וחבילת frontend אחידה לחיבור ל־Keycloak היא עדיין יעד שסלע הציב, לא עובדה.
שער המודלים: מ־PUMA ל־LiteLLM
השער של המרכז נולד כפריסה ולא כמוצר. ב־monday מופיעה משימת ״deploy PUMA״ על קלאסטר הבטא, מאפריל עד יוני 2023, שנסגרה ב־16.7.2023. השם הוא שריד: PUMA התחיל כ־PubMed Assistant, כלי לחיפוש ספרות, ושמר על השם כשהפך לשער של הקמפוס. המטרה הייתה פשוטה: לתת לצוות לעבוד עם מודלים גדולים בלי שטקסט של מטופל יוצא מהרשת. בהתחלה רצו בו מודלים מקומיים, אחר כך GPT-4 דרך פרוקסי, ואחר כך MedPaLM דרך מנהרה לגוגל. את השלד בנו דניאל וגיא: חיבור GPT-4 ב־19.11.2023, פרויקט ושירות ל־MedPaLM בנובמבר 2023 ובינואר 2024, ו־SSO ו־login שנסגרו ב־29.2.2024.
בספטמבר 2024 PUMA עדיין לא היה פרוס בקמפוס, ובתוך הצוות הוא נחשב הדרך היחידה למודל שפה בתוך שיבא. ב־2025 הוא הפך למוצר. לוח צוות הפול־סטאק נפתח ב־6.1.2025 עם ״Puma version 2.0״ כמשימה הראשונה. שי לקח את הממשק, מנגנון ה־health checks, ההתראות, ומסך ניהול המודלים שנבנה מחדש ב־13.7.2025. במרץ 2025 עבר PUMA סקירת אבטחה של כעשרים וחמישה פריטים, ביניהם SIEM משלושה עננים, רוטציה של מפתחות לכל ענן, SAST, MFA ומדיניות רשת; זה הרגע שבו הוא הפך למשהו שבית החולים מבקר. ב־9.4.2025 יצא דיוור לכל הקמפוס, לפי החלטה של גל כמנהל המוצר, ובאותו אחר צהריים הגיעו חמישים משתמשים. ב־7.7.2025 גל קבע מחדש את מכסות השימוש. בניתוח שימוש של 91 ימים שיוסף הריץ בנובמבר 2025 היו כ־1,500 משתמשים פעילים בחודש וכ־47 אלף שיחות.
השער הזה לא היה מוצר של אדם אחד, וכל חלק בו היה של מישהו אחר: גל ניהל את המוצר, את הקמפוס ואת ההדרכות; גיא היה הסמכות הטכנית ושער השחרור; יערה הייתה הבעלים מול המשתמשים וקבעה את מדיניות השחרורים; יאיר החזיק את הרשת, הפודים והסודות; עמית את מודל העלויות ואת המודלים המוגשים; ומקיץ 2025 סלע הפעיל אותו ביום־יום, כתב לו בדיקות והדריך את משתמשי ה־API.
יוסף כתב בתוכו שני דברים. הראשון הוא KPT, RAG על מסמכים בתוך הצ׳אט, עם הפניות למקור ורינדור טבלאות. הבקשה הגיעה מגל ב־17.12.2024, גיא נתן לו את השם, וב־19.1.2025 הוא עלה לבטא. ב־20.1.2025 נפתח לו פריט בלוח, הפריט הראשון בשמו של יוסף בלוחות המרכז. KPT נגיש כמודל ברשימת המודלים של PUMA, שפונה לקונטיינר מחוץ לרשת דרך המנהרה. השני, והחשוב יותר לפלטפורמה, הוא ה־API. יוסף הכריז על השכתוב ב־13.5.2025, העלה אותו לבטא ב־27.6 ולפרוד ב־24.8.2025. הוא כתב סכמה אחת תואמת OpenAI לכל משפחות המודלים: tool calls, structured output, תמונות ו־PDF, ספירת שימוש ומחירים, ו־endpoint שמפרט את היכולות של כל מודל, וספריית לקוח מעליו. מ־6.8.2025 הלקוח הסטנדרטי של OpenAI עבד מול PUMA בשינוי כתובת הבסיס בלבד, וב־8.11.2025 PUMA כיסה את כל היכולות של ה־Responses API. המשמעות המעשית: כל כלי מבחוץ, כולל סוכני קוד, יכול לעבוד בתוך שיבא. ב־27.8.2025 סלע העביר את ההדרכה החיצונית הראשונה על ה־API.
הדרך מ־PUMA ל־LiteLLM התחילה עוד בתוך PUMA. LiteLLM נכנס למרכז קודם כספרייה: מ־3.6.2025 מנהל הקריאות של אפליקציית הסיכום ידע להשתמש בו מחוץ לשיבא, ומ־24.6.2025 המחירים לכל מודל ב־PUMA נלקחו מהטבלאות של LiteLLM במקום לתחזק אותם ביד. ב־7.8.2025, שבועיים אחרי שה־API עלה, יוסף כתב לגיא שספריית LiteLLM כבר עושה את כל שכבת ההתאמה בין הספקים ומתעדכנת לבד, ולכן השכבה שנכתבה ב־PUMA מיותרת. גיא השיב באותה שעה שהחלק ש־LiteLLM לא עושה הוא החיוב, והציע להפריד בין אתר ה־PUMA לבין ה־backend שנותן שירותי מודלים בקמפוס. זו בדיוק הארכיטקטורה שהמרכז הגיע אליה כעבור חמישה חודשים.
ב־2026 LiteLLM נכנס כמערכת. ב־6.1.2026 סלע העביר את שתי הסביבות של PUMA לפורמט מפתחות חדש. ב־19.1 הוא מצא דרך להשתמש ב־LiteLLM כשער, שמגיע גם ל־Gemini ולא רק ל־Azure. ב־28.1, אחרי יום של דיון על latency בכל המרכז, שבו מדידה של יוסף מיקמה את עיכוב ה־streaming בתוך השער של PUMA, גיא סגר את הדיון והורה להתמקד בהרמת LiteLLM. ב־29.1 הוא כבר עמד בבטא, Azure חובר ב־3.2 ו־Vertex ב־8.2. ב־5.2 אלון אישר והגדיר אותו כתשתית יסודית שיודעת לעבור בין מודלים, וב־11.2 Chat-Chart היה האפליקציה הראשונה עליו. ב־12.3 גיא הטיל על סלע את כל הערימה של Langflow, Open WebUI והסוכנים, וב־17.3 נכתבה בקבוצת המפתחים הכוונה: שרשרת אחת של LiteLLM, Langflow ו־Open WebUI שתחליף את PUMA. ב־25.3 אלון הפיץ התרעה על פגיעות שרשרת אספקה ב־LiteLLM ודיווח ששירותי הפרוד נבדקו ולא נחשפו. ב־26.3 גיא סיכם שמה שנדרש מה־backend של PUMA היה בעיקר חיוב, וב־16.4 אמר שהוא יוצא משימוש. באותו יום יוסף ביקש לשמור את נתוני השיחות לצורכי מחקר.
ההגירה עצמה הסתיימה בקיץ. ב־6–7.5.2026 סלע העלה את LiteLLM לפרוד והנפיק מפתחות חדשים. ב־13.5 רחל ויטיס אמרה שבמעבר המוצרים יוכלו סוף סוף לשלוט ברמת ה־reasoning ובטמפרטורה. ב־17.5 גיא העלה הסתייגות מ־Redis מתחת ל־LiteLLM, וסלע הציג את הדפוס שנבחר: שני פודים של Redis שמאגדים כתיבות ומעבירים אותן ל־Postgres פעם בדקה. ב־26.5 אלון ביקש לקדם את המעבר בכל הגזרות כדי לקבל ראות טובה יותר על חלוקת העלויות. ב־14.6 אילן בואניש העביר את AI-Suite לגרסה שמבוססת על LiteLLM בכל השירותים, וזה הרגע שבו המוצרים הפסיקו לדבר עם PUMA. ב־15.6 הוחלט שאפליקציות בטא פונות ל־LiteLLM בטא, ופרוד לפרוד. ב־17.6 הושלמה ההגירה בפרוד: יערה הובילה אותה כדי שאפשר יהיה לדחוף את SmartER, סלע ביצע, כל המשתמשים, המודלים וקבוצות ההרשאות הועברו, ו־Open WebUI חובר מחדש. ב־21.6 רחל שמה לב שההנחות מהספקים לא נכנסו למודל המחירים של ההערכה, וב־22.6 יאיר הריץ על LiteLLM בדיקת עומס. ב־4.8.2026 יצאה ההודעה שמיום חמישי, 6.8, PUMA מפסיק להעביר קריאות API; מסכם הקרדיולוגיה, האחרון שנשאר עליו, הועבר. את מסד השיחות של PUMA, שעומד על כמה טרה־בייט, ביקשו יוסף ורחל לשמור לצורך מחקר עתידי, והוא נשמר בצד.
היום LiteLLM מחזיק את המפתחות, התקציבים, קטלוג המודלים והתמחור לכל אפליקציה ולכל אדם, ומעליו חיבור ל־Langfuse ול־OpenTelemetry. מדיניות התקציבים נקבעה ב־8.7.2026: לכל משתמש תקציב אישי; ראשי צוותים יכולים ליצור מפתחות תחת תקציב קבוצתי, שמיועד לפרויקטים ולהרצות ייעודיות ולא לעבודה שוטפת; הגדלות מבקשים דרך התור של DevOps, והכלל הוא מפתח אישי ולא קבוצתי. מאוגוסט אלון מפריד עלויות בין משימות על ידי מודלים נפרדים בקטלוג, ומספטמבר צריכה קבוצתית נקראת מלשונית השימוש של LiteLLM. מעל זה יש קו ספקים שלא שייך לפלטפורמה: בקשר עם הספקים, בהסכמים ובמעבר ממודלים שיוצאים מתמיכה מעורב אלון, ואיזה מודל כל מוצר מריץ מחליטות הדאטה סיינס על בסיס הערכה. במשך תקופה ארוכה יוסף הכניס מודלים חדשים לקטלוג ברגע שהענן פתח אותם, עם בדיקה מתוזמנת שמזהה מודל חדש זמין; היום יאיר מודיע על מודלים חדשים ב־LiteLLM.
לצד LiteLLM יש Open WebUI, ממשק הצ׳אט של הצוות, שסלע מחזיק, עם כניסה דרך Keycloak ותקציבים אישיים. במרץ 2026 הוחלט שהוא יישאר ממשק צ׳אט ולא ישמש backend למוצרים. בעיה אחת עוד לא נסגרה: בשבועות האחרונים הגישה למודלים נכשלת לסירוגין, וההסברים שהועלו, תקציב, מכסה או רשת, לא מסבירים את זה שהכשלים באים והולכים. להערכת הסוכן, זה מקרה מבחן טוב לקו התצפית שבסעיף הבא.
תצפית: טרייסים, לוגים ודשבורדים
התשתית לתצפית התחילה ב־DevOps. בפברואר 2024 לוח ARC AppTime כבר כלל מציג לוגים ו־grafana-oncall, וב־27.11.2025 דניאל שדרג את Loki בכל הקלאסטרים. אבל באוגוסט 2025 התברר, באמצע תקלת פרוד, שהמוצרים כמעט לא שולחים לוגים שימושיים ל־Grafana. ההחלטה איך לתקן הייתה של גיא: ב־5.1.2026 הוא בחר לאמץ OpenTelemetry במקום לבנות פתרון פנימי, ובסוף החודש ביקש להפוך את שורות התזמון המאולתרות ל־spans שנשלחים ל־Tempo.
את הבנייה עשה יוסף, בשלבים. בתחילת פברואר 2026 נבנה אב־טיפוס מקומי של Tempo, Alloy ו־Grafana. ב־20.2 arc-analytics, החבילה המשותפת, חוברה ל־OpenTelemetry. ב־21.2 הודגם טרייס מקצה לקצה, מה־linker דרך TMR ועד arc-analytics, וב־23–24.2 arc-analytics נכתבה מחדש סביב spanify.
כך זה עובד היום. spanify הוא decorator בתוך arc-analytics, שנותן שם ל־span ומצמיד לו מאפיינים מתוך הפרמטרים של הקריאה, כולל שם השירות, הפוד וערך ההחזרה. מיוני 2026 הוא גם רושם מטריקות, מאחורי flag. כל שורת לוג נושאת trace_id ו־span_id. ה־spans הולכים ל־Tempo, הלוגים ל־Loki, הפרופילים ל־Pyroscope, המטריקות ל־Prometheus, והכול נראה ב־Grafana. ביולי חוברו Loki ו־Tempo, כך שלחיצה על שורת לוג פותחת את ה־span שבו היא קרתה, ומתוך המוצר אפשר ללחוץ ממכתב או מריצה ישר לטרייס שלהם. arc-analytics משותפת לכל המרכז: TMR, אליס, רוזטה, psync ו־arc_login משתמשים בה. גיא קבע את כללי השימוש: אפליקציה שמוסיפה את החבילה לא מציגה שגיאות כברירת מחדל, פרופילים נשלחים ל־Pyroscope של הקלאסטר, ודשבורדים עורכים במאגר. מתחת לכל זה הסטאק של DevOps: באוגוסט יאיר העלה את כל מופעי Loki מחדש בפרוד ובאינטגרציה, מחוברים ל־Tempo ול־Pyroscope, ובספטמבר קווין שדרג את Grafana.
הטרייס המלא הראשון, באפריל 2026, הראה מה התצפית שווה. באליס נמדדה שנייה וחצי לאישור הזדהות בכל בקשה, ארבעים ושבע שניות עד שהזרם הראשון הגיע לרופא, וכמעט שלושים שניות לכלי האיטי ביותר. אחרי זה נבנה דשבורד תפעולי מעל הטרייסים, שבו מחפשים מטופל והולכים אחורה וקדימה בשגיאות, ומזהה המשתמש נוסף לטרייסים, כדי שאפשר יהיה לעקוב אחרי אדם אחד לאורך המערכת. בסוף יוני 2026 יוסף הציע ליישר את התצפית לכל צוות הפיתוח, עם ארבע דרישות: לוגים שימושיים ב־Loki, קישור בין טרייס, span, לוג ופרופיל, מטריקות דרך arc-analytics, ושלושה־ארבעה דשבורדים קבועים לכל מוצר. יערה אישרה, בתנאי שזה ייעשה בתיאום עם הצוותים.
לצד זה, בתחום נפרד: PostHog לאנליטיקה של מוצר. גיא בחר בו כי הוא תומך בהתקנה מקומית מנותקת, יאיר הרים אותו, ורפאל אשורוב ועומר בנו בו את הדשבורדים. את ההערכה של המוצרים מחזיקה רחל.
בתצפית נשארו כמה דברים פתוחים. היו תקופות שבהן ה־spans הסתירו שגיאות במקום להראות אותן. טרייסים נשמרים 24 שעות, בזמן שהממשק מציג טווח של חודש. הלחיצה מכלי המפתחים לטרייס נכשלה תקופה ארוכה בגלל הגדרה חסרה בקונפיגורציות. ובמשך כמה חודשים היה דיון פתוח אם הבעיה היא היעדר תצפית אחידה, או לוגים שלא מפרטים מספיק. להערכת הסוכן, בפועל אלה שני הדברים יחד.
סוכני קוד, סקילים ו־AI-Docs
מפתח בתוך רשת סגורה לא יכול להשתמש בעוזרי הקוד שכולם משתמשים בהם בחוץ, והפתרונות המסחריים של הספקים לא התאימו לבעיה. ביוני 2025 יוסף התחיל לחקור את זה, ובתחילת יולי מיפה את הזרימה של עוזר קוד פתוח כדי להבין איפה המודל מתחבר. ב־14.7.2025 הוכרזה תוכנית: יאיר לקח את חיבור העוזר של PyCharm, גיא הפעיל אותו, ויוסף לקח את הכיוון של VS Code. ב־1.8.2025 Cline עבד בתוך שיבא בפעם הראשונה, דרך ה־API התואם של PUMA, על בסיס העבודה של אלון על הפרוקסי ועל התעודות. ב־8.10 הוא אומץ כמקבילה פנימית ל־Cursor. ב־28.9.2025 יוסף מצא את Codex CLI, ב־20.10 נוספה לו תמיכה ב־endpoint פנימי, עמית אישר להכניס אותו, וב־6.11.2025 יוסף הודיע בקבוצת המפתחים שהוא זמין בשיבא.
ב־2026 זה התרחב. ב־14.1 יוסף התחיל לכתוב סקילים. סקיל הוא קובץ markdown עם הוראות, ולפעמים סקריפט, שנותן לסוכן גישה לידע מסוים: הרצה ב־PyCharm, עבודה עם מאגר הקונפיגורציות, בדיקת פריסה, ArgoCD, Grafana, Tempo, GitLab, הרצת SQL וה־GraphQL של רוזטה. ב־17.2 הוא פרסם ב־AI-Docs מדריך מפורט להתקנה ולשימוש בקודקס, וסלע הנגיש אותו דרך סוכן התמיכה; עמית הפיץ מדריך משלו באפריל, ויותם הדרי הוסיף דוגמאות ב־27.4. ב־12.3 נקבע עיקרון שעדיין מחזיק: משתפים סקילים, אבל לא את קובץ ההוראות הכללי של הסוכן, כי לכל אחד העדפות אחרות. באותו חודש רחל קבעה את המקום של AI-Docs: monday מחזיק את השכבה הארגונית, ו־AI-Docs את השכבה הטכנית. ב־17.3 אביעד תיאר את סוכני הקוד בחדר הדאטה סיינס כמכפיל כוח. ב־11.5 זה כבר היה הסטנדרט: לכתוב עם סוכן קוד הוא מה שמצופה ממי שמצטרף. ב־3.7 נפתח מאגר סקילים נפרד על שרת המקור של שיבא.
מדיניות הכלים שייכת לעמית. ב־8.7.2026 הוא הגביל, בכל המרכז, את השימוש בסוכן קוד אחר שאלון הרים בתחילת החודש, והחזיר את כולם לקודקס; ההגבלה עדיין בתוקף. כבר ב־21.5 גיא קבע שסוכן לא מדבג את עצמו בפרוד, אבל אפשר לתת לו טיקט ולהריץ אותו על השגיאה. ב־19.8 נקבעו שני גבולות נוספים: להשתמש בסוכנים בזהירות מול מערכות ארגוניות, ולא לדחוף ל־values שינויים שהסוכן ממציא. מ־24.8 התקציב לסוכנים הוא מרכזי ומוגדל לפי בקשה בתור של DevOps, ומאמצע ספטמבר הדרך הרגילה לקבל סוכן היא מפתח LiteLLM אישי.
באוקטובר 2026 יוסף מכין חבילת סקילים משותפת לצוות. היא כוללת onboarding, מדריכים לאפליקציות, תיעוד של מסדי הנתונים ושל טבלאות קמיליון, וגישה ללוגים ולתצפית. יש בה ראוטר אחד, ו־setup עם קישורים סימבוליים, כך ששינוי במאגר מעדכן את כולם. היא הוצגה לרפאל, לקווין ולאלירן, ועדיין נמצאת בענף וממתינה לסקירה. אלירן חדד העלה שלוש שאלות שעדיין פתוחות: מתי צריך דיון דיזיין לפני מימוש, איך לא לפזר תיעוד בין מקומות, ואיפה צריכות לשבת הנחיות הקוד. ב־15.9 יוסף הציע ממשק אחד עם סקילים, על תקציב אישי, שישמש גם אנשים לא טכניים; להצעה אין כרגע בעלים ולא תאריך, ויש בה שאלות פתוחות של עלות, בקרה ואחזקה.
להערכת הסוכן, הכלים לבד לא מספיקים. מי שלא מכיר את הקוד ואת המוצר לא מרוויח מהם הרבה, ומצטרף חדש צריך גם התקנות בסיסיות, Python, Node.js, לפעמים IDE, שכל אחת מהן היא בקשה ל־IT שלוקחת ימים. המלצת הסוכן היא שהפצה של סוכני קוד, כולל סקילים משותפים ותיעוד שהסוכן יכול לקרוא, תהיה חלק מוגדר מהתפקיד של צוות פלטפורמה, ולא יוזמה של אדם אחד.
הגבול בין פיתוח ל־DevOps, ומה פתוח
עד קיץ 2026 פיתוח ותשתית היו תחת אותו מנהל, והמפתחים נגעו בתשתית בחופשיות יחסית: charts, values, ולפעמים הגדרות ב־Keycloak ביד. ב־11.8.2026 זה השתנה. יערה קבעה ש־PR שמשנה charts צריך אישור של DevOps, ושמוצר חדש צריך לערב את צוות התשתיות כבר בשלב הדיזיין. הנימוק שנכתב היה ששני החלקים כבר לא מנוהלים על ידי אותו אדם, ולכן הסיכון לחוסר סנכרון גדל. כמה ימים אחר כך DevOps הבהירו שקשה להם לעמוד בקצב השינויים שנכנסים לתחום שלהם, ושאף אחד לא דוחף ל־values או ל־ArgoCD בלעדיהם; הם הדגישו שהמטרה היא עבודה משותפת. ב־20.8 נפתחה קבוצת DevOps Tickets, כדי שבקשות לא יגיעו לאנשים בודדים. בתור הזה מטופלות הרשאות, מפתחות, GPU, חומת אש, איפוסי סיסמאות, ולפעמים גם תקלת פרוד.
גם אבטחת המידע עוברת דרך DevOps. מפברואר 2026 כל פנייה לאבטחת המידע של בית החולים עוברת דרכם, אחרי ששינוי לא מתואם בתשתית שבר חיבור של מוצר קליני לספק. הכנסת מודלים וקבצים לרשת עוברת בתהליך מאושר. חשוב להבין שהרבה מהימים הקשים של הפלטפורמה היו של הרשת של בית החולים ושל מערכות מחוץ למרכז: חוק חומת האש של יולי 2025, וב־25.8.2026 תקלת גישה ל־Azure שמקורה באבטחת המידע והפילה את LiteLLM ואת PUMA יחד לאחר צהריים.
להערכת הסוכן התהליך סביר ובעיקרו נכון. מי שמתעורר כש־chart נשבר צריך לראות אותו לפני שהוא נכנס, והתור עושה את העבודה גלויה ומפסיק להעמיס על מי שעונה ראשון. אבל יש לו מחיר: כל שינוי שנוגע בתשתית מחכה לעוד אישור, מפתחים לא רואים את מה שקורה בקלאסטר, ושאלה פשוטה הופכת לטיקט. צוות ה־DevOps קטן, מול מספר מפתחים שהוכפל ומול SmartER שנפרס לכל בית החולים.
מה חסר בסדר הזה, לפי הרשומה ולפי המלצת הסוכן:
- כוננות. אין סבב כוננות כתוב. ב־12.1.2026 הופעלו התראות SMS מחוץ לשעות העבודה, והן הושתקו אחרי ארבעה ימים כי הציפו את כולם בהודעות בלי הקשר. ישיבת ניהול אירועים ב־7.5.2026 לא השאירה החלטות כתובות. בפועל, מי שמתקן את הפרוד כשהוא נופל הוא מי שזמין, בדרך כלל יאיר.
- התראות שאפשר לפעול לפיהן. הבעיה הייתה הרעש, לא ההתראות עצמן. מה שחסר הוא מעט התראות, עם הקשר, שמחוברות לטרייס ולדשבורד של המוצר. הבוט שיאיר בנה, שהופך שגיאות לבאגים ב־monday ומפיק סיכום שבועי, הוא התחלה טובה.
- מסלול גישה עצמאי למפתחים. מפתח צריך לראות לוגים, טרייסים ומצב פודים של השירות שלו בלי לפתוח טיקט ובלי הרשאות שמסכנות את הקלאסטר. המלצת הסוכן: גישת קריאה בלבד, לפי שירות.
- התקנת כלים. בקשות התקנה עדיין עוברות במייל ל־IT ולוקחות ימים, ומצטרף חדש מבזבז עליהן את השבוע הראשון.
עוד שני פריטים פתוחים ספציפיים: בעיית ה־CORS בין רוזטה ל־Keycloak, והשכתוב של טיפול ה־cookie. ובצד החיובי, בשבוע האחרון נוספו שרתים לפרוד ו־Keycloak שודרג שם, לפי הדיווח של DevOps. זה בדיוק סוג העבודה שמאפשר למוצרים לגדול.
המרכז והדרך, 2022–2026 · רוזטה ו־Wildfire · הצוותים והתפקידים · מקורות המידע של בית החולים · מה קורה עכשיו ומה פתוח (אוקטובר 2026)