<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sqlblog.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Search results matching tags 'Best Practices', 'Windows Azure', and 'Tips'</title><link>http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&amp;tag=Best+Practices,Windows+Azure,Tips&amp;orTags=0</link><description>Search results matching tags 'Best Practices', 'Windows Azure', and 'Tips'</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>Book Review (Book 11) - Applied Architecture Patterns on the Microsoft Platform</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/05/15/book-review-book-11-applied-architecture-patterns-on-the-microsoft-platform.aspx</link><pubDate>Tue, 15 May 2012 16:50:34 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:43364</guid><dc:creator>BuckWoody</dc:creator><description>&lt;p&gt;This is a continuation of the books I challenged myself to read to help my career - one a month, for year. &lt;a href="http://sqlblog.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"&gt;&lt;span style="text-decoration:underline;"&gt;&lt;span style="color:#0066cc;"&gt;You can read my first book review here&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;, and &lt;a href="http://sqlblog.com/b/buckwoody/archive/2011/06/07/head-in-the-clouds-eyes-on-the-books.aspx" target="_blank"&gt;the entire list is here&lt;/a&gt;. The book I chose for April 2012 was: &lt;a href="http://www.amazon.com/Applied-Architecture-Patterns-Microsoft-Platform/dp/184968054X" target="_blank"&gt;Applied Architecture Patterns on the Microsoft Platform&lt;/a&gt;. I was traveling at the end of last month so I&amp;rsquo;m a bit late posting this review here.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why I chose this book: &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I actually know a few of the authors on this book, so when they told me about it I wanted to check it out. The premise of the book is exactly as it states in the title - to learn how to solve a problem using products from Microsoft.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What I learned:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I liked the book - a lot. They've arranged the content in a "Solution Decision Framework", that presents a few elements to help you identify a need and then propose alternate solutions to solve them, and then the rationale for the choice. But the payoff is that the authors then walk through the solution they implement and what they ran into doing it.&lt;/p&gt;
&lt;p&gt;I really liked this approach. It's not a huge book, but one I've referred to again since I've read it. It's fairly comprehensive, and includes server-oriented products, not things like Microsoft Office or other client-side tools. In fact, I would LOVE to have a work like this for Open Source and other vendors as well - would make for a&amp;nbsp;great library for a Systems Architect. This one is unashamedly aimed at the Microsoft products, and even if I didn't work here, I'd be fine with that. As I said, it would be interesting to see some books on other platforms like this, but I haven't run across something that presents other systems in quite this way.&lt;/p&gt;
&lt;p&gt;And that brings up an interesting point - This book is aimed at folks who create solutions within an organization. It's not aimed at Administrators, DBA's, Developers or the like, although I think all of those audiences could benefit from reading it. The solutions are made up, and not to a huge level of depth - nor should they be. It's a great exercise in thinking these kinds of things through in a structured way.&lt;/p&gt;
&lt;p&gt;The information is a bit dated, especially for Windows and SQL Azure. While the general concepts hold, the cloud platform from Microsoft is evolving so quickly that any printed book finds it hard to keep up with the improvements.&lt;/p&gt;
&lt;p&gt;I do have one quibble with the text - the chapters are a bit uneven. This is always a danger with multiple authors, but it shows up in a couple of chapters. I winced at one of the chapters that tried to take a more conversational, humorous style. This kind of academic work doesn't lend itself to that style.&lt;/p&gt;
&lt;p&gt;I recommend you get the book - and use it. I hope they keep it updated - I'll be a frequent customer. :)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description></item><item><title>Preparation is key to a successful cloud deployment</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/05/01/preparation-is-key-to-a-successful-cloud-deployment.aspx</link><pubDate>Tue, 01 May 2012 13:09:16 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:43122</guid><dc:creator>BuckWoody</dc:creator><description>&lt;p&gt;If you want to be wise, watch the actions and outcomes of others. Emulate the successful actions, and avoid the actions that cause failure. That’s true in life in general - and in technology projects in specific.&amp;#160; &lt;/p&gt;  &lt;p&gt;I’ve worked with several clients who have created or migrated an application to “the cloud” - meaning using Microsoft Windows Azure or another provider. Although the statement in the title of this post is trite, I cannot over-emphasize how accurate it is. In every case of those who had a great experience with a distributed computing environment (which is thankfully the vast majority of my projects), &lt;/p&gt;  &lt;p&gt;What kind of preparation do you need to do? Here are some tips I’ve learned in the successful (and not-so-successful) deployments I’ve seen: &lt;/p&gt;  &lt;h3&gt;Follow standard recommendations for successful projects in general &lt;/h3&gt;  &lt;p&gt;You and your organization have probably done a few projects before - this one should have the same general attributes: a well-defined goal, a small, motivated team, a realistic timeline, and an adequate budget. I know, I know, you *never* seem to get those things - but if you don’t, you’ll fail. Simple as that. &lt;/p&gt;  &lt;h3&gt;Educate yourself&lt;/h3&gt;  &lt;p&gt;Computing technology started out on a single set of hardware for a single purpose - and realizing the limits of the hardware at hand, systems designers quickly realized that scale-out and virtualization was key. No, that’s not new - mainframes almost always worked on the concept of scale-out and virtual machines. But we switched in the 1980’s to single-user systems again, and we’ve been there ever since. By that I mean you install an OS on the things you work on. Now we move back to distributed system concepts, and there are some real differences. You’ll need to learn how those work, and do things a new way. Hey, we’re IT - we LOVE learning new things, right? &lt;/p&gt;  &lt;h3&gt;Get a partner if needed&lt;/h3&gt;  &lt;p&gt;There are a few of us white-haired Gandalf’s around that remember how to work in a distributed system, but if it’s new to you, that’s completely OK. You can save yourself a world of trouble by working with someone who’s done this before - a partner you hire, someone from Microsoft Consulting, whatever. &lt;/p&gt;  &lt;p&gt;And don’t forget support - who will handle each issue, what is the escalation model, who are your contacts at Microsoft, and what is your “light’s out” strategy?&lt;/p&gt;  &lt;p&gt;“A new broom sweeps clean”, the old adage goes, but the old brooms know where the dirt is. &lt;/p&gt;  &lt;h3&gt;Build a model&lt;/h3&gt;  &lt;p&gt;Take some time to do a Proof of Concept on your local system and using your Azure hours from your MSDN account if you have one. Going through this build - and being willing to throw it away and try it a different way - is invaluable. &lt;/p&gt;  &lt;h3&gt;Test your theories&lt;/h3&gt;  &lt;p&gt;Three statisticians are walking in a field. They see a rabbit - the first guy raises his gun, firing far in front of the rabbit. The second guy simultaneously raises his gun and fires far behind the rabbit. The third guy yells “We got him!”&lt;/p&gt;  &lt;p&gt;Not every theory is correct - not every attempt is the right one. Build in your success tests while you’re building your model. Then check them - don’t leave this step out. &lt;/p&gt;  &lt;h3&gt;Rinse, lather, repeat&lt;/h3&gt;  &lt;p&gt;This is advice from a shampoo bottle - which I’ve never used (I don’t really have that much hair - especially now). But in a “Cloud” project, it’s important. It’s an evolving system, that gains new improvements at an amazing rate. As soon as you deploy and stabilize you need to start the process over again. If you created your system in a Services model, with contracts for the APIs and abstracted code, this is far easier. &lt;/p&gt;  &lt;p&gt;It’s not hard to do a cloud project right. But it’s really simple to do it wrong. Follow these guidelines and you’ll learn from the successes - and mistakes - of others. &lt;/p&gt;</description></item><item><title>I was going to call this post “Windows Azure Best Practices” but I’m not allowed to</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/04/18/i-was-going-to-call-this-post-windows-azure-best-practices-but-i-m-not-allowed-to.aspx</link><pubDate>Wed, 18 Apr 2012 13:08:59 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:42877</guid><dc:creator>BuckWoody</dc:creator><description>&lt;p&gt; &lt;/p&gt;  &lt;p style="margin:0in;font-family:calibri;font-size:11pt;"&gt;For reasons I don't completely understand, I'm not allowed to call the following advice &amp;quot;Best Practices&amp;quot; - apparently there is some liability or something there. So let's say these are &amp;quot;really good ideas&amp;quot; for developing applications for Windows Azure. (Did you see how I worked it into the title anyway so the search engines find it? Always thinking. :) )&lt;/p&gt;  &lt;p style="margin:0in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;p style="margin:0in;font-family:calibri;font-size:11pt;"&gt;And of course these are by no means comprehensive - just a few notes I've made as I've been involved with projects. So here they are, in no particular order:&lt;/p&gt;  &lt;p style="margin:0in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Understand the platform - never stop learning, it changes all the time: SDK and Training Kit are the best resources. &lt;/span&gt;&lt;a href="http://channel9.msdn.com/Blogs/pdc2008/ES03"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://channel9.msdn.com/Blogs/pdc2008/ES03&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt; &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&lt;span style="font-style:italic;"&gt;It may sound pedantic, but it's just true. You need to learn how the platform works. The most issues I run into are things that are documented - most of the time very clearly. &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Follow standard best practices for your language&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&lt;span style="font-style:italic;"&gt;Windows Azure code does have some differences, but in large part it's just code. If you write Java to run on Azure, write good Java. Learn the best practices for your codeset and apply those - it will not only make your code faster and less error-prone, it will be cheaper to run. &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Keep a backup of your deployments&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&lt;span style="font-style:italic;"&gt;Things happen. Make sure you have your latest deployment checked into source code. If someone were to perhaps stop paying the bill and the Role is deleted, Microsoft does not have a secret backup of your application. Do not ask me how I know this. &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Batch up calls - fewer calls are usually more efficient (and cheaper) than lots of smaller calls.&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&lt;span style="font-style:italic;"&gt;This is typical for distributed computing environments - include the retry logic tip as well to ensure the call is successful.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Use Cache and max out the instance wherever you can - you're paying for it, use it!&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Use the Windows Azure Diagnostics and monitor those counters accordingly: &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2011/09/06/plan-for-diagnostics-in-cloud-computing-from-the-git-go.aspx"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://blogs.msdn.com/b/buckwoody/archive/2011/09/06/plan-for-diagnostics-in-cloud-computing-from-the-git-go.aspx&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt; &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Implement retry logic: &lt;/span&gt;&lt;a href="http://www.davidaiken.com/tag/best-practices/"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://www.davidaiken.com/tag/best-practices/&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt; &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&lt;span style="font-style:italic;"&gt;In a distributed computing environment, you may have a lag in time between operations. Make your code less brittle to failures for a given call, and ensure that you include retry logic.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Use multiple instances: &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2012/03/20/why-do-i-need-two-roles-in-windows-azure.aspx"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://blogs.msdn.com/b/buckwoody/archive/2012/03/20/why-do-i-need-two-roles-in-windows-azure.aspx&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt; &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&lt;span style="font-style:italic;"&gt;This article is a must-read.&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Have a backup strategy&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&lt;span style="font-style:italic;"&gt;Microsoft keeps three copies of your data at all times in a datacenter, and backs up those three copies to another for safety. But that's at the latest moment - if you need point-in-time restore, make sure you code that into your architecture.&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Use affinity groups: &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2011/11/28/windows-and-sql-azure-best-practices-affinity-groups.aspx"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://blogs.msdn.com/b/buckwoody/archive/2011/11/28/windows-and-sql-azure-best-practices-affinity-groups.aspx&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt; &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&lt;span style="font-style:italic;"&gt;Affinity groups are a way of keeping your data and code together. This is usually a great idea from a performance standpoint, although there are applications that can break this rule for centralization or seldom-accessed data.&lt;/span&gt; &lt;/p&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Have a lights-out strategy&lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&lt;span style="font-style:italic;"&gt;Anything that a human makes can fail. That includes entire datacenters, routers, the Internet. So make sure you know what to do if everything is unavailable. Perhaps that's just a notification system, a full fallback to an on-premises system, something. But plan. &lt;/span&gt;&lt;/p&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Security best practices are here: &lt;/span&gt;&lt;a href="http://blogs.msdn.com/b/usisvde/archive/2012/03/07/windows-azure-security-best-practices-part-1-the-challenge"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://blogs.msdn.com/b/usisvde/archive/2012/03/07/windows-azure-security-best-practices-part-1-the-challenge&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;s-defense-in-depth.aspx and here &lt;/span&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=7253"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=7253&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt; &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Denial of Service best practices here: &lt;/span&gt;&lt;a href="http://blog.ehuna.org/2012/04/how_to_stop_a_denial_of_servic.html"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://blog.ehuna.org/2012/04/how_to_stop_a_denial_of_servic.html&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt; &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p style="margin:0in 0in 0in 0.375in;font-family:calibri;font-size:11pt;"&gt;&amp;#160;&lt;/p&gt;  &lt;ul style="margin-top:0in;unicode-bidi:embed;direction:ltr;margin-bottom:0in;margin-left:0.375in;"&gt;   &lt;li style="margin-top:0px;margin-bottom:0px;vertical-align:middle;"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;Blob Storage Best Practices: &lt;/span&gt;&lt;a href="http://acloudyplace.com/2012/01/8-essential-best-practices-in-windows-azure-blob-storage/"&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://acloudyplace.com/2012/01/8-essential-best-practices-in-windows-azure-blob-storage/&lt;/font&gt;&lt;/u&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:calibri;font-size:11pt;"&gt; &lt;/span&gt;&lt;/li&gt; &lt;/ul&gt;</description></item><item><title>Pay in the future should make you think in the present</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/04/10/pay-in-the-future-should-make-you-think-in-the-present.aspx</link><pubDate>Tue, 10 Apr 2012 13:53:50 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:42764</guid><dc:creator>BuckWoody</dc:creator><description>&lt;p&gt;Distributed Computing - and more importantly “-as-a-Service” models of computing have a different cost model. This is something that sounds obvious on the surface but it’s often forgotten during the design and coding phase of a project. &lt;/p&gt;  &lt;p&gt;In on-premises computing, we’re used to purchasing a server and all of the hardware infrastructure and software licenses needed not only for one project, but several. This is an up-front or “sunk” cost that we consume by running code the organization needs to perform its function. Using a direct connection over wires you’ve already paid for, we don’t often have to think about bandwidth, hits on the data store or the amount of compute we use - we just know more is better. In a pay-as-you-go model, however, each of these architecture decisions has a potential cost impact. The amount of data you store, the number of times you access it, and the amount you send back all come with a charge. The offset is that you don’t buy anything at all up-front, so that sunk cost is freed up. And financial professionals know that money &lt;em&gt;now &lt;/em&gt;is worth more than money &lt;em&gt;later&lt;/em&gt;. Saving that up-front cost allows you to invest it in other things. &lt;/p&gt;  &lt;p&gt;It’s not just that you’re using things that now cost money - it’s that the design itself in distributed computing has a cost impact. That can be a really good thing, such as when you dynamically add capacity for paying customers. If you can tie back the cost of a series of clicks to what a user will pay to do so, you can set a profit margin that is easy to track. &lt;/p&gt;  &lt;p&gt;Here’s a case in point: Assume you are using a large instance in Windows Azure to compute some data that you retrieve from a SQL Azure database. If you don’t monitor the path of the application, you may not know what you are really using. Since you’re paying by the size of the instance, it’s best to maximize it all the time. Recently I evaluated just this situation, and found that downsizing the instance and adding another one where needed, adding a caching function to the application, moving part of the data into Windows Azure tables not only increased the speed of the application, but reduced the cost and more closely tied the cost to the profit. &lt;/p&gt;  &lt;p&gt;The key is this: from the very outset - the design - make sure you include metrics to measure for the cost/performance (sometimes these are the same) for your application. Windows Azure opens up awesome new ways of doing things, so make sure you study distributed systems architecture before you try and force in the application design you have on premises into your new application structure. &lt;/p&gt;</description></item><item><title>“I could use a little help here” or “I can do it myself, thank you” for Cloud Projects</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/04/03/i-could-use-a-little-help-here-or-i-can-do-it-myself-thank-you-for-cloud-projects.aspx</link><pubDate>Tue, 03 Apr 2012 13:20:55 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:42665</guid><dc:creator>BuckWoody</dc:creator><description>&lt;p&gt;Windows Azure allows you to write code in languages within the .NET stack, you can use Java, C++, PHP, NodeJS and others. Code is code - other than keeping things stateless, using a Web or Worker Role in Azure is not all that different from working with an on-premises system. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;However….&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Working in a scalable, component-based stateless architecture that can use federated security is not all that common for many developers. Some are used to owning the server, scaling up, and state-full paradigms that have a single security domain. Making the transition whilst trying to create a new software application or even port a previous one can be daunting. &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2010/11/16/windows-azure-learning-plan.aspx" target="_blank"&gt;Sure, we have absolutely tons of free training, kits, videos, online books and more to learn on your own&lt;/a&gt;, but some things like architecture can be pivotal as you move along. &lt;/p&gt;  &lt;p&gt;So the question is, should you just strike out on your own for a Cloud project, or get &lt;a href="http://www.microsoft.com/microsoftservices/en/us/journey_to_the_cloud.aspx" target="_blank"&gt;Microsoft Consulting Services&lt;/a&gt; or another partner to work with you on your first one? I use a few decision points to help guide the projects I assist in.&lt;/p&gt;  &lt;p align="center"&gt;&lt;em&gt;&lt;font color="#c0504d"&gt;Note: I’m a huge fan of having help that ends up giving you training and leaves you in charge. If you do engage with someone to help you, make sure you keep this clear and take more and more ownership yourself as the project progresses.&lt;/font&gt;&lt;/em&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How much time do you have?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Usually the first thing I ask is about the timeline for the project. It doesn’t matter how skilled you are, if you have a short window to get things done it’s better to get help - especially if this is your first cloud project. Having someone that knows the platform well can save you amazing amounts of time. If you have longer, then start with the training in the link above and once you feel confident, jump in. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How complex is the project?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;I&lt;/strong&gt;f there are a lot of moving parts, it’s best to engage a partner. The reason is that certain interactions - particularly things like Service Bus or Data Integration&amp;#160; - can be quite different than what you may have encountered before. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How many people do you have?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;I have a “pizza rule” about projects I’ve used in my career - if it takes over two pizzas to feed everyone on the project, it’s too big and will fail. &lt;img style="border-bottom-style:none;border-left-style:none;border-top-style:none;border-right-style:none;" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8780.wlEmoticon_2D00_smile_5F00_2.png" /&gt; That being said, one developer and a one-week deadline does not a good project make, usually. It’s best to have at least one architect (or someone in that role) guiding the project along, and at least two developers to work on a cloud project. That’s a generalization of course, since I’ve seen great software on Azure with one developer writing code all by herself, but for more complex projects, more (to a point) is better. The nice thing about bringing on a partner is that you don’t have to hire them full time - they help you and then they go away. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How critical is the project?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;There’s no shame in using some help. If the platform is new, if the project is large and complex, and if it is critical to the business, you should engage a partner. That’s regardless of Cloud or anything else - get some help. You don’t want to hit your company’s bottom line in a negative way, but you have to innovate and get them a competitive advantage. Do your research, make sure the partner is qualified to help you, and get it done.&lt;/p&gt;  &lt;p&gt;Don’t let these questions scare you off. There are lots of projects you can implement on Windows and SQL Azure with nothing other than the Software Development Kit (SDK) that you get for free with Windows Azure. And assistance comes in many forms - sometimes just phone support, a friend you can ask. Microsoft Consulting Services or any of our great partners. You can get help on just the architecture piece or have them show you how to write the code. They’ll get involved as little or as much as you like. &lt;/p&gt;</description></item><item><title>Application Lifecycle Management Overview for Windows Azure</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/02/07/application-lifecycle-management-overview-for-windows-azure.aspx</link><pubDate>Tue, 07 Feb 2012 14:58:39 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:41593</guid><dc:creator>BuckWoody</dc:creator><description>&lt;p&gt;Developing in Windows Azure is at once not that much different from what you’re familiar with in on-premises systems, and different in significant ways. Because of these differences, developers often ask about the specific process to develop and deploy a Windows Azure application - more formally called an Application Lifecycle Management, or ALM. &lt;/p&gt;  &lt;p&gt;There are specific resources you can use to learn more about various parts of ALM - I’ve referenced those at the end of this post. But ALM has multiple definitions, from the governance of code injection, domain upgrade, testing, process flow and more. Many developers are interested in the finer-grained information, like how do I develop and deploy an application? What tools do I need, and how do I get the code running somewhere that I can test? &lt;/p&gt;  &lt;p&gt;I’ll cover the very high-level process here, and refer you to specifics at the end of each section, so that you can take it all in at one viewing, and then bookmark for more detail when you need more information. I won’t be covering processes like Continuous Integration or Agile and other methodologies in this post - I’ll blog those later. &lt;/p&gt;  &lt;h2&gt;Initial Development&lt;/h2&gt;  &lt;p&gt;You start with writing code. You have three ways to do this. You can use Visual Studio (even the Express Edition Works), Eclipse, or by &lt;a href="https://www.ibm.com/developerworks/webservices/library/ws-restful/" target="_blank"&gt;leveraging the REST API format&lt;/a&gt;. You can do this in a standalone (non-connected) environment like your laptop. &lt;/p&gt;  &lt;p align="left"&gt;Using Visual Studio is one of the simplest methods to create an Azure application, allowing you to combine the Azure components you want to leverage (Storage, Compute, SQL Azure, the Service Bus, etc.) along with the on-premises code you have now or are creating. Once you’ve installed and patched Visual Studio, just download and install the Windows Azure Software Development Kit (SDK) and you’ll have not only all the API’s you need to talk to Azure, but a fully functioning local environment to run and test your code before you deploy it. You’ll also get a robust set of samples. You can download what you need for all of that (free) here: &lt;a href="http://www.windowsazure.com/en-us/develop/downloads/"&gt;http://www.windowsazure.com/en-us/develop/downloads/&lt;/a&gt; . There’s a step-by-step process here: &lt;a href="http://msdn.microsoft.com/en-us/magazine/ee336122.aspx"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://msdn.microsoft.com/en-us/magazine/ee336122.aspx&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can also use Eclipse to develop for Windows Azure. You won’t get the full runtime environment in just that kit alone, but you can use this successfully on a Linux system. I have several folks using this method. The downloads and documentation for that is here: &lt;a href="http://www.windowsazure4e.org/"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://www.windowsazure4e.org/&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;You can use REST API’s to hit Azure Assets and control them. Not my preferred method, but possible. There are REST API’s for various sections of Azure. You can find the main reference for that here: &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ff800682.aspx"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/ff800682.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#9bbb59"&gt;&lt;font color="#c0504d"&gt;&lt;strong&gt;&lt;em&gt;Note: &lt;/em&gt;&lt;/strong&gt;We recently demonstrated using a Cloud-based Integrated Development Environment (IDE) for Node.js deployment to Windows Azure. More on that here:&lt;/font&gt; &lt;/font&gt;&lt;a href="http://www.readwriteweb.com/cloud/2012/01/cloud9-ide-to-enable-nodejs-ap.php"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://www.readwriteweb.com/cloud/2012/01/cloud9-ide-to-enable-nodejs-ap.php&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; &lt;/p&gt;  &lt;h2&gt;Deploying to a Test Instance&lt;/h2&gt;  &lt;p&gt;After you write the code, you’ll need to test it somewhere. The Azure Emulator on your development laptop is for a single user on that laptop, and it also has some subtle differences from the production fabric as you might imagine. Normally you’ll set up a small subscription to run and test the application, just like you would have a set of test servers. Each subscription has its own management keys and certificates, so this assists in keeping the testing environment separate for billing and control. &lt;/p&gt;  &lt;p&gt;More on that general information here: &lt;a href="http://msdn.microsoft.com/en-us/library/ff803362.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff803362.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Deploying to Production&lt;/h2&gt;  &lt;p&gt;Once you have developed the code and tested it, you need to move it to a location where users can access it. In reality, there is no physical difference in the type of machines, fabric or any other component in “Production” Windows Azure accounts and the “Test” accounts, but you’ll most often pick smaller systems to deploy on in testing, and you’ll probably keep the URL in the plain format.&lt;/p&gt;  &lt;p&gt;In the Production Windows Azure account, the team normally limits the access to the account for deployment to a separate set of developers. This ensures code flow and control. A DNS name is normally mapped to the longer, Microsoft-generated URL so that your users access the application or data the way you want them to. &lt;/p&gt;  &lt;p&gt;More on setting up an account here: &lt;a href="http://techinch.com/2010/06/14/setup-your-windows-azure-account/"&gt;http://techinch.com/2010/06/14/setup-your-windows-azure-account/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Managing Code Change&lt;/h2&gt;  &lt;p&gt;With the application deployed, there are two broad tasks you need to consider. One is managing changes through the application, and the other involves management, monitoring and performance tuning for an application.&lt;/p&gt;  &lt;p&gt;To make a code change, the standard ALM process is followed, just as above. You can use command-line tools to automate the process as you would with an on-premises system. A vide on that shows you how: &lt;a href="http://www.microsoftpdc.com/2009/SVC25"&gt;http://www.microsoftpdc.com/2009/SVC25&lt;/a&gt;. Normally this is used with an “In-Place” upgrade into Production Account, since your testing is completed in a separate account. More on that process here: &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee517255.aspx"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/ee517255.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;One difference is the “VIP Swap” process you can use for the final push to Production. In essence, this allows you to have two copies of the application running on the Production account, with a quick way to cut over and back when you’re ready. The process for that is detailed here: &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For monitoring, you have several options. You should enable the Windows Azure Diagnostics in your code - more on that here: &lt;a href="http://archive.msdn.microsoft.com/WADiagnostics"&gt;http://archive.msdn.microsoft.com/WADiagnostics&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;You can observe uptime and other information on the Windows Azure Service Dashboard, where you can also consume the uptime as an RSS feed: &lt;a href="http://www.windowsazure.com/en-us/support/service-dashboard/"&gt;http://www.windowsazure.com/en-us/support/service-dashboard/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;From there, you can also use System Center to monitor not only Windows Azure deployments but internal applications as well. The Management Pack and documentation for that is here: &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=11324"&gt;http://www.microsoft.com/download/en/details.aspx?id=11324&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;There are also 3rd-party tools to manage Windows Azure. More on that here: &lt;a href="http://www.bing.com/search?q=monitor+Windows+Azure&amp;amp;form=OSDSRC"&gt;http://www.bing.com/search?q=monitor+Windows+Azure&amp;amp;form=OSDSRC&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Other References: &lt;/h3&gt;  &lt;p&gt;There is a lot more detail in this official reference: &lt;a href="https://www.windowsazure.com/en-us/develop/net/fundamentals/deploying-applications/"&gt;https://www.windowsazure.com/en-us/develop/net/fundamentals/deploying-applications/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Bryan Group explains the ramifications of the Secure Development Lifecycle (SDL) with lots of collateral you can review: &lt;a href="http://blogs.msdn.com/b/bryang/archive/2011/04/26/applying-the-sdl-to-windows-azure.aspx"&gt;http://blogs.msdn.com/b/bryang/archive/2011/04/26/applying-the-sdl-to-windows-azure.aspx&lt;/a&gt;&lt;/p&gt;</description></item></channel></rss>