Your SlideShare is downloading. ×
0
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Cloud application architecture with sql azure and windows azure
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Cloud application architecture with sql azure and windows azure

11,982

Published on

In this presentation we review the database development with SQL Azure and Windows Azure. …

In this presentation we review the database development with SQL Azure and Windows Azure.

Regards

Eduardo Castro Martinez

Published in: Technology, Business
3 Comments
18 Likes
Statistics
Notes
No Downloads
Views
Total Views
11,982
On Slideshare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
191
Comments
3
Likes
18
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Cloud Application Architecture with SQL Azure and Windows Azure<br />Dr. Eduardo Castro Martínez<br />Microsoft MVP<br />ecastro@mswindowscr.org<br />http://comunidadwindows.org<br />http://ecastrom.blogspot.com<br />
  • 2. Session Objectives<br />Provide a big-picture view of the SQL Server in the Cloud<br />Provide a big-picture view of the Windows Azure platform<br />Describe typical scenarios for using the Windows Azure platform<br />
  • 3. Agenda<br />Cloud Computing Platform<br />Understanding Cloud Computing<br />Cloud Computing Security <br />Cloud Computing and Standards<br />Creating Cloud Aware Applications<br />Windows Azure Platform<br />
  • 4. Computing Evolution<br />40’s<br />70’s<br />80’s<br />Now<br /><ul><li>Mobility explosion
  • 5. Collaboration
  • 6. High level of interconexion between users
  • 7. Web platform growing
  • 8. Pressure over companies data centre.</li></ul>4<br />
  • 9. Issues Facing Developers<br />70% of Web Development Effort is “Muck”:<br /> Data Centers<br /> Bandwidth / Power / Cooling<br /> Operations<br /> Staffing<br />Scaling is Difficult and Expensive:<br /> Large Up-Front Investment<br /> Invest Ahead of Demand<br /> Load is Unpredictable<br />
  • 10. Solution: Web-Scale Computing<br />Scale capacity on demand<br />Turn fixed costs into variable costs<br />Always available<br />Rock-solid reliability<br />Simple APIs and conceptual models<br />Cost-effective<br />Reduced time to market<br />Focus on product & core competencies<br />
  • 11. The Cloud General concepts<br />
  • 12. Typical Application Grow?<br />Users<br />Unused<br />capacity<br />Buy more of everything<br />Servers<br />Rearchitect Database to scale out<br />Buy bigger <br />SQL Box<br />Add some Web Servers<br />
  • 13. Workload Patterns Optimal For Cloud <br />“On and Off “ <br />“Growing Fast“ <br />Inactivity<br />Period <br />Compute <br />Compute <br />Average Usage<br />Usage<br />Average<br />Time <br />Time <br />On & off workloads (e.g. batch job)<br />Over provisioned capacity is wasted <br />Time to market can be cumbersome <br />Successful services needs to grow/scale <br />Keeping up w/ growth is big IT challenge <br />Complex lead time for deployment<br />“Unpredictable Bursting“ <br />“Predictable Bursting“ <br />Compute <br />Compute <br />Average Usage <br />Average Usage <br />Time <br />Time <br />Unexpected/unplanned peak in demand <br />Sudden spike impacts performance <br />Can’t over provision for extreme cases <br />Services with micro seasonality trends <br />Peaks due to periodic increased demand<br />IT complexity and wasted capacity <br />
  • 14. What is the ‘Cloud’?<br />The Cloud – metaphor for the internet<br />‘Cloud Computing’<br />Exploiting resources ‘out there’<br />Scalable computational power<br />Data management and storage<br />Enabling services<br />Applications<br />
  • 15. What is the ‘Cloud’?<br />The Cloud<br />“Packaged”<br />Application<br />An application that I buy “off the shelf” and run myself<br />Hosted <br />“Packaged”<br />An application that I buy “off the shelf” and run at a host site<br />“Packaged”<br />Using cloud services<br />An application that I buy “off the shelf” and host using cloud platform<br />“Software as a Service”<br />A hosted application that I buy as a service from a vendor<br />Buy<br />Build vs. Buy<br />“Custom Built”<br />Application<br />An application that I develop and run myself<br />Hosted <br />“Custom Built”<br />An application that I develop myself and run at a host site<br />“Custom Built”<br />using cloud services <br />An application that I develop myself and host using cloud platform<br />“Platform as a Service”<br />A vendor hosted development and runtime environment<br />Build<br />
  • 16. 3 Cloud Service Models<br />Cloud Software as a Service (SaaS)<br />Use provider’s applications over a network <br />Cloud Platform as a Service (PaaS)<br />Deploy customer-created applications to a cloud <br />Cloud Infrastructure as a Service (IaaS)<br />Rent processing, storage, network capacity, and other fundamental computing resources<br />To be considered “cloud” they must be deployed on top of cloud infrastructure that has the key characteristics<br />12<br />
  • 17. Service Model Architectures<br />13<br />
  • 18. Cloud App Architecture<br />
  • 19. High Scale Application Archetype<br />Intelligent Network Load Balancer<br />Network Activation<br />M Tiers of N stateless machines w/ Forward Caching<br />Stateless ‘Worker’ Machines<br />Queue Activation<br />Shared Filesystem<br />Partitioned Relational DB<br />Async Dispatch<br />Queue<br />‘Monolithic’<br />State Tier<br />
  • 20. Cloud aware Architecture<br />Windows Azure Roles<br />Client Applications<br />Silverlight Application<br /><ul><li> Common Educational Experiences</li></ul>Service Bus <br />WCF<br />Distributed Cache Worker<br />http:// gagame .*<br />Dynamic Worker<br />(tasks uploaded as blobs and sharding)<br />PartitionerWorker<br />On PremisesSQL Server<br />Windows Azure Storage<br />-- - --- - -<br />-- - --- - -<br />Queues for communication between clients and roles<br />Tables to record server & partition information<br />Blobs to store web and worker role resources<br />Configuration<br />Statistics<br />C# Application on Premises<br />SQL Azure<br />Castellan Venue DB<br />Castellan Venue DB<br />Castellan Venue DB<br />Castellan Venue DB’s<br />Castellan Venue DB’s<br />Castellan Venue DB’s<br />Common DB Tables<br />Sharding<br />Partition<br />Sharding<br />Partition<br />Sharding<br />Partition<br />...<br />
  • 21. Sample Cloud Application Architecture<br />Source: eleniamapi@yahoo.com<br />
  • 22. Sample Cloud Architecture<br />Source: eleniamapi@yahoo.com<br />
  • 23. The ‘Why’ and ‘How’ of Cloud Migration<br />There are many benefits that explain why to migrate to clouds<br />Cost savings, power savings, green savings, increased agility in software deployment<br />Cloud security issues may drive and define how we adopt and deploy cloud computing solutions<br />19<br />
  • 24. Balancing Threat Exposure and Cost Effectiveness<br />20<br />Private clouds may have less threat exposure than community clouds which have less threat exposure than public clouds. <br />Massive public clouds may be more cost effective than large community clouds which may be more cost effective than small private clouds. <br />Doesn’t strong security controls mean that I can adopt the most cost effective approach?<br />
  • 25. 21<br />Cloud Migration and Cloud Security Architectures<br />Clouds typically have a single security architecture but have many customers with different demands<br />Clouds should attempt to provide configurable security mechanisms<br />Organizations have more control over the security architecture of private clouds followed by community and then public<br />This doesn’t say anything about actual security<br />Higher sensitivity data is likely to be processed on clouds where organizations have control over the security model<br />
  • 26. 22<br />Putting it Together<br />Most clouds will require very strong security controls<br />All models of cloud may be used for differing tradeoffs between threat exposure and efficiency<br />There is no one “cloud”. There are many models and architectures.<br />How does one choose?<br />
  • 27. Migration Paths for Cloud Adoption<br />Use public clouds<br />Develop private clouds<br />Build a private cloud<br />Procure an outsourced private cloud<br />Migrate data centers to be private clouds (fully virtualized)<br />Build or procure community clouds<br />Organization wide SaaS<br />PaaS and IaaS<br />Disaster recovery for private clouds<br />Use hybrid-cloud technology<br />Workload portability between clouds<br />23<br />
  • 28. Possible Effects ofCloud Computing<br />Small enterprises use public SaaS and public clouds and minimize growth of data centers<br />Large enterprise data centers may evolve to act as private clouds<br />Large enterprises may use hybrid cloud infrastructure software to leverage both internal and public clouds<br />Public clouds may adopt standards in order to run workloads from competing hybrid cloud infrastructures<br />24<br />
  • 29. An Overview of the Windows Azure Platform<br />
  • 30. The Windows Azure Platform<br />Windows Azure<br />SQL Azure<br />Windows Azure platform AppFabric<br />Developer tools<br />
  • 31. Windows Azure Basics<br />Windows Azure can potentially provide various kinds of Windows-based environments<br />The current release supports both .NET and unmanaged applications<br />Windows Azure provides Operating System like concepts<br />Process Management<br />Computation<br />Storage<br />
  • 32. Azure™ Services Platform<br />
  • 33. A set of connected servers<br />On which developers can:<br />Install and run services<br />Store and retrieve data<br />What Is The Cloud in Windows Azure?<br />
  • 34. It is an operating system for the cloud<br />It is designed for utility computing<br />It has four primary features:<br />Service management<br />Compute<br />Storage<br />Developer experience<br />What Is Windows Azure?<br />
  • 35. The Windows Azure Platform<br />SQL Azure<br />Cloud<br />Applications<br />Windows Azure AppFabric<br />Windows Azure<br />On-Premises<br />Applications<br />Others<br />Windows<br />
  • 36. Windows AzureAn illustration<br />Application<br /> Compute<br />Storage<br />Config<br />Fabric<br />…<br />SQL Azure<br />Applications<br />Windows Azure AppFabric<br />Windows Azure<br />Applications<br />Others<br />Windows<br />
  • 37. Windows Azure Datacenter<br />Your Service<br />Windows Azure Building Blocks<br />Web Site<br />(ASPX, ASMX, WCF)<br />Web Site<br />(ASPX, ASMX, WCF)<br />Web Role<br />(ASPX, WCF)<br />LB<br />Tables<br />Worker Service<br />Worker Role<br />Internet<br />Storage<br />Queue<br />LB<br />Blobs<br />
  • 38. Windows Azure Applications, Storage, and Roles<br />n<br />m<br />Web Role<br />Worker Role<br />LB<br />Cloud Storage (blob, table, queue)<br />
  • 39. Windows Azure, In One Picture<br />Business Portal<br />Developer Portal<br />Service Management Service<br />REST<br />User Code<br />…<br />…<br />Runtime API<br />Storage Cluster<br />VS Tools<br />Compute Cluster<br />…<br />WA SDK<br />VM Setup<br />REST<br />MSFT Datacenters<br />Desktop<br />Cloud VM<br />
  • 40. Azure<br />Partial Trust<br />“Dev Fabric”<br />Dev Environment<br />
  • 41. Windows Azure Compute Service A closer look<br />VMs<br />VMs<br />HTTP/ HTTPS<br />Worker<br />Role Instance<br />Web<br />Role Instance<br />Load Balancer<br />IIS<br />Application<br />Storage<br /> Compute<br />Fabric<br />…<br />
  • 42. Storage<br />Web Role<br />Instance<br />Worker Role<br />Instance<br />Fabric Agent<br />Fabric Agent<br />Fabric Controller<br />Windows Azure Fabric<br />
  • 43. Cloud Simple Application<br />Worker Role<br />Web Role<br />Queue<br />Blob<br />
  • 44. Windows Azure for Application Developers<br />Hosted<br />Service<br />Portal<br />SDK<br />Storage<br />Develop<br />Run<br />Deploy<br />
  • 45. Roles<br />Role<br />Code<br />Configuration<br />
  • 46. Load Balanced Instances<br />Role<br />Instance 1<br />http://yourapp.cloudapp.net<br />Instance 2<br />
  • 47. Web vs Worker Role<br />Worker Role<br />Web Role<br />System Host<br />IIS Host<br />Your Code<br />Your Code<br />
  • 48. Compute<br />
  • 49. Windows Azure Compute Service<br />The VMs are provided by a cloud-optimized hypervisor<br />Not your average VM<br />They run 64-bit Windows Server 2008<br />Each VM has a one-to-one relationship with a processor core<br />For developers:<br />It’s mostly standard Windows and .NET<br />A few things require accessing the Windows Azure Agent, e.g., logging<br />A desktop facsimile of Windows Azure in the cloud is provided for development via the SDK<br />
  • 50. Windows Azure Compute Service A closer look<br />VMs<br />VMs<br />Worker<br />Role Instance<br />Web<br />Role Instance<br />HTTP<br />IIS<br />Load Balancer<br />RoleEntryPoint.Start()<br />Agent<br />Agent<br />Windows Azure Fabric<br />Application<br />Storage<br /> Compute<br />Fabric<br />…<br />
  • 51. Storage<br />
  • 52. Windows Azure Storage<br />Storage types:<br />Blobs: a simple hierarchy of binary data<br />Tables: entity storage (not relational tables)<br />Queues: high performance quasi-transactional queue structures<br />Access:<br />Data is exposed via a RESTful interface<br />Data can be accessed by:<br />Windows Azure applications<br />Any other internet connected applicationon-premises or other cloud applications<br />
  • 53. Windows Azure Storage ServiceA closer look<br />HTTP/ HTTPS<br />RESTServices<br />Blobs<br />Tables<br />Queues<br />Application<br />Storage<br /> Compute<br />Fabric<br />…<br />
  • 54. Business Analytics<br />Reporting<br />Data Sync<br />Database<br />
  • 55. SQL AzureA relational DB in the cloud<br />SQL Azure Database<br />Data Hub<br />Others (Future)<br />Relational database as a service<br />Highly available, automatically maintained<br />Extension of the SQL Server Data Platform<br />.NET Services<br />SQL Services<br />Applications<br />Live Services<br />Windows Azure<br />Applications<br />Windows<br />Mobile<br />Windows<br />Vista/XP<br />Windows<br />Server<br />Others<br />
  • 56. Database<br />Relational database, provided as a service<br />Highly symmetrical development and tooling experience (use TDS protocol and T-SQL)<br />Highly scaled out, on commodity hardware<br />Built on the SQL Server technology foundation<br />Beyond “hosted database”<br />High availability, DB provisioning, and DB management are provided by the service<br />Pay for what you use<br />
  • 57. SQL Azure Database<br />Highly scaled out relational database as a service<br />Relational database service<br /><ul><li>SQL Server technology foundation
  • 58. Highly symmetrical
  • 59. Highly scaled
  • 60. Highly secure</li></ul>Database “as a Service” – beyond hosting<br />Browser<br />Database<br />SOAP/REST<br />HTTP/S<br />ADO.NET/REST - EDM<br />HTTP/S<br />MS<br />Datacenter<br />Windows Azure <br />Compute<br />App Code<br />(ASP.NET)<br />SQL Server Report Server<br />(on-premises)<br />Customer Value Props<br /><ul><li>Self-provisioning and capacity on demand
  • 61. Symmetry w/ on-premises database platform
  • 62. Automatic high-availability and fault-tolerance
  • 63. Automated DB maintenance (infrastructure)
  • 64. Simple, flexible pricing – “pay as you grow”</li></ul>T-SQL (TDS)<br />T-SQL (TDS)<br />SQL Azure<br />Database<br />- AD Federation (LiveId /AppFabric AC)<br />
  • 65. Application Primary FocusDesigning for the Cloud<br />Fundamentals<br />Automated<br />Service<br />Management<br />High<br />Availability<br />Scale out<br />Services<br />Multi-tenancy<br />Resource Optimization<br />
  • 66. Transitioning Cloud Driven Process<br />
  • 67. Transitioning to the cloud<br />Move Entire Applications to the Cloud<br />Extend Application Components to the Cloud<br />Store Data in<br />the Cloud<br />Create hybrid applications by Combining <br />Cloud Services<br />Start new applications based on<br />Cloud Services<br />
  • 68. Migration Paths for Cloud Adoption<br />Use public clouds<br />Develop private clouds<br />Build a private cloud<br />Procure an outsourced private cloud<br />Migrate data centers to be private clouds (fully virtualized)<br />Build or procure community clouds<br />Organization wide SaaS<br />PaaS and IaaS<br />Disaster recovery for private clouds<br />Use hybrid-cloud technology<br />Workload portability between clouds<br />57<br />
  • 69. Infrastructure Transition<br />
  • 70. Cloud Reference Architecture<br />Cloud Computing for Financial Institutions. VivekKejriwal<br />
  • 71. Transitioning Cloud Driven Architectures<br />
  • 72. Transitioning Cloud Driven Architectures<br />
  • 73. Transitioning Cloud Driven Architectures<br />
  • 74. Transitioning Cloud Driven Architectures<br />
  • 75. Application Architecture for the Cloud<br />
  • 76. Application Basic Building Blocks<br />n<br />m<br />Presentation Role<br />Service Role<br />LB<br />Cloud Storage (blob, table, queue)<br />65<br />
  • 77. N-Tier Application Transition<br />Presentation<br />Business<br />Move to the cloud<br />On Premises<br />Data Access<br />Data<br />Data<br />
  • 78. N-Tier Application Transition<br />Presentation<br />Business<br />Move to the cloud<br />On Premises<br />Data Access<br />Data<br />Data<br />
  • 79. N-Tier Application Transition<br />Presentation<br />Move to the cloud<br />Business<br />Move to the cloud<br />Data<br />Data Access<br />Data<br />On Premises Data<br />Sync<br />
  • 80. Simple Cloud Application<br />Services<br />Presentation<br />Queue<br />Blob<br />
  • 81. Sample Cloud Application Arquitecture<br />Cloud Based Roles<br />Client Applications<br />Multimedia Application<br /><ul><li> Common Educational Experiences</li></ul>Communication Services<br />Communication Services<br />Distributed Cache Worker<br />http:// sophia.*<br />Dynamic Worker<br />(blobs and sharding management)<br />PartitionerWorker<br />On PremisesData Storage<br />Cloud Storage<br />-- - --- - -<br />-- - --- - -<br />Queues for communication between clients and roles<br />Tables to record server & partition information<br />Blobs to store web and worker role resources<br />Configuration<br />Statistics<br />Application on Premises<br />Cloud Relational Storage<br />Castellan Venue DB<br />Castellan Venue DB<br />Castellan Venue DB<br />Castellan Venue DB’s<br />Castellan Venue DB’s<br />Castellan Venue DB’s<br />Common DB Tables<br />Sharding<br />Partition<br />Sharding<br />Partition<br />Sharding<br />Partition<br />...<br />
  • 82. Service Bus<br />2) Discover endpoints<br />Registry<br />4) Upgrade to direct connection<br />1) Register endpoints<br />3) Access application<br />Endpoints<br />Application<br />Application<br />Organization X<br />Organization Y<br />Access Control<br />Service Bus<br />Cloud Communication Pattern<br />
  • 83. Transitioning to the CloudDesign Requirements<br />
  • 84. Basic cloud development principles <br />
  • 85. Basic cloud development principles <br />
  • 86. Cloud Transitioning ArchitectureIdentify Patterns<br />Consider:<br />Basic components<br />Messaging<br />Interoperable Message Format and Protocols<br />Communication or Integration Bus<br />Resource Deployment<br />Storage<br />Infrastructure (Processing, Creation, …)<br />
  • 87. Scaling Out using a Queue Based Pattern<br />Process Message<br />Process Role<br />Submit Message<br />Queue<br />Msg 1<br />Msg 2<br />Msg 2<br />Msg 1<br />Application<br />Worker Role<br />Process Role<br />Msg 3<br />Msg 4<br />Msg 2<br />
  • 88. Table<br />Incident<br />Table<br />Queue A<br />Alarm<br />Processor<br />Pos Rpt<br />Table<br />NewMsg<br />Parse & Route<br />Event<br />Table<br />Timer<br />Table<br />Implement Queues for Reliability and Continuity<br />Processor A<br />Table<br />Queue B<br />Processor B<br />Table<br />
  • 89. Building Blocks Key takeaways<br />Use the cloud provider service configuration to scale<br />Design how to communicate your application components<br />Built your application to scale up/down roles in production<br />
  • 90. Windows Azure Storage Service<br />
  • 91. Windows Azure Storage ServiceA closer look<br />HTTP/ HTTPS<br />Blobs<br />Tables<br />Queues<br />Application<br />Storage<br /> Compute<br />Fabric<br />…<br />
  • 92. Fundamental Storage Abstractions<br />Tables– Provide structured storage. A Table is a set of entities, which contain a set of properties<br />Queues– Provide reliable storage and delivery of messages for an application<br />Blobs – Provide a simple interface for storing named files along with metadata for the file<br />Drives – Provides durable NTFS volumes for Windows Azure applications to use (new)<br />81<br />
  • 93. Windows Azure StorageTables: Strengths<br />Massive scalability<br />By effectively allowing scale-out data<br />Perspective:<br />Applied to the right problem, Windows Azure Tables are a beautiful thing<br />But they’re not the optimal solution for a majority of data storage scenarios<br />Amazon, Google, and others provide similar cloud storage mechanisms<br />All of these can be seen as part of the NOSQL movement<br />
  • 94. Windows Azure StoragePoints of interest<br />Storage types:<br />Blobs: store binary data<br />Tables: provide scale-out, entity-based storage<br />Not relational tables<br />Queues: allow message-based communication<br />Access:<br />Data is grouped into storage accounts<br />Data can be accessed by:<br />Windows Azure apps <br />Other on-premises or cloud apps<br />
  • 95. Windows Azure StorageA closer look at blobs<br />Options for accessing blobs:<br />From Windows Azure applications or other applications: via RESTful requests<br />From Windows Azure applications: via Windows Azure Drives<br />Drives make a blob look like an NTFS file system to the application<br />Blobs can also be used with the Windows Azure Content Delivery Network (CDN)<br />For faster access from distributed locations to frequently accessed content<br />
  • 96. Windows Azure StorageA closer look at tables<br />. . .<br />Table<br />Table<br />Table<br />Entity<br />. . .<br />Entity<br />Entity<br />Storage Accounts<br />Property<br />Property<br />Property<br />Name<br />Type<br />Value<br />
  • 97. Windows Azure Tables<br />Provides Structured Storage<br />Massively Scalable Tables<br />Billions of entities (rows) and TBs of data<br />Can use thousands of servers as traffic grows<br />Highly Available & Durable<br />Data is replicated several times<br />Familiar and Easy to use API<br />ADO.NET Data Services – .NET 3.5 SP1<br />.NET classes and LINQ<br />REST – with any platform or language<br />86<br />
  • 98. Windows Azure StorageTables: Challenges<br />No SQL<br />A new approach for developers to learn<br />No aggregates<br />Access via REST<br />You can’t use ordinary ADO.NET<br />An unfamiliar structure for data<br />You can’t easily move relational data in or out<br />Supporting services are scarce, e.g., reporting<br />No schema<br />And no views<br />
  • 99. Windows Azure StorageA closer look at queues<br />main()<br />{ … } <br />Web Role<br />Worker Role<br />1) Receive work<br />4) Do work<br />ASP.NET, WCF, etc.<br />2) Put message in queue<br />3) Get message from queue<br />5) Delete message from queue<br />Queue<br />
  • 100. Windows Azure Tables<br />
  • 101. Windows Azure Tables<br />Provides Structured Storage<br />Massively Scalable Tables<br />Billions of entities (rows) and TBs of data<br />Can use thousands of servers as traffic grows<br />Highly Available & Durable<br />Data is replicated several times<br />Familiar and Easy to use API<br />ADO.NET Data Services – .NET 3.5 SP1<br />.NET classes and LINQ<br />REST – with any platform or language<br />90<br />
  • 102. Table Storage Concepts<br />Entities<br />Tables<br />Accounts<br />Email =…<br />Name = …<br />Users<br />Email =…<br />Name = …<br />moviesonline<br />Genre =…<br />Title = …<br />Movies<br />Genre =…<br />Title = …<br />91<br />
  • 103. Table Data Model<br />Table<br />A storage account can create many tables<br />Table name is scoped by account<br />Set of entities (i.e. rows)<br />Entity<br />Set of properties (columns)<br />Required properties<br />PartitionKey, RowKey and Timestamp<br />92<br />
  • 104. Required Entity Properties<br />PartitionKey & RowKey<br />Uniquely identifies an entity<br />Defines the sort order<br />Use them to scale your application<br />Timestamp <br />Read only<br />Optimistic Concurrency<br />93<br />
  • 105. PartitionKey And Partitions<br />PartitionKey<br />Used to group entities in the table into partitions<br />A table partition <br />All entities with same partition key value<br />Unit of scale<br />Control entity locality<br />Row key provides uniqueness within a partition<br />94<br />
  • 106. Partitions and Partition Ranges<br />Server A<br />Table = Movies<br />[Action - Comedy)<br />Server A<br />Table = Movies<br />Server B<br />Table = Movies<br />[Comedy- Western)<br />95<br />
  • 107. Table Operations<br />Table<br />Create<br />Query<br />Delete<br />Entities<br />Insert<br />Update <br />Merge – Partial Update<br />Replace – Update entire entity<br />Delete<br />Query<br />Entity Group Transaction (new)<br />
  • 108. Table Schema<br />Define the schema as a .NET class<br />[DataServiceKey("PartitionKey", "RowKey")]<br />publicclassMovie<br /> {<br />///<summary><br />/// Category is the partition key<br />///</summary><br />publicstringPartitionKey { get; set; }<br />///<summary><br />/// Title is the row key<br />///</summary><br />publicstringRowKey { get; set; }<br />publicDateTime Timestamp { get; set; }<br /> publicintReleaseYear { get; set; }<br />publicstring Language { get; set; }<br />publicstring Cast { get; set; }<br /> }<br />97<br />
  • 109. Table SDK Sample Code<br />StorageCredentialsAccountAndKeycredentials = newStorageCredentialsAccountAndKey(<br />“myaccount", “myKey");<br />stringbaseUri = "http://myaccount.table.core.windows.net";<br />CloudTableClienttableClient = newCloudTableClient(baseUri, credentials);<br />tableClient.CreateTable(“Movies");<br />TableServiceContextcontext = tableClient.GetDataServiceContext();<br />CloudTableQuery<Movie> q = (from movie incontext.CreateQuery<Movie>(“Movies") <br /> wheremovie.PartitionKey == “Action" && movie.RowKey == "The Bourne Ultimatum"<br /> select movie).AsTableServiceQuery<Movie>();<br />MoviemovieToUpdate = q.FirstOrDefault();<br />// Update movie<br />context.UpdateObject(movieToUpdate);<br />context.SaveChangesWithRetries();<br />// Add movie<br />context.AddObject(new Movie(“Action" , movieToAdd));<br />context.SaveChangesWithRetries();<br />98<br />
  • 110. Key Selection: Things to Consider<br />Scalability<br />Distribute load as much as possible<br />Hot partitions can be load balanced<br />PartitionKeyis critical for scalability<br />Query Efficiency & Speed<br />Avoid frequent large scans<br />Parallelize queries<br />Entity group transactions (new)<br />Transactions across a single partition<br />Transaction semantics & Reduce round trips<br />99<br />
  • 111. Key Selection: Case Study 1<br />Table for listing all movies<br />Home page lists movies based on chosen category<br />100<br />
  • 112. Movie Listing – Solution 1<br />Why do I need multiple PartitionKeys?<br />Account name as Partition Key <br />Movie title as RowKey since movie names need to be sorted<br />Category as a separate property<br />Does this scale?<br />101<br />
  • 113. Movie Listing – Solution 1<br />Single partition - Entire table served by one server<br />All requests served by that single server<br />Does not scale<br />Client<br />Client<br />Request<br />Request<br />Request<br />Request<br />Server A<br />102<br />
  • 114. Movie Listing – Solution 2<br />All movies partitioned by category<br />Allows system to load balance hot partitions<br />Load distributed<br />Better than single partition<br />Server A<br />Client<br />Client<br />Request<br />Request<br />Request<br />Request<br />Request<br />Request<br />Request<br />Request<br />Server B<br />103<br />
  • 115. Key Selection: Case Study 2<br />Log every transaction into a table for diagnostics<br />Scale Write Intensive Scenario<br />Logs can be retrieved for a given time range<br />104<br />
  • 116. Logging - Solution 1<br />Timestamp as Partition Key <br />Looks like an obvious choice<br />It is not a single partition as time moves forward <br />Append only<br />Requests to single partition range<br />Load balancingdoesnot help<br />Server may throttle<br />Server A<br />Applications<br />Client<br />Server B<br />Request<br />Request<br />Request<br />Request<br />105<br />
  • 117. Logging Solution 2 - Distribute "Append Only”<br />Prefix timestamp such that load is distributed<br />Id of the node logging<br />Hash into N buckets<br />Write load is now distributed <br />Better throughput<br />To query logs in time range<br />Parallelize it across prefix values<br />Server A<br />Applications<br />Client<br />Server B<br />Request<br />Request<br />Request<br />Request<br />106<br />
  • 118. Key Selection: Query Efficiency & Speed<br />Select keys that allow fast retrieval<br />Reduce scan range<br />Reduce scan frequency<br />107<br />
  • 119. Single Entity Query<br />Where PartitionKey=‘SciFi’ and RowKey = ‘Star Trek’<br />Efficient processing<br />No continuation tokens<br />Server A<br />Client<br />Request<br />Server B<br />Result<br />108<br />
  • 120. Table Scan Query<br />Select * from Movies where Rating > 4<br />Returns Continuation token<br />1000 movies in result set<br />Partition range boundary<br />Serial Processing: Wait for <br /> continuation token before <br /> proceeding<br />Returns 1000 movies<br />Partition range boundary hit<br />Server A<br />Cont.<br />Cont.<br />Return continuation<br />Client<br />Request<br />Request Cont.<br />Request Cont.<br />Server B<br />Cont.<br />109<br />
  • 121. Make Scans Faster<br />Split “Select * from Movies where Rating > 4” into<br />Where PartitionKey >= “A” and PartitionKey < “D” and Rating > 4<br />Where PartitionKey >= “D” and PartitionKey < “I” and Rating > 4<br />Etc.<br />Execute in parallel<br />Each query handles continuation<br />Server A<br />Cont.<br />Cont.<br />Request<br />Client<br />Request<br />Request<br />Server B<br />Cont.<br />110<br />
  • 122. Query Speed<br />Fast<br />Single PartitionKey and RowKey with equality<br />Medium<br />Single partition but a small range for RowKey<br />Entire partition or table that is small<br />Slow<br />Large single scan<br />Large table scan<br />“OR” predicates on keys => no query optimization => results in scan<br />Expect continuation token for all except in 1<br />111<br />
  • 123. Make Queries Faster<br />Large Scans<br />Split the range and parallelize queries<br />Create and maintain own views that help queries<br />“Or” Predicates<br />Execute individual query in parallel instead of using “OR”<br />User Interactive<br />Cache the result to reduce scan frequency<br />112<br />
  • 124. Expect Continuation Tokens – Seriously!<br />Maximum of 1000 rows in a response<br />At the end of partition range boundary<br />Maximum of 5 seconds to execute the query<br />113<br />
  • 125. Entity Group Transactions (EGT) (new)<br />Atomically perform multiple insert/update/deleteover entities in same partition in a single transaction<br />Maximum of 100 commands in a single transaction and payload < 4 MB<br />ADO.Net Data Service<br />Use SaveChangesOptions.Batch<br />114<br />
  • 126. Key Selection: Entity Group Transaction<br />Case Study<br />Maintain user account information<br />Account ID, User Name, Address, Number of rentals<br />Maintain information of checked out rentals<br />Account ID, Movie Title, Check out date, Due date<br />Solution 1 – Maintain two tables – Users & Rentals <br />Handle Cross table consistency<br />Insert into Rentals table succeeds<br />Update to Users table fails<br />Queue to maintain consistency<br />115<br />
  • 127. Solution 2<br />Store Account Information and Rental details in same table<br />Maintain same PartitionKey to enforce transactions<br />Account ID as PartitionKey<br />Update total count and Insert new rentals using Entity Group Transaction<br />Prefix RowKey with “Kind” code: A = Account, R = Rental<br />Row key for account info: [Kind Code]_[AccountId]<br />Row Key for rental info: [Kind Code]_[Title]<br />Rental Properties not set for Account row and vice versa<br />116<br />
  • 128. Best Practices<br />Select PartitionKey and RowKey that help scale<br />Efficient for frequently used queries<br />Supports batch transactions<br />Distributes load<br />Distribute “Append only” patterns using prefix to PartitionKey<br />Always Handle continuation tokens<br />Client can maintain their own cache/views instead of frequent scans<br />Future Feature - Secondary Index<br />Execute parallel queries instead of “OR” predicates<br />Implement back-off strategy for retries<br />117<br />
  • 129. Windows Azure Queues<br />Queue are performance efficient, highly available and provide reliable message delivery<br />Simple, asynchronous work dispatch<br />Programming semantics ensure that a message can be processed at least once<br />Access is provided via REST<br />118<br />
  • 130. Queue Storage Concepts<br />Messages<br />Queues<br />Accounts<br />128 x 128 http://...<br />thumbnailjobs<br />256 x 256 http://...<br />sally<br />http://...<br />traverselinks<br />http://...<br />119<br />
  • 131. Account, Queues and Messages<br />An account can create many queues<br />Queue Name is scoped by the account<br />A Queue contains messages<br />No limit on number of messages stored in a queue<br />Set a limit for message expiration<br />Messages<br />Message size <= 8 KB<br />To store larger data, store data in blob/entity storage, and the blob/entity name in the message<br />Message now has dequeue count<br />120<br />
  • 132. Queue Operations<br />Queue<br />Create Queue<br />Delete Queue<br />List Queues<br />Get/Set Queue Metadata<br />Messages<br />Add Message (i.e. Enqueue Message)<br />Get Message(s) (i.e. Dequeue Message)<br />Peek Message(s)<br />Delete Message<br />121<br />
  • 133. Queue Programming Api<br />CloudQueueClientqueueClient = newCloudQueueClient(baseUri, credentials);<br />CloudQueue queue = queueClient.GetQueueReference("test1");<br />queue.CreateIfNotExist();<br />//MessageCount is populated via FetchAttributes<br />queue.FetchAttributes();<br />CloudQueueMessage message = newCloudQueueMessage("Some content");<br />queue.AddMessage(message);<br />message = queue.GetMessage(TimeSpan.FromMinutes(10) /*visibility timeout*/);<br />//Process the message here …<br />queue.DeleteMessage(message);<br />122<br />
  • 134. Removing Poison Messages<br />Producers<br />Consumers<br />C1<br />P2<br />1. GetMessage(Q, 30 s)  msg 1<br />2<br />1<br />1<br />1<br />1<br />1<br />2<br />1<br />3<br />4<br />0<br />3<br />0<br />1<br />1<br />2<br />1<br />1<br />0<br />2<br />0<br />C2<br />P1<br />2. GetMessage(Q, 30 s)  msg 2<br />123<br />
  • 135. Removing Poison Messages<br />Producers<br />Consumers<br />1<br />1<br />C1<br />P2<br />1. GetMessage(Q, 30 s)  msg 1<br />5. C1 crashed<br />4<br />0<br />1<br />1<br />2<br />1<br />3<br />0<br />1<br />2<br />1<br />1<br />1<br />2<br />3<br />6. msg1 visible 30 s after Dequeue<br />2<br />1<br />C2<br />P1<br />2. GetMessage(Q, 30 s)  msg 2<br />3. C2 consumed msg 2<br />4. DeleteMessage(Q, msg 2)<br />7. GetMessage(Q, 30 s)  msg 1<br />124<br />
  • 136. Removing Poison Messages<br />Producers<br />Consumers<br />1. Dequeue(Q, 30 sec)  msg 1<br />5. C1 crashed<br />10. C1 restarted<br />11. Dequeue(Q, 30 sec)  msg 1<br />12. DequeueCount > 2<br />13. Delete (Q, msg1)<br />C1<br />P2<br />4<br />0<br />1<br />2<br />3<br />0<br />1<br />3<br />1<br />2<br />1<br />3<br />3<br />1<br />2<br />C2<br />P1<br />6. msg1 visible 30s after Dequeue<br />9. msg1 visible 30s after Dequeue<br />2. Dequeue(Q, 30 sec)  msg 2<br />3. C2 consumed msg 2<br />4. Delete(Q, msg 2)<br />7. Dequeue(Q, 30 sec)  msg 1<br />8. C2 crashed<br />125<br />
  • 137. Best Practices & Summary<br />Make message processing idempotent<br />No need to deal with failures<br />Do not rely on order<br />Invisible messages result in out of order<br />Use Dequeue count to remove poison messages<br />Enforce threshold on message’s dequeue count<br />Use message count to dynamically increase/reduce workers<br />Use blob to store message data with reference in message<br />Messages > 8KB<br />Batch messages<br />Garbage collect orphaned blobs<br />126<br />
  • 138. Storage Summary<br />Table<br />Scalable & Reliable Structured Storage System<br />Partitioning is critical to scalability<br />Entity Group Transactions (new)<br />Queue<br />Scalable & Reliable Messaging System <br />Dequeue count returned with message (new)<br />Use back-off strategy on retries<br />Official Storage Client Library (new)<br />127<br />
  • 139. What is “SQL Azure”?<br />
  • 140. Review – Conceptual model<br />Subscription <br />Used to map service usage to the billing instrument<br />Users may have many subscriptions<br />Logical Server<br />Akin to SQL Server Instance<br />Unit of Geo-Location & Billing<br />1:1 Subscription & server<br />User Database<br />Restricted T-SQL surface area<br />Additional catalog views provided e.g. sys.billing, sys.firewall_rules, etc<br />
  • 141. SQL AzureA relational DB in the cloud<br />SQL Azure Database<br />Data Hub<br />Others (Future)<br />Relational database as a service<br />Highly available, automatically maintained<br />Extension of the SQL Server Data Platform<br />.NET Services<br />SQL Services<br />Applications<br />Live Services<br />Windows Azure<br />Applications<br />Windows<br />Mobile<br />Windows<br />Vista/XP<br />Windows<br />Server<br />Others<br />
  • 142. SQL Azure Database<br />Single Logical<br />Database<br />Multiple PhysicalReplicas<br />Replica 1<br />Single Primary<br />Replica 2<br />DB<br />- Based on SQL Server 2008 R2 engine<br />Use same tools and data access frameworks<br />Six global datacenters<br />High Availability & Redundancy<br />Reads are completed at the primary<br />Writes are replicated to a quorum of secondaries<br />Replica 3<br />Multiple<br />Secondaries<br />
  • 143. Extending SQL Server Data Platform to the Cloud<br />Data Sync<br />Reference Data<br />Database<br />Symmetric Programming Model<br />Data Hub Aggregation<br /><ul><li>Initial services – core RDBMS capabilities with SQL Azure Database, Data Sync
  • 144. Future Offerings
  • 145. Additional data platform capabilities: Reporting, BI
  • 146. New services: Reference Data</li></li></ul><li>The New SQL Data Services<br />Clear Feedback: “I want a database in the Cloud”<br />Familiar SQL Server relational model<br />Uses existing APIs & tools<br />Built for the Cloud with availability and scale<br />Accessible to all from PHP, Ruby, and Java<br />Focus on combining the best features of SQL Server running at scale with low friction<br />
  • 147. The Evolution of SDS<br />Evolves<br />BrowserApplication<br />Application<br />Application<br />BrowserApplication<br />Application<br />ODBC, OLEDB, ADO.Net PHP, Ruby, …<br />REST Client<br />SQL Client*<br />REST Client<br />Cloud<br />Cloud<br />Windows Azure<br />REST (Astoria)<br />Web App<br />ADO.Net + EF<br />REST Client<br />HTTP+REST<br />HTTP+REST<br />HTTP<br />TDS<br />HTTP<br />Windows Azure<br />Web App<br />SQL Client*<br />Data Center<br />Data Center<br />TDS + TSQL Model<br />REST/SOAP + ACE Model<br />SDS Next<br />SDS Current<br />* Client access enabled using TDS for ODBC, ADO.Net, OLEDB, PHP-SQL, Ruby, …<br />
  • 148. SQL Azure<br />SQL Azure Database<br />Others (Future)<br />SQL Azure<br />Applications<br />Windows Azure AppFabric<br />Windows Azure<br />Applications<br />Others<br />Windows<br />
  • 149. SQL Azure DatabaseAn Illustration<br />SQL Azure Database<br />Database<br />TDS<br />Application<br />Database<br />Database<br />SQL Azure Database<br />Others (Future)<br />
  • 150. SQL Azure DatabaseUsing one or multiple databases<br />SQL Azure Database<br />Database<br />Application<br />Max database size is 50 GB<br />Database<br />Database<br />Application<br />Database<br />
  • 151. SQL Azure Network Topology<br />Applications use standard SQL client libraries: ODBC, ADO.Net, PHP, …<br />Application<br />Internet<br />Azure Cloud<br />TDS (tcp)<br />Security Boundary<br />Load balancer forwards ‘sticky’ sessions to TDS protocol tier<br />LB<br />TDS (tcp)<br />Gateway<br />Gateway<br />Gateway<br />Gateway<br />Gateway<br />Gateway<br />Gateway: TDS protocol gateway, enforces AUTHN/AUTHZ policy; proxy to CloudDB<br />TDS (tcp)<br />SQL<br />SQL<br />SQL<br />SQL<br />SQL<br />SQL<br />Scalability and Availability: Fabric, Failover, Replication, and Load balancing<br />
  • 152. TDS Gateway<br />TDS Listener<br />Capability negotiation<br />TDS Packet inspection<br />Security<br />Logical->Physical mapping via metadata catalog<br />Enabler for multi-tenet capabilities<br />Isolation layer<br />
  • 153. TDS Gateway Layering<br />Gateway Process<br />TDS Endpoint<br />AdminSvc Endpoint<br />Provisioning Endpoint<br />Protocol Parser<br />Business Logic Services<br />Connection Mgmt<br />SQL<br />SQL<br />SQL<br />SQL<br />SQL<br />SQL<br />Scalability and Availability: Fabric, Failover, Replication, and Load balancing<br />
  • 154. Provisioning <br />Subscription<br />Coordinated across all Azure services<br />Executed in parallel w/retries<br />Server<br />May occur between data centers<br />Point where Geo-location is established<br />Database<br />Always occurs within a single data center<br />Cross node operations executed during this process e.g. add new db to sys.databases on the master<br />
  • 155. Server Provisioning<br />Driven by administrator Portal<br />Provision request is sent to Gateway<br />Metadata catalog entry created<br />DNS record (CNAME) created within LiveDNS service<br />Master DB created<br />On completion metadata catalog updated<br />
  • 156. SQL Azure Server Provisioning<br />Live DNS Cluster<br />Customer Browser<br />Live DNS Svc<br />Datacenter (Sub-Region)<br />1<br />5<br />Portal LB<br />Gateway LB<br />2<br />4<br />3<br />6<br />Front-end Node<br />Front-end Node<br />Front-end Node<br />Front-end Node<br />Gateway <br />Gateway <br />Admin Portal <br />Admin Portal <br />7<br />Backend Node<br />Backend Node<br />Backend Node<br />SQL Server<br />SQL Server<br />SQL Server<br />Mgmt. Services<br />Mgmt. Services<br />Mgmt. Services<br />Fabric<br />Fabric<br />Fabric<br />
  • 157. Database Provisioning<br />Gateway performs stateful TDS packet inspection<br />Picks out subset of messages<br />Parses out args for create database<br />Makes entry into Gateway metadata catalog<br />Unused replica set located and reserved<br />Replica set (UserDB) is prepped for use <br />Metadata catalog is updated<br />
  • 158. SQL Azure Database provisioning<br />TDS Gateway<br />1<br />Front-end Node<br />Protocol Parser<br />TDS Session<br />2<br />3<br />Gateway Logic<br />Master Node<br />Master Cluster<br />Master Node Components<br />4<br />7<br />5<br />6<br />8<br />Backend Node 1<br />Backend Node 2<br />Backend Node 3<br />SQL Instance<br />SQL Instance<br />SQL Instance<br />SQL DB<br />SQL DB<br />SQL DB<br />Scalability and Availability: Fabric, Failover, Replication, and Load balancing<br />Scalability and Availability: Fabric, Failover, Replication, and Load balancing<br />
  • 159. SQL Azure Login Process<br />Login request arrives at the Gateway<br />Gateway locates MasterDb & UserDb replica sets<br />Credentials are validated against MasterDb<br />TDS session is opened to UserDB and requests are forwarded<br />
  • 160. SQL Azure Login Process<br />TDS Gateway<br />7<br />1<br />Front-end Node<br />Protocol Parser<br />TDS Session<br />2<br />6<br />Gateway Logic<br />Master Node<br />Global Partition Map<br />Master Node Components<br />3<br />8<br />4<br />5<br />Backend Node 1<br />Backend Node 2<br />Backend Node 3<br />SQL Instance<br />SQL Instance<br />SQL Instance<br />SQL DB<br />SQL DB<br />SQL DB<br />Scalability and Availability: Fabric, Failover, Replication, and Load balancing<br />Scalability and Availability: Fabric, Failover, Replication, and Load balancing<br />
  • 161. Service Resilience<br />Provisioning<br />State machines used to coordinate activities across node (and datacenter) boundaries<br />Failed provisioning attempts cleaned automatically after 10 minutes<br />Login<br />Failovers during the login will be transparent (<30 seconds)<br />Metadata catalog refresh occurs automatically<br />Active Session<br />Surface as connection drops (due to state)<br />
  • 162. Monitoring Service Health<br />Metrics<br />Cluster wide performance counters gather key metrics on the service<br />Used to alert Operations to issues before they become a problem<br />Early warning system<br />Code issues<br />Capacity warnings<br />Health<br />Exercises the service routinely looking for problems<br />When issues are encountered runs deep diagnostics<br />Network connectivity at the node level<br />Validate all dependent services (Live DNS, Live ID, etc)<br />Monitoring from other MSFT DC’s<br />Validates accessibility from multiple geographic locations<br />Alerts fired automatically when test jobs fail<br />
  • 163. Security/Attack Considerations<br />Service <br />Secure channel required (SSL)<br />Denial Of Service trend tracking<br />Packet Inspection<br />Server <br />IP allow list (Firewall) <br />Idle connection culling<br />Generated server names <br />Database<br />Disallow the most commonly attacked user id’s (SA, Admin, root, guest, etc) <br />Standard SQL Authn/Authz mode <br />
  • 164. What’s New In SQL Azure CTPEnhancements<br />SQL Azure Database<br />Windows Azure Platform – Developer Portal<br />Enhanced user experience and reporting<br />Database manager for SQL Azure<br />SQL Azure Reporting CTP<br />Reporting and BI on SQL Azure databases<br />Based on SQL Server Reporting Services<br />SQL Azure Data Sync CTP2<br />Synchronize SQL Azure databases<br />Synchronize SQL Azure with on-premises SQL Server<br />
  • 165. What’s New In SQL Azure CTPEnhancements<br />SQL Azure Database<br />Windows Azure Platform – Developer Portal<br />Enhanced user experience and reporting<br />Database manager for SQL Azure<br />SQL Azure Reporting CTP<br />Reporting and BI on SQL Azure databases<br />Based on SQL Server Reporting Services<br />SQL Azure Data Sync CTP2<br />Synchronize SQL Azure databases<br />Synchronize SQL Azure with on-premises SQL Server<br />
  • 166. What’s New In SQL Azure CTPEnhancements<br />SQL Azure Database<br />Windows Azure Platform – Developer Portal<br />Enhanced user experience and reporting<br />Database management<br />SQL Azure Reporting CTP<br />Reporting and BI on SQL Azure databases<br />Based on SQL Server Reporting Services<br />SQL Azure Data Sync CTP2<br />Synchronize SQL Azure databases<br />Synchronize SQL Azure with on-premises SQL Server<br />
  • 167. SQL Azure Reporting CTP<br />Features:<br />Based on SQL Server Reporting Services<br />Interactive and tabular reporting<br />Data visualizations: charts, graphs, mapping, gauges<br />SQL Azure Database data sources<br />Utilizes BI Developer Studio (free) to author reports<br />Export to Excel, PDF, CSV formats<br />Core scenarios:<br />Operational reporting on SQL Azure data<br />Embed reports into Windows Azure or on-premises applications<br /> <br />Web Role<br />Reporting<br />“Introduction to SQL Azure Reporting”<br />
  • 168. What’s New In SQL AzureEnhancements<br />SQL Azure Database<br />Windows Azure Platform – Developer Portal<br />Enhanced user experience and reporting<br />Database management<br />SQL Azure Reporting CTP<br />Reporting and BI on SQL Azure databases<br />Based on SQL Server Reporting Services<br />SQL Azure Data Sync CTP2<br />Synchronize SQL Azure databases<br />Synchronize SQL Azure with on-premises SQL Server<br />
  • 169. SQL Azure Data Sync CTP2<br />Elastic Scale<br />Service scales as resources requirements grow<br />No-Code Sync Configuration<br />Easily define data to be synchronized<br />Schedule Sync<br />Choose how often data is synchronized<br />Conflict Handling<br />Handle issues where same data is changed in multiple locations<br />Logging and Monitoring<br />Administration capabilities for tracking data and monitoring potential issues<br />CTP 1<br />CTP 2<br />“Introduction to SQL Azure Data Sync”<br />
  • 170. SQL Azure Data Sync – A Closer LookCTP 2<br />On Premises<br />Windows Azure<br />Data Sync Service<br />Local Agent<br />Sync Orchestrator<br />Sync Orchestrator<br />HTTPS<br />SQL Server Sync Provider<br />SQL Server <br />Proxy Provider<br />SQL Server<br />Provider<br />TDS<br />SQL Server<br />SQL Azure<br />
  • 171. SQL Azure Data Sync – Example Use Cases<br />Move workloads in stages preserving existing infrastructure<br />Move part of the application and sync its data<br />Meet compliance and regulations<br />Control data synchronized off-premises<br />Enable scale-out read or read/write<br />Multiple synchronized databases for scalability<br />Preserve data – geo replication of data<br />Enable new scenarios<br />Spanning enterprise, cloud and remote offices/retail stores<br />
  • 172. SQL Azure Data Sync – Roadmap<br />SQL Azure Database<br />Now<br />Sync<br />Sync<br />Data Sync Service For SQL Azure<br />Remote Offices<br />Retail Stores<br />Sync<br />Sync<br />Sync<br />Sync<br />Sync<br />CTP2 – End of CY10<br />On-Premises (Headquarters)<br />
  • 173. New SQL Azure Usage Scenarios<br />Fully featured <br />Windows Azure Platform<br />Application<br />Data Sync<br />Web Role<br />Reporting<br />
  • 174. New SQL Azure Usage Scenarios<br />Fully featured <br />Windows Azure Platform<br />Application<br />Globally available,<br />cloud & on-premises<br />data synchronization<br />Data Sync<br />Data Sync<br />Geo-replication of data across Windows Azure Platform datacenters<br />Web Role<br />Reporting<br />Corporate Office<br />Branch Office or Retail<br />Datacenter<br />Synchronize multiple on-premises SQL Server databases in different locations<br />
  • 175. Roadmap<br />Now<br />Visit www.microsoft.com/sqlazure to register for upcoming CTP access<br />2010<br />New Windows Azure Developer Portal; Database Manager<br />Limited CTPs of Data Sync CTP2, Reporting CTP<br />Watch for PDC Announcements; visit the SQL Azure blog and website<br />2011<br />Backup & Restore<br />SQL Azure Reporting<br />SQL Azure Data Sync<br />
  • 176. Windows Azure AppFabricInfrastructure in the cloud<br />Service Bus<br />Access Control<br />SQL Azure<br />Applications<br />?<br />Windows Azure AppFabric<br />Windows Azure<br />Applications<br />Others<br />Windows<br />
  • 177. Service Bus<br />3) Discover Service Bus endpoint<br />1) Register service endpoint <br />Registry<br />2) Expose Service Bus endpoint<br />5) Invoke operation on service endpoint<br />4) Invoke operation on Service Bus endpoint<br />Client <br />(On-premises or cloud)<br />WCF Service<br />(On-premises)<br />Service Bus<br />Access Control<br />Illustrating Service Bus<br />
  • 178. Windows Azure Platform PricingA summary (in US dollars)<br />Compute: $0.12 to $0.96/hour for each role instance depending on instance size <br />Storage: <br />Windows Azure blobs and tables:<br />Data: $0.15/GB per month<br />Access: $0.01/10,000 operations<br />SQL Azure relational:<br />$9.99/month per GB<br />Bandwidth: <br />Americas/Europe: $0.10/GB in, $0.15/GB out<br />Asia/Pacific: $0.30/GB in, $0.45/GB out<br />
  • 179. Service Level AgreementsKey points: Windows Azure compute<br />When you deploy two or more role instances in different fault and upgrade domains, your Internet-facing roles will have external connectivity at least 99.95% of the time<br />Microsoft will detect within two minutes when a role instance’s process is not running and initiate corrective action <br />
  • 180. Service Level AgreementsKey points: Windows Azure storage<br />At least 99.9% of the time, Microsoft will successfully process correctly formatted requests to add, update, read and delete data<br />At least 99.9% of the time, your storage accounts will have connectivity to Microsoft’s Internet gateway<br />
  • 181. Service Level AgreementsKey points: SQL Azure database<br />SQL Azure will maintain a Monthly Availability of 99.9% during a calendar month. Monthly Availability percentage for a specific customer database is the ratio of the time the database was available to customer to the total time in a month. An interval is marked as unavailable if the customer’s attempts to connect to a database are rejected by the SQL Azure gateway.<br />
  • 182. Using the Windows Azure Platform: Scenarios<br />
  • 183. Applying Azure (1)Some characteristics of Azure-appropriate applications<br />Apps that need massive scale<br />Example: A Web 2.0 application<br />Apps that need high reliability<br />Example: A Software as a Service (SaaS) application<br />Apps with variable load<br />Example: An on-line ticketing application<br />Apps with a short or unpredictable lifetime<br />Example: An app created for a marketing campaign<br />
  • 184. Applying Azure (2)Some characteristics of Azure-appropriate applications<br />Apps that do parallel processing<br />Example: A financial modeling application<br />Apps that must fail fast or scale fast<br />Example: Start-ups<br />Apps that don’t fit well in an organization’s data center<br />Example: A business unit that wishes to avoid its IT department<br />Apps that can benefit from external storage<br />Example: An application that archives data<br />
  • 185. Building on AzureA non-Azure app using Windows Azure storage<br />Blobs<br />SQL Azure<br />On-Premises or Hosted Application<br />
  • 186. Building on Azure A massively scalable web app exposed on the public Internet<br />Tables<br />Web Role<br />Instance<br />Users<br />
  • 187. Building on Azure A massively scalable web app with background processing<br />Tables<br />Blobs<br />Queues<br />Web Role<br />Instance<br />Worker Role<br />Instance<br />Users<br />
  • 188. Building on Azure A web app with relational storage<br />SQL Azure<br />Web Role<br />Instance<br />Users<br />
  • 189. Building on Azure A web app using cloud and on-premises data<br />SQL Azure<br />Web Role<br />Instance<br />Service Bus<br />On-premises Database<br />Users<br />
  • 190. Building on Azure A parallel processing application<br />Blobs<br />Queues<br />Worker Role<br />Instance<br />Web Role<br />Instance<br />User<br />
  • 191. The Windows Azure Platform<br />Developer Experience<br />Use existing skills and tools.<br />platform<br />Relational data<br />Management<br />AppFabric<br />Compute<br />Storage<br />Management<br />CDN<br />Connectivity<br />Access control<br />
  • 192. Conclusions<br />Cloud platforms are here<br />Microsoft is placing a big bet with the Windows Azure platform<br />A new world is unfolding<br />Prepare to be part of it<br />
  • 193. Related Content<br />Comunidad Windows<br />http://comunidadwindows.org<br />http://www.slideshare.net/ecastrom<br />http://ecastrom.blogspot.com<br />Introducing the Windows Azure Platform<br />http://go.microsoft.com/fwlink/?LinkId=158011<br />Introducing Windows Azure<br />http://go.microsoft.com/?linkid=9682907<br />
  • 194. Presentation SourcesResources<br />SQL Azure website: <br />http://www.microsoft.com/sqlazure<br />Blog: <br />http://blogs.msdn.com/sqlazure<br />Dev Center: <br />http://msdn.microsoft.com/windowsazure/sqlazure<br />Frameworks:<br />http://msdn.microsoft.com/data<br />
  • 195. An Introduction to the Windows Azure Platform<br />Dr. Eduardo Castro Martínez<br />Microsoft MVP<br />ecastro@mswindowscr.org<br />http://comunidadwindows.org<br />http://ecastrom.blogspot.com<br />
  • 196. © 2010 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.<br />The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.<br />

×