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

הכלי App Modernization Assessment (codmod) ב-Google Cloud Modernization Hub הוא כלי מבוסס-AI שמבצע אוטומציה של תהליך הערכת המודרניזציה של האפליקציה. בדף הזה מוסבר איך להתקין את הכלי העצמאי של ממשק שורת הפקודה (CLI) של codmod, איך להשתמש בו ואיך לפתור בעיות שקשורות אליו בתחנת העבודה. כדי להריץ הערכות של codmod בקונטיינרים ישירות במסוף Google Cloud , קראו את המאמרים הערכת אפליקציות NET. והערכת אפליקציות Java.

מידע על App Modernization Assessment

‫codmod CLI הוא כלי נייד שמשתמש ב-Gemini כדי לנתח קוד מקור ולספק המלצות למודרניזציה על סמך השיטות המומלצות של Google Cloud.

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

הכלי הזה מיועד לאדריכלי IT, למקבלי החלטות ולבעלי אפליקציות.

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

כדי להשתמש בכלי codmod, צריך:

  • תחנת עבודה עם Linux או Windows (גרסה 10 ואילך).
  • פרויקט ב- Google Cloud שבו מופעל Agent Platform API.
  • ‫Google Cloud CLI מותקן בתחנת העבודה. מידע נוסף זמין במאמר התקנת ה-CLI של gcloud.

תמחור

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

בסיס קוד שורות קוד (LOC) עלות משוערת
‫‎3.8-flash (ברירת המחדל) 3.5-flash 2.5-pro 2.5-flash adaptive
Spring Petclinic ~6,500 9$‎ $‏3 ‎20$ $‏3 ‎20$
James Project ~1,000,000 800 ש"ח 800 ש"ח 800 ש"ח ‎30$ 40$
Elasticsearch ~5,000,000 500$ 500$ $900 800 ש"ח 800 ש"ח

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

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

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

מידע נוסף

הכלי משתמש ביכולות המתקדמות של Agent Platform API להבנה ולניתוח של קוד. למידע נוסף על המודלים הזמינים והתכונות שלהם, קראו את המאמר המודלים של Google במסמכי התיעוד של Agent Platform.

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

הגדרה של codmod

בקטע הזה מוסבר איך להתקין את הכלי codmod ולאמת אותו.

התקנת codmod

Windows

מריצים את הפקודה הבאה ב-Windows PowerShell כדי להוריד את הגרסה האחרונה של codmod:

$version=curl.exe -s https://codmod-release.storage.googleapis.com/latest
curl.exe -O "https://codmod-release.storage.googleapis.com/${version}/windows/amd64/codmod.exe"

Linux

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

version=$(curl -s https://codmod-release.storage.googleapis.com/latest)
curl -O "https://codmod-release.storage.googleapis.com/${version}/linux/amd64/codmod"
chmod +x codmod

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

אימות ב- Google Cloud

כדי להשתמש בכלי codmod, צריך פרויקט ב- Google Cloud .

  1. מוודאים ש-Agent Platform API מופעל בפרויקט במסוףGoogle Cloud או באמצעות ה-CLI:

    gcloud services enable aiplatform.googleapis.com --project <project-id>
    
  2. מוודאים שיש לכם את התפקיד Agent Platform User (roles/aiplatform.user) או תפקיד דומה בפרויקט.

  3. כדי לבצע אימות, מריצים את הפקודה הבאה:

    gcloud auth application-default login
    

לחלופין, אתם יכולים להשתמש בחשבון שירות ולהגדיר את משתנה הסביבה GOOGLE_APPLICATION_CREDENTIALS. איך משתמשים ב-Application Default Credentials

ניהול ההגדרות של codmod

בקטעים הבאים מוסבר איך להגדיר את codmod באמצעות הפקודה codmod config.

רשימת כל ההגדרות

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

codmod config list

הגדרת ערך ברירת מחדל לדגל

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

codmod config set project "PROJECT_ID"

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

כדי להגדיר את אזור ברירת המחדל, מריצים את הפקודה:

codmod config set region "REGION"

מחליפים את REGION באזור Google Cloud . רשימת האזורים הזמינים אם אתם לא בטוחים באיזה אזור להשתמש, השתמשו ב-us-central1.

קבלת ערך ספציפי

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

codmod config get project

ביטול ההגדרה של ערך ברירת מחדל

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

codmod config unset project

יצירת דוח הערכה של codmod

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

יצירת דוח ברירת המחדל

כדי ליצור דוח הערכה, מריצים את הכלי codmod עם הדגלים הבאים:

codmod create -c "CODEBASE" -o "OUTPUT"

מחליפים את מה שכתוב בשדות הבאים:

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

אפשר לשנות את פרויקט ברירת המחדל ואת האזור באמצעות הדגלים -p "PROJECT_ID" ו--r "REGION", בהתאמה.

אפשר גם לציין את הדגלים האופציונליים הבאים:

  • --modelset [3.8-flash|3.5-flash|2.5-pro|2.5-flash|adaptive]: מציין באילו מודלים של Gemini להשתמש. ערך ברירת המחדל הוא 3.8-flash.
  • ‫--format <html|markdown|odt|json>: הפורמט של הדוח שנוצר. ברירת המחדל היא HTML.
  • ‫--allow-large-codebase: כברירת מחדל, codmod יבקש אישור לפני ניתוח של בסיסי קוד עם יותר ממיליון שורות קוד, כדי למנוע עלויות גבוהות. האפשרות הזו משמשת כאישור לא אינטראקטיבי. אפשר גם להפעיל את זה כברירת מחדל על ידי הפעלת codmod config set allow_large_codebase true.
  • ‫--improve-fidelity: כשמגדירים את האפשרות הזו, codmod יוצר קטעים באופן סדרתי במקום במקביל. הפעולה הזו משפרת את העקביות בין החלקים השונים של הדוח הסופי, אבל נדרש זמן ריצה ארוך יותר.
  • ‫--force-include <strings>, --force-exclude <strings>: כברירת מחדל, codmod סורק סיומות קבצים פופולריות, כולל Java, ‏ ‎.NET ו-Python. השתמשו בדגלים האלה כדי לכלול או להחריג סיומות של קבצים. הארגומנט חייב להיות ביטוי רגולרי עם תחביר RE2.
  • ‫--context <string>: כל הקשר נוסף שרוצים לספק לגבי הפרויקט. הכלי מביא בחשבון את ההקשר הזה כשהוא יוצר את הדוח.
  • ‫--context-file <path>: כמו --context, כשההקשר מופיע בקובץ שצוין.
  • ‫--supporting-documents <path>: מציין ספרייה של מסמכי תיעוד תומכים לגבי בסיס הקוד. אפשר להפנות לקבצים בספרייה הזו מההקשר שסופק עם הדגלים --context או --context-file כדי לכלול אותם בניתוח. הפורמטים הנתמכים כוללים טקסט, PDF ותמונות (PNG,‏ JPG,‏ JPEG).

יצירת דוח מלא

אם אתם צריכים ניתוח מלא, אתם יכולים ליצור דוח באמצעות הפקודה create full:

codmod create full -c "~/mycodebase/" -o "report.html"

יצירת דוח שמתמקד בשכבת הנתונים

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

codmod create data-layer -c "CODEBASE" -o "OUTPUT"

יצירת דוח על כוונה ספציפית לשינוי

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

  • ‫Microsoft workload transformation ‏(MICROSOFT_MODERNIZATION): משתמשים בהערכה הזו באפליקציות שפועלות במערכת ההפעלה של Microsoft. ההערכה מתמקדת בתהליכי טרנספורמציה שישדרגו את המסגרות שמבוססות על NET. לגרסה העדכנית ביותר, ויפחיתו את התלות ברישיונות של Microsoft.
  • טרנספורמציה של עומסי עבודה מענן לענן (CLOUD_TO_CLOUD): משמשת לאפליקציות שפועלות בתשתית אחרת של hyperscaler. ההערכה תתמקד בשינויים המומלצים לשינוי האפליקציה, כמו מיפוי שירותים של ספקי ענן אחרים לשירותיGoogle Cloud .
  • טרנספורמציה של Java מדור קודם (JAVA_LEGACY_TO_MODERN): משתמשים בה באפליקציות שפועלות בגרסת Java 8 או דומה. ההערכה תתמקד במציאת יחסי תלות בשדרוג ובאזורים בקוד שמושפעים מהשינוי ל-Java 21 (ה-LTS הנוכחי).
  • ‫Legacy Java WILDFLY transformation ‏(WILDFLY_LEGACY_TO_MODERN): משמשת לבסיסי קוד של Java EE או Jakarta EE שפועלים בגרסאות של שרת האפליקציות WildFly שקודמות לגרסה האחרונה. ההערכה תתמקד בזיהוי יחסי תלות בשדרוג ובאזורים בקוד שמושפעים משדרוג הגרסה של שרת האפליקציות WildFly, כולל שינויים שנדרשים בגלל הבדלים ב-API ותאימות.
  • העברת אפליקציות C/C++‎ לארכיטקטורת Arm (ARM_MIGRATION): משמשת לאפליקציות C/C++‎ כדי להעריך את מידת המוכנות שלהן ואת המאמץ שנדרש כדי להעביר אותן מארכיטקטורות מבוססות-x86 לארכיטקטורות מבוססות-Arm, כמו מכונות וירטואליות מסוג Google Cloud Axion C4A. ההערכה מתמקדת בזיהוי בעיות פוטנציאליות בניידות הקוד, יחסי תלות ספציפיים לארכיטקטורה, שינויים במערכת ה-build ושיקולי בדיקה שנדרשים למעבר מוצלח ל-Arm מ-Google Cloud או מספק שירותי ענן אחר, כמו מכונות Graviton של AWS.

כדי ליצור דוח שמתמקד בכוונת הרכישה, משתמשים בדגל --intent:

codmod create -c "CODEBASE" -o "OUTPUT" --intent "INTENT"

יצירת דוח עם קטעים נוספים

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

  • ‫files: תצוגה היררכית מובנית של תיקיות הפרויקט ותיאור של התוכן בכל תיקייה, כדי לעזור לכם להתמצא בקובצי הפרויקט.
  • ‫classes: קטלוג של מחלקות קוד עם מידע על כל מחלקה והתלויות שלה במחלקות אחרות. השפות הנתמכות הן Java ו-#C.

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

codmod create -c "CODEBASE" -o "OUTPUT" --optional-sections "SECTIONS"

מחליפים את SECTIONS ברשימת ערכים מופרדים בפסיקים.

יצירה של דוח בהתאמה אישית

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

codmod create custom -c "CODEBASE" -o "OUTPUT" --context "CONTEXT"

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

דגלים נוספים:

  • ‫--from-template <path>: מציין קובץ תבנית שמגדיר את מבנה המסמך בפורמט קובץ טקסט או PDF. ‫codmod מזהה את המבנה ומבקש אישור להמשיך ליצור את הדוח.
  • ‫--skip-template-approval: דילוג על בקשת האישור כשמשתמשים בדגל --from-template.

שינוי דוח קיים

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

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

  • אחד מהשדות --context ו---context-file: מציינים את בקשת השינוי.
  • ‫--from-report: מציין את הנתיב לקובץ הדוח הקיים.
  • ‫--from-section: שם החלק שישמש כבסיס לחלק חדש (לדוגמה, "סקירה כללית של ההערכה" או "ארכיטקטורה").

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

codmod list-sections --from-report "REPORT"

שינוי קטע בדוח

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

codmod revise section -c "CODEBASE" --from-report "REPORT" \
  -o "REVISED_REPORT" --from-section "SECTION_NAME" \
  --context "CONTEXT"

יצירת קטע חדש בדוח

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

codmod create section -c "CODEBASE" --from-report "REPORT" \
  -o "REGENERATED_REPORT" --from-section "SECTION_NAME" \
  --context "CONTEXT"
  • הדגל --from-section בפקודה create section הוא אופציונלי.
  • כברירת מחדל, המערכת משתמשת ב-LLM כדי להרחיב את ההקשר שסופק ולהתאים אותו כך שייווצר קטע קוהרנטי. כדי להשבית את ההתנהגות הזו, צריך לציין את הערך --improve-context=false.

שימו לב לנקודות הבאות:

  • האפשרויות create section ו-revise section תומכות רק בפורמט הדוח html.
  • ‫create section,‏ revise section ו-list-sections מצפים שהדגל --from-report יצביע על דוח בפורמט HTML.

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

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

codmod create --estimate-cost -c "CODEBASE"

אי אפשר להשתמש בהערכות עלות בפקודות create section ו-create custom.

הגדרת רמת הפירוט

כדי להגדיר את דרגת המלל codmod, משתמשים בדגל --verbosity LEVEL. דרגת המלל של היומנים היא אחת מהאפשרויות הבאות: debug,‏ info,‏ warn,‏ error או none. ערך ברירת המחדל הוא warn.

בדיקה ועדכון של גרסת ה-CLI של codmod

ה-CLI של codmod יכול לבדוק באופן אוטומטי אם יש גרסה חדשה יותר.

בדיקות אוטומטיות

כל 24 שעות, ה-CLI בודק קטגוריה של Cloud Storage כדי לראות אם פורסמה גרסה חדשה יותר של codmod. אם נמצאה גרסה חדשה יותר, תופיע הודעה במסוף. ההודעה כוללת את מספר הגרסה החדשה וקישור להורדת העדכון. ככה אתם יכולים ליהנות מהתכונות, השיפורים ותיקוני הבאגים הכי עדכניים.

השבתת בדיקות הגרסה

אם אתם מעדיפים להשבית את בדיקת הגרסה האוטומטית, אתם יכולים להשתמש בפקודה config set:

codmod config set disable_version_check true

כדי להפעיל מחדש את בדיקת הגרסה, מגדירים את הערך בחזרה ל-false:

codmod config set disable_version_check false

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

codmod config list

השלמה אוטומטית של שורת הפקודה

כלי ה-CLI של codmod תומך בהשלמת פקודות במעטפת של Bash,‏ Zsh,‏ Fish ו-PowerShell. התכונה הזו עוזרת לכם להקליד במהירות פקודות, דגלים וארגומנטים. פשוט לוחצים על המקש Tab כדי לראות את האפשרויות הזמינות ולבחור מביניהן.

היתרונות של ההשלמה האוטומטית:

  • השלמה אוטומטית של פקודות ודגלים: מתחילים להקליד פקודה או דגל של codmod ולוחצים על Tab כדי לראות השלמות אפשריות.
  • אפשרויות גילוי: הצגת ערכים חוקיים לדגלים מסוימים. לדוגמה:
    • codmod create --modelset [TAB] מציע קבוצות של מודלים זמינים (לדוגמה, 3.8-flash, 2.5-pro).
    • ‫codmod create --format [TAB] מציע פורמטים לפלט (לדוגמה, html,‏ json,‏ markdown).
    • ‫codmod create --intent [TAB] מציע כוונות מוגדרות מראש.
  • הצעות מבוססות-הקשר: ההשלמה מותאמת לפקודה. לדוגמה:
    • codmod config set [TAB] מציע את מפתחות ההגדרות הזמינים שאפשר להגדיר.
    • codmod config get [TAB] מציע את מפתחות ההגדרות הזמינים שאפשר לקבל.
    • השלמת נתיב הקובץ מוצעת רק לדגלים או לארגומנטים שמצפים לנתיב של קובץ או ספרייה (לדוגמה, --codebase, --output-path). דגלים אחרים, כמו --project, לא מציעים יותר שמות של קבצים.

הפעלת השלמה אוטומטית של פקודות במעטפת

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

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

# For Bash
codmod completion bash --help

# For Zsh
codmod completion zsh --help

# For Fish
codmod completion fish --help

# For PowerShell
codmod completion powershell --help

לדוגמה, כדי לטעון את ההשלמה האוטומטית של Bash ב-Linux, אפשר להוסיף את הקוד הבא לקובץ ~/.bashrc:

source <(codmod completion bash)

כדי שהשינויים ייכנסו לתוקף, צריך להפעיל מחדש את המעטפת או להגדיר את הפרופיל כמקור (לדוגמה, source ~/.bashrc).

פתרון בעיות

  • Permission denied: אם נתקלתם בשגיאה "permission denied", ודאו שהענקתם הרשאת הפעלה לקובץ הבינארי של codmod באמצעות הפעלת הפקודה chmod +x codmod.
  • נראה שה-CLI נתקע: הניתוח יכול להימשך זמן רב, אבל בדרך כלל אפשר לראות את ההתקדמות בסרגל ההתקדמות ב-CLI. אם סרגל ההתקדמות נשאר על 0% אחרי 15 דקות, ודאו שיש לכם מספיק מכסה למודל הרלוונטי. כברירת מחדל, codmod משתמש במודל gemini-3.8-flash. עם זאת, יכול להיות שזה ישתנה כי קבוצות מודלים שונות משתמשות במודלים שונים למטרות שונות.
  • דיווח על שגיאות: אם יש שגיאה שצריך לבדוק, אוספים את המידע על תוצאות ניפוי הבאגים כדי לעזור לצוות הפיתוח שלנו. היומנים מספקים פרטים חיוניים לפתרון בעיות. מריצים את הפקודה הבאה כדי לאסוף את היומנים, ואז מכווצים את קובץ הארכיון שנוצר ומשתפים אותו עם הצוות בכתובת codmod-feedback-external@google.com.

    codmod collect-logs -o "codmod_logs.zip"
    

רישיונות קוד פתוח

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

version=$(curl -s https://codmod-release.storage.googleapis.com/latest)
curl -O "https://codmod-release.storage.googleapis.com/${version}/THIRD_PARTY_NOTICES.txt"

קבלת תמיכה ושליחת משוב

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

codmod config set disable_usage_reporting true

כדי לקבל תמיכה ולשלוח משוב, אתם יכולים:

  • כדי לקבל תמיכה לגבי codmod, לוחצים על הלחצן Support בדוח ה-HTML שנוצר, או שולחים אימייל לכתובת codmod-feedback-external@google.com.
  • כדי לשלוח משוב על codmod, לוחצים על הכפתור Feedback בדוח ה-HTML שנוצר.