240 likes | 471 Views
איך לבנות אתרים בעלי ביצועים גבוהים וזמינות גבוהה ב- SharePoint 2010. ניר לוי CTO ריל קומרס. על מה נדבר. מה זאת אומרת "גבוהים" ולמה זה חשוב איך בודקים ביצועים מה משפיע על ביצועי האתר איך להוריד את העומס של השרת איך להוריד את משקל הדפים איך להוריד את כמות הפניות לשרת זמינות גבוהה.
E N D
איך לבנות אתרים בעלי ביצועים גבוהים וזמינות גבוהה ב- SharePoint 2010 ניר לוי CTO ריל קומרס
על מה נדבר • מה זאת אומרת "גבוהים" ולמה זה חשוב • איך בודקים ביצועים • מה משפיע על ביצועי האתר • איך להוריד את העומס של השרת • איך להוריד את משקל הדפים • איך להוריד את כמות הפניות לשרת • זמינות גבוהה
מה זאת אומרת "ביצועים גבוהים" • לא רק לאתרים גדולים • רוב הנושאים במצגת רלוונטים לכל אתר שהוא • רוב הטיפים במצגת רלווונטים לא רק לאתרי SharePoint 2010 • לפעמים חייבים להתפשר בביצועים עכב דרישות עסקיות
למה בכלל זה חשוב? • מהירות האתר קריטית להצלחתו • אתר איטי מוביל לאחוזי נטישה גבוהים • אמזון גילו שעלייה של 0.1 שניות בזמן הגשת דף הובילה לירידה של 1% במכירות • אתר מהיר מעלה את רמת שביעות הרצון של הלקוחות • חיסכון בעלויות תפעוליות ו-TCO • עלויות חומרה • עלויות Bandwidth • עלויות תמיכה ושירות לקוחות
כלי בדיקה לביצועים • SharePoint 2010 Developer Dashboard • זמן ריצה של דף • רשימת השאילתות • Call Trace עם זמן של כל פעולה • WebPart Trace – זמן ביצוע של כל WebPart
כלי בדיקה לביצועים • מבוססי דפדפן • Fiddler • IE Developer Toolbar • Yslow • HTTPWatch – מומלץ! • כלי בדיקות העמסה • TinyGet / Wget • Visual Studio Test Edition • LoadRunner / WebLoad • שירותי בדיקה חיצוניים • SaaS
אז מה משפיע על ביצועים? • כמות העבודה שהשרת צריך לבצע • משקל הדף (והקבצים הנלווים) • מספר הפניות לשרת • רכיבי הרשת וה-Bandwidth
הורדת העומס על השרת • טופולוגיה נכונה של שרתים • תכנון הפיתוח מכוון ביצועים • כתיבה נכונה של קוד ושימוש בקוד קיים • הגדרת מתודולוגיית Cache נכונה • העברת SSL וחלק מהעבודה לשכבה חיצונית
הורדת העומס טופולוגיית שרתים • עבדו לפי ה- Best Practices של הפרדת שירותים שונים לשרתים שונים • בטלו שירותי SharePoint ו- Windows מיותרים על המכונה • הפרדה פיזית של סביבת העריכה מסביבת התצוגה • הפכו את ה- DB של סביבת התצוגה ל- ReadOnly • שימוש ב- Content Deployment – משופר ב-2010 • שימוש ב- SQL Server Mirroring להעתקת תוכן בין סביבות – חדש ב-2010
הורדת העומסקוד מנוהל • עבדו לפי סטנדרטים נכונים של .NET • טיפול ב- Exceptions • כתבו בצורה דפנסיבית • אל תתפסו שגיאות שלא ניתנות לטיפול • נסו לגלות כשלים כמה שיותר מוקדם בקוד • לא לשכוח לנקות ב- Finally {} • הבינו כיצד מנוהלים אובייקטים של .NET • מנעו זליגת משאבים (Connection Leaks, Memory Leaks, Socket Leaks)
הורדת העומסקוד מנוהל • דפוסים נכונים ב- SharePoint • תמיד תדעו מה קורה מאחורי הקלעים • “list.Items.Count” – עובר על כל הפריטים ברשימה • שחררו אובייטקים כאשר אתם מסיימים • אגרגציות וסיכומים • השתמשו ברכיבים OOTB ככל שניתן • השתמשו ב- SPLinq • פחות יעיל מ-CAML, יותר יעיל מ-OM, יותר בטוח משניהם • המנעו מאיטרציות על אובייקטים ככל שניתן • CAML לעזרתכם
הורדת העומסאסטרטגיות Cache • תכננו את אסטרטגיית ה- Cache מראש • Output Cache • Cache ברמת הדף • Cache ברמת ה- WebPart • BLOB Cache • Cache אפליקטיבי • שימוש חוזר באובייקטים ברמת הדף • שימוש חוזר באובייקטים ברמת ה- Session • שימוש חוזר באובייקטים ברמת האפליקציה • השתמשו ב-& Pools Object Factories
הורדת העומסהעבירו עבודה למקום אחר • SSL • צרכן משאבים משמעותי (CPU, זכרון) • ניתן להעביר לרכיבי חומרה או מאיצי SSL • ארכיטקטורה מבוזרת • העבירו את ה- Business Logic לשרת אפליקציה • נצלו את יכולות ה- WCF • בצעו פעילויות כבדות בשרתים פנימיים באמצעות טיימר
הורדת גודל הדףדפוסי עבודה נכונים • מזערו את ה- ViewState • כתבו XHTML תקין • השתמשו ב- Style רק בקבצי CSS • קבצים נלווים • הסירו קבצים מיותרים • בצעו איחוד ומזעור של קבצי JS ו-CSS • דחיסה ברמת ה-IIS • בצעו דחיסה של קבצים ברמת ה- IIS
הורדת גודל הדףשיפור חווית המשתמש • השתמשו ב- HTML מבוסס CSS ולא טבלאות • טענו קבצי CSS מוקדם ככל האפשר • טענו קבצי JS מאוחר ככל האפשר • הגדירו רוחב וגובה לתמונות ברמת ה- HTML • טענו קבצי Flash ו- SilverLight בצורה פרוגרסיבית • מומלץ להעלות "שומר מקום" בזמן הטעינה • השתמשו ב- JQuery • אבל הזהרו משימוש רחב מידיבפלאגינים
הורדת מספר הפניות לשרת • אחדו את קבצי ה- CSS וה- JS כמה שיותר • הורידו את כמות קבצי ה- CSS וה- JS ע"י איחודם • עדיף לבצע בזמן ה- Build ע"י כלים אוטומטים • ניתן להשתמש במוצרים המבצעים את ההקטנה ב- Runtime • השתמשו ב- CSS Sprites • תכננו את ה- Client Side Cache כראוי • השתמשו ב- CDNs וב- Reverse Proxies
שימוש ב- CDN • CDN – מבצעים Cache לתוכן ברחבי העולם • מקטינים את השפעת הרשת על הביצועים • מטפלים במליוני גולשים • לרוב לא מתאימים לשימוש בדפים אישיים • אבל ניתן להשתמש בצורה חכמה ע"י שימוש ב- Ajax ו/או ESI • לרוב דורשים תכנון מראש של מבנה הדפים
שימושים שונים ל-CDN • אירוח ו- Steaming של וידאו ואודיו • “Smooth HD” מבית Microsoft /Akamai • אירוח תמונות וקבצים סטטים בלבד • אירוח קבצים משותפים • http://ajax.microsoft.com/ajax/jquery/ • אירוח אתרים מלאים • Akamai, Cotendo וכד' • מאפשרים הגדרות TTL ברמת דף או איזור • מאפשרים SSL Acceleration • לרוב מאפשרים גם ניקוי Cache בדחיפה
זמינות גבוההטופולגיית שרתים • הגדירו מראש את רמת השרידות הנדרשת והמשאבים הנדרשים כדי לגבות אותה • התיחסו ל- Best Practices של מיקרוסופט • העבירו שירותים שונים לשרתים נפרדים • ממולץ לבחון את דפוסי השימוש באתר ולהחליט האם האתר הוא לקריאה בלבד • ודאו שאין נקודות כשל ללא שרידות (No Single Point of Failure) • גם כאן CDNים עוזרים לשמירה על רמת השירות • ניתן לשקול שימוש בענן בתלות במגבלות העסקיות
זמינות גבוההשיפורים ב- SharePoint 2010 • Sandboxed Solutions • מאפשר למנהל המערכת שליטה על המשאבים הנצרכים • הבדלים קטנים בלבד בביצועים מול פתרונות מלאים • איזור הניתור וה-Health Analyzer • מאפשר להגדיר תהליכי ניתור מתקדמים • מאפשר לזהות בעיות מוקדם • Patch Management
סיכום • תכנון נכון של אסטרטגיית הביצועים צריך להעשות בשלב המוקדם ביותר • אסטרטגיית הביצועים צריכה להעשות מול הערכות העומס וקהל היעד וכן מול הדרישות העסקיות • אתרי SharePoint 2010 יכולים להיות מהירים במיוחד, אפילו בעומסים גבוהים • כמה דברים שאפשר לעשות כבר היום: • הורדת שירותים מיותרים והעברת שירותים לשרתים אחרים • איחוד של קבצי JS ו-CSS • העברת קבצים נלווים לשירותי CDN
תודה שצפיתם • שאלות והערות יתקבלו בברכה • nirl@realcommerce.co.il • http://www.realcommerce.co.il