<?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>Buck Woody : Azure, Application Architecture</title><link>http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/Application+Architecture/default.aspx</link><description>Tags: Azure, Application Architecture</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61129.1)</generator><item><title>How Does the Cloud Change a  Developer's Job?</title><link>http://sqlblog.com/blogs/buck_woody/archive/2013/02/12/how-does-the-cloud-change-a-developer-s-job.aspx</link><pubDate>Tue, 12 Feb 2013 16:26:51 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:47670</guid><dc:creator>BuckWoody</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/47670.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=47670</wfw:commentRss><description>&lt;p&gt;I've recently &lt;a href="http://sqlblog.com/b/buckwoody/archive/2013/01/22/how-does-the-cloud-change-a-systems-architect-s-job.aspx" target="_blank"&gt;posted a blog on how cloud computing would change the Systems Architect&amp;rsquo;s role in an organization&lt;/a&gt;, another on &lt;a href="http://sqlblog.com/b/buckwoody/archive/2013/01/29/how-does-the-cloud-change-a-database-administrator-s-job.aspx" target="_blank"&gt;how the cloud changes a Database Administrator's job&lt;/a&gt;, and the &lt;a href="http://sqlblog.com/b/buckwoody/archive/2013/02/05/how-does-the-cloud-change-a-systems-administrator-s-job.aspx" target="_blank"&gt;last post dealt with the &lt;/a&gt;&lt;a&gt;Systems Administrator&lt;/a&gt;. In this post I'll cover the changes facing the Software Developer when using the cloud. &lt;/p&gt;
&lt;p&gt;The software developer role was the earliest adopter of cloud computing. This makes perfect sense, because the software developer has always used computing "as a service" - they (most often) don't buy and configure servers, platforms and the like, they write code that runs on those platforms. And there's probably not a simpler definition of a software developer to be found, but as with all simple statements, you lose fidelity and detail.&amp;nbsp; I'll offer a more complete list in a moment.&lt;/p&gt;
&lt;p&gt;Because the software developer's process involves designing, testing and writing code locally and then migrating it to a production environment, all of the paradigms in cloud computing - &lt;a href="http://sqlblog.com/b/buckwoody/archive/2012/06/13/windows-azure-write-run-or-use-software.aspx" target="_blank"&gt;from IaaS to PaaS to SaaS&lt;/a&gt; - come naturally. &lt;/p&gt;
&lt;h1&gt;The Software Developer's Role&lt;/h1&gt;
&lt;p&gt;The software developer has evolved since the earliest days of programming.The software developer not only "writes code"&amp;nbsp; - there are far more tasks involved in modern systems development:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Assisting the Business Role(s) in developing software specifications&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Planning software system components and modules&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Designing system components&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Working in teams writing classes, modules, interfaces and software endpoints&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Designing data layouts, architectures, access and other data controls&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Designing and implementing security, either programmatic, declarative, or referential&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Mixing and matching various languages, scripting and other constructs within the system&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Designing and implementing user and account security rights and restrictions&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Designing various software code tests - unit, functional, fuzz, integration, regression, performance and others&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Deploying systems &lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Managing and maintaining code updates and changes&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Like most of the previous roles, those tasks also unpacks into a larger set of tasks, and no single developer has exactly that same list. And like the DBA, the role is often more, or less of that list based on where the developer works. Smaller companies may include the development platform in the duties so that a developer is also a systems administrator. In larger organizations I've seen developers that specialized on User Interfaces, Engine Components, Data Controls or other specific areas.&lt;/p&gt;
&lt;h1&gt;How the Cloud Changes Things&lt;/h1&gt;
&lt;p&gt;The software developer role obviously has the same concerns and impacts of "the cloud" as the Systems Architect. They need to educate themselves on the options within this new option (&lt;span style="color:#0000ff;"&gt;Knowledge&lt;/span&gt;), try a few test solutions out (&lt;span style="color:#0000ff;"&gt;Experience&lt;/span&gt;) and of course work with others on various parts of the implementation (&lt;span style="color:#0000ff;"&gt;Coordination&lt;/span&gt;).&lt;/p&gt;
&lt;p&gt;The big changes for a developer include three major areas: Hybrid Software Design, Security, and Distributed Computing.&lt;/p&gt;
&lt;h2&gt;Hybrid Software Design&lt;/h2&gt;
&lt;p&gt;After the PC revolution, software developers designed systems that ran primarily on a single computer. From there the industry moved to "client/server", where most of the code still lived on the user's workstation, and various levels of state (such as the data layer) moved to a server over fast connected lines. After than followed the Internet phase, which had less to do with HTML coding than it did with state-less architectures. While no architecture is truly stateless, there are ways of allowing the client to be in a different state than the server of the application at any one time - this is the way the Web works.&lt;/p&gt;
&lt;p&gt;Even so, the developer often simply moved one the primary layers (such as Model, View or Controller) to the server, using the User Interface merely as the View or Presentation layer. While technically stateless, this doesn't require a great deal of architecture change - there are various software modules that run on a server, and perhaps that connects to a remote data server. In the end, it's still a single paradigm.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We now have the ability to run IaaS (hardware abstraction), PaaS (hardware, operating system and runtime abstraction) and SaaS (everything abstracted, API calls only) in a single environment such as Windows Azure. A single application might have a Web-based Interface Server with federated processes&amp;nbsp; (using a PaaS set of roles), a database service (using a SaaS provider such as Windows Azure SQL Database), a specialized process in Linux (using an IaaS role in Windows Azure) and a translator API (from the Windows Azure Marketplace). This example involves only one vendor - Microsoft. I've seen applications that use multiple vendors in this same way.&lt;/p&gt;
&lt;p&gt;Thinking this way opens up a great deal of flexibility - and complexity. Complexity isn't evil; it's how complicated things get done many times. The modern developer&amp;nbsp; needs to understand how to build hybrid software architectures. &lt;/p&gt;
&lt;p style="color:#993300;"&gt;&lt;span style="color:#993300;"&gt;&lt;em&gt;&lt;span style="color:#0000ff;"&gt;Resources&lt;/span&gt;:&lt;/em&gt;&lt;/span&gt; Hybrid Architectures with step-by-step instructions and examples:&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/hh871440.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/hh871440.aspx &lt;/a&gt; and &lt;span style="color:#993300;"&gt;Windows Azure Hybrid Systems&lt;/span&gt;:&amp;nbsp;&lt;a href="http://msdn.microsoft.com/en-us/library/hh871440.aspx?AnnouncementFeed&amp;amp;nbsp;" target="_blank"&gt;http://msdn.microsoft.com/en-us/library/hh871440.aspx?AnnouncementFeed&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Security&lt;/h2&gt;
&lt;p&gt;Having a single security boundary, such as "everyone who works in my company", is a relatively simple problem to solve. Normally the System Administrators configure and control a security provider, such as Active Directory, and developers can access that security layer programmatically.&amp;nbsp; That allows for good separation of duties and role-based control.&lt;/p&gt;
&lt;p&gt;In modern applications, clients, managers, and users both internal and external need various levels of access to the same objects, code and data. A client should be able to enter an order, a store should be able to accept the order, the credit-card company should be able to check the order and authorize payment, and the managers should be able to report on the order or change it if needed. Using role-based security across multiple domains would be impossible to maintain.&lt;/p&gt;
&lt;p&gt;Enter "claims-based" authentication. In this paradigm, the user logs in with whatever security they use - corporate or other Active Directory, Facebook, Google, whatever. The application (using Windows Identity Foundation or WIF) can accept a "claim" from that provider, and the developer can match whatever parts of that claim they wish to the objects, code and data. And example might be useful.&lt;/p&gt;
&lt;p&gt;Buck logs in to his corporate Active Directory (AD), and attempts to use a program based in Windows Azure. Windows Azure rejects the login silently, and is configured to check with Buck's AD. Buck's AD says "yes, I know Buck, and he has been granted the following claims: "partner", "manager", "approver". The developer does not need to know about Buck's AD, Buck, his login, or anything else. She simply codes the proper data access to allow "approver" to approve a sale.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This allows a lot of control, at a very fine level, without having to get into the details of each security provider. .&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#993300;"&gt;&lt;em&gt;&lt;span style="color:#0000ff;"&gt;Resources&lt;/span&gt;:&lt;/em&gt;&lt;/span&gt; &lt;span style="color:#993300;"&gt;Overview of using claims-based Azure Security&lt;/span&gt;: &lt;a href="http://adnanboz.wordpress.com/2011/02/06/claims-based-access-and-windows-azure/" target="_blank"&gt;http://adnanboz.wordpress.com/2011/02/06/claims-based-access-and-windows-azure/ &lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Distributed Computing&lt;/h2&gt;
&lt;p&gt;Is there a difference between stateless computing, or even the hybrid programming I mentioned earlier, and "Distributed Computing"? Yes - the primary difference is latency. Even stateless code can have too small a tolerance for latency.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Dealing with slow connectivity, or breaks in connections has many impacts. One method of dealing with this is to locate data and computing of that data as closely as possible, even if this means relaxing consistency or duplicating data. Another method is to go back to a great paradigm from the past that is possible underused today is a Service Oriented Architecture. The Windows Azure Service Bus is possibly one of the fastest and easiest way to adopt cloud computing without completely rearchitecting your application. &lt;/p&gt;
&lt;p&gt;&lt;span style="color:#0000ff;"&gt;&lt;em&gt;References&lt;/em&gt;&lt;/span&gt;: &lt;span style="color:#993300;"&gt;Great breakdown of the thought process around a distributed architecture:&lt;/span&gt; &lt;a href="http://msdn.microsoft.com/en-us/magazine/jj553517.aspx" target="_blank"&gt;http://msdn.microsoft.com/en-us/magazine/jj553517.aspx &lt;/a&gt;and &lt;span style="color:#993300;"&gt;using a Windows Azure Relay Service&lt;/span&gt;: &lt;a href="http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-relay/" target="_blank"&gt;http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-relay/&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=47670" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx">Career</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Computing/default.aspx">Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx">Concepts</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Data/default.aspx">Data</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx">Design</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>How Does the Cloud Change a Database Administrator’s Job?</title><link>http://sqlblog.com/blogs/buck_woody/archive/2013/01/29/how-does-the-cloud-change-a-database-administrator-s-job.aspx</link><pubDate>Tue, 29 Jan 2013 15:08:32 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:47385</guid><dc:creator>BuckWoody</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/47385.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=47385</wfw:commentRss><description>&lt;p&gt;I recently&lt;a href="http://sqlblog.com/b/buckwoody/archive/2013/01/22/how-does-the-cloud-change-a-systems-architect-s-job.aspx" target="_blank"&gt; posted a blog entry on how cloud computing would change the Systems Architect&amp;rsquo;s role in an organization&lt;/a&gt;. In a way, the Systems Architect has the easiest transition to a new way of using computing technologies. In fact, that&amp;rsquo;s actually part of the job description.&amp;nbsp;I mentioned that a Systems Architect has three primary vectors to think about for cloud computing, as it applies to what they should do:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;Knowledge - Which options are available to solve problems, and what are their strengths and weaknesses.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;Experience - What has the System Architect seen and worked with in the past.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;Coordination - A system design is based on multiple factors, and one person can't make all the choices. There will need to be others involved at every level of the solution, and the Systems Architect will need to know who those people are and how to work with them.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;The Database Administrator Role&lt;/h1&gt;
&lt;p&gt;But a Database Administrator (DBA) is probably one of the harder roles to think about when it comes to cloud computing. First, let&amp;rsquo;s define what a Database Administrator usually thinks about as part of their job:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Planning, Installing and Configuring a Database Platform&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Planning, designing and creating databases&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Planning, designing and implementing High Availability and Disaster Recovery for each database (HADR) based on requirements for its workload&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Maintaining and monitoring the database platform&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Implementing performance tuning on the databases based on monitoring&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Re-balancing workloads across database servers based on monitoring&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#993300;"&gt;Securing databases platforms and individual databases based on requirements and implementation&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That&amp;rsquo;s just a short list, and each of those unpacks into a larger set of tasks.&lt;/p&gt;
&lt;p&gt;The issue is that&lt;em&gt; I&amp;rsquo;ve never actually met a DBA that does all of those things&lt;/em&gt;, or &lt;strong&gt;just&lt;/strong&gt; all of those things. Many times they do much more, sometimes the systems are so large they specialize on just a few of them.&lt;/p&gt;
&lt;p&gt;And as you can see from the list, some of these areas are shared with other roles. For instance, in some shops, the DBA plans, purchases, sets up and configures the hardware for database servers. In others that&amp;rsquo;s done&lt;br /&gt;by the Infrastructure Team. In some shops the DBA designs databases from software requirements, and in others the developers do that &amp;ndash; or perhaps it&amp;rsquo;s done as a joint effort. The same holds true for database code &amp;ndash; sometimes the&lt;br /&gt;DBA does it, other times the developer, and still others it&amp;rsquo;s a shared task.&lt;/p&gt;
&lt;p&gt;In fact, you could argue that there are few other roles in IT where the roles are so intermixed. Also, the DBA works with software the company develops, and software the company buys. They work with hardware, networking, security and software. There are certain aspects of design and tuning that are outside the purview of some of those things, and inside the others.&lt;/p&gt;
&lt;p&gt;With all of these variables, simply telling a DBA that they should &amp;ldquo;use the cloud&amp;rdquo; is not the proper approach.&lt;/p&gt;
&lt;h1&gt;How the Cloud Changes Things&lt;/h1&gt;
&lt;p&gt;To be sure, the DBA has the same vectors as the Systems Architect. They need to educate themselves on the options within this new option (&lt;span style="color:#0000ff;"&gt;Knowledge&lt;/span&gt;), try a few test solutions out (&lt;span style="color:#0000ff;"&gt;Experience&lt;/span&gt;) and of course work with others on various parts of the implementation (&lt;span style="color:#0000ff;"&gt;Coordination&lt;/span&gt;). But it goes beyond that.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowsazure.com/en-us/manage/windows/fundamentals/intro-to-windows-azure/#components" target="_blank"&gt;There are three big buckets of cloud computing&lt;/a&gt;, dealing with simply using a Virtual Machine (IaaS) to writing code without worrying about the virtualization or even the operating system (PaaS) and using software that&amp;rsquo;s already written and being delivered via an Application Programming Interface (API). Each of these has so many options and configurations that it&amp;rsquo;s often better to think about the problem you&amp;rsquo;re trying to solve rather than all of the technology within a given area - although some of that is certainly necessary anyway.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Database Platform Architecture&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ll start with when the DBA should even consider cloud computing for a solution. Once again, it&amp;rsquo;s not an &amp;ldquo;all or nothing&amp;rdquo; paradigm, where you either run something on premises or in the cloud &amp;ndash; it&amp;rsquo;s often a matter of selecting the right components to solve a problem.&amp;nbsp; In my design sessions with DBA&amp;rsquo;s I break these down into three big areas where they might want to consider the cloud &amp;ndash;and then we talk about how to implement each one:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;Audiences&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;HADR&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;Data Services&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Audiences&lt;/h3&gt;
&lt;p&gt;If the users of your database systems all sit in the same facility, you own the servers and networking, and the application servers are separate from the database server, it doesn&amp;rsquo;t usually make sense to take that database workload and place it on Windows Azure &amp;ndash; or any other cloud provider. The latency alone prevents a satisfactory performance profile, and in some cases won&amp;rsquo;t work at all. It doesn&amp;rsquo;t matter if the cloud solution is cheaper or easier &amp;ndash; if you&amp;rsquo;re moving a lot of data every second between an on-premises system and the cloud it won&amp;rsquo;t work well.&lt;/p&gt;
&lt;p&gt;However &amp;ndash; if your users are in multiple locations, especially globally, or you have a mix of company and external customer users, it might make sense to evaluate a shared data location. You still need to consider the implications of how much data the application server pushes back and forth, but you may be able to locate both the application server and SQL Server in an IaaS role. Assuming the data sent to the final client will work across public Internet channels, there may be a fit. There are security implications, but unless you have point-to-point connections for your current solution you&amp;rsquo;re faced with the same security questions on both options.&lt;/p&gt;
&lt;p&gt;Your audience might also be developers looking for a way to quickly spin up a server and then turn it down when they are done, paying for the time and not the hardware or licenses. This is also a prime case for evaluating IaaS. And there are others that you'll find in your own organization as you work through the requirements you have.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Resources: Windows Azure Virtual Machines: &lt;a href="http://www.windowsazure.com/en-us/manage/windows/tutorials/virtual-machine-from-gallery/"&gt;http://www.windowsazure.com/en-us/manage/windows/tutorials/virtual-machine-from-gallery/&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;span style="color:#993300;"&gt;Windows Azure SQL Server Virtual Machines&lt;/span&gt;: &lt;a href="http://www.windowsazure.com/en-us/manage/windows/common-tasks/install-sql-server/"&gt;http://www.windowsazure.com/en-us/manage/windows/common-tasks/install-sql-server/&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;HADR&lt;/h3&gt;
&lt;p&gt;The next possible place to consider using cloud computing with SQL Server is as a part of your High Availability and Disaster Recovery plans. In fact, this is the most common use I see for cloud computing and the Database Administrator. The key is the Recovery Point Objective (RPO) and Recovery Time Objective (RTO). Based on each application&amp;rsquo;s requirements, you may find that using Windows Azure or even supplementing your current plan is&lt;br /&gt;the right place to evaluate options. I&amp;rsquo;ve covered this use-case in more detail in another article.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#993300;"&gt;References: SQL Server High Availability and Disaster Recovery options with Windows Azure&lt;/span&gt;: &lt;a href="http://sqlblog.com/b/buckwoody/archive/2013/01/08/microsoft-windows-azure-disaster-recovery-options-for-on-premises-sql-server.aspx"&gt;http://blogs.msdn.com/b/buckwoody/archive/2013/01/08/microsoft-windows-azure-disaster-recovery-options-for-on-premises-sql-server.aspx&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Data Services&lt;/h3&gt;
&lt;p&gt;Windows Azure, along with other cloud providers, offers another way to design, create and consume data. In this use-case, however, the tasks DBA&amp;rsquo;s normally perform for sizing, ordering and configuring a system don&amp;rsquo;t apply.&lt;/p&gt;
&lt;p&gt;With Windows Azure SQL Databases (the artist formerly known as SQL Azure), you can simply create a database and begin using it. There are places where this fits and others where it doesn&amp;rsquo;t, and there are differences, limitations and enhancements, so it isn&amp;rsquo;t meant as replacement for what you could do with &amp;ldquo;Full-up&amp;rdquo; SQL Server on a Windows Azure Virtual Machine or an on-premises Instance. If a developer needs an Relational Database Management&lt;br /&gt;(RDBMS) data store for a web-based application, then this might be a perfect fit.&lt;/p&gt;
&lt;p&gt;But there is more to data services than Windows Azure SQL Databases. Windows Azure also offers MySQL as a service, RIAK and MongoDB (among others) and even Hadoop for larger distributed data sets. In addition you can use Windows Azure Reporting Services, and also tap into datasets and data functions in the Windows Azure Marketplace.&lt;/p&gt;
&lt;p&gt;The key for the DBA with this option is that you &lt;em&gt;will&lt;/em&gt; have to do a little investigation this time, and potentially without a specific workload in mind this time. I think that&amp;rsquo;s acceptable thing to ask &amp;ndash; DBA&amp;rsquo;s constantly keep up with data processing trends, and most will consider different ways to solve a problem.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#993300;"&gt;References:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#993300;"&gt;Windows Azure SQL Databases&lt;/span&gt;: &lt;a href="http://www.windowsazure.com/en-us/home/features/data-management/" target="_blank"&gt;http://www.windowsazure.com/en-us/home/features/data-management/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#993300;"&gt;Windows Azure Reporting Services&lt;/span&gt;: &lt;a href="http://www.windowsazure.com/en-us/manage/services/other/sql-reporting/" target="_blank"&gt;http://www.windowsazure.com/en-us/manage/services/other/sql-reporting/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#993300;"&gt;HDInsight Service (Hadoop on Azure): &lt;/span&gt;&lt;a href="https://www.hadooponazure.com/" target="_blank"&gt;https://www.hadooponazure.com/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#993300;"&gt;MongoDB Offerings on Windows Azure&lt;/span&gt;: &lt;a href="http://www.windowsazure.com/en-us/manage/linux/common-tasks/mongodb-on-a-linux-vm/" target="_blank"&gt;http://www.windowsazure.com/en-us/manage/linux/common-tasks/mongodb-on-a-linux-vm/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#993300;"&gt;Windows Azure Marketplace&lt;/span&gt;: &lt;a href="http://www.windowsazure.com/en-us/store/overview/" target="_blank"&gt;http://www.windowsazure.com/en-us/store/overview/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=47385" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx">Career</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Computing/default.aspx">Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx">Concepts</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Data/default.aspx">Data</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Database+Administration/default.aspx">Database Administration</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/DBA/default.aspx">DBA</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx">Design</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Azure/default.aspx">SQL Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>How Does the Cloud Change a  Systems Architect’s Job?</title><link>http://sqlblog.com/blogs/buck_woody/archive/2013/01/22/how-does-the-cloud-change-a-systems-architect-s-job.aspx</link><pubDate>Tue, 22 Jan 2013 15:43:59 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:47243</guid><dc:creator>BuckWoody</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/47243.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=47243</wfw:commentRss><description>&lt;p&gt;I know - I said I didn't like the "cloud" term, but my better-phrased "Distributed Systems" moniker just never took off like I had hoped. So I'll stick with the "c" word for now, at least until the search engines catch up with my more accurate term.&lt;/p&gt;
&lt;p&gt;I thought I might spend a little time on how the cloud affects the way we work - from Systems Architects to Database Administrators and Developers, and Systems Administrators - a group often referred to as "IT Pro's". But each role within these groups have different aspects when using cloud computing. In this post we'll take a look at the role of the Systems Architect, and in the posts that follow I'll talk more about the other roles in the IT Pro area.&lt;/p&gt;
&lt;h1&gt;The Systems Architect Role&lt;/h1&gt;
&lt;p&gt;What does a "Systems Architect" do? Like most IT roles, it depends on the company or organization where they work. &lt;a href="http://en.wikipedia.org/wiki/Systems_architect" target="_blank"&gt;In fact, the term isn't even specific to technology&lt;/a&gt;, but I'll use it in that context here. In general, a Systems Architect takes the requirements for a given system, and assembles the relevant technology areas that best fulfill those requirements. That's a single-sentence explanation, and needs further unpacking.&lt;/p&gt;
&lt;p&gt;As an example, a Systems Architect at a medical firm&amp;nbsp;is presented with a set of requirements for tracking a patient through the entire care cycle. The Systems Architect first looks at all of the requirements for the data that needs to be collected based on business, financial, regulations, and other requirements, and then how that data needs to flow from one system to another. They check the security requirements, performance, location and other aspects of the system. They then check to see which options are available for processing that data, and which parts they should "build or buy".&lt;/p&gt;
&lt;p&gt;For instance, the requirements might be so specific that only custom code is the proper solution - but even there, choices still exist, such as which language(s) to use, what type of data persistence (a Relational Database Management System or or other data storage and processing) will be used, what talent within the company is available for the system and a myriad of other decision.&lt;/p&gt;
&lt;p&gt;All of this boils down to three primary vectors:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&lt;strong&gt;Knowledge&lt;/strong&gt; - Which options are available to solve problems, and what are their strengths and weaknesses.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&lt;strong&gt;Experience&lt;/strong&gt; - What has the System Architect seen and worked with in the past.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff;"&gt;&lt;strong&gt;Coordination&lt;/strong&gt; - A system design is based on multiple factors, and one person can't make all the choices. There will need to be others involved at every level of the solution, and the Systems Architect will need to know who those people are and how to work with them.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h1&gt;How the Cloud Changes Things&lt;/h1&gt;
&lt;p&gt;From the outset, it doesn't seem that using a distributed system would change anything in the Systems Architect role. Isn't the cloud simply another option that the Systems Architect needs to learn and apply? Yes, that is true - but it goes a bit deeper. Let's return to those vectors a moment to see what a Systems Architect needs to take into account.&lt;/p&gt;
&lt;h2&gt;Knowledge&lt;/h2&gt;
&lt;p&gt;The first and probably most obvious impact is learning about cloud technologies. But the important part of that knowledge is to learn &lt;em&gt;when&lt;/em&gt; and &lt;em&gt;where&lt;/em&gt; to use each service. It's a common misconception that the cloud should be an "all or nothing" approach. That's just not true - every Windows Azure project I work on has some element of on-premises interaction, and in some cases only one small part of a solution is placed on the Windows Azure architecture. Since Windows Azure contains IaaS (VM's) PaaS (you write code, we run it)&amp;nbsp; and even SaaS (Such as Hadoop or Media Services), a given architecture can use multiple components even within just one provider. And I've worked on several projects where the customer used not only Windows Azure and On-Premises environments, but also components from other providers. That's not only acceptable, but often the best way to solve a given problem.&lt;/p&gt;
&lt;p&gt;As part of the learning experience, it's vital to keep in mind what you need to pick as key decision points. In your organization, cost could be ranked higher than performance, or perhaps security is the highest decision point.&lt;/p&gt;
&lt;p&gt;To stay educated, there are various journals, websites and conferences that Systems Architects use to keep current. Almost all of those are talking about "cloud" - but there is no substitute for learning from the vendor about their solution. I'm speaking here of the technical information, not the marketing information. The marketing information is also useful, at least from a familiarity standpoint, but the technical information is what you need.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#800000;"&gt;Resource: For Windows Azure, the Systems Architect can start here:&lt;/span&gt; &lt;a href="http://sqlblog.com/b/buckwoody/archive/2012/06/13/windows-azure-write-run-or-use-software.aspx" target="_blank"&gt;http://blogs.msdn.com/b/buckwoody/archive/2012/06/13/windows-azure-write-run-or-use-software.aspx&lt;/a&gt;&amp;nbsp; &lt;/p&gt;
&lt;h2&gt;Experience&lt;/h2&gt;
&lt;p&gt;Cloud computing is relatively new - it's only been out a few years, and the main competitors are only now settling in to their respective areas. It might not be common for a Systems Architect to have a lot of hands-on experience with cloud projects.&lt;/p&gt;
&lt;p&gt;Even so, there are ways to leverage the experience of others, such as direct contact or even attending conferences where customers present findings from their experiences.&lt;/p&gt;
&lt;p&gt;You can also gain hands-on experience by setting up pilots and proof-of-concept projects yourself. Most all vendors - Microsoft included - have free time available on their systems. The key to an experiment like this is choosing some problem you are familiar with that exercises as many features in the platform as possible. There is no substitute for working with a platform when you want to design a solution. &lt;/p&gt;
&lt;h2&gt;Coordination&lt;/h2&gt;
&lt;p&gt;Probably one of the largest changes in the Systems Architect role that the cloud brings is in the area of coordination. When a Systems Architect deals with the business and other technical professionals, there is a 20+ year history of technology that we are all familiar with. When you mention "the cloud", those audiences may not have spent the time you have in understanding what that means - and often they think it means the "all or nothing" approach I mentioned earlier.&lt;/p&gt;
&lt;p&gt;I've found that a series of "lunch and learns" for the technical staff is useful to explain to each role-group how the cloud is used in their area is useful. In the posts that follow this one, I'll give you some material for those. For managers and business professionals, you'll want to go a different route. I've found that an "Executive Briefing" e-mail, consisting of about a page, with headings that are applicable to your audience.&lt;/p&gt;
&lt;p&gt;&lt;span style="color:#800000;"&gt;Resource: Writing Executive Summaries:&lt;/span&gt; &lt;a href="http://writing.colostate.edu/guides/guide.cfm?guideid=76" target="_blank"&gt;http://writing.colostate.edu/guides/guide.cfm?guideid=76&lt;/a&gt; &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=47243" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx">Career</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Computing/default.aspx">Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx">Concepts</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Data/default.aspx">Data</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx">Design</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>High Availability for IaaS, PaaS and SaaS in the Cloud</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/11/06/high-availability-for-iaas-paas-and-saas-in-the-cloud.aspx</link><pubDate>Tue, 06 Nov 2012 15:15:28 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:45969</guid><dc:creator>BuckWoody</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/45969.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=45969</wfw:commentRss><description>&lt;p&gt;Outages, natural disasters and unforeseen events have proved that even in a distributed architecture, you need to plan for High Availability (HA). In this entry I'll explain a few considerations for HA within Infrastructure-as-a-Service (IaaS), Platform-as-a-Service (PaaS) and Software-as-a-Service (SaaS). In a separate post I'll talk more about Disaster Recovery (DR), since each paradigm has a different way to handle that.&lt;/p&gt;
&lt;h1&gt;Planning for HA in IaaS&lt;/h1&gt;
&lt;p&gt;IaaS involves Virtual Machines - so in effect, an HA strategy here takes on many of the same characteristics as it would on-premises. The primary difference is that the vendor controls the hardware, so you need to verify what they do for things like local redundancy and so on from the hardware perspective.&lt;/p&gt;
&lt;p&gt;As far as what you can control and plan for, the primary factors fall into three areas: multiple instances, geographical dispersion and task-switching.&lt;/p&gt;
&lt;p&gt;In almost every cloud vendor I've studied, to ensure your application will be protected by any level of HA, you need to have at least two of the Instances (VM's) running. This makes sense, but you might assume that the vendor just takes care of that for you - they don't. If a single VM goes down (for whatever reason) then the access to it is lost. Depending on multiple factors, you might be able to recover the data, but you should assume that you can't. You should keep a sync to another location (perhaps the vendor's storage system in another geographic datacenter or to a local location) to ensure you can continue to serve your clients.&lt;/p&gt;
&lt;p&gt;You'll also need to host the same VM's in another geographical location. Everything from a vendor outage to a network path problem could prevent your users from reaching the system, so you need to have multiple locations to handle this.&lt;/p&gt;
&lt;p&gt;This means that you'll have to figure out how to manage state between the geo's. If the system goes down in the middle of a transaction, you need to figure out what part of the process the system was in, and then re-create or transfer that state to the second set of systems. If you didn't write the software yourself, this is non-trivial.&lt;/p&gt;
&lt;p&gt;You'll also need a manual or automatic process to detect the failure and re-route the traffic to your secondary location. You could flip a DNS entry (if your application can tolerate that) or invoke another process to alias the first system to the second, such as load-balancing and so on. There are many options, but all of them involve coding the state into the application layer. If you've simply moved a state-ful application to VM's, you may not be able to easily implement an HA solution.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79/6366.HAIaaS.png"&gt;&lt;img src="http://sqlblog.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79/6366.HAIaaS.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Planning for HA in PaaS&lt;/h1&gt;
&lt;p&gt;Implementing HA in PaaS is a bit simpler, since it's built on the concept of stateless applications deployment. Once again, you need at least two copies of each element in the solution (web roles, worker roles, etc.) to remain available in a single datacenter. Also, you need to deploy the application again in a separate geo, but the advantage here is that you could work out a "shared storage" model such that state is auto-balanced across the world. In fact, you don't have to maintain a "DR" site, the alternate location can be live and serving clients, and only take on extra load if the other site is not available. In Windows Azure, you can use the Traffic Manager service top route the requests as a type of auto balancer.&lt;/p&gt;
&lt;p&gt;Even with these benefits, I recommend a second backup of storage in another geographic location. Storage is inexpensive; and that second copy can be used for not only HA but DR.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79/2313.HAPaaS.png"&gt;&lt;img src="http://sqlblog.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79/2313.HAPaaS.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Planning for HA in SaaS&lt;/h1&gt;
&lt;p&gt;In Software-as-a-Service (such as Office 365, or Hadoop in Windows Azure) You have far less control over the HA solution, although you still maintain the responsibility to ensure you have it. Since each SaaS is different, check with the vendor on the solution for HA - and make sure you understand what they do and what you are responsible for. They may have no HA for that solution, or pin it to a particular geo, or perhaps they have a massive HA built in with automatic load balancing (which is often the case).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79/8345.HASaaS.png"&gt;&lt;img src="http://sqlblog.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79/8345.HASaaS.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;All of these options (with the exception of SaaS) involve higher costs for the design. Do not sacrifice reliability for cost - that will always cost you more in the end. Build in the redundancy and HA at the very outset of the project - if you try to tack it on later in the process the business will push back and potentially not implement HA.&lt;/p&gt;
&lt;p&gt;References: &lt;a href="http://www.bing.com/search?q=windows+azure+High+Availability"&gt;http://www.bing.com/search?q=windows+azure+High+Availability&lt;/a&gt;&amp;nbsp; (each type of implementation is different, so I'm routing you to a search on the topic - look for the "Patterns and Practices" results for the area in Azure you're interested in)&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=45969" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Administration/default.aspx">Administration</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Best+Practices/default.aspx">Best Practices</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Computing/default.aspx">Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx">Concepts</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx">Design</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Monitoring/default.aspx">Monitoring</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Keeping your options open in a cloud solution</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/09/25/keeping-your-options-open-in-a-cloud-solution.aspx</link><pubDate>Tue, 25 Sep 2012 14:20:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:45345</guid><dc:creator>BuckWoody</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/45345.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=45345</wfw:commentRss><description>&lt;p&gt;In on-premises solutions we have the full range of options open for a given computing solution &amp;ndash; but we don&amp;rsquo;t always take advantage of them, for multiple reasons. Data goes in a Relational Database Management System, files go on a share, and e-mail goes to the Exchange server.&lt;/p&gt;
&lt;p&gt;Over time, vendors (including ourselves) add in functionality to one product that allow non-standard use of the platform. For example, SQL Server (and Oracle, and others) allow large binary storage in or through the system &amp;ndash; something not originally intended for an RDBMS to handle. There are certainly times when this makes sense, of course, but often these platform hammers turn every problem into a nail. It can make us &amp;ldquo;lazy&amp;rdquo; in our design &amp;ndash; we sometimes don&amp;rsquo;t take the time to learn another architecture because the one we&amp;rsquo;ve spent so much time with can handle what we want to do.&lt;/p&gt;
&lt;p&gt;But there&amp;rsquo;s a distinct danger here. In nature, when a population shares too many of the same traits, it can cause a complete collapse if a situation exploits a weakness shared by that population. The same is true with not using the right&lt;br /&gt;tool for the job in a computing environment. Your company or organization depends on your knowledge as a professional to select the best mix of supportable, flexible, cost-effective technologies to solve their problems, whether you&amp;rsquo;re in an architect role or not.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So take some time today to learn something new. The way I do this is to select a given problem, and try to solve it with a technology I&amp;rsquo;m not familiar with. For instance &amp;ndash; create a Purchase Order system in Excel, then in Hadoop or MongoDB, or even in flat-files using PowerShell as an interface. No, I&amp;rsquo;m not suggesting any of these architectures are the proper way to solve the PO problem, but taking something concrete that you know well and applying that meta-knowledge to another platform will assist you in exercising the &amp;ldquo;little grey cells&amp;rdquo; and help you and your organization understand what is open to you.&lt;/p&gt;
&lt;p&gt;And of course you can do all of this on-premises &amp;ndash; but my recommendation is to check out a cloud platform (my suggestion would of course be Windows Azure :) ) and try it there. Most providers (including Microsoft) provide free time to do that.&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=45345" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure+Use+Cases/default.aspx">Azure Use Cases</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Windows Azure Visio Shapes</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/07/25/windows-azure-visio-shapes.aspx</link><pubDate>Wed, 25 Jul 2012 13:44:23 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:44437</guid><dc:creator>BuckWoody</dc:creator><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/44437.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=44437</wfw:commentRss><description>&lt;p&gt;Normally when I diagram a solution for a customer, I use whatever they are comfortable with. I do most of my work these days in OneNote, especially when it’s an Architecture Design Session (ADS), since I can capture notes, handwriting, drawings, web pages, whiteboards, camera shots and even voice. In fact you can search on most of those. &lt;/p&gt;  &lt;p&gt;Simplicity is the rule – I just want to capture enough data to move to the next phase of the project and ensure everyone understands what we are doing. When we get to that next phase, I like to use Visio. It’s a vector-based drawing and diagraming tool, which means you can zoom in or out a great deal without a loss of definition, in most cases. For complicated diagrams, this is essential. &lt;/p&gt;  &lt;p&gt;The basic shapes in Visio are fine – and there are some computer and network shapes I use there all the time. But I wanted something that would show the basic parts of Windows Azure, from our IaaS to our PaaS to the SaaS shapes, as well as security federation providers like Google or Yahoo that you can leverage in Azure. &lt;/p&gt;  &lt;p&gt;So I created some shapes, and I’ll share them here. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5008.AzureShapes_5F00_2.jpg"&gt;&lt;img title="AzureShapes" style="display:inline;background-image:none;" border="0" alt="AzureShapes" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2055.AzureShapes_5F00_thumb.jpg" width="822" height="478" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here’s the link to the file on my SkyDrive – understand that these are from Buck Woody, NOT Microsoft. They are neither official nor approved, and if they cause your machine to break Microsoft isn’t liable for that: &lt;a href="http://sdrv.ms/QjalVR"&gt;http://sdrv.ms/QjalVR&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font face="Calibri"&gt;&lt;b&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="color:maroon;font-size:10pt;mso-bidi-font-size:11.0pt;mso-bidi-font-family:calibri;mso-ansi-language:en;"&gt;Disclaimer, for people who need to be told this sort of thing: &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="color:maroon;font-size:10pt;mso-bidi-font-family:calibri;mso-ansi-language:en;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font face="Calibri"&gt;&lt;i style="mso-bidi-font-style:normal;"&gt;&lt;span style="color:maroon;font-size:10pt;mso-bidi-font-family:calibri;mso-ansi-language:en;"&gt;Never trust any software packages, including those that you find here, until you understand exactly what it does and how it will act on your systems. Always check the script on a test system or Virtual Machine, not a production system. Yes, there are always multiple ways to do things, and this tool may not work in every situation, for everything. It’s just a graphic, people. All code on this site is performed by a professional stunt driver on a closed course. Your mileage may vary. Void where prohibited. Offer good for a limited time only. Keep out of reach of small children. Do not operate heavy machinery while using this software. If you experience blurry vision, indigestion or diarrhea during the operation of this software, see a physician immediately.&lt;/span&gt;&lt;/i&gt;&lt;span style="font-family:'Times New Roman','serif';font-size:12pt;mso-ansi-language:en;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font color="#000000" size="3" face="Times New Roman"&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=44437" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Downloads/default.aspx">Downloads</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Windows Azure – Write, Run or Use Software</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/06/13/windows-azure-write-run-or-use-software.aspx</link><pubDate>Wed, 13 Jun 2012 22:47:00 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:43884</guid><dc:creator>BuckWoody</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/43884.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=43884</wfw:commentRss><description>&lt;p&gt;&lt;a href="http://www.windowsazure.com/en-us/pricing/free-trial/" target="_blank"&gt;Windows Azure&lt;/a&gt; is a platform that has you covered, whether you need to write software, run software that is already written, or Install and use &amp;ldquo;canned&amp;rdquo; software whether you or someone else wrote it. Like any platform, it&amp;rsquo;s a set of tools you can use where it makes sense to solve a problem.&lt;/p&gt;
&lt;p&gt;You can click on the graphic below for a larger picture of these components, or download a poster with more details &lt;a title="Azure Poster Download" href="http://www.microsoft.com/en-us/download/details.aspx?id=35473&amp;amp;WT.mc_id=rss_alldownloads_all" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p style="text-align:center;"&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79/1715.AzureArch.png"&gt;&lt;img src="http://sqlblog.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79/1715.AzureArch.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The primary location for Windows Azure information is located at &lt;a href="http://windowsazure.com" target="_blank"&gt;http://windowsazure.com&lt;/a&gt;. You can find everything there from the development kits for writing software to pricing, licensing and tutorials on all of that.&lt;/p&gt;
&lt;p&gt;I have a few links here for learning to use Windows Azure &amp;ndash; although it&amp;rsquo;s best if you focus not on the tools, &lt;em&gt;but what you want to solve&lt;/em&gt;. I&amp;rsquo;ve got it broken down here into various sections, so you can quickly locate things you want to know. I&amp;rsquo;ll include resources here from Microsoft and elsewhere &amp;ndash; I use these same resources in the Architectural Design Sessions (ADS) I do with my clients worldwide.&lt;/p&gt;
&lt;p&gt;There is also a great &lt;a href="http://sqlblog.com/b/alfredth/archive/2012/08/30/cloud-fundamentals-video-series.aspx" target="_blank"&gt;video series on Cloud Fundamentals here, if you have some time to watch them. It's a&amp;nbsp;great series that covers a lot of ground&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="font-weight:normal;"&gt;Write Software&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;Also called &amp;ldquo;&lt;a href="http://www.microsoft.com/industry/government/guides/cloud_computing/5-PaaS.aspx" target="_blank"&gt;Platform as a Service&lt;/a&gt;&amp;rdquo; (PaaS), Windows Azure has lots of components you can use together or separately that allow you to write software in .NET or various Open Source languages to work completely online, or in partnership with code you have on-premises or both &amp;ndash; even if you&amp;rsquo;re using other cloud providers. Keep in mind that all of the features you see here can be used together, or independently. For instance, you might only use a Web Site, or use Storage, but you can use both together. You can access all of these components through standard REST API calls, or using our &lt;a href="http://www.windowsazure.com/en-us/develop/downloads/" target="_blank"&gt;Software Development Kit&amp;rsquo;s API&amp;rsquo;s, which are a lot easier&lt;/a&gt;. In any case, you simply use Visual Studio, Eclipse, Cloud9 IDE, or even a text editor to write your code from a Mac, PC or Linux.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6545.Items_5F00_2.png"&gt;&lt;img style="margin:0px 8px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="Items" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5305.Items_5F00_thumb.png" alt="Items" width="24" height="19" align="left" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;em&gt;Components you can use:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowsazure.com/en-us/home/scenarios/web-sites/" target="_blank"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2251.link_5F00_5.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsazure.com/en-us/home/scenarios/web-sites/" target="_blank"&gt;Azure Web Sites&lt;/a&gt;: Windows Azure Web Sites allow you to quickly write an deploy websites, without setting a Virtual Machine, installing a web server or configuring complex settings. They work alone, with other Windows Azure Web Sites, or with other parts of Windows Azure. Read more about &lt;a href="http://sqlblog.com/b/acoat/archive/2012/06/24/windows-azure-when-do-i-use-what.aspx" target="_blank"&gt;deciding to use Web Sites or Roles&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowsazure.com/en-us/home/features/cloud-services/" target="_blank"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0601.link_5F00_6.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsazure.com/en-us/home/features/cloud-services/" target="_blank"&gt;Web and Worker Roles&lt;/a&gt;: Windows Azure Web Roles give you a full stateless computing instance with Internet Information Services (IIS) installed and configured. Windows Azure Worker Roles give you a full stateless computing instance without Information Services (IIS) installed, often used in a "Services" mode. Scale-out is achieved either manually or programmatically under your control.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee924681.aspx" target="_blank"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2337.link_5F00_7.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee924681.aspx" target="_blank"&gt;Storage&lt;/a&gt;: Windows Azure Storage types include &lt;a href="http://www.windowsazure.com/en-us/develop/net/how-to-guides/blob-storage/" target="_blank"&gt;Blobs&lt;/a&gt; to store raw binary data, &lt;a href="http://www.windowsazure.com/en-us/develop/net/how-to-guides/table-services/" target="_blank"&gt;Tables&lt;/a&gt; to use key/value pair data (like NoSQL data structures), &lt;a href="http://www.windowsazure.com/en-us/develop/net/how-to-guides/queue-service/" target="_blank"&gt;Queues&lt;/a&gt; that allow interaction between stateless roles, and a relational &lt;a href="http://www.windowsazure.com/en-us/develop/net/how-to-guides/sql-database/" target="_blank"&gt;SQL Server database&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/net/fundamentals/hybrid-solutions/" target="_blank"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2843.link_5F00_8.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/net/fundamentals/hybrid-solutions/" target="_blank"&gt;Other Services&lt;/a&gt;: Windows Azure has many other services such as a &lt;a href="http://www.windowsazure.com/en-us/develop/net/how-to-guides/access-control/" target="_blank"&gt;security mechanism&lt;/a&gt;, a &lt;a href="http://www.windowsazure.com/en-us/develop/net/how-to-guides/cache/" target="_blank"&gt;Cache&lt;/a&gt; (memcacheD compliant), a &lt;a href="http://www.windowsazure.com/en-us/develop/net/how-to-guides/service-bus-topics/" target="_blank"&gt;Service Bus&lt;/a&gt;, a Traffic Manager and more. Once again, these features can be used with a Windows Azure project, or alone based on your needs.&lt;/p&gt;
&lt;p&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentColor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2843.link_5F00_8.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;a href="http://www.windowsazure.com/en-us/home/scenarios/mobile-services/" target="_blank"&gt;Windows Azure Mobile Services&lt;/a&gt;: A simple framework service which enables you to quickly develop the back-end for mobile services. For the front-end, check out the &lt;a href="https://github.com/WindowsAzure-Toolkits/wa-toolkit-ios" target="_blank"&gt;iOS SDK&lt;/a&gt;, &lt;a href="http://blogs.technet.com/b/microsoft_blog/archive/2011/05/09/microsoft-announces-windows-azure-toolkits-for-ios-android-and-windows-phone.aspx" target="_blank"&gt;news about the Android SDK&lt;/a&gt;, and the &lt;a href="http://watwp.codeplex.com/" target="_blank"&gt;Windows Phone SDK&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/overview/" target="_blank"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/1680.link_5F00_9.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/overview/" target="_blank"&gt;Various Languages&lt;/a&gt;: Windows Azure supports the .NET stack of languages, as well as many Open-Source languages like Java, Python, PHP, Ruby, NodeJS, C++ and more.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="font-weight:normal;"&gt;Use Software&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;Also called &amp;ldquo;&lt;a href="http://msdn.microsoft.com/en-us/library/bb507203.aspx" target="_blank"&gt;Software as a Service&lt;/a&gt;&amp;rdquo; (SaaS) this often means consumer or business-level software like Hotmail or Office 365. In other words, you simply log on, use the software, and log off &amp;ndash; there&amp;rsquo;s nothing to install, and little to even configure. For the Information Technology professional, however, It&amp;rsquo;s not quite the same. We want software that provides services, but in a platform. That means we want things like Hadoop or other software we don&amp;rsquo;t want to have to install and configure.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6545.Items_5F00_2.png"&gt;&lt;img style="margin:0px 8px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="Items" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5305.Items_5F00_thumb.png" alt="Items" width="24" height="19" align="left" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;em&gt;Components you can use:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=MpsIh2HwdPo"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2744.link_5F00_10.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.youtube.com/watch?v=MpsIh2HwdPo" target="_blank"&gt;Kits&lt;/a&gt;: Various software &amp;ldquo;kits&amp;rdquo; or packages are supported with just a few clicks, such as Umbraco, Wordpress, and others.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowsazure.com/en-us/home/features/media-services/" target="_blank"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6557.link_5F00_11.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsazure.com/en-us/home/features/media-services/" target="_blank"&gt;Windows Azure Media Services&lt;/a&gt;: Windows Azure Media Services is a suite of services that allows you to upload media for encoding, processing and even streaming &amp;ndash; or even one or more of those functions. We can add DRM and even commercials to your media if you like. Windows Azure Media Services is used to stream large events all the way down to small training videos.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowsazure.com/en-us/home/scenarios/big-data/" target="_blank"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/3821.link_5F00_12.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsazure.com/en-us/home/scenarios/big-data/" target="_blank"&gt;High Performance Computing and &amp;ldquo;Big Data&amp;rdquo;&lt;/a&gt;: Windows Azure allows you to scale to huge workloads using a few clicks to deploy &lt;a href="https://www.hadooponazure.com/" target="_blank"&gt;Hadoop&lt;/a&gt; Clusters or the &lt;a href="http://msdn.microsoft.com/en-us/library/hh560251(v=vs.85).aspx" target="_blank"&gt;High Performance Computing (HPC) nodes&lt;/a&gt;, accepting HPC Jobs, Pig and Hive Jobs, and even interfacing with Microsoft Excel.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://datamarket.azure.com/" target="_blank"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7853.link_5F00_13.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="https://datamarket.azure.com/" target="_blank"&gt;Windows Azure Marketplace&lt;/a&gt;: Windows Azure Marketplace offers data and programs you can quickly implement and use &amp;ndash; some free, some for-fee.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="font-weight:normal;"&gt;Run Software&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;Also known as &amp;ldquo;&lt;a href="http://sqlblog.com/b/jmeier/archive/2010/02/11/software-as-a-service-saas-platform-as-a-service-paas-and-infrastructure-as-a-service-iaas.aspx" target="_blank"&gt;Infrastructure as a Service&lt;/a&gt;&amp;rdquo; (IaaS), this offering allows you to build or simply choose a Virtual Machine to run server-based software.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6545.Items_5F00_2.png"&gt;&lt;img style="margin:0px 8px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="Items" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5305.Items_5F00_thumb.png" alt="Items" width="24" height="19" align="left" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;em&gt;Components you can use:&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.windowsazure.com/en-us/home/scenarios/virtual-machines/" target="_blank"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/1680.link_5F00_14.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsazure.com/en-us/home/scenarios/virtual-machines/" target="_blank"&gt;Persistent Virtual Machines&lt;/a&gt;: You can choose to install Windows Server, Windows Server with Active Directory, with SQL Server, or even SharePoint from a pre-configured gallery. You can configure your own server images with standard Hyper-V technology and load them yourselves &amp;ndash; and even bring them back when you&amp;rsquo;re done. As a new offering, we also even allow you to select various distributions of Linux &amp;ndash; a first for Microsoft.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg432997.aspx" target="_blank"&gt;&lt;img style="margin:0px 5px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7041.link_5F00_15.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg432997.aspx" target="_blank"&gt;Windows Azure Connect&lt;/a&gt;: You can connect your on-premises networks to Windows Azure Instances.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee924681.aspx" target="_blank"&gt;&lt;img style="margin:0px 3px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2744.link_5F00_16.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/ee924681.aspx" target="_blank"&gt;Storage&lt;/a&gt;: Windows Azure Storage can be used as a remote backup, a hybrid storage location and more using software or even hardware appliances.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="font-weight:normal;"&gt;Decision Matrix&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2742.tool_5F00_2.png"&gt;&lt;img style="border:0px currentcolor;display:inline;background-image:none;" title="tool" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/3821.tool_5F00_thumb.png" alt="tool" width="29" height="30" border="0" /&gt;&lt;/a&gt;With all of these options, you can use Windows Azure to solve just about any computing problem. It&amp;rsquo;s often hard to know when to use something on-premises, in the cloud, and what kind of service to use.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve used a decision matrix in the last couple of years to take a particular problem and choose the proper technology to solve it. It&amp;rsquo;s all about options &amp;ndash; there is no &amp;ldquo;silver bullet&amp;rdquo;, whether that&amp;rsquo;s Windows Azure or any other set of functions. I take the problem, decide which particular component I want to own and control &amp;ndash; and choose the column that has that box darkened. For instance, if I have to control the wiring for a solution (a requirement in some military and government installations), that means the &amp;ldquo;Networking&amp;rdquo; component needs to be dark, and so I select the &amp;ldquo;On Premises&amp;rdquo; column for that particular solution. If I just need the solution provided and I want no control at all, I can look as &amp;ldquo;Software as a Service&amp;rdquo; solutions.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2251.image6.png"&gt;&lt;img style="border:0px currentcolor;margin-right:auto;margin-left:auto;float:none;display:block;background-image:none;" title="image" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/1273.image6_5F00_thumb.png" alt="image" width="663" height="487" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="font-weight:normal;"&gt;Security, Pricing, and Other Info&lt;/span&gt;&lt;/span&gt;&lt;/h1&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://www.windowsazure.com/en-us/support/trust-center/" target="_blank"&gt;&lt;img style="margin:0px 3px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0601.link_5F00_d062d746_2D00_5265_2D00_40d7_2D00_aaaa_2D00_02275b1cedf9.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsazure.com/en-us/support/trust-center/" target="_blank"&gt;Security&lt;/a&gt;: Security is one of the first questions you should ask in any distributed computing environment. We have certification info, coding guidelines and more, even a general &amp;ldquo;Request for Information&amp;rdquo; &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=26647" target="_blank"&gt;RFI Response already created for you&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;a href="http://www.windowsazure.com/en-us/pricing/purchase-options/" target="_blank"&gt;&lt;img style="margin:0px 3px 0px 0px;border:0px currentcolor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0284.link_5F00_c1797794_2D00_6178_2D00_4357_2D00_9af5_2D00_4729f7f7aa4f.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;&lt;a href="http://www.windowsazure.com/en-us/pricing/purchase-options/" target="_blank"&gt;Pricing&lt;/a&gt;: Are there licenses? &lt;a href="http://www.windowsazure.com/en-us/pricing/calculator/?scenario=web" target="_blank"&gt;How much does this cost&lt;/a&gt;? &lt;a href="http://sqlblog.com/b/buckwoody/archive/2011/11/08/developing-a-cost-model-for-cloud-applications.aspx" target="_blank"&gt;Is there a way to estimate the costs in this new environment&lt;/a&gt;?&lt;/p&gt;
&lt;p&gt;&lt;a href="http://sqlblog.com/b/davidmcg/archive/2012/06/14/azure-action-community-newsletter-13th-june-2012.aspx" target="_blank"&gt;&lt;img style="margin:0px 3px 0px 0px;border:0px currentColor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0284.link_5F00_c1797794_2D00_6178_2D00_4357_2D00_9af5_2D00_4729f7f7aa4f.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/a&gt;New Features: Many new features were added to Windows Azure - and you can keep up to date with community information released monthly here: &lt;a href="http://sqlblog.com/b/davidmcg/"&gt;http://blogs.msdn.com/b/davidmcg/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="margin:0px 3px 0px 0px;border:0px currentColor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0284.link_5F00_c1797794_2D00_6178_2D00_4357_2D00_9af5_2D00_4729f7f7aa4f.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Windows Azure Cookbooks: Great resource for architecture solutions - &lt;a href="http://www.notsotrivial.net/blog/category/Architecture.aspx"&gt;http://www.notsotrivial.net/blog/category/Architecture.aspx&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="margin:0px 3px 0px 0px;border:0px currentColor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0284.link_5F00_c1797794_2D00_6178_2D00_4357_2D00_9af5_2D00_4729f7f7aa4f.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Support: &lt;a href="http://support.microsoft.com/kb/2721672" target="_blank"&gt;Software Support on Virtual Machines&lt;/a&gt;,&amp;nbsp;&lt;a href="https://www.windowsazure.com/en-us/support/contact/" target="_blank"&gt;general support&lt;/a&gt;, &lt;a href="http://www.windowsazure.com/en-us/support/plans/" target="_blank"&gt;support plans&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="margin:0px 3px 0px 0px;border:0px currentColor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0284.link_5F00_c1797794_2D00_6178_2D00_4357_2D00_9af5_2D00_4729f7f7aa4f.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;/p&gt;
&lt;p&gt;Hands-On Labs: &lt;a href="http://msdn.microsoft.com/en-us/jj618399"&gt;http://msdn.microsoft.com/en-us/jj618399&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img style="margin:0px 3px 0px 0px;border:0px currentColor;float:left;display:inline;background-image:none;" title="link" src="http://sqlblog.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/0284.link_5F00_c1797794_2D00_6178_2D00_4357_2D00_9af5_2D00_4729f7f7aa4f.png" alt="link" width="24" height="24" align="left" border="0" /&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=35524&amp;amp;WT.mc_id=rss_alldownloads_all" target="_blank"&gt;Windows Azure Capability Discussion Presentation&lt;/a&gt; and &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=35527&amp;amp;WT.mc_id=rss_alldownloads_all" target="_blank"&gt;Windows Azure Solution Implementer Guide&lt;/a&gt; and &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=35534&amp;amp;WT.mc_id=rss_alldownloads_all" target="_blank"&gt;Windows Azure Business Priorities Guide&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=43884" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx">Design</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Documentation/default.aspx">Documentation</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Latest+Version/default.aspx">Latest Version</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Azure/default.aspx">SQL Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Storage/default.aspx">Storage</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/VM+Role/default.aspx">VM Role</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Web/default.aspx">Web</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><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><slash:comments>1</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/43364.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=43364</wfw:commentRss><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;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=43364" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Best+Practices/default.aspx">Best Practices</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Book+Review/default.aspx">Book Review</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Career/default.aspx">Career</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx">Concepts</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx">Design</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Tips/default.aspx">Tips</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></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><slash:comments>5</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/42764.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=42764</wfw:commentRss><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;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=42764" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Best+Practices/default.aspx">Best Practices</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Azure/default.aspx">SQL Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Tips/default.aspx">Tips</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></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><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/41593.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=41593</wfw:commentRss><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;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=41593" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Best+Practices/default.aspx">Best Practices</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx">Concepts</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx">Design</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Developer/default.aspx">Developer</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Development/default.aspx">Development</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Links/default.aspx">Links</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Planning/default.aspx">Planning</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Process/default.aspx">Process</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/System+Center+Operations+Manager/default.aspx">System Center Operations Manager</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Tips/default.aspx">Tips</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Bug-Out Bags and Cloud Architecture Considerations</title><link>http://sqlblog.com/blogs/buck_woody/archive/2012/01/20/bug-out-bags-and-cloud-architecture-considerations.aspx</link><pubDate>Fri, 20 Jan 2012 17:00:58 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:41196</guid><dc:creator>BuckWoody</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/41196.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=41196</wfw:commentRss><description>&lt;p&gt;I served in the U.S. Military for a while, and as part of my training we had to maintain a “Bug-Out Bag”, which was a large duffle-bag full of certain items that we could live on/fight with in an emergency. I’ve carried the spirit of that idea forward with me into civilian life, in Florida and especially here in the Pacific Northwest.&lt;/p&gt;  &lt;p&gt;In Florida we dealt with the threat of hurricanes - I went through four of those in one year that hit my area. You’re without power, it floods quickly, and it gets wicked hot. You roof might be gone, whatever. Here in the Pacific Northwest, I live near one of the largest volcano's in the world, we have flooding, and recently we were hit with an ice-storm. Now I’ve lived all over the world, from Alaska to North Dakota and &lt;a href="http://en.wikipedia.org/wiki/Shemya" target="_blank"&gt;even near the Kamchatka Peninsula in Russia&lt;/a&gt;, and I can handle the snow. But ice - that’s a toughie no matter where you live. We had so much that it split my little pine tree in front of the house in half. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8168.P1030729.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="P1030729" border="0" alt="P1030729" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6180.P1030729_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5428.P1030728.jpg"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="P1030728" border="0" alt="P1030728" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7178.P1030728_5F00_thumb.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We lost power - although I think the folks at Puget Sound Energy did an amazing job at getting us back up in less than 24 hours, but we weren’t worried anyway. That bug-out bag mentality carried forward to a “second pantry” we keep in the garage. &lt;/p&gt;  &lt;p&gt;We have a large plastic box (that will fit in the back of the Subaru) with dried goods like pasta, and canned goods and even a little cook stove. We have 25 gallons of clean water in Jerry-Cans. We have batteries, candles and matches. And we have flashlights around every door. We use supplies from the “pantry” to fill our house pantry, and then refill the emergency one from the grocery store. That way everything is fresh, rotated, and we can “bug-out” here at home or on the road. &lt;/p&gt;  &lt;p&gt;So what does this have to do with Distributed Computing Architectures?&lt;/p&gt;  &lt;p&gt;&lt;em&gt;It’s the thought process&lt;/em&gt;. In both the military and civilian life, I’ve done a few things:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Sat down and thought carefully about exactly what I need. Did I include a can-opener? A small shovel to dig out of whatever I got stuck in? Then I weed out what I *really* don’t need.&lt;/li&gt;    &lt;li&gt;Put those things into a small, manageable container. &lt;/li&gt;    &lt;li&gt;Tried them - even when (especially when) I didn’t have an emergency&lt;/li&gt;    &lt;li&gt;Tweaked the process to see what I could do better.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Have you done this when you moved an app to the “cloud”? Each of these has a computing parallel - do you know what you would do if you couldn’t access the Distributed Computing Environment?&lt;/p&gt;  &lt;p&gt;I’ve found these thoughts are actually a great place to start - keeps the process simplified from the start, and gives you a sense of assurance when you’re asked if you can recover from an emergency. &lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=41196" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Best+Practices/default.aspx">Best Practices</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx">Concepts</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Disaster+Recovery/default.aspx">Disaster Recovery</category></item><item><title>Developing a Cost Model for Cloud Applications</title><link>http://sqlblog.com/blogs/buck_woody/archive/2011/11/08/developing-a-cost-model-for-cloud-applications.aspx</link><pubDate>Tue, 08 Nov 2011 15:30:49 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:39707</guid><dc:creator>BuckWoody</dc:creator><slash:comments>3</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/39707.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=39707</wfw:commentRss><description>&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; - &lt;em&gt;&lt;font color="#c0504d"&gt;please pay attention to the date of this post. As much as I attempt to make the information below accurate, the nature of distributed computing means that components, units and pricing will change over time. The definitive costs for Microsoft Windows Azure and SQL Azure are located here, and are more accurate than anything you will see in this post:&lt;/font&gt;&lt;/em&gt; &lt;a title="http://www.microsoft.com/windowsazure/offers/" href="http://www.microsoft.com/windowsazure/offers/"&gt;http://www.microsoft.com/windowsazure/offers/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When writing software that is run on a Platform-as-a-Service (PaaS) offering like Windows Azure / SQL Azure, one of the questions you must answer is how much the system will cost. I will not discuss the comparisons between on-premise costs (which are nigh impossible to calculate accurately) versus cloud costs, but instead focus on creating a general model for estimating costs for a given application. &lt;/p&gt;  &lt;p&gt;You should be aware that there are (at this writing) two billing mechanisms for Windows and SQL Azure: “Pay-as-you-go” or consumption, and “Subscription” or commitment. Conceptually, you can consider the former a pay-as-you-go cell phone plan, where you pay by the unit used (at a slightly higher rate) and the latter as a standard cell phone plan where you commit to a contract and thus pay lower rates. In this post I’ll stick with the pay-as-you-go mechanism for simplicity, which should be the maximum cost you would pay. From there you may be able to get a lower cost if you use the other mechanism. In any case, the model you create should hold. &lt;/p&gt;  &lt;p&gt;Developing a good cost model is essential. As a developer or architect, you’ll most certainly be asked how much something will cost, and you need to have a reliable way to estimate that. Businesses and Organizations have been used to paying for servers, software licenses, and other infrastructure as an up-front cost, and power, people to the systems and so on as an ongoing (and sometimes not factored) cost. When presented with a new paradigm like distributed computing, they may not understand the true cost/value proposition, and that’s where the architect and developer can guide the conversation to make a choice based on features of the application versus the true costs.&lt;/p&gt;  &lt;p&gt;The two big buckets of use-types for these applications are customer-based and steady-state. In the customer-based use type, each successful use of the program results in a sale or income for your organization. Perhaps you’ve written an application that provides the spot-price of &lt;em&gt;foo&lt;/em&gt;, and your customer pays for the use of that application. In that case, once you’ve estimated your cost for a successful traversal of the application, you can build that into the price you charge the user. It’s a standard restaurant model, where the price of the meal is determined by the cost of making it, plus any profit you can make. &lt;/p&gt;  &lt;p&gt;In the second use-type, the application will be used by a more-or-less constant number of processes or users and no direct revenue is attached to the system. A typical example is a customer-tracking system used by the employees within your company. In this case, the cost model is often created “in reverse” - meaning that you pilot the application, monitor the use (and costs) and that cost is held steady. This is where the comparison with an on-premise system becomes necessary, even though it is more difficult to estimate those on-premise true costs. For instance, do you know exactly how much cost the air conditioning is because you have a team of system administrators? This may sound trivial, but that, along with the insurance for the building, the wiring, and every other part of the system is in fact a cost to the business. &lt;/p&gt;  &lt;p&gt;There are three primary methods that I’ve been successful with in estimating the cost. None are perfect, all are demand-driven. The general process is to lay out a matrix of:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;font color="#9b00d3"&gt;components&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#9b00d3"&gt;units&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;&lt;font color="#9b00d3"&gt;cost per unit&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;and then multiply that times the usage of the system, based on which components you use in the program. That sounds a bit simplistic, but using those metrics in a calculation becomes more detailed. In all of the methods that follow, you need to know your application. The components for a PaaS include computing instances, storage, transactions, bandwidth and in the case of SQL Azure, database size. In most cases, architects start with the first model and progress through the other methods to gain accuracy. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Simple Estimation&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The simplest way to calculate costs is to architect the application (even UML or on-paper, no coding involved) and then estimate which of the components you’ll use, and how much of each will be used. Microsoft provides two tools to do this - one is a simple slider-application located here: &lt;a href="http://www.microsoft.com/windowsazure/pricing-calculator/"&gt;http://www.microsoft.com/windowsazure/pricing-calculator/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7587.cost_2D00_1_5F00_2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="cost-1" border="0" alt="cost-1" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/4861.cost_2D00_1_5F00_thumb.png" width="244" height="211" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The other is a tool you download to create an “Return on Investment” (ROI) spreadsheet, which has the advantage of leading you through various questions to estimate what you plan to use, located here: &lt;a href="https://roianalyst.alinean.com/msft/AutoLogin.do?d=176318219048082115"&gt;https://roianalyst.alinean.com/msft/AutoLogin.do?d=176318219048082115&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7178.cost_2D00_2_5F00_2.png"&gt;&lt;img style="background-image:none;border-bottom:0px;border-left:0px;padding-left:0px;padding-right:0px;display:inline;border-top:0px;border-right:0px;padding-top:0px;" title="cost-2" border="0" alt="cost-2" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/7266.cost_2D00_2_5F00_thumb.png" width="244" height="177" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can also just create a spreadsheet yourself with a structure like this:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2"&gt;     &lt;tr&gt;       &lt;td&gt;Program Element&lt;/td&gt;        &lt;td&gt;Azure Component&lt;/td&gt;        &lt;td&gt;Unit of Measure&lt;/td&gt;        &lt;td&gt;Cost Per Unit&lt;/td&gt;        &lt;td&gt;Estimated Use of Component&lt;/td&gt;        &lt;td&gt;Total Cost Per Component&lt;/td&gt;        &lt;td&gt;Cumulative Cost&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;        &lt;td&gt;&amp;nbsp;&lt;/td&gt;     &lt;/tr&gt;   &lt;/table&gt;  &lt;p&gt;Of course, the consideration with this model is that it is difficult to predict a system that is not running or hasn’t even been developed. Which brings us to the next model type. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Measure and Project&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;A more accurate model is to actually write the code for the application, using the Software Development Kit (SDK) which can run entirely disconnected from Azure. The code should be instrumented to estimate the use of the application components, logging to a local file on the development system. A series of unit and integration tests should be run, which will create load on the test system. &lt;/p&gt;  &lt;p&gt;You can use standard development concepts to track this usage, and even use Windows Performance Monitor counters. The best place to start with this method is to use the Windows Azure Diagnostics subsystem in your code, which you can read more about here: &lt;a href="http://blogs.msdn.com/b/sumitm/archive/2009/11/18/introducing-windows-azure-diagnostics.aspx"&gt;http://blogs.msdn.com/b/sumitm/archive/2009/11/18/introducing-windows-azure-diagnostics.aspx&lt;/a&gt; This set of API’s greatly simplifies tracking the application, and in fact you can use this information for more than just a cost model. &lt;/p&gt;  &lt;p&gt;After you have the tracking logs, you can plug the numbers into ay of the tools above, which should give a representative cost or in some cases a unit cost.&lt;/p&gt;  &lt;p&gt;The consideration with this model is that the SDK fabric is not a one-to-one comparison with performance on the actual Windows Azure fabric. Those differences are usually smaller, but they do need to be considered. Also, you may not be able to accurately predict the load on the system, which might lead to an architectural change, which changes the model. This leads us to the next, most accurate method for a cost model. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Sample and Estimate&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Using standard statistical and other predictive math, once the application is deployed you will get a bill each month from Microsoft for your Azure usage. The bill is quite detailed, and you can export the data from it to do analysis, and using methods like regression and so on project out into the future what the costs will be. I normally advise that the architect also extrapolate a unit cost from those metrics as well. This is the information that should be reported back to the executives that pay the bills: the past cost, future projected costs, and unit cost “per click” or “per transaction”, as your case warrants.&lt;/p&gt;  &lt;p&gt;The challenge here is in the model itself - statistical methods are not foolproof, and the larger the sample (in this case I recommend the entire population, not a smaller sample) is key. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;References and Tools&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Articles: &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/patrick_butler_monterde/archive/2010/02/10/windows-azure-billing-overview.aspx"&gt;http://blogs.msdn.com/b/patrick_butler_monterde/archive/2010/02/10/windows-azure-billing-overview.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://technet.microsoft.com/en-us/magazine/gg213848.aspx"&gt;http://technet.microsoft.com/en-us/magazine/gg213848.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.codingoutloud.com/2011/06/05/azure-faq-how-much-will-it-cost-me-to-run-my-application-on-windows-azure/"&gt;http://blog.codingoutloud.com/2011/06/05/azure-faq-how-much-will-it-cost-me-to-run-my-application-on-windows-azure/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/b/johnalioto/archive/2010/08/25/10054193.aspx"&gt;http://blogs.msdn.com/b/johnalioto/archive/2010/08/25/10054193.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/iupdateable/archive/2010/02/08/qampa-how-can-i-calculate-the-tco-and-roi-when.aspx"&gt;http://geekswithblogs.net/iupdateable/archive/2010/02/08/qampa-how-can-i-calculate-the-tco-and-roi-when.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Other Tools: &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://cloud-assessment.com/"&gt;http://cloud-assessment.com/&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://communities.quest.com/community/cloud_tools"&gt;http://communities.quest.com/community/cloud_tools&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=39707" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx">Design</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Development/default.aspx">Development</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Azure/default.aspx">SQL Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Rip and Replace or Extend and Embrace?</title><link>http://sqlblog.com/blogs/buck_woody/archive/2011/09/13/rip-and-replace-or-extend-and-embrace.aspx</link><pubDate>Tue, 13 Sep 2011 11:20:05 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:38437</guid><dc:creator>BuckWoody</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/38437.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=38437</wfw:commentRss><description>&lt;p&gt;As most of you know, I don&amp;rsquo;t like the term &amp;ldquo;cloud&amp;rdquo; very&lt;br /&gt;much. It isn&amp;rsquo;t defined, which means it can be anything. I prefer &amp;ldquo;distributed&lt;br /&gt;computing&amp;rdquo;, which is more technically accurate and describes what you&amp;rsquo;re doing&lt;br /&gt;in more concrete terms.&lt;/p&gt;
&lt;p&gt;So when you think about Windows and SQL Azure, you don&amp;rsquo;t&lt;br /&gt;have to think about an entire product &amp;ndash; you can use parts of the system&lt;br /&gt;together or independently to accomplish what you need to do. You can use the&lt;br /&gt;computing functions, storage, and more and more I see folks leverage the&lt;br /&gt;Service Bus to enable current applications to expose things to the web.&lt;/p&gt;
&lt;p&gt;And that brings up the point of this post. Once you decide&lt;br /&gt;that a distributed architecture works to solve a problem, you&amp;rsquo;re faced with a&lt;br /&gt;decision: should you completely re-write your architecture to take advantage of&lt;br /&gt;the current systems or should you just fold in new code that makes the data or&lt;br /&gt;function available to the web?&lt;/p&gt;
&lt;p&gt;Of course, the answer is always &amp;ldquo;it depends&amp;rdquo; on the situation&lt;br /&gt;&amp;ndash; and it does. But unless you&amp;rsquo;re fixing a problem with current code, I usually&lt;br /&gt;advocate a migration approach. That means at the very least retaining the&lt;br /&gt;business logic (again, unless it&amp;rsquo;s not currently working) and as much of the&lt;br /&gt;code as you can. In fact, if you follow this paradigm, you&amp;rsquo;re on your way to&lt;br /&gt;making a Service Bus out of the functions you currently have. You can expose&lt;br /&gt;the results of a system rather than opening the system up. Let&amp;rsquo;s take an&lt;br /&gt;example.&lt;/p&gt;
&lt;p&gt;Assume for a moment that you have an order-taking system&lt;br /&gt;on-premise. That system performs many functions, one of which might creating a&lt;br /&gt;Purchase Order. Your system might be enclosed, meaning that it has an&lt;br /&gt;application that talks to a middle-tier, and then from there to a database&lt;br /&gt;system. A query is generated from a screen, and passed along to eventually&lt;br /&gt;compute, store and return a Purchase Order Number, along with other&lt;br /&gt;information. Imagine now that you wire up the code not only to return the PO&lt;br /&gt;number to the client, but to make that number available on an endpoint &amp;ndash;&lt;br /&gt;actually really not that hard to do.&lt;/p&gt;
&lt;p&gt;Now you can make that PO number available to the web using&lt;br /&gt;Azure. You could restrict who can make that call to the system, or open it up&lt;br /&gt;to a broader audience. Or instead of the PO Number, you could make a product&lt;br /&gt;list available. And you can go further than that &amp;ndash; EBay, for instance, uses the&lt;br /&gt;OData protocol (which is very cool in and of itself) which you can query from&lt;br /&gt;the web. You could compare your company&amp;rsquo;s product catalog to what is on EBay,&lt;br /&gt;and list the items you have there if there are no competitors in that space.&lt;br /&gt;And on and on it goes.&lt;/p&gt;
&lt;p&gt;So the point is this &amp;ndash; where you can, retain what works.&lt;br /&gt;Fold in systems like Azure where they make sense. Extend and Embrace.&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=38437" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Fabric/default.aspx">Application Fabric</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure+Use+Cases/default.aspx">Azure Use Cases</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Best+Practices/default.aspx">Best Practices</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Computing/default.aspx">Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Data/default.aspx">Data</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx">Design</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Developer/default.aspx">Developer</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Development/default.aspx">Development</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Windows Azure Security Review</title><link>http://sqlblog.com/blogs/buck_woody/archive/2011/08/02/windows-azure-security-review.aspx</link><pubDate>Tue, 02 Aug 2011 13:24:50 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:37432</guid><dc:creator>BuckWoody</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/37432.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=37432</wfw:commentRss><description>&lt;p&gt;&lt;em&gt;&lt;font color="#d19049"&gt;Current as of 08/01/2011 - Check the Resources listed below for more up-to-date information on this topic&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Background:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Security for any computing platform involves three primary areas:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;font color="#ff0000"&gt;Principals&lt;/font&gt; (users or programmatic access to an asset or other program) &lt;/li&gt;    &lt;li&gt;&lt;font color="#ff0000"&gt;Securables&lt;/font&gt; (objects, data or programs that can be accessed) &lt;/li&gt;    &lt;li&gt;&lt;font color="#ff0000"&gt;Channels&lt;/font&gt; (methods of access by Principals to Securables) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;On-premise systems normally use a central system to control security. In a Windows operating system-based environment, this is &lt;a href="http://technet.microsoft.com/en-us/library/cc758436(WS.10).aspx" target="_blank"&gt;often accomplished with Active Directory&lt;/a&gt; or other systems that&amp;#160; provide sign-on and user identity information. While other networking security paradigms have different terminology, all involve the three areas defined above. &lt;/p&gt;  &lt;p&gt;In addition to the names and passwords for a user, Active Directory (like other security mechanisms) store other information about Principals - called &lt;em&gt;&lt;a href="http://claimsid.codeplex.com/" target="_blank"&gt;Claims&lt;/a&gt;&lt;/em&gt;. These claims can include any custom fields the provider allows. In many networks, these fields are not used heavily, because applications that eventually need to secure the assets they control are not always deployed on the same platforms everywhere. &lt;/p&gt;  &lt;p&gt;In a single environment, security is often quite simple. A Principal is created such as a user or group, and then the Principal is granted access to a Securable such as a a folder, database or other asset. Permissions or Rights (or both) combine to allow a particular Principal to read, write, delete or edit data, or to access or run a particular program.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/3324.Figure1_5F00_2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Figure1" border="0" alt="Figure1" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5140.Figure1_5F00_thumb.png" width="549" height="398" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#008000"&gt;Figure 1 - On-premise security environment example&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The simplicity of this arrangement is due to a single, homogenous boundary. Even if more than one location is used, the Principals and Securables are grouped into a single logical boundary that is managed from one location. &lt;/p&gt;  &lt;p&gt;This background serves as the starting point for the Federating Security topic below.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows Azure Security Boundaries&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Windows Azure is a series of resources - servers, data and service buses, in addition to other features. Developers write code, and the deploy that to the Azure environment. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/1665.Figure2a_5F00_2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Figure2a" border="0" alt="Figure2a" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/3480.Figure2a_5F00_thumb.png" width="702" height="471" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#008000"&gt;Figure 2 - Azure Components&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The code or data can be deployed to use one or more of the services. In other words, the &lt;a href="http://www.31a2ba2a-b718-11dc-8314-0800200c9a66.com/2010/12/how-to-combine-worker-and-web-role-in.html" target="_blank"&gt;Web Role in Windows Azure might host a simple website&lt;/a&gt;, and no other component need be used. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/4073.Figure2_5F00_2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Figure2" border="0" alt="Figure2" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/1258.Figure2_5F00_thumb.png" width="737" height="252" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#008000"&gt;Figure 3 - Simple Azure Web Role Application - only one feature used&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Or, &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2011/02/22/windows-azure-use-case-hybrid-applications.aspx" target="_blank"&gt;a complex mix of Web, Worker and Data Services, along with a Service Bus, RDBS and even on-site systems&lt;/a&gt; can be grouped into a much larger program. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6136.Figure4_5F00_2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Figure4" border="0" alt="Figure4" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/4863.Figure4_5F00_thumb.png" width="735" height="456" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#008000"&gt;Figure 4 - Complex Windows and SQL Azure Application With Multiple Interactions&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;For a more basic introduction to Windows and SQL Azure, see this link: &lt;a href="http://channel9.msdn.com/Events/TechEd/Europe/2010/COS322"&gt;http://channel9.msdn.com/Events/TechEd/Europe/2010/COS322&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Windows Azure, like any web-based property, has three general layers of security:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;font color="#ff0000"&gt;Physical Access&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font color="#ff0000"&gt;Operating Environment (Including the Operating System itself)&lt;/font&gt; &lt;/li&gt;    &lt;li&gt;&lt;font color="#ff0000"&gt;Data and Programmatic Security&lt;/font&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Each of these layers have additional layers within themselves, and this forms the basis of a secure experience for the end user or program. Some of these layers are the responsibility of Microsoft; others are the responsibility of the architect and developer; others are a joint or shared responsibility of both Microsoft and the client.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;Layer One: Physical Access&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;The first layer of security within a web property such as Windows or SQL Azure is a secure facility. the following data points are important to understand for the worldwide facilities that host Windows and SQL Azure:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Microsoft Global Foundation Services (GFS) is responsible for the physical security of the datacenters located worldwide for Windows and SQL Azure. Information on Microsoft datacenters can be found here:&amp;#160; &lt;a href="http://www.globalfoundationservices.com/"&gt;http://www.globalfoundationservices.com/&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;The address and exact locations facilities are not commonly documented for security reasons. &lt;/li&gt;    &lt;li&gt;Microsoft runs it’s own data centers and does not contract this function out. &lt;/li&gt;    &lt;li&gt;The GFS controlled facilities hold an ISO/IEC 27001:2005 certification, and are audited to SAS level II. &lt;/li&gt;    &lt;li&gt;Standard secure operations protocols are in place, including least-privilege access. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;Layer Two: Operating Environment&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Windows Azure and SQL Azure do not currently hold certifications. Microsoft does not comment on the security certifications being pursued for Windows or SQL Azure. That being said, the Windows Azure environment is based on a modified Windows 2008 R2 Enterprise environment, developed using the Trustworthy Computing Initiative (TCI). &lt;/p&gt;  &lt;p&gt;The system controlling the host machines and their guest environments that ultimately hold the Web and Worker Roles within Windows Azure is called the Fabric - not to be confused with the Application Fabric feature. The Fabric is not accessible by client code - it controls the inner workings of Windows Azure, including Load-balancing, system restarts, maintenance and monitoring. &lt;/p&gt;  &lt;p&gt;Within the host machines that house the Web and Worker Roles, special networking constructs broker all conversations between Virtual Machines. Virtual Machines - even ones configured to communicate with each other - move through this network. Direct-machine to machine communication is not allowed, protecting one application from another or one data construct from another.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8015.Figure5_5F00_2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Figure5" border="0" alt="Figure5" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8182.Figure5_5F00_thumb.png" width="720" height="351" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#008000"&gt;Figure 5 - Windows Azure Fabric&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Windows and SQL Azure support only TCP-based communications. Ports commonly used are:&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;80 - Default public port used for Web Roles - can be enabled/disabled per configuration &lt;/li&gt;    &lt;li&gt;443 - Default secure port used for Web roles - &lt;a href="http://msdn.microsoft.com/en-us/gg271302" target="_blank"&gt;can be enabled/disabled per configuration&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;9350-9353 - These ports are used by the Windows Azure AppFabric service bus bindings. Refer to &lt;a href="http://msdn.microsoft.com/en-us/library/ee732535.aspx"&gt;http://msdn.microsoft.com/en-us/library/ee732535.aspx&lt;/a&gt; for more details &lt;/li&gt;    &lt;li&gt;1433 - SQL Azure &lt;/li&gt;    &lt;li&gt;3389 - This port is used for RDP access to VM-based roles, only if enabled &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#0000ff"&gt;Layer Three: Data and Programmatic Security&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;All internal access through use of keys only. Without the proper key, code or data will not transfer. Storage Accounts have individual keys, so in this manner different security layers may be applied not only programmatically but at the account layer. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/6840.Figure6_5F00_2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Figure6" border="0" alt="Figure6" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/4370.Figure6_5F00_thumb.png" width="703" height="290" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#008000"&gt;Figure 6 - Windows Azure communications between components&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Calls to Windows Azure are made using standard SOAP, XML or REST-based protocols. The communications channel can be encrypted between the client and Windows Azure or allow it to remain unencrypted based on security needs. &lt;/p&gt;  &lt;p&gt;SQL Azure uses the standard SQL Server Tabular Data Stream (TDS) protocol, but only allows encrypted communications.&lt;/p&gt;  &lt;p&gt;Data is unencrypted within Windows Azure Blob or Table Storage - but is only accessible via the key for a storage account. &lt;a href="http://blogs.msdn.com/b/plankytronixx/archive/2010/10/23/crypto-primer-understanding-encryption-public-private-key-signatures-and-certificates.aspx" target="_blank"&gt;Data can be encrypted client-side and stored in Windows Azure in an encrypted fashion&lt;/a&gt;. Microsoft does not inspect internal data for validity or encryption enforcement.&amp;#160; The key is that the data is client-side encrypted and decrypted.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/8203.Figure7_5F00_2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Figure7" border="0" alt="Figure7" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/4466.Figure7_5F00_thumb.png" width="702" height="307" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#008000"&gt;Figure 7 - Example data at rest encryption scenario &lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Alternatively, a hybrid solution can store sensitive data locally and non-sensitive data in Azure Storage. The data can be coalesced at the client level such that the data is never transferred over any channel not owned or controlled by the organization.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Federating Security:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In the case of a single security boundary for Windows Azure, multiple security options are available. Users can be anonymously authorized, such as in the case of a public website for advertisement or informational purposes. &lt;/p&gt;  &lt;p&gt;Another option is to create an Internet Information Services (IIS) Internal Security Store. This is not a best-practice (although still possible) approach since the Fabric services within Windows Azure may recycle an instance and the session may sever between a given role and a client. Architecting stateless applications is a preferred approach.&lt;/p&gt;  &lt;p&gt;Using Claims-Based Authentication is a better solution. In this approach, the Principal is authenticated through a trusted party, such as Active Directory, OpenID, OpenAuthentication, or LiveID. Many web-properties use these methods, such as Microsoft, Google, Yahoo and Facebook to name a few. After authenticating with one of these services, the client is issued Claims using the WS-Federation (WS-Fed) or Security Assertion Markup Language (SAML)&amp;#160; that are passed to Windows Azure. At no time does Windows Azure store, transfer or interrogate the Principal’s security token. Claims can be anything from a group or role membership to location or any other settable attribute. Assets are then secured allowing only the Claim, without regard to the user’s location or access method. In this fashion a single security paradigm covers the Securables, with the Principals being controlled in any number of other mechanisms. This allows single-sign-on and/or federated security access from multiple providers. &lt;/p&gt;  &lt;p&gt;The simplest mechanism for building this environment is the Access Control Services (ACS) feature found in the Windows Azure Application Fabric component. It is a federated authorization management service that simplifies user access authorization across organizations and ID providers and performs claims transformation to map identities with access levels.&lt;/p&gt;  &lt;p&gt;ACS can:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create and manage scopes such as URLs &lt;/li&gt;    &lt;li&gt;Create and manage claim types &lt;/li&gt;    &lt;li&gt;Create and manage signing and encryption keys &lt;/li&gt;    &lt;li&gt;Create and manage rules within an application scope &lt;/li&gt;    &lt;li&gt;Chain claims rules &lt;/li&gt;    &lt;li&gt;Manage permissions on scopes or perform delegation &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/2728.Figure8_5F00_2.png"&gt;&lt;img style="background-image:none;border-right-width:0px;padding-left:0px;padding-right:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" title="Figure8" border="0" alt="Figure8" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-79-79-metablogapi/5852.Figure8_5F00_thumb.png" width="693" height="410" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;&lt;font color="#008000"&gt;Figure 8 - Federated Security Example &lt;/font&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Full information on the Access Control Service is available at this link:&amp;#160; &lt;a href="http://social.technet.microsoft.com/wiki/contents/articles/windows-identity-foundation-wif-and-azure-appfabric-access-control-service-acs-survival-guide.aspx?wa=wsignin1.0"&gt;&lt;u&gt;&lt;font color="#0066cc"&gt;http://social.technet.microsoft.com/wiki/contents/articles/windows-identity-foundation-wif-and-azure-appfabric-access-control-service-acs-survival-guide.aspx?wa=wsignin1.0&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Since the Web and Worker Roles within Windows Azure are designed to be stateless, Microsoft created a Certification Store within the Management area to hold Certificates that can be called from within code. An example of using the Certification Store is here: &lt;a href="http://blogs.msdn.com/b/jnak/archive/2010/01/29/installing-certificates-in-windows-azure-vms.aspx"&gt;http://blogs.msdn.com/b/jnak/archive/2010/01/29/installing-certificates-in-windows-azure-vms.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Additional Resources:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color:#1f497d;font-size:10pt;"&gt;&lt;font face="Calibri"&gt;Official, authoritative security resource list: &lt;a href="http://msdn.microsoft.com/en-us/library/ff934690.aspx"&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ff934690.aspxTechnical"&gt;http://msdn.microsoft.com/en-us/library/ff934690.aspx&lt;/a&gt;&lt;/a&gt;         &lt;br /&gt;&lt;/a&gt;&lt;/font&gt;&lt;span style="color:#1f497d;font-size:10pt;"&gt;&lt;font face="Calibri"&gt;Technical&lt;/font&gt; Overview of the Security Features in the Windows Azure Platform: &lt;/span&gt;&lt;a href="http://www.microsoft.com/online/legal/?langid=en-us&amp;amp;docid=11"&gt;&lt;u&gt;&lt;font color="#0000ff" face="Calibri"&gt;http://www.microsoft.com/online/legal/?langid=en-us&amp;amp;docid=11&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="Calibri"&gt;.        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="color:#1f497d;font-size:10pt;"&gt;&lt;font face="Calibri"&gt;Windows Azure Security Overview: &lt;/font&gt;&lt;a href="http://www.globalfoundationservices.com/security/documents/WindowsAzureSecurityOverview1_0Aug2010.pdf"&gt;&lt;u&gt;&lt;font color="#0000ff" face="Calibri"&gt;http://www.globalfoundationservices.com/security/documents/WindowsAzureSecurityOverview1_0Aug2010.pdf&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span style="color:#1f497d;font-size:10pt;"&gt;&lt;font face="Calibri"&gt;Windows Azure Privacy: &lt;/font&gt;&lt;a href="http://www.microsoft.com/online/legal/?langid=en-us&amp;amp;docid=11"&gt;&lt;u&gt;&lt;font color="#0000ff" face="Calibri"&gt;http://www.microsoft.com/online/legal/?langid=en-us&amp;amp;docid=11&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/span&gt;&lt;span style="color:#1f497d;font-size:10pt;"&gt;&lt;font face="Calibri"&gt;Securing Microsoft Cloud Infrastructure: &lt;/font&gt;&lt;a href="http://www.globalfoundationservices.com/security/documents/SecuringtheMSCloudMay09.pdf"&gt;&lt;u&gt;&lt;font color="#0000ff" face="Calibri"&gt;http://www.globalfoundationservices.com/security/documents/SecuringtheMSCloudMay09.pdf&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;font face="Calibri"&gt;.        &lt;br /&gt;&lt;/font&gt;&lt;/span&gt;A list of other security resources is here: &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2010/12/07/windows-azure-learning-plan-security.aspx"&gt;http://blogs.msdn.com/b/buckwoody/archive/2010/12/07/windows-azure-learning-plan-security.aspx&lt;/a&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;font color="#0000ff" size="1"&gt;&lt;em&gt;Image Attribution: David Pallmann: &lt;/em&gt;&lt;/font&gt;&lt;a href="http://davidpallmann.blogspot.com/2011/07/windows-azure-design-patterns-part-1.html"&gt;&lt;font color="#0000ff" size="1"&gt;&lt;em&gt;http://davidpallmann.blogspot.com/2011/07/windows-azure-design-patterns-part-1.html&lt;/em&gt;&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=37432" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Fabric/default.aspx">Application Fabric</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Best+Practices/default.aspx">Best Practices</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Concepts/default.aspx">Concepts</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Data/default.aspx">Data</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Design/default.aspx">Design</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Encryption/default.aspx">Encryption</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Platform+Independence/default.aspx">Platform Independence</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/SOA/default.aspx">SOA</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/SQL+Azure/default.aspx">SQL Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Walkthroughs/default.aspx">Walkthroughs</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Web/default.aspx">Web</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Cloud Computing and the Code-Based Infrastructure</title><link>http://sqlblog.com/blogs/buck_woody/archive/2011/05/17/cloud-computing-and-the-code-based-infrastructure.aspx</link><pubDate>Tue, 17 May 2011 12:58:17 GMT</pubDate><guid isPermaLink="false">21093a07-8b3d-42db-8cbf-3350fcbf5496:35678</guid><dc:creator>BuckWoody</dc:creator><slash:comments>0</slash:comments><comments>http://sqlblog.com/blogs/buck_woody/comments/35678.aspx</comments><wfw:commentRss>http://sqlblog.com/blogs/buck_woody/commentrss.aspx?PostID=35678</wfw:commentRss><description>&lt;p&gt;In an on-premise system, most of us start fulfilling business computing requirements by making decisions around buy or build. If there is a software package that fills the need of the business, depending on the price of the software and other factors you normally use that. some of these packages can be extended or adapted (Like SAP), so it isn’t a purely off-the-shelf decision, but nevertheless you start by typing “setup.exe” or “.setup” on a physical server, or more often on a Virtual Machine hosted in an Infrastructure as a Service (IaaS) configuration. In fact, “boxed software” is probably the primary use of an IaaS solution.&lt;/p&gt;  &lt;p&gt;If, however, you make a decision to build software, or perhaps your company actually sells software, the overall system architecture design is driven by multiple people and multiple decision points. In the past, the entire IT team worked together to create an architecture. Developers select the language for writing the software, the Infrastructure team configure various physical servers or VM’s to run the software, each with its own complete environment. . Once those decisions are made, the rest of the architecture is often dictated by what servers (and licenses), networks, security, talent and other “Platform” elements including the operating system, the scale systems (up or out), High-Availability and so on are available for the organization. &lt;/p&gt;  &lt;p&gt;But with the advent of Platform as a Service (PaaS) systems like Windows and SQL Azure, these decisions change – dramatically. &lt;/p&gt;  &lt;p&gt;PaaS is not IaaS – meaning that the idea of having to build a VM, configure it in an IaaS provider, architect in scale, HA, DR, etc, goes away. PaaS already has a system of components running, which provide compute, storage, queue messaging, service busses, and many other operations. The PaaS provider monitors and manages these components. Scale is built-in (in the case of Windows Azure). Disaster Recovery (DR) is now a shared responsibility between the PaaS provider and the software architect. &lt;/p&gt;  &lt;p&gt;The developer now chooses the languages he or she wants to run (.NET or open-source languages like Java) and designs the system from the component level. Since there is no infrastructure team involved, the developer and software architects now select the components they want to use, and how they want to use them. Licensing changes to a consumption model (pay for what you use). Because of these factors, the system design selections are pivotal – from cost, performance, HA/DR, and many other standpoints. In fact, done properly, the &lt;em&gt;code&lt;/em&gt; now drives the way the systems are laid out and used – in effect, this type of computing is now a &lt;em&gt;code-based infrastructure&lt;/em&gt;. &lt;/p&gt;  &lt;p&gt;I’m often asked “how does IT adapt to distributed (cloud) computing? My team isn’t involved in some of these decisions anymore.” We adapt the way we always have – we look at the technology and understand where it fits. We tool up to make the best use of the technology to move our company or organization forward. Just like the inclusion of PC’s and LAN’s into the mainframe era of the past, we’ll adapt to this new way of computing as well. This time, with the code in the forefront, not the physical (or even virtual) systems.&lt;/p&gt;  &lt;p&gt;My recommendation is that you learn the architecture of systems like Azure, and use the same architecting skills you’ve developed for physical systems. Help developers figure out the way to handle large sets of data, code-near or code-far decisions and others. I’ve got information on these components here: &lt;a href="http://blogs.msdn.com/b/buckwoody/archive/2010/12/21/windows-azure-learning-plan-architecture.aspx"&gt;http://blogs.msdn.com/b/buckwoody/archive/2010/12/21/windows-azure-learning-plan-architecture.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sqlblog.com/aggbug.aspx?PostID=35678" width="1" height="1"&gt;</description><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Application+Architecture/default.aspx">Application Architecture</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Azure/default.aspx">Azure</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud/default.aspx">Cloud</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category><category domain="http://sqlblog.com/blogs/buck_woody/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item></channel></rss>