הערכת אפליקציות .NET לצורך מודרניזציה

בדף הזה מוסבר איך להשתמש ב-Google Cloud Modernization Hub כדי להעריך אפליקציות ASP.NET ו-‎ .NET Framework לצורך יצירת קונטיינרים של Linux ומודרניזציה לגרסת ‎ .NET בפלטפורמות שונות.

הרבה אפליקציות ארגוניות ל-‎ .NET מסתמכות על ממשקי API ספציפיים ל-Windows, על הגדרות של שרת IIS או על ספריות מדור קודם של ‎ .NET Framework שמונעות פריסה ישירה למאגרי Linux. הערכה אוטומטית ב-Modernization Hub מנתחת את קוד המקור כדי לזהות חסימות, להעריך את התאימות של חבילות NuGet ולהמליץ על דרכים לשינוי מבנה הקוד עבור Cloud Run או Google Kubernetes Engine.

מתי כדאי להשתמש בהערכת אפליקציות של ‎ .NET

מריצים הערכה של אפליקציית ‎ .NET כשמתכננים לבצע אחת ממשימות המודרניזציה הבאות:

  • מעבר לפלטפורמה אחרת לקונטיינרים של Linux: לפני שמכניסים אפליקציות לקונטיינרים ל-Cloud Run או ל-GKE, צריך לזהות תלות באפליקציות שפועלות רק ב-Windows (כמו גישה ל-Windows Registry, ‏ System.Drawing או שילובים של Active Directory).
  • שדרוג גרסאות של ‎ .NET Framework: הערכת המאמץ ופערים בתאימות במהלך מעבר מ-‎ .NET Framework 4.x לגרסאות מודרניות של ‎ .NET בפלטפורמות שונות (‎.NET 10 ואילך).
  • הפרדה של ארכיטקטורות מונוליטיות: זיהוי שירותי WCF, שירותי Windows או טפסים ישנים באינטרנט שקשורים זה לזה באופן הדוק וצריך לשנות את המבנה שלהם למיקרו-שירותים מבוססי-ענן.

לפני שמתחילים

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

הפעלת ממשקי ה-API הנדרשים

כדי להשתמש ב-Modernization Hub, צריך להפעיל את ממשקי ה-API הנדרשים של השירות Google Cloudבפרויקט:

gcloud services enable \
    aiplatform.googleapis.com \
    artifactregistry.googleapis.com \
    cloudbuild.googleapis.com \
    cloudresourcemanager.googleapis.com \
    compute.googleapis.com \
    logging.googleapis.com \
    storage.googleapis.com \
    --project=PROJECT_ID

מחליפים את PROJECT_ID במזהה הפרויקט ב- Google Cloud .

התפקידים הנדרשים

כדי להריץ הערכה, צריך הרשאות IAM שונות לשתי זהויות באמצעות Cloud Build ו-Gemini Enterprise Agent Platform:

  • משתמש מאומת במסוף (שמפעיל את העבודה וניגש לדליים):
    • אדמין לניהול נפח האחסון (roles/storage.admin)
    • משתמש בחשבון שירות (roles/iam.serviceAccountUser)
    • עריכה ב-Cloud Build (roles/cloudbuild.builds.editor)
  • חשבון שירות ייעודי (להפעלת מאגר ההערכה):
    • משתמש ב-Agent Platform (roles/aiplatform.user)
    • משתמש באובייקטים באחסון (roles/storage.objectUser) או אדמין לניהול נפח האחסון (roles/storage.admin)

כדי לקבל את ההרשאות שדרושות להפעלת הערכה ולהרצת קובץ ה-container של הניתוח, צריך לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים בפרויקט:

  • משתמש – ניהול ארכיוני מקור והגדרות של קטגוריות: אדמין לניהול נפח האחסון (roles/storage.admin)
  • משתמש – צירוף חשבון השירות הייעודי לעבודה: משתמש בחשבון השירות (roles/iam.serviceAccountUser)
  • משתמש – שליחת משימות הערכה (cloudbuild.builds.create) ותצוגת יומנים: עריכה ב-Cloud Build‏ (roles/cloudbuild.builds.editor)
  • חשבון שירות – הפעלת מאגר התגים codmod: משתמש בפלטפורמת סוכנים (roles/aiplatform.user)
  • חשבון שירות – קריאת ארכיונים של מקורות וכתיבת דוחות הערכה: משתמש באובייקטים באחסון (roles/storage.objectUser) או אדמין אחסון (roles/storage.admin)

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

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

ההרשאות הנדרשות

כדי להתחיל הערכה ולהריץ את קובץ הניתוח, צריך את ההרשאות הבאות:

  • משתמש (Cloud Storage,‏ Cloud Build ו-IAM):
    • ‫storage.objects.get (כדי להוריד או לקרוא קבצים)
    • ‫storage.objects.list (כדי להציג רשימת קבצים בתוך הקטגוריה)
    • storage.objects.create (כדי להעלות או ליצור קבצים חדשים)
    • ‫storage.objects.update (כדי לשנות את המטא-נתונים של קבצים קיימים)
    • ‫storage.objects.delete (כדי למחוק או להחליף קבצים)
    • storage.buckets.get (צפייה בהגדרות ברמת המאגר)
    • cloudbuild.builds.create (כדי לשלוח משימות הערכה)
    • ‫iam.serviceAccounts.actAs (כדי לצרף את חשבון השירות לעבודה)
  • חשבון שירות (Agent Platform ו-Cloud Storage):
    • ‫aiplatform.endpoints.predict (להרצת ניתוח קוד בעזרת AI)
    • ‫storage.objects.get (כדי לקרוא או להוריד ארכיונים של מקורות)
    • ‫storage.objects.list (כדי להציג רשימה של הקבצים בתיקיית הקלט)
    • ‫storage.objects.create (כדי לכתוב דוחות הערכה)
    • ‫storage.objects.delete (כדי למחוק קבצים זמניים)

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

הגדרת קטגוריה של הגדרות סביבת עבודה

רושמים קטגוריה של Cloud Storage ייעודית בדף Modernization Hub > Settings (לדוגמה, gs://PROJECT_ID-modernization-hub) כדי לאחסן את קובצי המצב הבינאריים של סביבת העבודה (dotnet_jobs.pb,‏ java_jobs.pb ו-mainframe_jobs.pb).

בדיקת מגבלות הגודל של בסיס הקוד

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

  • גודל בסיס הקוד המקסימלי: כ-6 מיליון שורות קוד (LOC) לכל משימת הערכה. אם המאגר שלכם גדול מ-6 מיליון שורות קוד, צריך לפצל את בסיס הקוד לפתרונות או למודולים קטנים ועצמאיים יותר לפני ההעלאה.
  • מבנה ארכיון נקי: אל תכללו בקובץ ה-ZIP קבצים בינאריים שעברו קומפילציה, מטמוני חבילות ומטא-נתונים של בקרת גרסאות (כמו bin/,‏ obj/,‏ node_modules/,‏ .vs/ ו-.git/), כדי שרק קובצי המקור והגדרות הבנייה ינותחו.

הכנה והעלאה של ארכיון המקור של ‎ .NET

אורזים את בסיס הקוד של ‎ .NET כקובץ ZIP שלא כולל פלט של build, ומעלים את הקובץ לקטגוריה של Cloud Storage בפרויקט.

  1. במכונה המקומית, יוצרים קובץ ZIP של המאגר באחת מהשיטות הבאות:

    • באמצעות Git (מומלץ):

      git archive --format=zip -o repository.zip HEAD
      
    • באמצעות zip CLI:

      zip -r repository.zip . \
          -x "*.git*" "*/bin/*" "*/obj/*" "*/node_modules/*" "*.vs/*"
      
  2. מעלים את קובץ ה-ZIP לקטגוריית היעד ב-Cloud Storage באמצעות Google Cloud CLI:

    gcloud storage cp repository.zip \
        gs://INPUT_BUCKET/codebase/repository.zip
    

    מחליפים את INPUT_BUCKET בשם של קטגוריית Cloud Storage של היעד.

הפעלת הערכה

כדי להריץ משימת הערכה, פועלים לפי השלבים הבאים:

  1. נכנסים לדף Modernization Hub במסוף.

    כניסה ל-Modernization Hub

  2. בדף הנחיתה, מאתרים את הכרטיס .NET Modernization ולוחצים על Start assessment (התחלת ההערכה).

  3. בשדה שם המשימה, מזינים שם ייחודי למשימת ההערכה.

  4. בשדה Source code location (מיקום קוד המקור), בוחרים קטגוריה ב-Cloud Storage שמכילה את קוד המקור כקובץ ZIP.

  5. בשדה Report location, בוחרים קטגוריה של Cloud Storage לשמירת דוחות ההערכה שנוצרו.

  6. ברשימה Modernization recipe (מתכון למודרניזציה), בוחרים מתכון למודרניזציה.

  7. ברשימה Location, בוחרים אזור לעבודת ההערכה.

  8. בשדה Service account, בוחרים חשבון שירות ייעודי עם תפקידי ה-IAM הנדרשים שמפורטים בקטע Required roles. המשימה להערכה מופעלת ב-Cloud Build דרך חשבון השירות הזה, שנדרשות לו הרשאות של Agent Platform User ו-Cloud Storage.

  9. לוחצים על יצירת דוח.

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

מעקב אחר סטטוס המשרה וצפייה בדוחות

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

כדי לראות את תוצאות ההערכה:

  1. בטבלה Assessment history (היסטוריית ההערכות) בדף Modernization Hub, מאתרים את עבודת ההערכה.
  2. כשהסטטוס בעמודה סטטוס משתנה להושלם, לוחצים על הורדת הדוח.
  3. בוחרים את פורמט הפלט המועדף:
    • דוח HTML: סיכום אינטראקטיבי שמאפשר לכם לסנן ממשקי API של Windows שלא תואמים, לבדוק רשימות חסימה של קבצים ולראות הצעות לפתרון.
    • דוח בפורמט Markdown: סיכום מנהלים מעוצב שמתאים לשיתוף עם בעלי עניין ועם ועדות לבדיקת ארכיטקטורה.

בדיקת דוח ההערכה

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

  • ציון התאימות הכולל: אחוז השורות והתלות בקוד המקור שאפשר להעביר ל-‎ .NET בפלטפורמות שונות בלי לבצע שינויים.
  • פירוט של חסימות: תלויות ספציפיות ב-Windows שנדרש לבצע בהן שינוי, כמו:
    • הטמעות של שרת Windows Communication Foundation‏ (WCF).
    • צינורות (pipelines) מדור קודם של ASP.NET Web Forms או ASP.NET MVC.
    • קריאות של מרשם Windows (Microsoft.Win32).
  • ניתוח תלות ב-NuGet: מלאי מפורט של חבילות NuGet קיימות, שכולל מידע על התמיכה של כל חבילה בגרסת היעד של ‎ .NET או על הצורך בהחלפה.
  • פעולות מומלצות: הצעות לטרנספורמציות של קוד ונתיבי העברה כדי להכין את האפליקציה להעברה לקונטיינר ב- Google Cloud.

שינוי מבנה של קוד ‎ .NET באמצעות Antigravity

אחרי שיוצרים דוח הערכה, אפשר להשתמש ב-Antigravity עם כישורים אג'נטיים מיוחדים של .NET כדי להמיר קוד מ-‎ .NET Framework ל-‎ .NET בפלטפורמות שונות באופן אוטומטי.

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

  • סביבת Antigravity: מתקינים את Antigravity IDE או את Antigravity CLI ‏ (agy) ומגדירים אימות באמצעות פרויקט Google Cloud .
  • פריטי מידע מההערכה: מורידים את דוח ההערכה codmod וממקמים אותו בסביבת העבודה של המאגר המקומי, כדי שהסוכן יוכל להפנות לחסימות שזוהו ולנתיבי שדרוג של תלות.
  • מיומנויות מודרניזציה של ‎.NET: טוענים את codmod מיומנות המודרניזציה של ‎ .NET ‏ (SKILL.md) בהגדרות של סביבת העבודה ב-Antigravity. כדי לבקש גישה לתצוגה מקדימה של היכולות העדכניות של סוכן המודרניזציה של ‎ .NET, אפשר לפנות לכתובת modernization-hub-feedback-external@google.com.

המאמרים הבאים