tag:blogger.com,1999:blog-38504280246444631852024-02-07T18:35:58.416-08:00 Cloud Computing Notes<br><br> Share realworld experience on Microsoft Windows Azure Cloud Computing platformDanhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.comBlogger19125tag:blogger.com,1999:blog-3850428024644463185.post-66208628637782676242013-10-14T17:41:00.000-07:002013-10-14T17:42:34.975-07:00Office 365 app and Azure AD app<span style="font-size: large;">Both Office 365 and Azure AD offer application model as an extension mechanism. The two app models are a little bit similar, and I see an increasing trend that these two app models merge into one inclusive app model. After all, in either Office store and Azure AD app gallery, you are selling to the same group of business customers who own an 'onmicrosoft.com' identity.</span><br />
<span style="font-size: large;"></span><br />
<span style="font-size: large;">There are, however, some notable differences between these two models. The AAD is more developer oriented as it focuses on pure Graph API, while O365 tries to make you a small add-on to some enclosed O365 system. Even though O365 also supports user-less pure API access, it doesn't actively promote this approach. </span><br />
<span style="font-size: large;"></span><br />
<span style="font-size: large;">As a developer, you'd better know all your options and chose the most suitable integrating capabilities that the system has to offer.</span><br />
<span style="font-size: large;"></span><br />
<span style="font-size: large;">This is why I created this O365_AAD_Demo project, to demonstrate all possible integration scenarios. </span><br />
<ul><span style="font-size: large;">
</span>
<li><span style="font-size: large;">The Store Web App is both an O365 app and an AAD app; </span></li>
<span style="font-size: large;">
</span>
<li><span style="font-size: large;">It calls both SharePoint /_api and AAD graph API;</span></li>
<span style="font-size: large;">
</span>
<li><span style="font-size: large;">It can be invoked either from within O356, the canonical approach, or from outside of O365, the supported but not well documented approach.</span></li>
<span style="font-size: large;">
</span>
<li><span style="font-size: large;">It supports both user-intervened access, and user-less access (enabled by caching refresh token)</span></li>
<span style="font-size: large;">
</span>
<li><span style="font-size: large;">Lastly, the O365 and AAD shares the same 'onmicrosoft.com' domain, representing the same business entity.</span></li>
<span style="font-size: large;">
</span></ul>
<span style="font-size: large;"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCj5xe5NTJaYPC5Ybr4AJIFgJQ8LCIZuI_RrMVbbQloexs6Roi61GBwJ393cNjYGcFbIqdN2LlA4fsiWcQCpcqc3BkoVsjjoyWfDw_dy7oBVYQRns8RzRTO_-xXQWCLKj90zk7HOTRwS8I/s1600/O365_AAD_Demo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-size: large;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiCj5xe5NTJaYPC5Ybr4AJIFgJQ8LCIZuI_RrMVbbQloexs6Roi61GBwJ393cNjYGcFbIqdN2LlA4fsiWcQCpcqc3BkoVsjjoyWfDw_dy7oBVYQRns8RzRTO_-xXQWCLKj90zk7HOTRwS8I/s640/O365_AAD_Demo.jpg" width="640" /></span></a></div>
<span style="font-size: large;"></span><br />
<span style="font-size: large;">As always, you can find the full source code in the code share folder. </span><a href="http://sdrv.ms/15U0N9K"><span style="color: #2288bb; font-size: large;">http://sdrv.ms/15U0N9K</span></a>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-11167871309839706012013-09-25T10:26:00.003-07:002013-10-15T16:27:07.985-07:00Simplification is the ultimate sophistication<b style="text-align: right;"><i><span style="font-family: Georgia, serif; line-height: 107%;"><span style="font-size: large;">"Simplification
is the ultimate sophistication." - Steve Jobs</span></span></i></b><br />
<b style="text-align: right;"><i><span style="font-family: Georgia, serif; line-height: 107%;"><span style="font-size: large;"><br /></span></span></i></b>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">After doing many software projects, I found out that I've always been trying to the same thing: Simplify unnecessarily complex designs. Not only to simplify the architecture design, but also to simplify the way we communicate the solution. Real masterpiece is like an art: Intuitively simple, while ultimately sophisticate.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">This philosophy resonates well with SOA design principles. Good design encapsulates intrinsic complexities within its own boundary, while delivers promised capabilities through a very simple interface. Simplicity also fosters other key characteristics of a well-designed online system: reliability, scalability, performance, agility and manageability. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">Designing simple requires profound understanding of innate complexities. It’s a long but rewarding journey, that worth pursuing by every self-esteem designer.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">This folder (http://sdrv.ms/15U0N9K) contains codes and documents of open source projects I've worked on. Every one of them embodies the same simplification spirit that I fully embrace.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;">Enjoy the beauty of simplicity!</span>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-50176845656060627402013-07-16T12:08:00.004-07:002013-08-07T10:41:26.050-07:00Gateway Service<span style="color: #444444; font-family: inherit; font-size: large;">Gateway is a design pattern, which enables authentication, routing, monitoring, A/B and other infrastructural capabilities that you can add to your web site in a service injection manner. </span><br />
<span style="color: #444444; font-size: large;"></span><br />
<span style="color: #444444; font-family: inherit; font-size: large;">
By service injection, you don’t need to change your code much, as there is no direct dependency between the Gateway and your web site. You just use the Gateway as a service.</span><br />
<span style="color: #444444; font-size: large;"></span><br />
<span style="color: #444444; font-family: inherit; font-size: large;">
Gateay Live testing sites:</span><br />
<span style="color: #444444; font-family: inherit; font-size: large;"><a href="https://dangateway.cloudapp.net/"><span style="color: blue;">https://dangateway.cloudapp.net</span></a> </span><br />
<span style="color: #444444; font-family: inherit; font-size: large;">(username/password): user1@danyang.onmicrosoft.com/test@123 , user2/test@123</span><br />
<span style="color: #444444; font-family: inherit; font-size: large;">User1 will be routed to East, User2 to West</span><br />
<span style="color: #444444; font-size: large;"></span><br />
<span style="color: #444444; font-family: inherit; font-size: large;">
Gateway Source Code: <a href="http://sdrv.ms/12RSZjM">http://sdrv.ms/12RSZjM</a> </span><br />
<span style="color: #444444; font-family: inherit; font-size: large;"></span><br />
<span style="color: #444444; font-family: inherit; font-size: large;"></span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDaOgG18Rm4_VbacHkqm9V2s6eahkq-yF6siThrmtkLCzbUD6Bx0o2BcQC-ePaGli9pl1VXL7lEZ1l1OctW6caALuffz9fTdaA7b_Sz3b5a-pwGHPYzogXGxeiYGpI2TNnboSN5rp7M38G/s1600/Gateway.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: #444444; font-family: inherit; font-size: large;"><img border="0" height="359" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDaOgG18Rm4_VbacHkqm9V2s6eahkq-yF6siThrmtkLCzbUD6Bx0o2BcQC-ePaGli9pl1VXL7lEZ1l1OctW6caALuffz9fTdaA7b_Sz3b5a-pwGHPYzogXGxeiYGpI2TNnboSN5rp7M38G/s640/Gateway.png" width="640" /></span></a></div>
<span style="color: #444444; font-family: inherit; font-size: large;"></span><br />Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-84909004255921827352013-07-16T12:01:00.003-07:002013-08-07T10:42:49.260-07:00Project Cloud Service Fundamentals<span style="color: #444444; font-family: inherit; font-size: large;">Cloud Service Fundamentals (CSF) is an open source project created by Microsoft Azure CAT team. The purpose is to provide best practices on dealing with common Azure project challenges: SQL Azure Retry, SQL Sharding, Logging, Telemetry, Configuration, Caching, Server Affinity, etc.</span><br />
<br /><span style="font-family: inherit;"><span style="color: #444444; font-size: large;">
The project can be found at http://code.msdn.microsoft.com/windowsazure/Cloud-Fundamentals-in-1a3ab1bd</span></span><br />
<span style="color: #444444; font-family: inherit; font-size: large;">Here is a decoupled and componentized version of CSF. The CSF project is decoupled into 4 components: Common Library, CSF Social Web App, Telemetry and Gateway.</span><br />
<br /><span style="font-family: inherit;"><span style="color: #444444; font-size: large;">
Live testing sites:</span></span><br />
<span style="color: #444444; font-family: inherit; font-size: large;">•CSF Web App: <a href="http://dancsf.azurewebsites.net/"><span style="color: #3d85c6;">http://dancsf.azurewebsites.net/</span></a></span><br />
<span style="color: #444444; font-family: inherit; font-size: large;">•Telemetry Report: <a href="https://5zjgywiud3.reporting.windows.net/ReportServer">https://5zjgywiud3.reporting.windows.net/ReportServer</a> dan/test@123</span><br />
<span style="color: #444444; font-family: inherit; font-size: large;">•Gateway: <a href="https://dangateway.cloudapp.net/"><span style="color: #3d85c6;">https://dangateway.cloudapp.net</span></a> user1@danyang.onmicrosoft.com/test@123</span><br />
<span style="color: #444444; font-family: inherit; font-size: large;">•Code: <a href="http://sdrv.ms/12RSXID">http://sdrv.ms/12RSXID</a> (CSF) , <a href="http://sdrv.ms/12RSZjM">http://sdrv.ms/12RSZjM</a> (Gateway)</span><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7eu_K6JjdubK0VBQMtDpKRvsWrd70i98FHY1yMgCbyfddlXoyIqvC5jowGYBP94Z3AhZ6pjhyphenhyphenJnzyElGa_xR8ioZRyfJyheTIlJIDIipVQrSW5MuGMGipn51BzaQdzlAYuHNRG_yJQd_l/s1600/CSF+Deployment.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="color: #444444; font-family: inherit; font-size: large;"><img border="0" height="317" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg7eu_K6JjdubK0VBQMtDpKRvsWrd70i98FHY1yMgCbyfddlXoyIqvC5jowGYBP94Z3AhZ6pjhyphenhyphenJnzyElGa_xR8ioZRyfJyheTIlJIDIipVQrSW5MuGMGipn51BzaQdzlAYuHNRG_yJQd_l/s640/CSF+Deployment.png" width="640" /></span></a></div>
<span style="color: #444444; font-family: inherit; font-size: large; language: en-US; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-color-index: 1; mso-fareast-theme-font: minor-fareast; mso-font-kerning: 12.0pt; mso-style-textfill-fill-alpha: 100.0%; mso-style-textfill-fill-color: black; mso-style-textfill-fill-themecolor: text1; mso-style-textfill-type: solid;"></span><br />Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-6748192634755298292013-05-16T17:31:00.001-07:002013-05-16T17:31:50.877-07:00Choices of deployment on Windows Azure<span style="font-size: large;">Azure provides many choices of deployment, for both web/application servers and database servers. You will never fully appreciate how powerful these choices are, unless you actually played with it. </span><div>
<span style="font-size: large;"><br /></span></div>
<div>
<span style="font-size: large;">Last week, I played with it as part of a load test project, and I was amazed by its capability even though I presented these features individually many times before.</span></div>
<div>
<span style="font-size: large;"><br /></span></div>
<div>
<span style="font-size: large;">My test setting is a very typical LOB web application. ASP.NET web tier, SQL Database, plus IE or Visual Studio load test client running on laptop. I tried many different deployment options, and compared the performance differences. It's very easy to switch from one deployment to another. Just a few clicks on the Azure management portal or simply republish the project from Visual Studio. Here are my learning.</span></div>
<div>
<span style="font-size: large;"><br /></span></div>
<div>
<span style="font-size: large;"><u>Overall design</u>:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-b5H9LNseaNAlv35Rnv6ZryjoadxS76kaVIK13TG67BpwvooajTPlrzigVEahdZ8VGXwElTsD3dLOGUeknsDVafrGX__XPygxxjMx8s4I6iHJay3izDSWmvjib4YIp79zRwWKysnbD8mL/s1600/DanWebPerfTest.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-b5H9LNseaNAlv35Rnv6ZryjoadxS76kaVIK13TG67BpwvooajTPlrzigVEahdZ8VGXwElTsD3dLOGUeknsDVafrGX__XPygxxjMx8s4I6iHJay3izDSWmvjib4YIp79zRwWKysnbD8mL/s640/DanWebPerfTest.jpg" width="640" /></a></div>
<div>
<span style="font-size: large;"><br /></span></div>
<div>
<span style="font-size: large;"><u>Deployment Options</u>:</span></div>
<div>
<span style="font-size: large;"><b>Website</b>: Azure Website free tier, Azure Website reserved instances, Web Role instances, multiple number of instances</span></div>
<div>
<span style="font-size: large;"><b>SQL</b>: Azure SQL Database, SQL Server in Azure VM, multiple sizes of VMs</span></div>
<div>
<span style="font-size: large;"><b>Load test client</b>: laptop, Azure IaaS VM</span></div>
<div>
<span style="font-size: large;">Network: Virtual Network, or not</span></div>
<div>
<span style="font-size: large;"><br /></span></div>
<div>
<span style="font-size: large;"><u>Performance findings</u>:</span></div>
<div>
<ul>
<li><span style="font-size: large;">Azure website free tier, performance quota will soon be blown, and request will be rejected. </span></li>
<li><span style="font-size: large;">Azure website reserved instance, and Web role instance. Performance is comparable between these two options. Both can scale pretty well, and performance is stable.</span></li>
<li><span style="font-size: large;">SQL Server in VM. Tried different file placement. There is some perf improvement by moving log/temp files to other disks, however the improvement is not significant. Need further investigation.</span></li>
<li><span style="font-size: large;">SQL Server in VM. Switching to bigger VM significantly improves performance.</span></li>
<li><span style="font-size: large;">SQL Azure vs. SQL Server. This is the most interesting part. SQL Azure 1 GB Database achieved comparable performance as SQL Server in Middle sized VM. The price of SQL Azure is only 1/10 of that of SQL Server in this configuration. The result should be related to my testing workload (a mixture of read/update/insert against NopCommerce web), and should not be generalized without further investigation.</span></li>
</ul>
</div>
<div>
<span style="font-size: large;"><br /></span></div>
Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-19661267853235157062013-03-18T15:14:00.002-07:002013-03-18T15:14:40.804-07:00Bowlus for AWSTo learn the upcoming Azure IaaS Virtual Machine, I decided to migrate Cloud Samurai project (code named Bowlus) to IaaS infrastructure. Since Azure IaaS is not GA yet, I did this first on Amazon AWS. This also gave me an opportunity to learn and compare the IaaS offering from both Azure and Amazon.<br />
<br />
After the initial redesign for IaaS, I found the benefit of IaaS is rather obvious:<br />
<br />
<ul>
<li>Use the more mature IIS Web Deploy cmdLine tool to provision web site, instead of update IIS configure file directly.</li>
<ul>
<li>Updating IIS configure file is a little bit dangerous, and it will cause troubles when concurrent access is not managed well.</li>
<li>Web Deploy is mature tool which is also used in Visual Studio to deploy web site to Azure. </li>
<li>Using Web Deploy generates deployment logs, which helps diagnosis and auditing.</li>
<li>De-provisioning web site using Web Deploy is also cleaner and safer.</li>
<li>This is only possible under IaaS, since you have to pre-install Web Deploy tool and other dependent services in the VM.</li>
</ul>
<li>Reduce two layers: routing + hosting, into one layer. The design is thus more simple and robust.</li>
<ul>
<li>This change might also work in PaaS. Need further investigation.</li>
<li>IaaS gives us more flexibility to manage end points on each VM, and thus makes this design change more natural.</li>
</ul>
</ul>
This is the live test link:<br />
<br />
<div class="MsoNormalCxSpFirst" style="line-height: 105%; margin-bottom: 8.0pt; margin-left: .5in; margin-right: 0in; margin-top: 0in; mso-add-space: auto;">
<a href="http://bowlus-2127885525.us-east-1.elb.amazonaws.com:8080/admin/">http://bowlus-2127885525.us-east-1.elb.amazonaws.com:8080/admin/</a><span style="color: #1f497d;"><o:p></o:p></span></div>
<br />
This is the new design for AWS:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtdXuNRXGZNercAIVepwzaiGN9LgHEJcAN7Z4wDljs_9VNXF1M3UVh3C1nctKRjE7BoKSIfw7bugjW8pd4E0tgpzWrFf1LE-IJeNp8x_geKwe8YumiLV_DpUkg_ae-lO569pBr0jxGJAZU/s1600/Cloud+Samurai+(2012.12.25).jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtdXuNRXGZNercAIVepwzaiGN9LgHEJcAN7Z4wDljs_9VNXF1M3UVh3C1nctKRjE7BoKSIfw7bugjW8pd4E0tgpzWrFf1LE-IJeNp8x_geKwe8YumiLV_DpUkg_ae-lO569pBr0jxGJAZU/s1600/Cloud+Samurai+(2012.12.25).jpg" height="480" width="640" /></a></div>
<br />Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com2tag:blogger.com,1999:blog-3850428024644463185.post-43372007217923688572012-11-28T14:41:00.003-08:002012-11-28T14:41:53.064-08:00Understand Persistent VM Disk (2)Since all persistent PVM disks are eventually stored in blob storage, there must be a way to manage these disks and the .vhd files in the blob storage. The tools and portal to manage these are simple and straight forward, but understanding below key concepts would be very helpful for you to use those tools. <br />
<br />
There are three stages of a .vhd file or a PVM disk:<br />
<ol>
<li><strong>raw .vhd file</strong> in blob storage (use any blob explore tool to manage this)</li>
<li><strong>.vhd files recognized</strong> by PVM as disks (use Azure portal to create/delete disk)</li>
<li><strong>PVM disk attached</strong> to a PVM instance (use Azure portal to attach/detach disk)</li>
</ol>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM8ROPTvct3rcwLgLO7pXO2X8-DigeEmU00ihqUYYopKiqdQkfW0ajlFxnMa32AP4KUc8qp2Ca-Yz3P-Wgg6E6wSNjag6ME9S_K_6Lf5zqsweGHYdPcvFMrKpBgPP8gt38Sj7zG73aR3Ch/s1600/pvm+disk.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="324" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM8ROPTvct3rcwLgLO7pXO2X8-DigeEmU00ihqUYYopKiqdQkfW0ajlFxnMa32AP4KUc8qp2Ca-Yz3P-Wgg6E6wSNjag6ME9S_K_6Lf5zqsweGHYdPcvFMrKpBgPP8gt38Sj7zG73aR3Ch/s640/pvm+disk.jpg" width="640" /></a></div>
<br />
<strong>O/S disk vs. Data disk</strong>: this is decided when you recognize a raw blob file as a disk. O/S disk can be used to create a VM instance.<br />
<br />
<strong>Image vs. Disk</strong>: Image is "sysprepared" O/S disk. You can use either Image or O/S Disk to create a VM instance. If you use O/S Disk, all the old user name, machine name etc. persist, while everything is as from scratch if you use Image.Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-46843085253127906562012-11-28T14:20:00.000-08:002012-11-28T14:20:08.689-08:00Understand Persistant VM disks (1)Persistent VM (PVM) is Azure's IaaS offering comparable to Amazon's EC2. Unlike EC2 which uses local disks for the majority of the time, PVM uses Azure blob storage to store disks. This design has multiple implications. <br />
<br />
On the good side, your data in the disks are more reliable, as every Azure blob automatically has 3 local copies which are always synchronized and another 3 copies in a different data center 100+ miles away which is delay synchronized. On the bad side, the disk I/O performance might be impacted. For this reason, PVM do use both Azure blob backed disks and local only disks to optimize the disk I/O, so it's important to understand where each disk lives. Below is the explanation:<br />
<br />
<strong>C: disk is the OS disk. Persisted in blob storage.</strong><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlR1nk73BL9m1l9UnGu_y1S3vKOiUDfQVOyP9U8bLnXd1VnQ4L0lUNR5Wul2o7q9RftFYG2uSpCwRmOxc5FMKrlEOJrRvPWzXCMFwTyEU5A9p3L2fxQlwDznjMrMjOX55jUACOr5glyDW_/s1600/pvm-c.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="288" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlR1nk73BL9m1l9UnGu_y1S3vKOiUDfQVOyP9U8bLnXd1VnQ4L0lUNR5Wul2o7q9RftFYG2uSpCwRmOxc5FMKrlEOJrRvPWzXCMFwTyEU5A9p3L2fxQlwDznjMrMjOX55jUACOr5glyDW_/s640/pvm-c.png" width="640" /></a></div>
<br />
<strong>D: disk is local disk. Not persisted, but very fast.</strong><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVsNXz3oLCwBBgj9Zzk5nIyU9F4nlZN5OW9WodTBQVLj-yzmtNqNIQ5FfoMWRQ3gQWSj2yVCoukxzBPKa3GP_brXn6oQdo8mqcQIzSgzUe6KK666tpd5W6121OIXSzaJaMSU9VAFOUnj2e/s1600/pvm-d.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVsNXz3oLCwBBgj9Zzk5nIyU9F4nlZN5OW9WodTBQVLj-yzmtNqNIQ5FfoMWRQ3gQWSj2yVCoukxzBPKa3GP_brXn6oQdo8mqcQIzSgzUe6KK666tpd5W6121OIXSzaJaMSU9VAFOUnj2e/s640/pvm-d.png" width="640" /></a></div>
<br />
<strong>F: disk is additional user data disk. Persisted in blob.</strong><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU0h8w49EHYtzgTUHaG_d9g5pdyqTQRl8_0unLxk1T1DmqLlKy9bAdbraIuO9CLIPN1E322JtM6CCObMvr1cQgicpcl5A4GP-A_6xa3JyDOXE-6EPTj3Bw8NDMnXBgcYnfHeeKvAcb1Fxp/s1600/pvm-f.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="282" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjU0h8w49EHYtzgTUHaG_d9g5pdyqTQRl8_0unLxk1T1DmqLlKy9bAdbraIuO9CLIPN1E322JtM6CCObMvr1cQgicpcl5A4GP-A_6xa3JyDOXE-6EPTj3Bw8NDMnXBgcYnfHeeKvAcb1Fxp/s640/pvm-f.png" width="640" /></a></div>
Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-21063819586826480082012-06-15T22:39:00.001-07:002012-06-15T22:40:31.430-07:00Azure Web Site<span style="font-size: large;">When we were developing the CloudSamurai multi-tenant framework, we were aware that there is an official Microsoft project doing the same thing as CloudSamurai using the similar ARR approach. Of course, the MS official project must be more mature and more complete in features. Although, we didn't know when and how this official MS offering would be available.</span><br />
<span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">In the latest Azure June 2012 release, the 'Azure Web Site' is unveiled. This is the MS-self hosted version of high-density share-IIS multi-tenant web site solution. It is expected that the customer-hosted version be released in the next big release. Here is the official description of 'Azure Web Site':</span><br />
<span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">"Quickly and easily deploy sites to a highly scalable cloud environment with the frameworks and open source apps of your choice using Windows Azure Web Sites. Get started for free and scale as you go on a cloud platform that enables automatic scale-out options across shared and reserved instances for greater isolation and performance."</span><br />
<span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">You should also check ScottG's blog for more information:</span><br />
<span style="font-family: "Tahoma","sans-serif"; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-US;"><a href="http://weblogs.asp.net/scottgu/archive/2012/06/07/meet-the-new-windows-azure.aspx"><span style="color: blue; font-size: large;">http://weblogs.asp.net/scottgu/archive/2012/06/07/meet-the-new-windows-azure.aspx</span></a></span>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-58821485439799752322012-04-14T19:12:00.001-07:002012-04-14T19:16:28.229-07:00Messaging VS. Notifying<span style="font-size: large;">Messaging is the basis of all SOA design, however most people don't know the essense of 'Message' in SOA is actrually 'to convey as little information as possible'. If you can convey less infomation but still get the task done, the design would be better than if you convey more information. Because by doing so, you reduced the inter-system dependency.</span><br />
<span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">The essense of 'Message in SOA' is thus not WCF, not SOAP, not Web Service. It's about how to share information between different entities, while try to keep the dependency between entity as little as possible. Some people use xml as message, while transmit a very complex and big xml. It's not a good practice. Sharing little knowledge. The less the better.</span><br />
<span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">In this sense, Notifying would be a better design than Messaging, because Notify only convey a simple code while Message can be very complex. We learned a lot from project Cloud Samurai(</span><a href="http://cloudsamurai.codeplex.com/"><span style="font-size: large;">http://cloudsamurai.codeplex.com/</span></a><span style="font-size: large;">), and thus decided to use Notify rather than Message in the project.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtVmvDCgKmStZ8ha5yIlcPAXLx9Gs4CyoI1SxTaYavGzbCCtHI2bpq73a-FBzGCd3GlaQVBNHJZNhJVZwZUsdzHPKZ9Xlh6htQtdyUErj2fQ_GG1OBqVGdNy0_ByWiruDJmMtT9DS4nZzR/s1600/MessageVSNotify.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtVmvDCgKmStZ8ha5yIlcPAXLx9Gs4CyoI1SxTaYavGzbCCtHI2bpq73a-FBzGCd3GlaQVBNHJZNhJVZwZUsdzHPKZ9Xlh6htQtdyUErj2fQ_GG1OBqVGdNy0_ByWiruDJmMtT9DS4nZzR/s640/MessageVSNotify.png" width="640" /></a></div>
<br />Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-8300961186554181092012-04-14T18:52:00.000-07:002012-04-14T19:20:16.604-07:00Emerging Order<span style="font-size: large;">As we found in several Azure projects, designing complex inter-system interaction is very challenging. Most Azure projects would involve multiple VMs, and multiple components or processes inside each VM, so they are typical inter-system design problems.</span><br />
<span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">SOA (Service Oriented Architecture), although sounds old, is probobaly the most effective way to handle this challenges. However, we need to take a special view through the SOA len. We should emphasis more on Independence. If we can design autonomous and independent components, who can respond to the environment and messages in an intellectural and responsive way, the Order of the inter-system will Emerge as a result. The complex behavior of the inter-system is hard to be designed, rather it will emerge from the group of independent components.</span><br />
<span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">We learned a lot about the principle of Emerging Order from this project.</span><br />
<a href="http://cloudsamurai.codeplex.com/"><span style="font-size: large;">http://cloudsamurai.codeplex.com/</span></a><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0dnC8mp_6bP5m-_ZdioBdE3Nh-sJkvai5gQQgIrwb0LhqFUzneGkkyPGkiQLQ272y0DUSTZ1znomKViImjF3Su1gbR7nDczxcXg1sIAzNojKfwhDMptTnZYHJ9jlZHDXZeOJehVC6VYB7/s1600/Bowlus0.9.5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="428" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0dnC8mp_6bP5m-_ZdioBdE3Nh-sJkvai5gQQgIrwb0LhqFUzneGkkyPGkiQLQ272y0DUSTZ1znomKViImjF3Su1gbR7nDczxcXg1sIAzNojKfwhDMptTnZYHJ9jlZHDXZeOJehVC6VYB7/s640/Bowlus0.9.5.png" width="640" /></a></div>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-21463073121594498422012-02-19T22:08:00.000-08:002012-04-14T19:20:45.683-07:00Use VSTS to load test Azure based app<span style="font-size: large;">How to do load test on Azure based app? Using VSTS in Azure is a natural choice, since both the test rig and servers been tested would be in cloud and be freely scaled out. However, testing with VSTS in Azure today could be painful, mainly due to the network issues. We acturally did such a test recently. Below is our findings. </span><br />
<span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">(The to-be-released new persistent VM role, as well as the improved Azure network capabilities like Brooklyn and internal DNS, will hopefully make the VSTS testing in Auzre much easier in the future.)</span><br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHxGSfvWDj8hTyD3YvMRiDost2FFHvQlSylOA8bayEld7UCgq399KVs5TMhFqS0yZrgXOpmLcW935g6wMHZbCNb49gx2TtwStPu5ID-SbYRLxbi9rKI99o1_t5dS2PCn73VGaeV5RVb-L1/s1600/vsts+test+in+azure.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="486" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHxGSfvWDj8hTyD3YvMRiDost2FFHvQlSylOA8bayEld7UCgq399KVs5TMhFqS0yZrgXOpmLcW935g6wMHZbCNb49gx2TtwStPu5ID-SbYRLxbi9rKI99o1_t5dS2PCn73VGaeV5RVb-L1/s640/vsts+test+in+azure.png" width="640" /></a></div>
<ul>
<li><div class="separator" style="clear: both; text-align: left;">
Can we do VSTS load test from Azure and test App in Azure?</div>
</li>
<ul>
<li>Yes</li>
</ul>
<li>Deployment architecture</li>
<ul>
<li>(this is the design works for us, but not necessarily the best design.)</li>
<li>Test Controller in Azure, worker role</li>
<li>Test Agents in Azure, worker role</li>
<li>Controller and Agents are in the same worker role, on different instances</li>
<li>Use Azure connect to group Test Controller and Test Agents so that they can see each other</li>
<li>VSTS test DB in SQL Azure</li>
<li>App server (being tested) in Azure, whatever role</li>
</ul>
<li>Workarounds and Pains</li>
<ul>
<li>VSTS DB doesn’t work directly in SQL Azure</li>
<li>We used customized DB scripts</li>
<li>Test Rig (Agent/Controller/TestedServer) is very unstable in Azure</li>
<li>Controller may lose connection to Agent. Agent may not start.</li>
<li>If this happens during the test, the test will fail.</li>
<li>We are forced to use only up to 3 agents.</li>
<li>Every time this happens, we need to restart the service in Agents or controller.</li>
</ul>
<li>Hard to collect performance counters</li>
</ul>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-41299462918098073162011-12-02T15:35:00.001-08:002012-04-14T19:21:07.374-07:00An open source multi-tenant framework for Azure cloud<div style="text-align: left;">
</div>
<div style="text-align: left;">
<span style="font-family: Calibri;"><span style="font-size: large;">We developed a <b>Multi-Tenancy Framework</b> for partners
who want to realized multi-tenancy but <b>1) don’t want to make change</b> on
their current single tenant design, or <b>2) want to keep high level of
isolation between tenants</b>, so that to use local cache and allow per-tenant
customization, which is only achievable in on-premise environment before. We
originally developed this for two of our managed partners. Then, we decided to
make it open source, so that everyone can benefit from it. <o:p></o:p></span></span></div>
<div style="text-align: left;">
<span style="font-size: large;"></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="clear: left; float: left; font-size: large; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0wc-oKEGYOLtVLqJwjCE-3II-BUaZv0U6gigTMNp0repksIDyF-Luf7sOnhgvRLBwgMzNwn_08Jq88InxzIlTDU75dnDYLs0GokVlRZi6zSutC57a8h6ltBQt5h-72JhueqdVbBoGnaMe/s640/bowlus.png" width="640" /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Calibri; font-size: large;">It is available now at </span><a href="http://cloudsamurai.codeplex.com/"><span style="color: #3d85c6; font-family: Calibri; font-size: large;">http://cloudsamurai.codeplex.com/</span></a><span style="font-family: Calibri; font-size: large;"> . We just released v0.9 yesterday. Welcome to try and feedback. </span></div>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-11284384781994484602011-12-01T22:41:00.001-08:002011-12-02T15:47:03.301-08:00How to do QA and test in Azure (4)<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><b><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Auto-deployment Tool is very important</span></b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span><br />
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Save
lots of time, test quickly</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Confidence
in testing environment, focus on features</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">You
also gain confidence in the deployment tool, which allows you to deploy more
often, and faster.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.25in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><b><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Small Release, More Often Release</span></b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Integrate
customer feedback into bug fixing</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Drive
better customer experience</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Drive
cost-per-release down</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Release
often. How often? One release every month/week/day ?</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">"One week" worked for some web sites.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">In reality, this should simply be as low as is
practical and useful for the business needs of the group.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">We found that the lower we could get this, the
more flexibility we had in getting changes out to prod quickly and reliably,
getting better customer experiences faster.<span style="mso-spacerun: yes;">
</span></span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">In particular, get really fast at verifying that
things that haven't changed aren't broken. </span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">This will really help with testing things like
adopting new versions of the SDK.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">More-often-and-quicker
release is enabled by</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Good auto-deployment tools.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Well documented deployment and troubleshooting
processes.</span></span></div>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-80498886376149659422011-12-01T22:40:00.001-08:002011-12-02T15:46:37.933-08:00How to do QA and test in Azure (3)<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><b><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Shared nature of cloud test environment</span></b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span><br />
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">It's
not practical for each tester to have his/her own dedicated test environment in
cloud.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Handle
confliction: </span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">No destructive test without prior coordination</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Time management</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Different cloud env for different build</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.25in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><b><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Load test</span></b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">How
to generate enough work load</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Not hard to build a worker role to do this, may
be 3rd party solutions.<span style="mso-spacerun: yes;"> </span></span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">VSTS Load Test Agent/Controller can be used from
on-premises, but you may have network proxies that make this more difficult.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Test
Metrics: the same as web app load test</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Most important is learning how many instances, of
what size, you will need to handle the user load you're expecting, and still
give those users a good experience.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.25in; mso-list: l0 level2 lfo1; tab-stops: list 1.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><b><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Security test</span></b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">All
web app security test practices apply to Azure app</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Assume
every access as an attack</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Everybody
can access your Azure app</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Do
a proper threat model, and follow any applicable security best practices.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-49734765063428978072011-12-01T22:38:00.001-08:002011-12-02T15:46:26.372-08:00How to do QA and test in Azure (2)<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><b><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Test in Cloud Best Practice</span></b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span><br />
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Keep
at least two environments in clouds</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">"Last Known Good" environment</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 99pt; mso-list: l0 level5 lfo1; tab-stops: list 2.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Wingdings; font-size: 10pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Wingdings;"><span style="mso-list: Ignore;">§<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">To
be used for testing, stakeholder demos, or perf/load/stress testing</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">"Latest Build" environment</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 99pt; mso-list: l0 level5 lfo1; tab-stops: list 2.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Wingdings; font-size: 10pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Wingdings;"><span style="mso-list: Ignore;">§<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">May
have any build on it, and may or may not work depending on what ever else is
going on.<span style="mso-spacerun: yes;"> </span></span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 99pt; mso-list: l0 level5 lfo1; tab-stops: list 2.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Wingdings; font-size: 10pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Wingdings;"><span style="mso-list: Ignore;">§<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">This
environment can also be used for any kind of destructive testing, since any
test that shouldn't be interrupted should be run in the "LKG"
environment.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Alternating the environments (Env1 and Env2)</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 99pt; mso-list: l0 level5 lfo1; tab-stops: list 2.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Wingdings; font-size: 10pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Wingdings;"><span style="mso-list: Ignore;">§<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">In
practice, you can get this effect by simply alternating environments that you
deploy your build to.<span style="mso-spacerun: yes;"> </span></span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 99pt; mso-list: l0 level5 lfo1; tab-stops: list 2.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Wingdings; font-size: 10pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Wingdings;"><span style="mso-list: Ignore;">§<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">So
Env1 gets Build 1, Env2 gets Build 2, then Env1 gets Build 3.<span style="mso-spacerun: yes;"> </span>Then, if build 4 fails BVT's in Env2, You'll
still have Build 3 in Env 1.<span style="mso-spacerun: yes;"> </span>Build 5
should then still go to Env2, and this should continue until a stable build
exists in Env2.<span style="mso-spacerun: yes;"> </span></span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 99pt; mso-list: l0 level5 lfo1; tab-stops: list 2.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Wingdings; font-size: 10pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Wingdings;"><span style="mso-list: Ignore;">§<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Ideally,
this means the most recent two builds will always be deployed, unless one build
fails.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">The
cloud test environment should be as "real" as possible.<span style="mso-spacerun: yes;"> </span></span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Best case, you use production versions of all
dependencies, real certificates, real domain names, and production-identical
configuration settings.<span style="mso-spacerun: yes;"> </span></span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">This isn't always practical (for example cache
durations are frequently lower in test than prod to allow content to expire
more rapidly), but the closer you can get to this, the less surprised you'll be
when you go to production.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Do
at least one cloud update each day, or even more often</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">This helps stabilize deployment tools, encourage
cloud-based testing (code won't be too stable to test), and get people familiar
with what can go wrong in the cloud, and how to fix it.</span></span></div>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-27403067959765410332011-12-01T22:20:00.001-08:002011-12-02T15:45:34.663-08:00How to do QA and test in Azure (1)<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 0.25in; mso-list: l0 level2 lfo1; tab-stops: list 41.6pt; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><b><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Where to test: Test in Local vs. Test in Cloud</span></b><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Local:
fast, cheap, but may not be real</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Cloud:
slow, costly, but real</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">General
rule: </span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Do as many test as possible in local</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 99pt; mso-list: l0 level5 lfo1; tab-stops: list 2.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Wingdings; font-size: 10pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Wingdings;"><span style="mso-list: Ignore;">§<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">If
some test can be tested in local, test it in local.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 99pt; mso-list: l0 level5 lfo1; tab-stops: list 2.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Wingdings; font-size: 10pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Wingdings;"><span style="mso-list: Ignore;">§<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">If
some test can't be tested in local, ask yourself: Can we configure the code to
be able to test in local?</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Do more test in cloud than in local</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 99pt; mso-list: l0 level5 lfo1; tab-stops: list 2.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Wingdings; font-size: 10pt; mso-bidi-font-family: Wingdings; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Wingdings;"><span style="mso-list: Ignore;">§<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Especially
in later phases of project, do more tests in cloud than in local</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Tests
to be done in local</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Debug/Functional Test</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">UI Automation Test</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Performance (Profiling only)</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 45pt; mso-list: l0 level3 lfo1; tab-stops: list 1.5in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: "Courier New"; font-size: 10pt; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";"> </span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Test
to be done in Cloud</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Integration</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Load test: scale-out</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Failover. Failover will happen at some point:
know how your application handles it.</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin: 0in 0in 0pt 1in; mso-list: l0 level4 lfo1; tab-stops: list 2.0in; text-indent: -0.25in; vertical-align: middle;">
<span style="font-family: Symbol; font-size: 10pt; mso-bidi-font-family: Symbol; mso-bidi-font-size: 12.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font-size-adjust: none; font-stretch: normal; font: 7pt/normal "Times New Roman";">
</span></span></span><span style="font-family: Calibri;"><span style="font-size: 12pt; mso-ascii-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-font-family: "Times New Roman"; mso-hansi-font-family: Calibri;">Performance (end to end performance, end-user
experience)</span><span style="font-family: "Times New Roman","serif"; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></span></div>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-28081919469158079142011-10-31T17:21:00.000-07:002011-12-02T15:44:16.983-08:00The Essence of Multi-Tenancy<br />
<span style="font-size: large;">The Essence of Multi-Tenancy is <b>Share Resource</b>:</span><br />
<ul><span style="font-size: large;">
</span>
<li><span style="font-size: large;">Share resource -> Share cost -> Low Cost per Tenant</span></li>
<span style="font-size: large;">
</span>
<li><span style="font-size: large;">Car model -> Bus model</span></li>
</ul>
<span style="font-size: large;">There are two forces impact multi-tenancy design: Standardization & Isolation. We must achieve a balance between these two forces based on our particular situation, and achieve a right level of multi-tenancy design.</span><span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">There are several related issues to multi-tenancy design:</span><br />
<ul><span style="font-size: large;">
</span>
<li><span style="font-size: large;">Multi-Tenancy and Scale-Out</span></li>
<span style="font-size: large;">
</span><ul><span style="font-size: large;">
</span>
<li><span style="font-size: large;">Multi-Tenancy: many small tenants share one computing resource</span></li>
<span style="font-size: large;">
</span>
<li><span style="font-size: large;">Scale-Out: one big tenants runs on a cluster of computing resources</span></li>
<span style="font-size: large;">
</span>
<li><span style="font-size: large;">Multi-Tenancy + Scale-Out: many tenants share a pool of clustered computers</span></li>
<span style="font-size: large;">
</span></ul>
<span style="font-size: large;">
</span>
<li><span style="font-size: large;">Multi-Tenancy and Customization</span></li>
<span style="font-size: large;">
</span><ul><span style="font-size: large;">
</span>
<li><span style="font-size: large;">Multi-Tenancy: sharing everything, similarity</span></li>
<span style="font-size: large;">
</span>
<li><span style="font-size: large;">Customization: flexibility, tailor to unique need</span></li>
<span style="font-size: large;">
</span>
<li><span style="font-size: large;">Multi-Tenancy + Customization: Balance</span></li>
</ul>
</ul>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-size: large;"><img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5o6ec24z9ahMVQsG6lL-IIKOS5z57flxBU4Wlrk0HH5y9NViFxOoyUr0X0s9yafSQwPlXNXV6IFz8d4Tc1IZeJUQo1jokhzUY1PtcDqk9ojQ1_V5LoFd8HX0Q_vVBhjfXjjBu_j6o4ECd/s320/multi.jpg" width="320" /></span></div>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0tag:blogger.com,1999:blog-3850428024644463185.post-71966603990668234632011-10-31T16:55:00.000-07:002011-12-02T15:43:15.556-08:00Cloud Computing Notes<span style="font-size: large;">About me: </span><span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">I'm a Developer Evangelist in Microsoft, selling cloud computing technologies to our global software partners. </span><span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">Personally, I believe in cloud computing and I'm confident in Microsoft cloud computing platform Azure. I had to admit that Azure is not perfect: many features are still missing or immature, and the developer experience on Azure is some times painful. So, I blog here to share experience we gained from real world Azure projects. Some experience may be applied to other cloud computing platforms as well. </span><span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">In my spare time, I participate in open source projects: </span><a href="http://cloudsamurai.codeplex.com/"><span style="font-size: large;">http://cloudsamurai.codeplex.com/</span></a><span style="font-size: large;"> and </span><a href="http://cloudninja.codeplex.com/"><span style="font-size: large;">http://cloudninja.codeplex.com/</span></a><span style="font-size: large;">, both of which are about how to use Azure to build cloud applications. </span><span style="font-size: large;"><br /></span><br />
<span style="font-size: large;">In a sense, I'm lucky that I'm doing a job I like, and I'm selling things I really believe to the people I love.</span>Danhttp://www.blogger.com/profile/05525020058680829254noreply@blogger.com0Seattle, WA, USA47.6062095 -122.332070847.485093 -122.4497023 47.727326 -122.2144393