Patterns for Cloud Computing

Simon Guest
Senior Director, Technical Strategy
Microsoft Corporation
Patterns for Cloud Computing
Patterns for Cloud Computing




                   This is Jim
Patterns for Cloud Computing




 Jim has many questions about cloud computing
Patterns for Cloud Computing




 The more he reads, the more confused he gets
Patterns for Cloud Computing




           “What is cloud computing?”
Patterns for Cloud Computing




     “What are vendors doing in this space?”
Patterns for Cloud Computing




 “What applications make sense in the cloud?”
Session Objectives
Session Objectives

               Build on Stefan’s introduction of
                      of cloud computing


          ...
Defining Cloud Computing
Defining Cloud Computing

       Application runs
       on-premises




    • Bring my own
      machines,
        Buy my...
Defining Cloud Computing

       Application runs     Application runs at a
       on-premises                 hoster




...
Defining Cloud Computing

       Application runs     Application runs at a     Application runs using
       on-premises ...
Defining Cloud Computing




            Cloud “Variants”
Defining Cloud Computing




              Public Cloud
Defining Cloud Computing




Pool of computing resources offered by
       a vendor, typically using a
         “pay as yo...
Defining Cloud Computing




              Private Cloud
Defining Cloud Computing




 Pool of computing resources that lives
  within a self managed datacenter
Defining Cloud Computing




 Pool of computing resources that lives
 within a datacenter with no sharing
Defining Cloud Computing

            Compute: Virtualized compute based on Windows Server
            Storage: Durable, s...
Defining Cloud Computing



             Different Models

        Infrastructure as a Service (IaaS)
                    ...
Defining Cloud Computing


                      Your Application      Deployment

                        Frameworks

   ...
Defining Cloud Computing

        Deployment     Your Application      Deployment

                         Frameworks

  ...
Patterns for Cloud Computing




    #1 - Using the Cloud for Scale
Patterns for Cloud Computing




“Isn’t the cloud good for applications that need to
                 scale dynamically?”
Patterns for Cloud Computing




  “For example, applications that have spikes or
                  peak loads”
Patterns for Cloud Computing




             “How does this work?”
Patterns for Cloud Computing




     Let’s do some white boarding for Jim…
…and when I say white boarding, I really mean it
#1 - Using the Cloud for Scale


“Wow! What a great site!”


                  Request
     Browser                 Web Ti...
#1 - Using the Cloud for Scale


Browser

Browser

Browser          Web Tier      B/L Tier    Database
               “Ser...
#1 - Using the Cloud for Scale


Browser

Browser

Browser         Web Tier      B/L Tier     Database

Browser           ...
How would Jim do this today on premises?
#1 - Using the Cloud for Scale
           How would Jim do this today on premises?


Browser

Browser             Web Tier...
#1 - Using the Cloud for Scale
           How would Jim do this today on premises?


Browser

Browser                     ...
#1 - Using the Cloud for Scale
           How would Jim do this today on premises?


Browser

Browser             Web Tier...
#1 - Using the Cloud for Scale
           How would Jim do this today on premises?


Browser                              ...
Not without consequences...
#1 - Using the Cloud for Scale
           How would Jim do this today on premises?


Browser                              ...
#1 - Using the Cloud for Scale
                  How would Jim do this today on premises?


                              ...
#1 - Using the Cloud for Scale


                                         Datacenter peak load




Usage                  ...
How can cloud computing help?
#1 - Using the Cloud for Scale


“Wow! What a great site!”


                  Request
     Browser                 Web Ro...
#1 - Using the Cloud for Scale


Browser

Browser

Browser          Web Role      Worker Role    Azure
                   ...
#1 - Using the Cloud for Scale


Browser

Browser               Web Role
                 N
Browser          L    Web Role...
#1 - Using the Cloud for Scale


Browser

Browser            Web Role       Worker Role
               N              N
Br...
OK, so changing config is easy...

…but what else do I need to know?
#1 - Using the Cloud for Scale


Browser

Browser            Web Role       Worker Role
               N              N
Br...
#1 - Using the Cloud for Scale


Browser

Browser            Web Role              Worker Role
               N           ...
#1 - Using the Cloud for Scale


                                                 4. Process

      Web Role              ...
#1 - Using the Cloud for Scale


                                                   4. Process

       Web Role           ...
Demo: Prime Solver
How many web and worker roles do you need?
How many web and worker roles do you need?
#1 - Using the Cloud for Scale

             WMI_Win32_PerfFormattedData_ASPNET_ASPNETApplications
             /RequestsP...
How many web and worker roles do you need?
#1 - Using the Cloud for Scale

Web Role

  Web Role

     Web Role                            Worker Role




           ...
#1 - Using the Cloud for Scale

Web Role                                      Worker Role

  Web Role                     ...
Patterns for Cloud Computing
                   Takeaways

          A core tenet of cloud computing is
          the abil...
Patterns for Moving to the Cloud




#2 - Using the Cloud for Multi Tenancy
Patterns for Cloud Computing




      “I like the idea of scaling Web roles…”
Patterns for Cloud Computing




    “…but need to serve multiple customers”
Patterns for Cloud Computing




     “Without creating separate codebases!”
How would Jim do this today on premises?
#2 - Using the Cloud for Multi Tenancy
              How would Jim do this today on premises?


  Browser            Web T...
Gets expensive pretty quickly
#2 - Using the Cloud for Multi Tenancy


  Browser
Customer #1

  Browser        Web Tier     B/L Tier    Database
Custome...
Schema Customizations

  UI Customizations
Schema Customizations

  UI Customizations
3 options for data in multi tenant environment
#2 - Using the Cloud for Multi Tenancy


  Browser
                                                     Fixed Schema
Custo...
#2 - Using the Cloud for Multi Tenancy


  Browser                                                       Database
Customer...
#2 - Using the Cloud for Multi Tenancy


  Browser                                              Fixed Schema
             ...
#2 - Using the Cloud for Multi Tenancy
                                         Tenant


                                 ...
#2 - Using the Cloud for Multi Tenancy
                                       Tenant


                                   ...
#2 - Using the Cloud for Multi Tenancy
                                       Tenant


                                   ...
#2 - Using the Cloud for Multi Tenancy
                                            Tenant


                              ...
Schema Customizations

  UI Customizations
#2 - Using the Cloud for Multi Tenancy


  Browser
Customer #1

  Browser        Web Tier     B/L Tier    Database
Custome...
URL Handing
Routing using MVC approach
#2 - Using the Cloud for Multi Tenancy

              http://hr.contoso.co.uk
  Browser
Customer #1           http://emplo...
#2 - Using the Cloud for Multi Tenancy

              http://hr.contoso.co.uk -> CNAME (employeedata.cloudapp.net)
  Brows...
#2 - Using the Cloud for Multi Tenancy

              http://hr.contoso.co.uk -> CNAME (employeedata.cloudapp.net)
  Brows...
Demo: Multi Tenant Schema and UI
Patterns for Cloud Computing
                   Takeaways

          Always consider Multi Tenancy first,
          even i...
Patterns for Moving to the Cloud




 #3 - Using the Cloud for Compute
Patterns for Cloud Computing




    Jim sees how cloud computing supports
            scaling up/down nodes
Patterns for Cloud Computing




    “Can I use all of these nodes in parallel?”
Patterns for Cloud Computing




 “I’ve got this complex calculation I would like to
        share across these multiple n...
#3 - Using the Cloud for Compute



                                       Data
         Data                Worker
      ...
#3 - Using the Cloud for Compute



                           Result
                                    Worker

        ...
Popularized by the term “MapReduce”*




     * 2004 OSDI paper by Jeff Dean and Sanjay Ghemawat (Google)
#3 - Using the Cloud for Compute

               How many ”e”’s in
“The quick brown fox jumps over the lazy dog”?
        ...
#3 - Using the Cloud for Compute



                                      L<k,v>
                                         ...
And it’s definitely popular...
#3 - Using the Cloud for Compute

                    Google
20pb of data analyzed every day using MapReduce

            ...
Frameworks
#3 - Using the Cloud for Compute

            Apache Hadoop
Open Source Java “Inspired by MapReduce”
       (Core, HDFS, m...
How would Jim do this today on premises?
#3 - Using the Cloud for Compute
                     How would Jim do this today on premises?




                       ...
How about implementing this on Windows Azure?
#3 - Using the Cloud for Compute


                                                                             Data
     ...
Demo: Windows Azure Demo
 “Inspired by MapReduce”
Patterns for Cloud Computing
                   Takeaways

          MapReduce very visible, although
          can be dif...
Patterns for Moving to the Cloud




  #4 - Using the Cloud for Storage
Patterns for Cloud Computing




  “The cloud lets me store infinite data, right?”
Patterns for Cloud Computing




Lots of headaches with data management today
Patterns for Cloud Computing




        “It sounds too good to be true…”
How does Jim do this today on premises?
#4 - Using the Cloud for Storage
         How would Jim do this today on premises?




           File
                   ...
#4 - Using the Cloud for Storage
         How would Jim do this today on premises?




           Data   TDS (Tabular Data...
#4 - Using the Cloud for Storage
          How would Jim do this today on premises?




            Data
                 ...
#4 - Using the Cloud for Storage


   I love                         I love
    you!                         you too!



 ...
#4 - Using the Cloud for Storage


        I love                             I love
         you!                        ...
How does the cloud help?
Breaks the affinity between your data and hardware
Blobs, Tables, Relational
Blobs, Tables, Relational
#4 - Using the Cloud for Storage


PutBlob                                                            Blob Container
PUT h...
#4 - Using the Cloud for Storage


                                                                   Blob Container


   ...
#4 - Using the Cloud for Storage


                                                                   Blob Container


   ...
#4 - Using the Cloud for Storage


PutBlock(blobname, blockid, data)                            Blob Container
PutBlockLis...
Blobs, Tables, Relational
#4 - Using the Cloud for Storage
REST:
GET http://account.table.core.windows.net/Customer?$filter=%20PartitionKey%20eq%20v...
Blobs, Tables, Relational
Codename Sitka (early 2008)
SQL Server Data Services (MIX08)
#4 - Using the Cloud for Storage

         This is what I’m doing on premises...



            Data
                     ...
#4 - Using the Cloud for Storage

         So, this is what I would like to do in the cloud...



            Data
       ...
SQL Data Services (MIX09)
SQL Azure (July 2009)
#4 - Using the Cloud for Storage

         So, this is what I would like to do...



            Data
                    ...
#4 - Using the Cloud for Storage




          HTTP               TDS
Browser           Web Role         SQL Azure   RDBMS
#4 - Using the Cloud for Storage




          HTTP              Queue                 TDS
Browser          Web Role      ...
Migration!
#4 - Using the Cloud for Storage


                             “The Data Center”


          HTTP                        ...
#4 - Using the Cloud for Storage


                                        “The Cloud”


          HTTP              Queue...
Demo: SQL Azure CTP
Patterns for Cloud Computing
                   Takeaways

          Storage in the cloud may look the
          same, but...
Patterns for Moving to the Cloud




#5 - Using the Cloud for Communications
Patterns for Cloud Computing




 Jim’s organization needs to communicate with
               other organizations
Patterns for Cloud Computing




“This has always been a very tricky and expensive
             process to get working”
Patterns for Cloud Computing




    “Does the cloud offer anything to help?”
How would Jim have done this before?
#5 - Using the Cloud for Communications




                     Telco provided WAN
Company 1                             ...
#5 - Using the Cloud for Communications



                           Internet
                     Telco provided WAN
Com...
#5 - Using the Cloud for Communications



                           Internet
                     Telco provided WAN
Com...
What does the cloud provide?
#5 - Using the Cloud for Communications


                     http://app.queue.core.windows.net/


                      ...
#5 - Using the Cloud for Communications
Company 1

                     http://app.queue.core.windows.net/
  Client

     ...
#5 - Using the Cloud for Communications
Company 1

                     http://app.queue.core.windows.net/
  Client

     ...
#5 - Using the Cloud for Communications
   Company 1

                        http://app.queue.core.windows.net/
     Clie...
#5 - Using the Cloud for Communications
Company 1

                     http://app.queue.core.windows.net/
  Client

     ...
#5 - Using the Cloud for Communications
            Proxy?
Company 1

            Firewall
                        http://...
#5 - Using the Cloud for Communications
Company 1

                 Firewall
                               http://app.que...
#5 - Using the Cloud for Communications
Company 1

                 Firewall
                                           ht...
#5 - Using the Cloud for Communications
Company 1

                 Firewall
                                       http:/...
How does the .NET Service Bus help?
#5 - Using the Cloud for Communications
Company 1

                              sb://.../myqueue
  Client



            ...
Two modes: TCP Relay and Message Buffer
Two modes: TCP Relay and Message Buffer
#5 - Using the Cloud for Communications
Company 1

                                                        sb://.../myqueu...
#5 - Using the Cloud for Communications
Company 1

            Firewall
                                                  ...
#5 - Using the Cloud for Communications
This Conference
  Application        Firewall
                                    ...
Two modes: TCP Relay and Message Buffer
#5 - Using the Cloud for Communications
Company 1

                                                      sb://.../myqueue
...
#5 - Using the Cloud for Communications
Company 1
                  Producer sends messages to
                  the Messa...
#5 - Using the Cloud for Communications
Company 1

                                                  sb://.../myqueue
  Cl...
Patterns for Cloud Computing
                   Takeaways

          Be careful consuming REST based
          queues usin...
Patterns for Moving to the Cloud




        Putting the Patterns Together
Patterns for Cloud Computing




 We’ve covered 5 patterns, but Jim has one last
                  question…
Patterns for Cloud Computing




   Are there cases where these patterns work
                   together?
Putting the Patterns Together
           Windows Azure
               PHP




           Let’s build an
        applicatio...
Putting the Patterns Together
Use the principles of     Windows Azure
  multi tenancy to             PHP          (10 node...
Putting the Patterns Together
                     Windows Azure
                          PHP




         Job
          ...
Putting the Patterns Together
Store the results
 in a SQL Azure         Windows Azure

     database                PHP


...
Putting the Patterns Together
           .NET Service Bus
                               Windows Azure
                   ...
Putting the Patterns Together
         .NET Service Bus
                             Windows Azure
                       ...
Putting the Patterns Together
               .NET Service Bus
                                   Windows Azure     Store r...
Demo: Prime Solver v2.0
Next Steps
Next Steps




       Obviously, our friend Jim, is fake…
Next Steps

             Make sure you have a clear definition
                    of Cloud Computing


               Exp...
simon.guest@microsoft.com
   http://simonguest.com
Patterns for Cloud Computing
Patterns for Cloud Computing
Upcoming SlideShare
Loading in...5
×

Patterns for Cloud Computing

5,603

Published on

"Patterns for Cloud Computing" presentation as delivered at QCon San Francisco 2009.

Published in: Technology

Patterns for Cloud Computing

  1. 1. Patterns for Cloud Computing Simon Guest Senior Director, Technical Strategy Microsoft Corporation
  2. 2. Patterns for Cloud Computing
  3. 3. Patterns for Cloud Computing This is Jim
  4. 4. Patterns for Cloud Computing Jim has many questions about cloud computing
  5. 5. Patterns for Cloud Computing The more he reads, the more confused he gets
  6. 6. Patterns for Cloud Computing “What is cloud computing?”
  7. 7. Patterns for Cloud Computing “What are vendors doing in this space?”
  8. 8. Patterns for Cloud Computing “What applications make sense in the cloud?”
  9. 9. Session Objectives
  10. 10. Session Objectives Build on Stefan’s introduction of of cloud computing Provide you with 5 patterns for cloud-based applications Show implementations of these patterns
  11. 11. Defining Cloud Computing
  12. 12. Defining Cloud Computing Application runs on-premises • Bring my own machines, Buy my own connectivity, software, etc.and hardware, • manage my own Complete control data center and responsibility • Upfront capital costs for the infrastructure
  13. 13. Defining Cloud Computing Application runs Application runs at a on-premises hoster • Bring my own • Rent machines, machines, connectivity, Buy my own Pay someone to software connectivity, software, etc.and hardware, host my application • Less control, but • manage my own Complete control using hardware that fewer data center and responsibility I specify responsibilities • Upfront capital • Lower capital costs, costs for the but pay for fixed infrastructure capacity, even if idle
  14. 14. Defining Cloud Computing Application runs Application runs at a Application runs using on-premises hoster cloud platform • Bring my own • Rent machines, • Shared, machines, connectivity, multi-tenant Pay someone for a Buy my own Pay someone to software environment connectivity, pool of computing software, etc.and hardware, host my application • Less control, but • Offers pool of resources that can • manage my own Complete control using hardware that fewer computing be applied to a set data center and responsibility I specify responsibilities resources, of applications abstracted from • Upfront capital • Lower capital costs, costs for the but pay for fixed infrastructure infrastructure capacity, even if idle • Pay as you go
  15. 15. Defining Cloud Computing Cloud “Variants”
  16. 16. Defining Cloud Computing Public Cloud
  17. 17. Defining Cloud Computing Pool of computing resources offered by a vendor, typically using a “pay as you go” model
  18. 18. Defining Cloud Computing Private Cloud
  19. 19. Defining Cloud Computing Pool of computing resources that lives within a self managed datacenter
  20. 20. Defining Cloud Computing Pool of computing resources that lives within a datacenter with no sharing
  21. 21. Defining Cloud Computing Compute: Virtualized compute based on Windows Server Storage: Durable, scalable, & available storage Management: Automated, management of the service Database: Relational processing for structured/ unstructured data Service Bus: General purpose application bus Access Control: Rules-driven, claims-based access control
  22. 22. Defining Cloud Computing Different Models Infrastructure as a Service (IaaS) vs. Platform as a Service (PaaS)
  23. 23. Defining Cloud Computing Your Application Deployment Frameworks Deployment Web Server OS Services Provided by Windows Azure Operating System Provided Virtualized Instance By Amazon Hardware EC2
  24. 24. Defining Cloud Computing Deployment Your Application Deployment Frameworks Web Server Provided by OS Services Provided by Google Windows Azure AppEngine Operating System Virtualized Instance Hardware
  25. 25. Patterns for Cloud Computing #1 - Using the Cloud for Scale
  26. 26. Patterns for Cloud Computing “Isn’t the cloud good for applications that need to scale dynamically?”
  27. 27. Patterns for Cloud Computing “For example, applications that have spikes or peak loads”
  28. 28. Patterns for Cloud Computing “How does this work?”
  29. 29. Patterns for Cloud Computing Let’s do some white boarding for Jim…
  30. 30. …and when I say white boarding, I really mean it
  31. 31. #1 - Using the Cloud for Scale “Wow! What a great site!” Request Browser Web Tier B/L Tier Database Response
  32. 32. #1 - Using the Cloud for Scale Browser Browser Browser Web Tier B/L Tier Database “Server Busy” Browser Browser
  33. 33. #1 - Using the Cloud for Scale Browser Browser Browser Web Tier B/L Tier Database Browser “Timeout” Browser
  34. 34. How would Jim do this today on premises?
  35. 35. #1 - Using the Cloud for Scale How would Jim do this today on premises? Browser Browser Web Tier N Browser L Web Tier B/L Tier Database B Browser Web Tier Browser
  36. 36. #1 - Using the Cloud for Scale How would Jim do this today on premises? Browser Browser B/L Tier N Browser Web Tier L B/L Tier Database B Browser B/L Tier Browser
  37. 37. #1 - Using the Cloud for Scale How would Jim do this today on premises? Browser Browser Web Tier B/L Tier N N Browser L Web Tier L B/L Tier Database B B Browser Web Tier B/L Tier Browser
  38. 38. #1 - Using the Cloud for Scale How would Jim do this today on premises? Browser p1 p2 p3 Browser Web Tier B/L Tier N N Browser L Web Tier L B/L Tier Database B B Browser Web Tier B/L Tier Browser
  39. 39. Not without consequences...
  40. 40. #1 - Using the Cloud for Scale How would Jim do this today on premises? Browser p1 p2 p3 Browser Web Tier B/L Tier N N Browser L Web Tier L B/L Tier Database B B Browser Web Tier B/L Tier Browser “That took a lot of work - and money!”
  41. 41. #1 - Using the Cloud for Scale How would Jim do this today on premises? p1 p2 p3 “Not so great now…” Web Tier B/L Tier N N Browser L Web Tier L B/L Tier Database B B Web Tier B/L Tier “That took a lot of work - and money!” “Hmmm... Most of this stuff is sitting idle...”
  42. 42. #1 - Using the Cloud for Scale Datacenter peak load Usage Idle time Jan Apr Jul Oct
  43. 43. How can cloud computing help?
  44. 44. #1 - Using the Cloud for Scale “Wow! What a great site!” Request Browser Web Role Worker Role Azure Storage Response
  45. 45. #1 - Using the Cloud for Scale Browser Browser Browser Web Role Worker Role Azure Storage “Server Busy” Browser Browser
  46. 46. #1 - Using the Cloud for Scale Browser Browser Web Role N Browser L Web Role Worker Role Azure B Storage Browser Web Role Browser You don’t see this bit
  47. 47. #1 - Using the Cloud for Scale Browser Browser Web Role Worker Role N N Browser L Web Role L Worker Role Azure B B Storage Browser Web Role Worker Role Browser
  48. 48. OK, so changing config is easy... …but what else do I need to know?
  49. 49. #1 - Using the Cloud for Scale Browser Browser Web Role Worker Role N N Browser L Web Role L Worker Role Azure B B Storage Browser Web Role Worker Role Browser
  50. 50. #1 - Using the Cloud for Scale Browser Browser Web Role Worker Role N N Browser L Web Role L Worker Role Azure B B Storage Browser Web Role Worker Role Browser Tight coupling between web and worker role is an anti-pattern
  51. 51. #1 - Using the Cloud for Scale 4. Process Web Role Worker Role 2. Respond to UI Req 1 Place on queue . 3. Pickup from queue Queue
  52. 52. #1 - Using the Cloud for Scale 4. Process Web Role Worker Role Req 5. Add result to table Queue 6. Query table on refresh Table
  53. 53. Demo: Prime Solver
  54. 54. How many web and worker roles do you need?
  55. 55. How many web and worker roles do you need?
  56. 56. #1 - Using the Cloud for Scale WMI_Win32_PerfFormattedData_ASPNET_ASPNETApplications /RequestsPerSecond Browser Browser Web Role N Browser L Web Role Worker Role Azure B Storage Browser Web Role Browser Management API Log Worker Role or Email
  57. 57. How many web and worker roles do you need?
  58. 58. #1 - Using the Cloud for Scale Web Role Web Role Web Role Worker Role Req Req Req Queue Web Role Web Role Monitor queue length against user’s Web Role expectations
  59. 59. #1 - Using the Cloud for Scale Web Role Worker Role Web Role Worker Role Web Role Worker Role Req Req Req Queue Web Role Worker Role Web Role Monitor queue Worker Role length against user’s Web Role expectations Worker Role
  60. 60. Patterns for Cloud Computing Takeaways A core tenet of cloud computing is the ability to scale up/down Understand how to communicate between roles and nodes Strategy on when to scale up/down roles in production
  61. 61. Patterns for Moving to the Cloud #2 - Using the Cloud for Multi Tenancy
  62. 62. Patterns for Cloud Computing “I like the idea of scaling Web roles…”
  63. 63. Patterns for Cloud Computing “…but need to serve multiple customers”
  64. 64. Patterns for Cloud Computing “Without creating separate codebases!”
  65. 65. How would Jim do this today on premises?
  66. 66. #2 - Using the Cloud for Multi Tenancy How would Jim do this today on premises? Browser Web Tier B/L Tier Database Customer #1 Browser Web Tier B/L Tier Database Customer #2 Browser Web Tier B/L Tier Database Customer #3
  67. 67. Gets expensive pretty quickly
  68. 68. #2 - Using the Cloud for Multi Tenancy Browser Customer #1 Browser Web Tier B/L Tier Database Customer #2 Browser Customer #3
  69. 69. Schema Customizations UI Customizations
  70. 70. Schema Customizations UI Customizations
  71. 71. 3 options for data in multi tenant environment
  72. 72. #2 - Using the Cloud for Multi Tenancy Browser Fixed Schema Customer #1 Browser Web Tier B/L Tier Database Customer #2 Browser Option 1: Everyone Uses the Same Database/Schema Customer #3 Pros: Simplest approach, easy to maintain/upgrade. Cons: No customizations. Restoring of tenant data.
  73. 73. #2 - Using the Cloud for Multi Tenancy Browser Database Customer #1 Customer #1 Browser Web Tier B/L Tier Database Customer #2 Customer #2 Browser Database Customer #3 Customer #3 Option 2: Give Each Customer Their Own Database/Schema Pros: Flexible. Tenant restore is easier. High Isolation. Cons: Can be costly. Difficult to upgrade db schemas.
  74. 74. #2 - Using the Cloud for Multi Tenancy Browser Fixed Schema with Customizations Customer #1 Browser Web Tier B/L Tier Database Customer #2 Browser Option 3: Fixed Database/Schema, with customizations Customer #3 Pros: Customers can add their own custom fields Cons: Non standard way of customizing the schema. Tenant restore is difficult.
  75. 75. #2 - Using the Cloud for Multi Tenancy Tenant * 1 TenantID int TenantName nvarchar * Employee EmployeeId int TypeID * Type int FirstName nvarchar Name nvarchar LastName nvarchar CLRType nvarchar 1 1 Customization * int * CustomizationID Value nvarchar
  76. 76. #2 - Using the Cloud for Multi Tenancy Tenant * 1 TenantID 1 TenantName UK Branch * Employee EmployeeId 1 TypeID * Type 1 FirstName Gordon Name PostalCode LastName Brown CLRType string 1 1 Customization * 1 * CustomizationID Value SW1 2AA A
  77. 77. #2 - Using the Cloud for Multi Tenancy Tenant * 1 TenantID 2 TenantName US Branch * Employee EmployeeId 2 TypeID * Type 2 FirstName Barack Name ZipCode LastName Obama CLRType string 1 1 Customization * 2 * CustomizationID Value 20500
  78. 78. #2 - Using the Cloud for Multi Tenancy Tenant * 1 Fixed Schema TenantID 2 Applies to All Could be both TenantName US Branch * * Tenants Employee Type EmployeeId 2 TypeID 2 Customizable FirstName Barack Tenant by Tenant Name ZipCode LastName Obama Basis CLRType string 1 1 Customization * 2 * CustomizationID Value 20500
  79. 79. Schema Customizations UI Customizations
  80. 80. #2 - Using the Cloud for Multi Tenancy Browser Customer #1 Browser Web Tier B/L Tier Database Customer #2 Browser Customer #3
  81. 81. URL Handing
  82. 82. Routing using MVC approach
  83. 83. #2 - Using the Cloud for Multi Tenancy http://hr.contoso.co.uk Browser Customer #1 http://employeedata.cloudapp.net Browser Web Tier B/L Tier Database Customer #2 Browser Customer #3 http://hr.fabrikam.com
  84. 84. #2 - Using the Cloud for Multi Tenancy http://hr.contoso.co.uk -> CNAME (employeedata.cloudapp.net) Browser Customer #1 http://employeedata.cloudapp.net Browser Web Tier B/L Tier Database Customer #2 Browser Customer #3 http://hr.fabrikam.com -> CNAME (employeedata.cloudapp.net)
  85. 85. #2 - Using the Cloud for Multi Tenancy http://hr.contoso.co.uk -> CNAME (employeedata.cloudapp.net) Browser Customer #1 http://employeedata.cloudapp.net Browser Web Tier B/L Tier Database Customer #2 Use custom route to controller mapping Browser Customer #3 http://hr.fabrikam.com -> CNAME (employeedata.cloudapp.net)
  86. 86. Demo: Multi Tenant Schema and UI
  87. 87. Patterns for Cloud Computing Takeaways Always consider Multi Tenancy first, even if only one customer Design considerations must include both data and UI Many other considerations, such as identity – p&p guidance
  88. 88. Patterns for Moving to the Cloud #3 - Using the Cloud for Compute
  89. 89. Patterns for Cloud Computing Jim sees how cloud computing supports scaling up/down nodes
  90. 90. Patterns for Cloud Computing “Can I use all of these nodes in parallel?”
  91. 91. Patterns for Cloud Computing “I’ve got this complex calculation I would like to share across these multiple nodes…”
  92. 92. #3 - Using the Cloud for Compute Data Data Worker Data Client Master Worker Data Worker
  93. 93. #3 - Using the Cloud for Compute Result Worker Result Client Master Worker Result Worker Result
  94. 94. Popularized by the term “MapReduce”* * 2004 OSDI paper by Jeff Dean and Sanjay Ghemawat (Google)
  95. 95. #3 - Using the Cloud for Compute How many ”e”’s in “The quick brown fox jumps over the lazy dog”? M<k,v> Data Worker M<k,v> Client Master Worker M<k.v> Worker “Map” M<“the quick brown”.”e”> M<“fox jumps over”.”e”> M<“the lazy dog”.”e”>
  96. 96. #3 - Using the Cloud for Compute L<k,v> Worker L<k,v> Client Master Worker Result Worker L<k,v> 3 x ”e”s found “Reduce” L<”e”,”1”> L<”e”,”1”> L<”e”,”1”>
  97. 97. And it’s definitely popular...
  98. 98. #3 - Using the Cloud for Compute Google 20pb of data analyzed every day using MapReduce Yahoo! 10k+ cores, 4pb of data using MapReduce Facebook 2500+ cores, 1pb of data using MapReduce
  99. 99. Frameworks
  100. 100. #3 - Using the Cloud for Compute Apache Hadoop Open Source Java “Inspired by MapReduce” (Core, HDFS, many more) Cloudera Consulting, training, distribution of Hadoop Amazon Elastic MapReduce Hadoop implementation on EC2
  101. 101. How would Jim do this today on premises?
  102. 102. #3 - Using the Cloud for Compute How would Jim do this today on premises? Data Data Worker Data Client Master Worker Client Application Job/Task Scheduler Worker Data Remote Service
  103. 103. How about implementing this on Windows Azure?
  104. 104. #3 - Using the Cloud for Compute Data Worker Data Data Worker Client Web Role Data Client Application Job/Task Scheduler Worker Remote Service Req Queue Table
  105. 105. Demo: Windows Azure Demo “Inspired by MapReduce”
  106. 106. Patterns for Cloud Computing Takeaways MapReduce very visible, although can be difficult to initially grasp Learn about existing frameworks, especially Apache Hadoop Read up on Dryad (DryadLINQ) for future direction
  107. 107. Patterns for Moving to the Cloud #4 - Using the Cloud for Storage
  108. 108. Patterns for Cloud Computing “The cloud lets me store infinite data, right?”
  109. 109. Patterns for Cloud Computing Lots of headaches with data management today
  110. 110. Patterns for Cloud Computing “It sounds too good to be true…”
  111. 111. How does Jim do this today on premises?
  112. 112. #4 - Using the Cloud for Storage How would Jim do this today on premises? File RPC/NFS Client File Server Store
  113. 113. #4 - Using the Cloud for Storage How would Jim do this today on premises? Data TDS (Tabular Data Stream) Client DB Server RDBMS
  114. 114. #4 - Using the Cloud for Storage How would Jim do this today on premises? Data HTTP POST Browser Web Server Database
  115. 115. #4 - Using the Cloud for Storage I love I love you! you too! Server Data Affinity between your data and physical hardware that serves it
  116. 116. #4 - Using the Cloud for Storage I love I love you! you too! Server Data Symptoms: Which RAID number was that again? Tedious to backup exponentially growing data Crap! I’m at 95% capacity - got to move to a bigger disk
  117. 117. How does the cloud help?
  118. 118. Breaks the affinity between your data and hardware
  119. 119. Blobs, Tables, Relational
  120. 120. Blobs, Tables, Relational
  121. 121. #4 - Using the Cloud for Storage PutBlob Blob Container PUT http://account.blob.core.windows./net/containername/blobname REST API Client Azure Blob Storage http://account.blob.core.windows.net/containername/blobname PutBlob = 64Mb MAX MetaData = 8Kb per Blob
  122. 122. #4 - Using the Cloud for Storage Blob Container REST API Client Azure Blob Storage GetBlob GET http://account.blob.core.windows./net/containername/blobname http://account.blob.core.windows.net/containername/blobname
  123. 123. #4 - Using the Cloud for Storage Blob Container REST API Client Azure Blob Storage GetBlob GET http://account.blob.core.windows./net/containername/blobname Range: bytes=329300 - 730000 http://account.blob.core.windows.net/containername/blobname
  124. 124. #4 - Using the Cloud for Storage PutBlock(blobname, blockid, data) Blob Container PutBlockList(blobname, blockid1 …, blockidN) , REST API Client Azure Blob Storage http://account.blob.core.windows.net/containername/blobname PutBlock = 4Mb MAX to a maximum of 50Gb BlockId = 64 bytes
  125. 125. Blobs, Tables, Relational
  126. 126. #4 - Using the Cloud for Storage REST: GET http://account.table.core.windows.net/Customer?$filter=%20PartitionKey%20eq%20value LINQ: var customers = from o in context.CreateQuery<customer>(“Customer”) where o.PartitionKey == value select o; Worker Role Azure Table Storage http://account.table.core.windows.net Each Table: PartitionKey (e.g. DocumentName) to ensure scalability RowKey (e.g. version number) [fields] for data
  127. 127. Blobs, Tables, Relational
  128. 128. Codename Sitka (early 2008)
  129. 129. SQL Server Data Services (MIX08)
  130. 130. #4 - Using the Cloud for Storage This is what I’m doing on premises... Data TDS Client DB Server RDBMS
  131. 131. #4 - Using the Cloud for Storage So, this is what I would like to do in the cloud... Data TDS Client DB Server RDBMS
  132. 132. SQL Data Services (MIX09)
  133. 133. SQL Azure (July 2009)
  134. 134. #4 - Using the Cloud for Storage So, this is what I would like to do... Data TDS Client SQL Azure RDBMS
  135. 135. #4 - Using the Cloud for Storage HTTP TDS Browser Web Role SQL Azure RDBMS
  136. 136. #4 - Using the Cloud for Storage HTTP Queue TDS Browser Web Role Worker Role SQL Azure RDBMS
  137. 137. Migration!
  138. 138. #4 - Using the Cloud for Storage “The Data Center” HTTP TDS Browser Web Tier Bus. Logic SQL Server RDBMS
  139. 139. #4 - Using the Cloud for Storage “The Cloud” HTTP Queue TDS Browser Web Role Worker Role SQL Azure RDBMS
  140. 140. Demo: SQL Azure CTP
  141. 141. Patterns for Cloud Computing Takeaways Storage in the cloud may look the same, but breaks the affinity issue Understand the pricing model for storage on-premises vs. cloud SQL Azure as a factor for migration/move from on premises
  142. 142. Patterns for Moving to the Cloud #5 - Using the Cloud for Communications
  143. 143. Patterns for Cloud Computing Jim’s organization needs to communicate with other organizations
  144. 144. Patterns for Cloud Computing “This has always been a very tricky and expensive process to get working”
  145. 145. Patterns for Cloud Computing “Does the cloud offer anything to help?”
  146. 146. How would Jim have done this before?
  147. 147. #5 - Using the Cloud for Communications Telco provided WAN Company 1 Company 2 Client Server FTP FTP Client Server
  148. 148. #5 - Using the Cloud for Communications Internet Telco provided WAN Company 1 Company 2 Client Server FTP FTP Client Server
  149. 149. #5 - Using the Cloud for Communications Internet Telco provided WAN Company 1 Company 2 DMZ Client Server Extranet Browser Site
  150. 150. What does the cloud provide?
  151. 151. #5 - Using the Cloud for Communications http://app.queue.core.windows.net/ REST Client Azure Queue
  152. 152. #5 - Using the Cloud for Communications Company 1 http://app.queue.core.windows.net/ Client REST Azure Queue Company 2 Client
  153. 153. #5 - Using the Cloud for Communications Company 1 http://app.queue.core.windows.net/ Client REST Azure Queue Company 2 Client
  154. 154. #5 - Using the Cloud for Communications Company 1 http://app.queue.core.windows.net/ Client Primary Access Key REST Azure Queue Company 2 Client Primary Access Key
  155. 155. #5 - Using the Cloud for Communications Company 1 http://app.queue.core.windows.net/ Client REST Web Role Azure Queue Company 2 Client
  156. 156. #5 - Using the Cloud for Communications Proxy? Company 1 Firewall http://app.queue.core.windows.net/ Client REST Web Role Azure Queue Company 2 Client Firewall
  157. 157. #5 - Using the Cloud for Communications Company 1 Firewall http://app.queue.core.windows.net/ Client REST Web Role Azure Queue Company 2 65.55.33.204 Client Firewall 192.168.14.100 NAT?
  158. 158. #5 - Using the Cloud for Communications Company 1 Firewall http://app.queue.core.windows.net/ Client REST Web Role Azure Queue Company 2 65.55.33.204 Client Firewall 192.168.14.100 OK, so I’ll do a HTTP poll every minute
  159. 159. #5 - Using the Cloud for Communications Company 1 Firewall http://app.queue.core.windows.net/ Client REST Web Role Azure Queue Company 2 65.55.33.204 Client Firewall 192.168.14.100 …and how about other protocols other than HTTP?
  160. 160. How does the .NET Service Bus help?
  161. 161. #5 - Using the Cloud for Communications Company 1 sb://.../myqueue Client .NET Service Bus Company 2 Client
  162. 162. Two modes: TCP Relay and Message Buffer
  163. 163. Two modes: TCP Relay and Message Buffer
  164. 164. #5 - Using the Cloud for Communications Company 1 sb://.../myqueue Client .NET Service Bus Company 2 Client Firewall Outbound bi-directional socket Kept alive in background
  165. 165. #5 - Using the Cloud for Communications Company 1 Firewall sb://.../myqueue Client Outbound one-way socket .NET Service Bus Company 2 Message routed Client accordingly Firewall Outbound bi-directional socket Kept alive in background
  166. 166. #5 - Using the Cloud for Communications This Conference Application Firewall sb://.../myqueue My Laptop Outbound one-way socket Localhost:1000 .NET Service Bus My Home Message routed Home PC accordingly 192.168.14.193 Firewall Outbound bi-directional socket Kept alive in background SQL Express Port 1433
  167. 167. Two modes: TCP Relay and Message Buffer
  168. 168. #5 - Using the Cloud for Communications Company 1 sb://.../myqueue Client .NET Service Bus Company 2 ATOMPub via REST Client Firewall Consumer defines and creates a Message Buffer
  169. 169. #5 - Using the Cloud for Communications Company 1 Producer sends messages to the Message Buffer sb://.../myqueue Client Firewall .NET Service Bus Company 2 ATOMPub via REST Client Firewall
  170. 170. #5 - Using the Cloud for Communications Company 1 sb://.../myqueue Client Firewall .NET Service Bus Company 2 ATOMPub via REST Client Firewall Consumer picks up these messages (retrieve, peek, lock)
  171. 171. Patterns for Cloud Computing Takeaways Be careful consuming REST based queues using shared secret Firewalls/NATs can add additional trouble (especially non-HTTP) Learn how .NET Service Bus traverses in these scenarios
  172. 172. Patterns for Moving to the Cloud Putting the Patterns Together
  173. 173. Patterns for Cloud Computing We’ve covered 5 patterns, but Jim has one last question…
  174. 174. Patterns for Cloud Computing Are there cases where these patterns work together?
  175. 175. Putting the Patterns Together Windows Azure PHP Let’s build an application in PHP that scales to many nodes…
  176. 176. Putting the Patterns Together Use the principles of Windows Azure multi tenancy to PHP (10 nodes) create a version of the application across multiple vendors Google AppEngine Java Servlet Amazon EC2 (5 nodes ASP .NET using ELB)
  177. 177. Putting the Patterns Together Windows Azure PHP Job Google AppEngine Client Job Java Servlet Compute results with Job a MapReduce-like way of distributing work Amazon EC2 across all of these ASP .NET applications
  178. 178. Putting the Patterns Together Store the results in a SQL Azure Windows Azure database PHP Job Google AppEngine Client Job Java Servlet SQL Azure Database Job Amazon EC2 ASP .NET
  179. 179. Putting the Patterns Together .NET Service Bus Windows Azure PHP Job Google AppEngine Client Job Java Servlet SQL Azure Database Job Coordinate Amazon EC2 communication ASP .NET through the .NET Service Bus
  180. 180. Putting the Patterns Together .NET Service Bus Windows Azure PHP Job Google AppEngine Client Job Java Servlet SQL Azure Database Job Amazon EC2 ASP .NET
  181. 181. Putting the Patterns Together .NET Service Bus Windows Azure Store results How many prime in SQL Azure numbers between PHP 1 and 10,000,000? Compute Job Google AppEngine Client Job Java Servlet SQL Azure Database Compute Job 40 jobs of Amazon EC2 250,000 numbers ASP .NET Compute
  182. 182. Demo: Prime Solver v2.0
  183. 183. Next Steps
  184. 184. Next Steps Obviously, our friend Jim, is fake…
  185. 185. Next Steps Make sure you have a clear definition of Cloud Computing Explore the 5 usage patterns for your scenarios today Think about the next steps for implementation and migration
  186. 186. simon.guest@microsoft.com http://simonguest.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×