Search results matching tags 'Azure', 'Cloud Computing', 'Tips', and 'Application Architecture'http://sqlblog.com/search/SearchResults.aspx?o=DateDescending&tag=Azure,Cloud+Computing,Tips,Application+Architecture&orTags=0Search results matching tags 'Azure', 'Cloud Computing', 'Tips', and 'Application Architecture'en-USCommunityServer 2.1 SP2 (Build: 61129.1)Book Review (Book 11) - Applied Architecture Patterns on the Microsoft Platformhttp://sqlblog.com/blogs/buck_woody/archive/2012/05/15/book-review-book-11-applied-architecture-patterns-on-the-microsoft-platform.aspxTue, 15 May 2012 16:50:34 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:43364BuckWoody<p>This is a continuation of the books I challenged myself to read to help my career - one a month, for year. <a href="http://sqlblog.com/b/buckwoody/archive/2011/06/28/book-review-programming-windows-azure-by-siriram-krishnan.aspx"><span style="text-decoration:underline;"><span style="color:#0066cc;">You can read my first book review here</span></span></a>, and <a href="http://sqlblog.com/b/buckwoody/archive/2011/06/07/head-in-the-clouds-eyes-on-the-books.aspx" target="_blank">the entire list is here</a>. The book I chose for April 2012 was: <a href="http://www.amazon.com/Applied-Architecture-Patterns-Microsoft-Platform/dp/184968054X" target="_blank">Applied Architecture Patterns on the Microsoft Platform</a>. I was traveling at the end of last month so I&rsquo;m a bit late posting this review here.</p>
<p><strong>Why I chose this book: </strong></p>
<p>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.</p>
<p><strong>What I learned:</strong></p>
<p>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.</p>
<p>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&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.</p>
<p>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.</p>
<p>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.</p>
<p>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.</p>
<p>I recommend you get the book - and use it. I hope they keep it updated - I'll be a frequent customer. :)</p>
<p>&nbsp;</p>Pay in the future should make you think in the presenthttp://sqlblog.com/blogs/buck_woody/archive/2012/04/10/pay-in-the-future-should-make-you-think-in-the-present.aspxTue, 10 Apr 2012 13:53:50 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:42764BuckWoody<p>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. </p> <p>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 <em>now </em>is worth more than money <em>later</em>. Saving that up-front cost allows you to invest it in other things. </p> <p>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. </p> <p>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. </p> <p>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. </p>Application Lifecycle Management Overview for Windows Azurehttp://sqlblog.com/blogs/buck_woody/archive/2012/02/07/application-lifecycle-management-overview-for-windows-azure.aspxTue, 07 Feb 2012 14:58:39 GMT21093a07-8b3d-42db-8cbf-3350fcbf5496:41593BuckWoody<p>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. </p> <p>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? </p> <p>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. </p> <h2>Initial Development</h2> <p>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 <a href="https://www.ibm.com/developerworks/webservices/library/ws-restful/" target="_blank">leveraging the REST API format</a>. You can do this in a standalone (non-connected) environment like your laptop. </p> <p align="left">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: <a href="http://www.windowsazure.com/en-us/develop/downloads/">http://www.windowsazure.com/en-us/develop/downloads/</a> . There’s a step-by-step process here: <a href="http://msdn.microsoft.com/en-us/magazine/ee336122.aspx"><u><font color="#0066cc">http://msdn.microsoft.com/en-us/magazine/ee336122.aspx</font></u></a> </p> <p>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: <a href="http://www.windowsazure4e.org/"><u><font color="#0066cc">http://www.windowsazure4e.org/</font></u></a> </p> <p>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: <a href="http://msdn.microsoft.com/en-us/library/windowsazure/ff800682.aspx">http://msdn.microsoft.com/en-us/library/windowsazure/ff800682.aspx</a>&#160;</p> <p><font color="#9bbb59"><font color="#c0504d"><strong><em>Note: </em></strong>We recently demonstrated using a Cloud-based Integrated Development Environment (IDE) for Node.js deployment to Windows Azure. More on that here:</font> </font><a href="http://www.readwriteweb.com/cloud/2012/01/cloud9-ide-to-enable-nodejs-ap.php"><u><font color="#0066cc">http://www.readwriteweb.com/cloud/2012/01/cloud9-ide-to-enable-nodejs-ap.php</font></u></a> </p> <h2>Deploying to a Test Instance</h2> <p>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. </p> <p>More on that general information here: <a href="http://msdn.microsoft.com/en-us/library/ff803362.aspx">http://msdn.microsoft.com/en-us/library/ff803362.aspx</a>&#160;</p> <h2>Deploying to Production</h2> <p>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.</p> <p>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. </p> <p>More on setting up an account here: <a href="http://techinch.com/2010/06/14/setup-your-windows-azure-account/">http://techinch.com/2010/06/14/setup-your-windows-azure-account/</a>&#160;</p> <h2>Managing Code Change</h2> <p>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.</p> <p>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: <a href="http://www.microsoftpdc.com/2009/SVC25">http://www.microsoftpdc.com/2009/SVC25</a>. 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: <a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee517255.aspx">http://msdn.microsoft.com/en-us/library/windowsazure/ee517255.aspx</a></p> <p>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: <a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx">http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx</a>&#160;</p> <p>For monitoring, you have several options. You should enable the Windows Azure Diagnostics in your code - more on that here: <a href="http://archive.msdn.microsoft.com/WADiagnostics">http://archive.msdn.microsoft.com/WADiagnostics</a>. </p> <p>You can observe uptime and other information on the Windows Azure Service Dashboard, where you can also consume the uptime as an RSS feed: <a href="http://www.windowsazure.com/en-us/support/service-dashboard/">http://www.windowsazure.com/en-us/support/service-dashboard/</a>&#160;</p> <p>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: <a href="http://www.microsoft.com/download/en/details.aspx?id=11324">http://www.microsoft.com/download/en/details.aspx?id=11324</a>. </p> <p>There are also 3rd-party tools to manage Windows Azure. More on that here: <a href="http://www.bing.com/search?q=monitor+Windows+Azure&amp;form=OSDSRC">http://www.bing.com/search?q=monitor+Windows+Azure&amp;form=OSDSRC</a>&#160;</p> <h3>Other References: </h3> <p>There is a lot more detail in this official reference: <a href="https://www.windowsazure.com/en-us/develop/net/fundamentals/deploying-applications/">https://www.windowsazure.com/en-us/develop/net/fundamentals/deploying-applications/</a>&#160;</p> <p>Bryan Group explains the ramifications of the Secure Development Lifecycle (SDL) with lots of collateral you can review: <a href="http://blogs.msdn.com/b/bryang/archive/2011/04/26/applying-the-sdl-to-windows-azure.aspx">http://blogs.msdn.com/b/bryang/archive/2011/04/26/applying-the-sdl-to-windows-azure.aspx</a></p>