אוטומציה של מודרניזציה של מערכות מדור קודם בקנה מידה נרחב באמצעות צינורות עיבוד נתונים מבוססי-סוכן ו-Antigravity

1. התמצאות בתהליך המודרניזציה

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

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

מה תלמדו

  • מיפוי תהליך העבודה: איך לסווג ולהפריד בצורה נכונה בין משימות הגדרה דטרמיניסטיות לבין אתגרים מורכבים של שיפורים היוריסטיים.
  • ארכיטקטורת כישורים: איך לבנות חבילת כישורים של סוכן שאפשר להרחיב באמצעות גילוי הדרגתי ומטא-נתונים של ניתוב YAML.
  • תזמור תבניות עיצוב: איך לבצע שינוי מבנה בקנה מידה גדול על ידי שרשור של תבניות העיצוב Router,‏ Plan-and-Execute ו-Reflexion.
  • חוזים נוקשים של קלט/פלט: איך לאכוף גבולות ברורים של קלט/מיומנות/פלט בצינורות של הנדסה הפוכה מרובת שלבים ופיגומים של יעד.
  • אימות שוויון: איך משתמשים ב-Browser Subagent של Antigravity כדי לבצע בדיקות שוויון זו לצד זו בדפדפן האינטרנט Chrome.

מה תפַתחו

תנהלו פייפליין אוטומטי לחלוטין של Greenfield Refactoring, שייקח את המונוליט המוכר והמיושן של Express ו-Mongoose CRUD (הדמו של madhums) ויבנה אותו מחדש באופן אוטונומי מאפס לאפליקציית Next.js App Router עם הקלדה קפדנית, גיבוי של MongoDB, אימות קפדני של Zod ורכיבי ממשק משתמש נגישים של ShadCN.

הדרישות

  • Google Antigravity IDE מותקן באופן מקומי (זמין בכתובת antigravity.google).
    • Node.js (גרסה 18 ואילך) מותקן באופן מקומי.
  • דפדפן Chrome לאימות אוטומטי של ממשק המשתמש.
  • שיבוט של מאגר ה-monorepo של ההדגמה modernizing-expressjs בקוד פתוח.

2. הגדרת סביבת המודרניזציה

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

מיפוי של ארכיטקטורת Express מדור קודם לעומת ארכיטקטורת Next.js מודרנית

רכיב

Legacy Stack

החלפה מודרנית

הנימוק

ארכיטקטורה

Express Monolith

Next.js App Router

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

Data Logic

‫Mongoose (ODM)

MongoDB + Zod

החלפת ווים (hooks) מרומזים של ORM בסכימות Zod מפורשות ובטוחות-סוגים, ובביצועים של מנהל התקן גולמי.

שפה

CommonJS / JavaScript

‫TypeScript (ESM)

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

Frontend

‫Pug/EJS (תצוגת שרת)

‫ShadCN UI + Tailwind

מעבר מתבניות נוקשות למערכת עיצוב מודולרית, נגישה ושימושית.

Auth

Passport.js

NextAuth

עדכון של ניהול הסשנים עם תמיכה מובנית ב-Edge ובספקים מודרניים.

בטיחות

תווכה ידנית

Zod (אימות קפדני)

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

אתחול של מרכז המודרניזציה

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

פותחים את הטרמינל של Antigravity ומריצים את פקודות ההגדרה הבאות:

git clone https://github.com/GoogleCloudPlatform/devrel-demos.git
cd devrel-demos/other/modernizing-expressjs

אחרי השיבוט, פותחים את התיקייה modernizing-expressjs ישירות בסייר של Antigravity IDE. תוכלו לראות את הפריסה המבודדת הבאה:

/modernizing-expressjs/
├── .agents/            # Skills metadata and checklists
│   └── skills/
├── docs/               # Target directory for reverse-engineered markdown artifacts
├── legacy-app/         # Read-only root of the legacy Express monolith
├── modern-app/         # Greenfield target repository for the Next.js rewrite
├── GEMINI.md           # Project-wide agent constitution
└── README.md           # Companion documentation

בסרטון הקצר הזה מוסבר איך להכין את סביבת המונורפו ולבודד אותה באופן דטרמיניסטי:

3. תכנון חבילות של מיומנויות לסוכני AI ודפוסי שימוש

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

גילוי הדרגתי באמצעות ניתוב מטא-נתונים ב-YAML

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

פותחים את .agents/skills/orchestrating-greenfield-migration/SKILL.md ובודקים את המטא-נתונים של הנתב:

---
name: orchestrating-greenfield-migration
description: >
  Manages the end-to-end modernization of legacy Express
  monoliths into Next.js architectures. Orchestrates subagents
  for auditing, scaffolding, and verification. Use when starting
  or managing a greenfield rewrite project.
---

קידוד קשיח של דפוס התכנון והביצוע

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

בודקים את תיבת הסימון המילולית ב-Markdown שמוטמעת בתוך המארגן הראשי:

### Phase 1: The AI audit (reverse engineering)
Dispatch subagents to produce specifications while identifying project-specific test scenarios.

*   [ ] Init `docs/verification/Verification_Plan.md` to create baseline template.
*   [ ] Run `auditing-data-models` -> Append Data Integrity Stress-Tests.
*   [ ] Run `auditing-api-contracts` -> Append API Parity & Edge Case Probes.
*   [ ] Run `auditing-business-logic` -> Append Logic & Authorization Stress-Tests.
*   [ ] Run `auditing-ui-archeology` -> Append Interaction & Layout Targets.

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

4. שלב 1 – הנדסה הפוכה של המונוליט מדור קודם (ביקורת)

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

הפעלת רצף של שינוי מבנה קוד אוטונומי

בחלונית הצ'אט של Antigravity Agent Manager, מקלידים את פקודה דרך שורת הפקודות המותאמת אישית הבאה ומקישים על Enter:

/orchestrating-greenfield-migration

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

הסכם הדרכה בנושא קלט/מיומנות/פלט

במהלך שלב 1, הסוכן מריץ צינור (pipeline) הנדסה הפוכה מחמיר שמוגבל על ידי חוזה ההוראות הבא:

נתוני קלט שנצרכו: קבצים של קוד מקור מדור קודם לקריאה בלבד שנמצאים בתוך legacy-app/.

מיומנויות שהופעלו:

מיומנות

תיאור

auditing-api-contracts

עוקבים אחרי נתיבים מדור קודם כדי לתעד מעטפות מדויקות של תגובות JSON.

auditing-data-models

מפרק סכימות של Mongoose כדי לחלץ קשרים, שדות חובה וערכי ברירת מחדל.

auditing-business-logic

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

auditing-ui-archeology

סורק תבניות Pug מדור קודם כדי למפות 'כוונה בממשק המשתמש' ברמה גבוהה (סרגלי ניווט, טפסים).

פריטים שנוצרו: מפרטים מובְנים מאוד בפורמט Markdown שנוצרו ישירות בתיקייה docs/

Artifact

תיאור

docs/API_Contracts.md

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

docs/Business_Logic_Rules.md

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

docs/Data_Models.md

במסמך הזה מפורט ניתוח מקיף של סכימות Mongoose מדור קודם מ-legacy-app/app/models/, ומוצגת תוכנית ליצירת שכבת גישה לנתונים מודרנית ובטוחה לטיפוסים באמצעות MongoDB ו-Zod מקוריים.

docs/UI_Inventory.md

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

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

5. שלב 2 ו-3 – מסגרת TDD ופיגום של קצה עורפי חדש

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

שימוש בלולאות Reflexion כדי להפעיל קוד לתיקון עצמי

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

  1. שלב 2 (הגדרת TDD): רכיב האורקסטרטור מפעיל את סוכן המשנה generating-api-tests, שקורא את docs/API_Contracts.md וכותב חבילות בדיקה מקיפות של שילוב Vitest, שמאמתות את קודי הסטטוס הנדרשים של HTTP ואת מטען ה-JSON. כצפוי ב-TDD, הבדיקות האלה נכשלות בהתחלה.
  2. שלב 3 (פיגום בקצה העורפי): סוכני משנה של פיגום מתחילים לכתוב מטפלי נתיבים מודרניים של Next.js וסכימות אימות מחמירות של Zod.
  3. לולאת תיקון עצמי: כשמסגרת הבדיקה הדטרמיניסטית של Vitest מעריכה את הקוד החדש ומחזירה כשל (לדוגמה, שגיאת אימות צפויה של 422 החזירה 500), הסוכן לא קורס. הוא משתקף בפלט השגיאה של היעד, פותח מחדש את handler של נתיב היעד, מתקן את מבנה מטען הייעוד של סכימת Zod ומריץ שוב את הבדיקות. הוא חוזר על הפעולה באופן אוטונומי עד שהוא משיג קוד יציאה של 0.

הסכם הדרכה בנושא קלט/מיומנות/פלט

נתונים שהמערכת צרכה: פריטי מידע שנוצרו בתהליך הפיתוח (Artifact) של מפרטים שעברו הנדסה הפוכה (docs/API_Contracts.md, docs/Data_Models.md).

מיומנויות שהופעלו:

מיומנות

תיאור

generating-api-tests

יוצרת חבילות שילוב של Vitest שנכשלות.

scaffolding-nextjs-foundation

מפעיל את פריסת הנתונים של Next.js App Router.

scaffolding-test-foundation

הגדרת סביבת ההרצה של בדיקות Vitest המקומיות.

scaffolding-data-layer

מתרגם מודלים ישנים של Mongoose לסכימות של MongoDB + Zod.

scaffolding-api-routes

בנייה מחדש של מסלולים מהירים ל-Route Handlers מודולריים ול-Route Guards מודולריים ב-Next.js.

פלט שנוצר: חבילות Vitest ראשוניות שנכשלו, סכימות Zod עם הקלדה מלאה, פונקציות לטיפול בניתוב ב-Next.js וביצועים נקיים של חבילת מקרים לבדיקה שעברו בהצלחה.

שימו לב ליצירה האוטומטית של כלי הבדיקה TDD:

אפשר לראות בזמן אמת את הביצוע של לולאת התיקון העצמי של Reflexion, שיוצרת את התשתית של ה-Backend של היעד:

6. שלב 4 – יצירת תשתית לחלק הקצה הקדמי המודרני (רכיבי ממשק משתמש)

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

תרגום של כוונת ממשק המשתמש לתצוגות שאפשר להרכיב

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

הסכם הדרכה בנושא קלט/מיומנות/פלט

נתונים שהמערכת צרכה: פריט המידע שנוצר בתהליך הפיתוח (Artifact) של מלאי שטחי הפרסום בחלק הקדמי של האתר (docs/UI_Inventory.md).

מיומנויות שהופעלו:

מיומנות

תיאור

scaffolding-ui-components

מתרגם ארטיפקט UI_Component_Inventory.md לרכיבי ShadCN + Tailwind מודרניים וגם לדפי Next.js עם פיגומים מלאים.

התוצאות שמתקבלות: דפי קצה קדמי של Next.js שמוכנים לייצור, שנבנו באמצעות רכיבי ממשק משתמש של ShadCN עם נגישות גבוהה ופריסות של כלי השירות Tailwind CSS.

צפייה ביצירה האוטונומית של שכבת התצוגה המודרנית של ממשק הקצה:

7. שלב 5 – אימות וביקורת של יריבים

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

הפעלת הבדיקה בשני כרטיסיות והפעלת הדפדפן

בשלב האימות, נעשה שימוש ביכולות הוויזואליות וה-DOM המשולבות של Antigravity כדי להוכיח את ההצלחה באופן אוטונומי, בלי שתצטרכו ללחוץ ידנית על טפסים:

  1. השוואה זה לצד זה: סוכן המשנה auditing-parity מורה למפעיל המקומי להפעיל בו-זמנית את האפליקציה המונוליטית מדור קודם של Express ואת אפליקציית Next.js המודרנית, כדי לוודא שההצגה החזותית ועיבוד הנתונים זהים.
  2. בדיקות אבטחה של תוקפים: כלי התזמור מפעיל את סוכן המשנה adversarial-verification, שמפעיל את סוכן המשנה של Antigravity Browser. הסוכן המיוחד הזה מפעיל את הדפדפן ישירות – הוא מקליד קלט, שולח טפסים ובודק רגרסיות אבטחה, קובצי Cookie של סשן פגומים או מקרים קיצוניים שלא טופלו.
  3. יצירת נתיב ביקורת: סוכן המשנה בדפדפן מתעד באופן אוטומטי צילומי מסך של סרטוני WebP של הפעלות הסשן שלו, ומצרף אותם ישירות לדוח ההעברה הסופי כ "הוכחת עבודה" שניתן לאימות.

הסכם הדרכה בנושא קלט/מיומנות/פלט

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

מיומנויות שהופעלו:

מיומנות

תיאור

auditing-parity

מבצע בדיקות אימות בזמן הריצה, זו לצד זו.

adversarial-verification

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

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

אפשר לראות את סוכן המשנה האוטומטי של הדפדפן מאמת באופן פעיל את האפליקציה המודרנית:

8. מוכנות לסביבת הייצור והשלבים הבאים אחרי ההעברה

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

הכנות לפריסה בסביבת הייצור

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

  • ניתוב מצטבר: הטמעה של פרוקסי הפוך (לדוגמה, Strangler Fig Pattern) כדי לנתב תנועה באופן מצטבר מאפליקציית Express מדור קודם ליעד מודרני.
  • שמירה על SEO: מיפוי של מסלולי Express מדור קודם להפניות קבועות ב-Next.js ‏ (_redirects.yaml) כדי לשמור על סמכות הדומיין הקיימת.
  • סטרימינג של נתונים: מעבר מאיכלוס סטטי של מסד נתונים לסטרימינג של נתוני ייצור בזמן אמת, שמאומת בצורה מאובטחת בזמן הריצה באמצעות סכימות Zod מחמירות.
  • ניראות (observability): מחליפים כלי עזר לרישום ביומן אימפרטיבי במסגרות עבודה מובנות של OpenTelemetry.

העמקת המומחיות במודרניזציה

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

הצטרפות לקהילת Agentic Builder

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

ספר לנו מה דעתך

מה הכי מרגש אותך בתיאום בין סוכנים?

Adversarial Browser Verification Autonomous Refactoring Loops Extensible Skills Architecture Multi-Agent Orchestration Universal Language Agnosticism

תודה שבחרת ליצור באמצעות Google Antigravity!