DCSIMG
עמוד הבית| חבילות השירות שלנו| חומר חופשי| צור קשר
December 2009 - Posts - בלוג היועצים של מיקרוסופט ישראל

בלוג היועצים של מיקרוסופט ישראל

December 2009 - Posts

The Backstage of MCS

בפוסט הזה אני מבקש לחשוף מיספר היבטים של פעילות יועצי MCS.

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

מיקרוסופט מחלקת את המוצרים ל-Service Lines או בקיצור SL:

 image

כל מוצר "יושב" ב-SL שלו.

לדוגמא:

  • Win 7 ב- SL2
  • SharePoint ב- SL3
  • BI, SQL והפיתוח ב- SL4
  • Dynamics CRM ב- SL
  • יש גם פתרונות לורטיקאליים השונים והם יושבים ב-SL6.
  • ייעוץ אסטרטגי שלנו לאירגונים (ESC/ITAP ) ממוקם ב- SL1
  • התמיכה (Premier) ב-SL7 – לא מופיעים בתרשים.

לכל מוצר הוכנו מספר חבילות עבודה – Service Line Offerings או SLO. למשל, חבילה לתיכנון הארכיטקטורה של המוצר, חבילה לפריסתו, חבילה לשיפור ביצועים ועוד נושאים שנגזרים מהמוצר עצמו.

הרציונל שעמד מאחורי הפעילות הוא שגובש יידע עצום (IP ) סביב הפעילויות החוזרות וניתן למנף את זה לטובת הבטחת פעילויות מוצלחות אצל הלקוחות.

אז מה בדיוק יש בחבילה שכזו. ניתן למצוא את המיסמכים הבאים:

  • רשימות תיוג של המסמכים החשובים בפעילות (למשל, מסמך ארכיטקטורה, תיכנון ה- sizing ועוד).
  • תוכנית פרויקט לדוגמא.
  • הנושאים שצריכים להעלות בפגישת ההתנעה לפעילות.
  • מדריך להתקנות.
  • הנחיות לביצוע הפעילות.
  • לקחים מפעילויות קודמות.
  • תוכנית ל- PoC.
  • תיכנון מיגרציה.
  • תיכנון המיבדקים.
  • מדריך הפעלה ללקוח.
  • ועוד.

מכאן ברור שליועץ יש בסיס נרחב לבצע את הפעילות בצורה הטובה ביותר.

החומר לחבילות העבודה נאסף ע"י מומחי MCS שעובדים בהנהלת מיקרוסופט ברדמונד. החומר נאסף מפרויקטים שמבוצעים על ידי קבוצות MCS ברחבי העולם (בעולם יש כ-8000 MCS –ים) והוא מתוקף ע"י קבוצות הפיתוח עצמן. אותם מומחים סורקים את הפעילויות ברחבי העולם ומנסים לדלות מהם תבניות מוצלחות, נושאים מוצלחים ונושאים לא מוצלחים שניתן ללמוד מהם.

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

חלק מהחבילות גילינו כשימושיות יותר בפרויקט בארץ וניתן להגיע לראות את תאורן כאן:

P&P Summit 2010 Israel - It's no longer just a teaser!

We've made considerable progress with this event in the past few weeks and now, we're proud to present to you the almost-almost-final agenda and speakers for the first ever patterns & practices summit in Israel!

The summit will take place on Feb. 10-11, 2010.

The change that might occur later on is the arrival of 1 additional p&p speaker from Redmond, WA.
 
Due to some delays in the publishing of this agenda, we're hereby announcing the extension of the early bird special promotion (2,995 NIS) by one additional week, ending on Thursday, Jan. 7th. If you're planning to attend this event, we urge you to hurry up and register before the rate will return to its normal state... (It took me some effort to extend this promotion beyond the current calendar year and I'm skeptic it'll be possible again...)
 
One last thing – we’ve been able allocate some time for an interview with one of our speakers – Eugenio Pace, a Senior Program Manager in p&p. We know what we want to ask him, do you want to add something of your own? Send us questions for Eugenio through comments on this post!
 
So, without any further a due… here’s our p&p summit 2010 agenda. We’ll be more than thrilled to get your feedback on the content and structure!
 
Session List:
 
Application Architecture Guide: The Map for Your Journey - Don Smith
Application architecture is all about making decisions. And the trick to being a good architect is knowing what the right questions are and how to go about answering them. The 2nd edition of the Application Architecture Guide from patterns & practices aims to help you do just that. In this session we’ll see how this guide can help ensure you identify the right questions and have a means to answer and communicate them on your journey to delighting customers with software.
 
Prepare for the next Application Platform: development & design considerations for the Microsoft cloud, Azure and AppFabric Eugenio Pace
The recently released cloud platform presents new and exciting opportunities for developers. In this session we’ll provide an overview of all of Microsoft’s cloud components: Windows Azure, SQL Azure, Access Control Service and the Service Bus. We’ll explore current and future capabilities, pricing and SLAs. We’ll also cover common application scenarios, its unique challenges and special design considerations
 
Choose the right UI Technology for your app: A practical how-to – Memi Lavi
The UI Technology world is getting larger and larger, and new technologies are added constantly – WPF, Silverlight, AJAX and let's not forget the good-old WinForms. One of the critical issues when planning a new app is which type of UI technology should it utilize? In this session we will learn about the various UI candidates available today, and, more importantly, learn practical rules for how to choose the most suitable one for your new application.
 
Data Patterns - Michael Puleio
Separating data access code from business and other types of logic has been a well-known practice for quite a while. Although, there are still a number of ways to accomplish this. While there are proven patterns for how to build these data access layers, implementing them with modern technologies isn’t always intuitive. This session will cover how the Data Access Guidance project from patterns & practices aims to illustrate how to implement these patterns with modern technologies like the Entity Framework.
 
Delivering Capabilities vs. Applications Lior Rozner
The race for more productive, more agile and shorter development cycle requires a paradigm shift in the way we think about application design and development. Composite solution are moving the application design decisions away from the Architects and Developers and putting them in the hands of the end users. Architects and Developers need to think in terms of designing and delivering Capabilities rather than purpose built applications. This presentation will explore the emerging patterns and practices that Architects and Developers can use to factor requirements into capabilities which in turn can be consumed by the user and create high value business solutions.
 
Ask the Experts: Fun, Interactive and Inspiring Q&A Session Danny Cohen, Alik Levin, Don Smith, Eugenio Pace, Lior Rozner, Memi Lavi, Michael Puleio  
Forget about politically correct Q&A, lose the public relations sound bites – come and ask the real, hard questions, answered and argued over by the real-world experts. These are the questions and these are the answers you will not hear anywhere else…
 
An Agile talk on Agile Software Development - Michael Puleio
What do you want to know about agile software development?  This discussion will start with a brief overview of agile software development.  Then, we will put into practice the principles behind agile development by running a short “project” during the rest of the session.  This will include creating a product backlog (a list of questions you want answered), prioritizing the backlog, doing simple release planning, and executing several iterations.  By the end of the session, you should have a basic understanding of agile development and have a few questions on the topic answered
 
What’s Coming in Enterprise Library 5.0 - Don Smith
Microsoft Enterprise Library is a collection of reusable application blocks that help address common problems that software engineers face when developing enterprise LOB applications. Over the years, EntLib grew larger, and arguably more complex than it really needs to be. In this session, we will share how we are making Enterprise Library 5.0 simpler and more usable. We?ll discuss the underlying design and the architectural refactorings we undertook and give examples of how common scenarios are addressed
 
Dissecting web app performance from browser through ASP.NET to IIS – Alik Levin
Getting bigger servers does not always help achieving better performance. In fact, in many cases it even won't help at all. This session is prescriptive. It dissects canonical web application with performance scalpel revealing performance killers and boosters in browser, IIS, and .net code. You take away from this session performance principles, guidelines, samples, and tools that will help you plan, build and test your next mission-critical application.
 
Head in the cloud? Factors to keep your feet on the ground – Eugenio Pace
In this session we will unveil emerging design patterns and successful business models for cloud applications. With so many innovations happening at such a fast pace, it is easy to believe that the available bandwidth is infinite and free. Or that latency is always negligible. But that's never the case. The laws of physics are unforgiving and they have an impact on an application's design. Then, the following questions must be asked: how do these factors affect the design and business feasibility of an application offered as a service? What happens if we ignore them?
 
Patterns & Practices FuturesDon Smith, Eugenio Pace, Michael Puleio
p&p’s goal is to help software development teams be more successful with the Microsoft application platform. This is our goal, this is our mission. In this session we will unveil before you all of our deepest secrets and aspirations for the coming future. You’ll have a remarkable opportunity to get a glimpse into the next-gen guidance that will assist you in planning and building your future apps.
 
Speakers:
 
Eugenio Pace
Eugenio is a Senior Program Manager in the patterns & practices group at Microsoft. His current focus in the team is on Identity and Access Control management, and general application development for the cloud. Before that he worked in the Architecture Strategy Team at Microsoft, focusing solely on Software as a Service (SaaS). You can find his blog here: http://blogs.msdn.com/eugeniop
 
Don Smith
Don Smith is a Senior Program Manager on the patterns & practices team at Microsoft where he is responsible for developing guidance deliverables for .NET architects and developers who are involved in building connected solutions. In the 5 years prior to joining the patterns & practices team, Don helped Microsoft customers build connected systems by performing code and architecture reviews as well as educating them on XML and Web services. In the 5 years prior to joining Microsoft, Don developed Web and distributed solutions as a COM developer consultant. http://blogs.msdn.com/donsmith
 
Michael Puleio
Michael is a Senior Software Developer, pragmatic agilist, and coffee addict. He's been working for Microsoft for almost ten years, and is currently a member of the patterns & practices team.  At p&p, he has worked on the Web Client and Smart Client Software Factories and contributed to guidance on Data Access, Acceptance Testing, and Web Client Developer Guidance. At Microsoft, he has also worked with MSNTV (formerly WebTV) and MSN Internet Access. Previous to Microsoft, Michael worked on a range of software challenges including computer reservation systems, web application development, and 3D modeling for geophysics. http://blogs.msdn.com/mpuleio 
 
Alik Levin
Alik is a Principal Consultant with Microsoft Consulting Service [MCS]. Alik is passionate about how stuff works and how it breaks. His main focus is on Application Performance and Scalability. Alik happily shares his expertise with his customers and peers formally through MCS engagements and informally on MCS team blog here: http://blogs.microsoft.co.il/blogs/mcs .
 
Lior Rozner
Lior is a Software Architect in the Microsoft Consulting Services group working with different customers across the enterprise for more than three years. His current focus is designing and building large scale composite solutions. Lior is also leading the areas of ALM and Smart Client development in the group. Prior of joining Microsoft Lior has been building large scale enterprise solutions on the MS platform.
 
Memi Lavi
Memi is a Senior Consultant and Software Architect in the Microsoft Consulting Services group. He works with many enterprise customers across many fields, and involved in planning, architecting and implementing some of the most complex and cutting-edge applications in Israel. Memi is focused on creating effective, lean-and-mean architecture design for his systems while utilizing the most relevant technologies. Memi posts in the MCS blog here: http://blogs.microsoft.co.il/blogs/mcs

 

To Pivot or not To Pivot

נתונים... כן כן הכול זה נתונים. נו? אז? מה חדש?

לפעמים ריבוי הנתונים לא נותנים לנו להגיע לעיקר. אני אסביר:

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

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

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

ואיך קוראים לקטנטן.....

Pivot

, שם קטן אבל שובב גדול.

http://getpivot.com/

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

תיהנו ובהצלחה

Over-Architecture

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

Make It Simpler!

בלא מעט מצבים התברר שהארכיטקטורה לוקה במה שאני מכנה “Over Architecture”. במקרים אלו נעשה שימוש מוגזם במתודולוגיות ארכיטקטוניות, לרוב שלא לצורך, ותמיד על חשבון שימושיות היישום. דוגמה קלאסית לכך היא מקרה בו, על מנת להעביר Message בין מספר שלבים ביישום, נבנתה שרשרת שלמה של תורי MSMQ ומנגנוני WF המחליטים על היעד הבא של ה- Message, כאשר בבדיקה פרטנית התברר שאין צורך לא בזה ולא בזה, ושימוש בקריאות ישירות היה מפשט את היישום, מסייע לביצועים ולא פוגע כהוא זה בפונקציונליות המערכת.

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

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

 

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

העיפו מבט כאן – מאוד יתכן שנוכל לסייע לכם. נשמח לעשות זאת!

איך נשפר את ה- caching לדפים סטטים

אתם מפתחים אתר אינטרנט ואתם רוצים לשפר בו ביצועים?
נראה לכם שכבר עשיתם הכל?
הנה עוד דבר קטן שאפשר לנסות...
caching לדפים סטטים (JS, CSS, Images וכו').

[אני אדבר על קבצי JS, אך הכל נכון גם לסוגי הדפים האחרים]

כברירת מחדל, הדפדפן שלכם מבצע caching באופן הבא:
בכל פעם שהוא נדרש "להוריד" דף מהשרת, הוא בודק האם הדף קיים ב- cache המקומי שלו.
הבדיקה מתבצעת עבור כל ה- url , כולל הפרמטרים.
אם הדף לא נמצא ב- cache, הדפדפן ניגש לשרת ו"מבקש" את הדף.
אם הדף כן נמצאב-cache, הדפדפן ניגש לשרת ו"מבקש" את הדף ומוסיף ב – header של הבקשה "שאלה": If-Modified-Since: dd/mm/yyyy hh:MM:ss.
אם השרת מזהה שהדף הקיים אצלו לא שונה מאז התאריך הנקוב ב- request הוא לא מחזיר את הדף המבוקש, אלא מחזיר לדפדפן סטטוס  304(Not Modified). הדפדפן "מבין" שהדף שקיים אצלו ב- cache עדיין עדכני ומשתמש בו.

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

אז מה אפשר לעשות?
בואו נראה איך אי יכול "לחסוך" את הגישות המיותרות לשרת...

כאשר אני בונה את האתר אני אגדיר ספריית Scripts שבה אמקם את קבצי ה - JS שלי.
בשרת ה - IIS אני יכול הגדיר לספרייה content expiration. יש 2 אפשרויות:
לפי תאריך – כך, כאשר הדף ירד לדפדפן הוא ירד עם הנתון של "עד איזה תאריך הקובץ יכול להיות ב - cache", כך שעד תאריך זה, הדפדפן לא יגש לשרת לבקש את הדף, אלא יקח אותו ישירות מה - cache. לאחר תאריך זה, הדפדפן יחזור להתנהגות ברירת המחדל של בדיקת cahce עם סטטוס 304.
content_expiration_date
החסרון של ההגדרה הזו הוא שקשה להגדיר תאריך, אלא אם יודעים מתי הגרסה הבאה מתוכננת. בנוסף לכך זה דורש כל פעם לגשת לשרת ה - IIS ולעדכן את התאריך.

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

אז מה עוד אפשר לעשות?
אחת השיטות המקובלות היא כתיבת url של דף עם פרמטר שהוא מספר הגרסה של המערכת:
<script src="myscript.js?v=1.4.6"/>
בנוסף לכך, הגדרת התאריך ב - content expiration לכמה שנים קדימה, כך שבעצם ה- url תמיד יילקח מה - cache.
וכאשר מעלים גרסה חדשה של האתר, ה - url ישתנה (מכיוון שהוא כולל מספר גרסה) וכך הדפדפן ייגש לשרת לקחת דף חדש, שגם הוא יכנס ל - cache עד קץ הדורות

החסרונות של פתרון זה הם לפחות 2:
- אנחנו "מנפחים" את ה - cache של הדפדפן.
- האם כל פעם כשמעלים גרסה נעבור על כל ה - urls ונעדכן את מספר הגרסה?

אז ככה, לגבי הבעיה הראשונה, במידה מסוימת אפשר להתנהג כבת יענה (לטמון ראשינו בחול).
לגבי הבעיה השנייה:
ניתן לייצר את הגדרת ה - Script ע"י הפונקציה RegisterClientScriptInclude() מתוך דף ה - aspx, כך בכל פעם תחולל תגית ה- script מחדש עם ה - url ומספר הגרסה הנוכחי. דוגמא:
Page.ClientScript.RegisterClientScriptInclude("myjscriptfilekey", "/myscript.js?v="+GetVersion());

אפשרות נוספת היא הגדרת server control שמייצר את תגית ה - script.
היתרון בפתרון זה הוא שהוא נותן למתכנת תחושה שהוא רגיל אליה - כתיבת תגית ה- script בתוך ה - Head בעצמו, אך מכיוון שזהו server control התגית תחולל כל פעם מחדש עם הגרסה העדכנית.

דוגמא ל – server control:

    public class Script : Control
    {
        [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "Execution")]
        protected override void Render(HtmlTextWriter output)
        {
            Version v = GetMyApplicationVersion();
            output.AddAttribute(HtmlTextWriterAttribute.Src, this.Url+"?v="+v.ToString());
            output.AddAttribute("type", "text/javascript");
            output.RenderBeginTag(HtmlTextWriterTag.Script);
            output.RenderEndTag();
            output.Flush();
        }

        [UrlProperty()]
        public string Url
        {
            get
            {
                String url = (String)ViewState["Url"];
                return ((url == null) ? String.Empty : url);
            }

            set
            {
                ViewState["Url"] = value;
            }
        }
    }   

וכך נשתמש בו בתוך דף ה - aspx:
<mcs:Script Url="MyScript.js" runat="server"/>

וזה מה שירונדר:
<script src="MyScript.js?v=1.0.3630.23231" type="text/javascript"></script>

 

יש לכם רעיונות נוספים/אחרים איך לשפר את הביצועים?

 

בהצלחה,

טל

 

שירותי MCS רלוונטיים

  • (PDF) שירות ניתוח פערים ושיפור ביצועים
  • (PDF) שירות תכנון וניתוח בדיקות ביצועים
  • (PDF) סדנת פיתוח מערכות מונחה ביצועים
  • SPECIAL ANNOUNCEMENT: P&P is Coming to Town!

    WARNING: Teaser ahead…

    We are very pleased to announce the upcoming arrival of patterns & practices to Israel on the beginning of February, 2010. MCS (Microsoft Consulting Services) Israel is proud to host the first ever Israeli P&P Summit for the benefit of our local customers and partners community.The summit is an exclusive 2-days event designed for technical decision makers (Architects, CTOs, Senior Team Leaders and whoever considers himself as a senior professional in this area) and focused on software architecture, SDLC methodologies and market trends.Number of seats is limited, if interested - be sure to register as soon as possible. Final dates and agenda are still being finalized. Meanwhile, if you’re interested, please contact us via Email.We hereby announce an early-bird special offer valid until the end of December, 2009. With this special offer, a discounted price of 2,995 NIS will be available to those who register before the end of this month!

    patterns & practices

    The patterns & practices team consists of experienced architects, developers, writers, and testers. The group works openly with the developer community and industry experts, on every project, to ensure that some of the best minds in the industry have contributed to and reviewed the guidance as it is being developed. p&p is responsible for many familiar guidance books and frameworks such as Application Architecture Guide, Enterprise Library, CAB, PRISM, Unity, and many many more.

    Microsoft Consulting Services

    The MCS Israel group is a professional services group focused on innovative and complex projects in the Israeli market. MCS consists of 20 top experts in software architecture, infrastructure architecture, management tools, business intelligence, database, collaboration tools and more. The group’s mission is to assist Microsoft’s customers and partners in successfully delivering cutting edge Microsoft technology based solutions.

    Looking forward to see you in our event!
    -The MCS team

     

    מיקרוסופט Azure – תסריטי שימוש

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

    אפשרות 1 – חוצץ אבטחת מידע

    אני חושב על Azure כעל מעין DMZ בענן. בתסריט הזה המשתמשים עובדים ישירות מול אפליקציה שלי שאני מארח ב-Azure אך למעשה האפליקציה היא ריקה מתוכן ורק מהווה proxy לאפליקציה שלי שאני מארח אצלי בבית. האפליקציה בבית לא נגישה למשתמשים ישירות מאינטרנט אלא היא נגישה ל-proxy שלי המתארח ב-Azure. הנה הוצאתי שירותי DMZ שלי לענן :). זה יכול לעבוד בצורת Request/Response או אפילו בצורה Pub/Sub. במקרה של Pub/Sub אפילו ה-proxy לא יכול לפנות לאפליקציה הפנימית אלא האפליקציה הפנימית מושכת בקשות מ-proxy ומחזירה תשובות חזרה אליו, זה אפילו יותר מאובטח. כאן אני חוסך כסף על סביבת DMZ עם כל נושא של Firwalls, חומרה וכמובן היועצים :)

    אפשרות 2 – עמידה בעומסים פתאומיים

    התסריט הזה יותר Straightforward – כל ספק ענן שם דגש על זה. אחד הויכוחים המרכזיים בבניית אפליקציה שאמורה לתת מענה להרבה משתמשים זה Capacity Planning עבור כל הרכיבים שלה. זה ויכוח קשה והכי מתסתכל שעד שלא פורסים על אמת לא בדיוק יודעים אם התכנון הוא נכון. ואם הוא לא [בלא מעט מקרים] אז יש הפסדים על חומרה, זמן, וכמובן יועצים :)

     

    מה התסריט שאתה חשבת עבור ענן שלנו ושמו Azure?

    שירותי MCS רלוונטיים

    חומר רלוונטי

     

    שמי אליק לוין ואני מתרכז ב- Architecture, Security, and Performance באפליקציות Net.

    בזמני הפנוי אני מפתח את עצמי בתחומים רבים אחרים.

    This template is made with PracticeThis.com plugin for Windows Live Writer

    MCS and ISV’s Collaborations

    As you all know MCS works with a divers range of customers from enterprises, government, finance, education, military and more.

    I would like to show the collaboration we have with an ISV.

    Microsoft and SAP has been working together for a number of years in various areas including product development.

    Products like: Duet, PDK for .NET and ESE for .NET (Enterprise Services Explorer for .NET)

    MCS Israel and SAP Israel has been working together to produce the PDK for .NET for a while now. SAP is the one that develops and owns the product, but with the assistance of MCS Israel with Best Practices on how to maximize and leverage Microsoft products and the specific knowledge of Visual Studio extensibility model.

    This means the product is coming out to the market in a shorter development time, this is due to the responsiveness to various technical questions and the close collaboration MCS has with Microsoft product groups.

    The PDK for .NET is an add-on to Visual Studio, that allows a .NET developer to develop .NET iView’s for the SAP Netweaver product (2004 and 7.0).

    I would like to introduce the latest version of the PDK for .NET (PDK 3.0) which came out just a couple of weeks ago. This version lets you target Visual Studio 2008 and .NET Framework 3.5, which lets developers leverage the capabilities of Visual Studio framework multi targeting and the new features in .NET Framework 3.5, like: LINQ, etc.

    MCS and SAP has worked real hard on making this version backward compatible. This one version can be installed on Visual Studio 2008 and on Visual Studio 2005 as well.

    You can download this version from SAP’s Service Market Place (SMP).

    Does your company wants to extend Visual Studio ?

    Talk to us, we will help you do it faster and better :-)

    ביצועים - drill to the Stored Procedures

     

    יש אצלנו בחור נודניק (נאמר רק שראשי התיבות של שמו הנם א"ל) שכל פעם מתלהב כשאני מראה כמה קל לעשות ניטור בסיסי של ביצועי SQL. 

    בלוג זה בא כמובן בהמשך לבלוג SQL Server  - ביצועים שנתן את הבסיס.

    אז הנה הא"ב ל unit test של משפטי SQL או Stored Procedures. חובה לכל מפתח לפני שמספר למישהוא שהוא סיים פיתוח, ובוודאי לפני בדיקות.

    • שלב ראשון: הפעילו profiler, אשרו את SQL:BatchCompleted, RPC:Completed , בטלו את שאר האפשרויות
    • שלב שני: הקליטו את המערכת וזהו שאילתות הצורכות IO מסיבי (יחסית כמובן), נניח reads > 5000 (פילטר יכול לעזור)
    • שלב שלישי: העתיקו את הפקודה ל SSMS, הפעילו Set Statistics IO ON, והריצו
    • שלב אחרון: הסתכלו בפלט ובסבירות גבוהה תראו אם יש לכם פעילות לא יעילה מול מסד הנתונים

    טוב, ידעתי שתשאלו, איך נדע מה זה פעילות לא יעילה – שני טיפים לפני שתלכו ל DBA:

    1. הרבה פעולות קריאה על טבלא - בד"כ חסר אינדקס
    2. הרבה scans על טבלא – בד"כ שדות חסרים באינדקס קיים

    ארכיטקט-ידיים-מלוכלכות, מס’ 4 – קומפילציה דינאמית הורגת את המפתחים

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

     

    בהתחלה חשבנו על איטיות ב-Backend ומהר מאד ראינו שזה לא המקרה. השתמשנו ב-Netmon לצורך כך.

    אחרי כמה הרהורים חשבנו כי הזמן מתבזבז על Serialization או Dynamic Compilation. במקרה הזה מופעל CSharp Compiler – פעולה לא הכי קלה בעולם.

    כדי לנטר פעילות של ה-Compiler השתמשנו בכלי חינמי מצויין – Procmon. פילטרנו אותו להאזין לתהליך של w3wp.exeכאשר הוא ניגש ל-csc.exe, הקומפיילר. זה מה שראינו:

    image

    האם גם אתה מזהה פער של 3 שניות בין שתי שורות האחרונות? שורה לפני האחרונה – תחילת ריצה של קומפיילר, ושורה אחרונה דיווח לוג על סיום הריצה של קומפיילר.

    את התמונה הזו ראינו 18 פעם, תכפיל ב-3 שניות כל אחת – קיבלת איטיות של דקה, בום!

    כשפתחנו את הקוד – ראינו הפעלה ישירה של ComileAssmeblyFromDom.

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

     

    אז מי הלקוח כאן? :)

    שירותי MCS רלוונטיים

    חומר רלוונטי

     

    שמי אליק לוין ואני מתרכז ב- Architecture, Security, and Performance באפליקציות Net.

    בזמני הפנוי אני מפתח את עצמי בתחומים רבים אחרים.

     

    This template is made with PracticeThis.com plugin for Windows Live Writer