Today, the Patterns & Practices team released the pattern & practices App Arch Guide 2.0 Beta 1. The guide provides principles, patterns and practices for designing application architectures on the .Net platform. The guide focuses on the most common types of applications , partitioning applications functionality into layers, components and services and walk through their key design characteristics.
היום, בעידן ה- Agile, מתודולגיית ה- Scrum הפכה להיות פופולרית מאוד. אחד מסודות הקסם שלה הינה הפשטות, לכאורה, המובנית בה. אין מסמכים מעצבנים, אין ויכוחים עם ההנהלה, הכל זורם, ובעיות נסגרות ב- Stand Up Meetings על כוס קפה.
ובכן, הכלל הידוע אומר - "If it looks too good to be true, it probably is." גם Scrum, כמו מתודולוגיות אחרות, לא יכולה להתבצע ללא הכנה מסודרת ונסיון מעשי.
הנה קישור למאמר מצויין שמפרט חלק מהתפיסות השגויות הקיימות לגבי Scrum. מומלץ מאוד לקרוא ולהפנים. אני אוהב במיוחד את הסעיף העוסק בבדיקות יחידה - חובה בכל פרוייקט, ובעיקר בכאלו המבוססים על Scrum:
Misunderstanding: You can do Scrum without doing automated acceptance testing or up-front unit testing. Well you can, but you'll soon be faced with degrading code that's hard to change and dangerous to change as well. For whatever reason, the Scrum community has neglected to focus on this as much as they (in my mind) should. Lean's principle of "build quality in" provides guidance here.
חשוב, כמובן, לשים לב לאינטרס של כותב המאמר. בסופו של דבר, הוא מנהל חברת הדרכה שעוסקת גם ב- Scrum. אולם לטעמי המאמר כתוב מצוין ונכון, ובהחלט נוגע בנקודה הרכה של ה- Scrum.
לקרוא ולהפנים.
בהמשך לפוסט קודם שלי שעסק בשאלה קבועה שאני שואל בראיונות קבלה, הינה שאלה נוספת שגיליתי, להפתעתי, שרבים נכשלים בה.
השאלה אמנם אינה קשורה במהותה לארכיטקטורה, אולם היא קשורה לנושא שכל מי שמתכנן מערכת Web חייב, לדעתי, לשלוט בו, והוא ה- Viewstate.
הררי נייר, דיו ו-bytes כבר נכתבו על נושא זה, ועדיין אני מגלה מועמדים רבים שלא מכירים את הבסיס של אופן הפעולה של ה- Viewstate. בעיות ביצועים ואבטחה רבות יכולות להימנע תוך שימוש נכון ב- Viewstate, וישנם לא מעט טכנולוגים שטוענים בלהט שמודל העבודה של ASP.NET פגום מיסודו בגלל ה- Viewstate, כאשר אין להם למעשה מושג בסיסי לגבי אופן הפעולה שלו.
השאלה, אם כך, היא זו:
"נתון WebForm המכיל שדה טקסט (TextBox) וכפתור Submit. אם יוגדר EnableViewState=False לדף, מה יקרה כאשר יוקלד טקסט לשדה הטקסט והכפתור ילחץ? האם, כאשר הדף יטען מחדש, יופיע בשדה הטקסט שהוקלד או שהוא יהיה ריק?"
אשמח לשמוע את תשובותיכם, ואת הסיבה שהדברים קורים כפי שהם קורים. זו אינה שאלת טריוויה מתחכמת העוסקת ב- Bits & Bytes של הטכנולוגיה. זהו הבסיס של ה- Viewstate. לטעמי, מי שלא ידע להסביר מה יקרה ומדוע זה קורה - סביר להניח שתכנון ומימוש ה- Viewstate שלו יהיה פגום.
הרבה בעיות ביצועים ניתן לזהות ע"י בדיקות מאוד בסיסיות. Clint Huffman, האיש שמאחורי ה-PAL TOOL שניתן להורדה בחינם כאן - http://www.codeplex.com/PAL, משתף טכניקות פשוטות ע"י כלי מדהים - ping ו-pathping שנמצאים בכל התקנה של Windows.
סיכום שלבים לביצוע
להלן סדרה של פעולות ש-Clint מבצע כדי לזהות בעיות ברשת:
- Ping. בצע פקודה ping משרת מקור לשרת היעד. ב-LAN זה אמור לקחת מספר מילי שניות, אחרת ישנה בעיה ברשת.
- Pathping. שלח פקודת Pathping ממחשב מקור למחשב יעד. הדוח שיוצא בסוף אמור להראות כמה Packetים אבדו ברדרך. אם אכן הלכו לאיבוד - ישנה בעיה ברשת.
- העברת קובץ גדול. העבר קובץ של 100 MB ברשת.
- ברשת 100מגביט - הקובץ אמור לעבור תוך 10-20 שניות.
- ברשת 1 גיגביט - הקובץ אמור לעבור תוך 3-5 שניות.
"הבעיה" השכיחה
Clint משתף שהרבה פעמים הבעיה המרכזית היא הסתמכות על אופציה Auto בקונפיגורציה של כרטיס הרשת שלפעמים לא מזהה רשת מהירה:
המשך קריאה
שמי אליק לוין ואני מתרכז ב- Security and Performance באפליקציות Net.
בזמני הפנוי אני בלוגר שרוף.
This template is made with PracticeThis.com plugin for Windows Live Writer
UCLA study finds that searching the Internet increases brain function
UCLA scientists have found that for computer-savvy middle-aged and older adults, searching the Internet triggers key centers in the brain that control decision-making and complex reasoning. The findings demonstrate that Web search activity may help stimulate and possibly improve brain function.
Study participants performed Web searches and book-reading tasks while undergoing functional magnetic resonance imaging (fMRI) scans, which recorded the subtle brain-circuitry changes experienced during these activities.
All study participants showed significant brain activity during the book-reading task, demonstrating use of the regions controlling language, reading, memory and visual abilities, which are located in the temporal, parietal, occipital and other areas of the brain.
Internet searches revealed a major difference between the two groups. While all participants demonstrated the same brain activity that was seen during the book-reading task, the Web-savvy group also registered activity in the frontal, temporal and cingulate areas of the brain, which control decision-making and complex reasoning.
Compared with simple reading, the Internet's wealth of choices requires that people make decisions about what to click on in order to pursue more information, an activity that engages important cognitive circuits in the brain.
This findings were portrayed as a counterweight to Nicholas Carr's recent article, "Is Google Making Us Stupid?," which argued that the Internet may be eroding our capacity for deep and concentrated thought.
Smart or stupid - make your vote :)
האם רצית לדעת מה נדרש כדי לזהות מה גורם לבעית הביצועים באפליקציה שלך? יש לי תשובה בשבילך - כל מה שנדרש כבר מותקן במחשב שלך.מה שנשאר זה להשתמש ביכולות האלה. בעיות ביצועים יכולים לנבוע ממספר רב של גורמים. אני אוהב ללכת לפי שכבות פיזיות.חה חה חה. נזכרתי ב-Shrek שגם מאמין גדול ב-Layers. נכון שאנחנו דומים קצת...או הרבה?
שכתב לקוח
- גודל ה-HTML. דבר בסיסי הוא לבדוק מה גודל של הדף שיורד ללקוח - הדפדפן. ניתן לבדוק זאת בעזרת מספר שיטות וכלים כאשר הבסיסית ביותר היא... לפתוח מקור HTML שירד לדפדפן.
- כמות המשאבים שהדפדפן מוריד. אם ה-HTML אינו גדול זה לא אומר שגודל כולל של הדף הוא גם לא גדול. הרי יש הפניות לתמונות ולקבצים אחרים יכולים להיות גדולים. אם עדיין לא התקנת Fiddler - עשה זאת מייד (חינם) ותתחיל לגדלות בזמן אפס מה רץ לך על הרשת כתוצאה מפניה לדפי ה-web שלך. תתחיל כאן - Improve Web Application Performance By Reducing Number Of Http Requests - Fiddler To The Rescue
שכבת שרת
כדי לזהות בעיות בשרת ניתן לנתח לוגים שונים - אני מת על IIS Logs וכמובן Perfmon logs. להלן כלים שיש לך כבר שתוכל להתשמש לצורך ניתוח הלוגים:
ראית? לא נדרש הרבה. כל הכלים הם בחינם. השימוש הוא פשוט גם. אם תשתמש בהם אז תהיה הראשון שיזהה בעיות ביצעוים ולא הלקוח שלך.
שמי אליק לוין ואני מתרכז ב- Security and Performance באפליקציות Net.
בזמני הפנוי אני בלוגר שרוף.
This template is made with PracticeThis.com plugin for Windows Live Writer
כלים, כלים, כלים... כולם אוהבים כלים. גם אני אוהב כלים.
בפוסט זה אני אציין 3 כלים שאני משתמש כדי ליצור עומס על מערכות Web לזיהוי בעיות ביצועים.
TinyGet
TinyGet.exe הינו כלים חינמי שבא עם Internet Information Services (IIS) 6.0 Resource Kit Tools. הכלי מאוד שימוש ליצירת פניות מרובות, בדרך כלל GET פשוט. אני חושב שזה כלי מצויין לבדיקות יחידה בהיבט ביצועים. להלן כמה שימושים מוצלחים מאוד של הכלי שעזרו לי וללקוחות שלי:
WCAT
WCAT הוא גם כלי חינמי שבא עם Internet Information Services (IIS) 6.0 Resource Kit Tools. ההבדל המהותי בינו לבין TniyGet הוא ש-WCAT יכול לייצר ולנהל עומס מבוזר - בדיוק כמו VSTS רק ללא UI יפה... (מחר אני מקבל מכות מחבר'ה של DPE). למדריך מהיר של הכלי והנחיות לשימוש בו גלוש כאן:
Visual Studio Team System Test Edition
VSTS הוא כלי לא חינמי. עוד לא יצא לי לכתוב בלוגים בענין (ייצא לי עוד הרבה בעתיד הקרוב) ולכן אני אציין כמה משאבים של גדול התחום (Ed Glass) שמשתף את הלינקים הבאים לוידיאוים הבאים:
אחרי שתראה את הסרטונים תבין של-VSTS יש הרבה מה להציע מעבר ל מה שיש ל-WCAT ;)
באיזה כלים אתה משתמש כדי להעמיס את המערכת שלך?
שמי אליק לוין ואני מתרכז ב- Security and Performance באפליקציות Net.
בזמני הפנוי אני בלוגר שרוף.
This template is made with PracticeThis.com plugin for Windows Live Writer
Hi,
Microsoft SQL Server 2008 makes business intelligence available to everyone through deep integration with Microsoft Office, providing the right tool, to the right user, at the right price. The result is that employees at all levels of an organization can see and help to influence the performance of the business by working with tools that are both easy to use and powerful. Integration with the 2007 Microsoft Office System enables users to view business performance in a way that they understand and which feels comfortable; and the introduction of PerformancePoint Server 2007, helps customers to gain actionable insight into the entire organization so they can monitor, analyze, and plan their businesses, as well as drive alignment, accountability, and actionable insight across the entire organization.
Recommended Artical describes whats new - Business Intelligence in SQL Server 2008 Article
Enjoy.

אני לא נוסע ל-
PDC השנה (וגם לא נסעתי בעבר) אבל אני עוקב מקרוב מה קורה שם (מזל שיש אינטרנט...). לו נסעתי ל-PDC, אלו ההרצאות שהייתי בטוח נכנס (יש משהו משותף בהן, לא?)
מיחשוב מקבילי
Performance
Velocity
Entity Framework
Cloud Computing
לאיזה הרצאות היית נכנס?
שמי אליק לוין ואני מתרכז ב- Security and Performance באפליקציות Net.
בזמני הפנוי אני בלוגר שרוף.
This template is made with PracticeThis.com plugin for Windows Live Writer
אכפת לך מביצועים של המערכת שלך? רוצה להתחיל אבל לא יודע מאיפה? מצאת הרבה חומר בנושא אבל פוחד לטבוע בו?
המצב לא כל כך גרוע - תתחיל ממשהו קל ופשוט. למשל, קרא פוסט מתמצת הזה - patterns & practices Performance Engineering. דף קריאה אחד וכל התמונה מתבהרת.
התכנון הוא דבר קריטי לשיפור ביצועים
...כמו גם לכל דבר אחר, אני מסכים. אבל למי יש זמן לתכנן ביצועים - "הרי אפשר להוסיף שרתים בסוף..."?
התמונה שאני הכי אוהב כדי לתאר את הזוית הכוללת על שיפור ביצועים היא זאת שבה מוצגים בעיות אפשריות בכל שכבה ושכבה:
כשיש תמונה כוללת תמיד קל יותר לנבור לשכבה מסויימת בצורה ממוקדת ולחסוך בזמן ומאמצים.
תבנית עבודה
מצאתי כי ישנה שיטה מאוד פשוטה להשגת המטרה (שיפור ביצועים). השיטה מורכבת ושני מעגלים - מעגל תהליך פיתוח כולו ומעגל פנימי של כל שלב פיתוח תכנה. המעגל הראשון תומך בפעילויות של שיפור ביצועים לאורך של מחזור חיי פיתוח תכנה. מעגל שני תומך בתבנית הבאה
- הנחיה. תגדיר מה קווים מנחים לשיפור ביצועים עבור כל שלב. למשל, מה הקווים המנחים של שיפור ביצעוים בבניית הארכיטקטורה? מה הקווים המנחים של שיפור ביצועים בכתיבת קוד? מה הקווים המנחים של שיפור ביצועים בפריסה של מערכת בייצור?
- סקר. מתן הנחיה אינו מבטיח ביצוע בפועל. צריך לבדוק ע"י סקר ארכיטקטורה, סקר קוד, וסקר פריסה בהיבט שיפור ביצועים.
- תיעדוף. הסקר מייצר המון תוצאות אבל לא כל התוצאות הן משמעותיות. חשוב לתעדף כדי לרכז מאמץ על נקודות הקריטיות אם השפעה הכי רחבה.
ומה השיטה שלך?
המשך קריאה
שמי אליק לוין ואני מתרכז ב- Security and Performance באפליקציות Net.
בזמני הפנוי אני בלוגר שרוף.
This template is made with PracticeThis.com plugin for Windows Live Writer
גיי. די. מאייר (מנהל תכנית בקבוצת patterns&practices) פירסם התקדמות יפה של המדריך המלא לארכיטקטורה ומימוש יישומים – 2.0
המדריכם החדשים
ההתקדמות מתפרסמת באתר CodePlex.com:
שווה להעיף מבט - מאוד מעשי.
שיפור ביצועים הוא אחד השיקולים
לא יכולתי שלא להתענג כשקראתי על שיקולי שיפור ביצועים למימוש כזה או אחר:
Consider locating business components on the client:
- If you want to improve performance.
Performance Considerations (presentation layer):
- If your application needs to be scalable, make sure you don’t mix functionally different logic (such as presentation and business).
- Ensure that logically related entities in the presentation layer, such as classes and methods, are appropriately grouped together.
- You should cache data in the presentation layer that needs to be displayed to the user. For example, you can cache the information that is displayed in a stock ticker.
- You should generally avoid caching per-user data, unless the user base is very small and the total size of the data cache does not require too much memory. However, if users tend to be active for a while and then go away again, caching per-user data for short time periods may be the appropriate approach.
- Do not query for more data than you need to display, instead page records.
- Use ViewState cautiously as it increases the round trips and impacts the performance of the application.
...In addition, there are some software engineers who feel that the overhead of crossing layer boundaries or adding layers will have a negative impact on performance.
המשך קריאה
שמי אליק לוין ואני מתרכז ב- Security and Performance באפליקציות Net.
בזמני הפנוי אני בלוגר שרוף.
This template is made with PracticeThis.com plugin for Windows Live Writer
In short ...
Enhanced overview
When exporting content from SharePoint using the Content Migration API - the exported content can be packaged and compressed in CAB files.
To faster Content Migration EXPORT - you can choose to avoid content compression.
This choice has another side effect: the content is exported directly to your chosen target location, and you avoid the use of the system chosen intermediate storage folder.
So you happily run your faster process and export a couple of thousands of files to your desired folder, until you suddenly notice that the operation is gracefully s l o w i n g d o w n as more and more files are added to this folder . . . This is where CPsplitter comes into the picture: it waits for the manifest to be released from the EXPORT process, and moves the manifest, along with all its files, to a sub folder, letting the EXPORT process keep running at full speed ahead.
"The manifest?" you may ask, "What is that?"
· Well, every exported piece of content is listed in an XML file that is named 'manifest.xml', which is later used in the IMPORT operation.
· There can be multiple manifest files for a single EXPORT, and you can roughly control the number of files listed in each manifest by setting the 'File Max Size' in the EXPORT application.
"The EXPORT application?" you ask ...
· Well, there are multiple tools and means to export content from SharePoint 2007, each is best suited for certain scenarios. Some are part of the product, like STSADM and the Central Administration Content Deployment process. Others are highly customized applications that were developed by our partners, and there are even a couple of freely downloadable samples (like the SharePoint Content Deployment Wizard from CodePlex, the Content Publishing Tool that accompanies my Content Migration API in Action" post and others) that you can use for some scenarios.
SO ... assuming you would like to give it a try - here is a simple sample walkthrough:
1. Prepare
1.1. Make sure you can install and run the applications on the SharePoint server (in a TEST environment!)
1.2. Select the SharePoint 2007 site you want to export
1.3. Download the Content Publishing application and unzip
1.4. Download the CPsplitter application and unzip
2. Run the Content Publishing application and in the EXPORT pane ...
2.1. Set 'Export file location' to be c:\kuku
2.2. Unselect 'File Compression'
2.3. Type you site URL in the 'Site URL'
2.4. Set 'File Max Size' to be 1 (meaning: 1 MB)
2.5. Click EXPORT to get it going and acknowledge you wish to run it J
3. While the EXPORT is running ...
3.1. Look at c:\kuku and see the files getting in
3.2. Run CPsplitter
3.3. Click 'Demo' to set the properties
3.4. Click 'Split Files into Folders'
3.5. Monitor CPsplitter logging and c:\kuku
So far so good for export …
But now you want to IMPORT, and the manifests are not in the root folder, and the files are scattered all over …
No worries – you’ve got CPsplitter!
Run CPsplitter, make sure MANIFEST.XSLT is in place and the TARGET FOLDER is correct and click UPDATE MANIFESTS.
“What will it do?” you ask …
· Here is what it will (hopefully) do: every manifest, from every sub folder of the TARGET FOLDER, will be updated to refer to the files in the sub folder, and will be copied to the root TARGET FOLDER, which is used for the IMPORT of Content Publishing.
Disclaimer
This posting is provided "AS IS" with no warranties. Use of included utilities are subject to the terms specified here.
Enjoy content migration,
Ronalus
קראתי את הפוסט של קריס היי - remix08 UK ASP.NET Front End Performance Slides בו הוא משתף מצגת נהדרת ומעשית עם הנחיות מאוד ממוקדות לשיפור ביצועים באפליקציות ווב.
אג'נדה של המצגת
להלן האג'נדה של המצגת:
- Fiddler and Firebug
- Reduce Page Requests
- Reduce Page Size
- AJAX
- Bring Pages Closer to Users
- Make backend more efficient
הקטעים שאהבתי
ישנם מספר קטעים שאהבתי במיוחד:
- IIS Caching – IIS 7.0
- HTTP Compression IIS 7.0
- Update Panel Pitfalls
- AJAX – Web Services
- AJAX – Script Combining
תענוג - מומלץ ביותר!
המשך קריאה
שמי אליק לוין ואני מתרכז ב- Security and Performance באפליקציות Net.
בזמני הפנוי אני בלוגר שרוף.
This template is made with PracticeThis.com plugin for Windows Live Writer
מהות הבנצ'מרק
מהות הבנצ'מרק היא השוואה בין טכנולוגיה של מיקרוסופט לזו של IBM במיקוד על שלושה נושאים:
This paper presents detailed benchmark results based on extensive performance and scalability testing of 64-bit IBM WebSphere 6.1.0.13 Network Deployment Edition running on 64-bit Red Hat Linux Advanced Platform 5, and 64-bit Windows Server 2008/64-bit NET 3.5 with the Windows Communication Foundation (WCF). The benchmark focuses on three core workloads:
- Web Services
- Message-oriented transaction processing (via message queuing)
- Data-driven Web application with middle-tier transaction services and data access
מה הארכיטקטורה?
ציפיתי לראות משהו אזוטרי ואקזוטי מבחינת הארכיטקטורה. לא מצאתי אחת כזו. מצאתי ארכיטקטורה באנאלית ביותר (מה שמשמח מאוד):
אני חושב שסוד ההצלחה היה לא בבניית ארכיטקטורה מטורפת אלא שחשבו על ביצועים על התחלה. המטרה הייתה לבנות מערכת עם ביצועים גבוהים יותר. זה כל הסוד.
כשכסף מדבר...
המסמך מלא בחומר טכני וארכיטקטוני - תענוג. ישנם מלא גרפים יפים שניתן כמובן להשתמש במצגות. הגרפים שהפתיעו אותי זה גרפים של ביצועים מבחינת עלות, כלומר גרפים שנותנים תשובה לשאלה "כמה עולה לי לקבל את זה?", לדוגמה:
מגניב, לא?
המשך קריאה
שמי אליק לוין ואני מתרכז ב- Security and Performance באפליקציות Net.
בזמני הפנוי אני בלוגר שרוף.