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



Similar documents
CUMULUX WHICH CLOUD PLATFORM IS RIGHT FOR YOU? COMPARING CLOUD PLATFORMS. Review Business and Technology Series

Windows Azure Storage Essential Cloud Storage Services

Cloud Platforms, Challenges & Hadoop. Aditee Rele Karpagam Venkataraman Janani Ravi

WINDOWS AZURE EXECUTION MODELS

WINDOWS AZURE DATA MANAGEMENT AND BUSINESS ANALYTICS

Oracle Database Cloud

Cloud Computing with Windows Azure using your Preferred Technology

INTRODUCING THE WINDOWS AZURE PLATFORM

Assignment # 1 (Cloud Computing Security)

Introduction to Cloud Computing

Where We Are. References. Cloud Computing. Levels of Service. Cloud Computing History. Introduction to Data Management CSE 344

Cloud Computing Trends

WINDOWS AZURE DATA MANAGEMENT

Storing and Processing Sensor Networks Data in Public Clouds

Introduction to Azure: Microsoft s Cloud OS

Cloud Computing and Amazon Web Services. CJUG March, 2009 Tom Malaher

Windows Azure platform What is in it for you? Dominick Baier Christian Weyer

Introduction to the Cloud OS Windows Azure Overview Visual Studio Tooling for Windows Azure Scenarios: Dev/Test Web Mobile Hybrid

BUILDING SAAS APPLICATIONS ON WINDOWS AZURE

References. Introduction to Database Systems CSE 444. Motivation. Basic Features. Outline: Database in the Cloud. Outline

Introduction to Database Systems CSE 444

Building Cloud Applications for the Real World. Aleksey Savateyev Senior Architect

Introduction to Cloud : Cloud and Cloud Storage. Lecture 2. Dr. Dalit Naor IBM Haifa Research Storage Systems. Dalit Naor, IBM Haifa Research

INTRODUCING THE WINDOWS AZURE PLATFORM

INTRODUCING THE WINDOWS AZURE PLATFORM

Introduction to Cloud Computing

Amazon AWS in.net. Presented by: Scott Reed

Cloud computing - Architecting in the cloud

Cloud Computing em Azure e Branco. Luis Alves Martins Architect Advisor Microsoft

Demystifying the Cloud Computing

IT Exam Training online / Bootcamp

WINDOWS AZURE AND ISVS

Microsoft Azure Data Technologies: An Overview

System Administration Training Guide. S100 Installation and Site Management

APP DEVELOPMENT ON THE CLOUD MADE EASY WITH PAAS

Server Virtualization Cloud Partner Training Series

Cloud Computing. Up until now

WHAT IS AN APPLICATION PLATFORM?

HIGH-SPEED BRIDGE TO CLOUD STORAGE

Migrating SaaS Applications to Windows Azure

A SHORT INTRODUCTION TO CLOUD PLATFORMS

WINDOWS AZURE AND WINDOWS HPC SERVER

How To Understand Cloud Computing

Big Data and Apache Hadoop s MapReduce

What are Hosted Desktops?

Amazon Web Services. Elastic Compute Cloud (EC2) and more...

Scaling in the Cloud with AWS. By: Eli White (CTO & mojolive) eliw.com - mojolive.com

CLOUD PERFORMANCE TESTING - KEY CONSIDERATIONS (COMPLETE ANALYSIS USING RETAIL APPLICATION TEST DATA)

Oracle Database Cloud Service Rick Greenwald, Director, Product Management, Database Cloud

Introduction to Windows Azure Cloud Computing Futures Group, Microsoft Research Roger Barga, Jared Jackson,Nelson Araujo, Dennis Gannon, Wei Lu, and

A.Prof. Dr. Markus Hagenbuchner CSCI319 A Brief Introduction to Cloud Computing. CSCI319 Page: 1

MS 10978A Introduction to Azure for Developers

CLOUD COMPUTING & WINDOWS AZURE

Cloud Computing with Microsoft Azure

IBM Spectrum Protect in the Cloud

Department of Computer Science University of Cyprus EPL646 Advanced Topics in Databases. Lecture 14

THE WINDOWS AZURE PROGRAMMING MODEL

A Survey on Cloud Storage Systems

Open Cloud System. (Integration of Eucalyptus, Hadoop and AppScale into deployment of University Private Cloud)

Cloud Computing. Lecture 24 Cloud Platform Comparison

Cloud Computing. Adam Barker

How cloud computing can transform your business landscape

Windows Azure Data Services (basics) 55093A; 3 Days

ArcGIS for Server in the Amazon Cloud. Michele Lundeen Esri

Mark Bennett. Search and the Virtual Machine

ADOPTING MICROSOFT AZURE

Microsoft Big Data Solutions. Anar Taghiyev P-TSP

Apache Hadoop. Alexandru Costan

Ignify ecommerce. Item Requirements Notes

A Comparison of Clouds: Amazon Web Services, Windows Azure, Google Cloud Platform, VMWare and Others (Fall 2012)

Viswanath Nandigam Sriram Krishnan Chaitan Baru

24/11/14. During this course. Internet is everywhere. Frequency barrier hit. Management costs increase. Advanced Distributed Systems Cloud Computing

Reference Model for Cloud Applications CONSIDERATIONS FOR SW VENDORS BUILDING A SAAS SOLUTION

Cloud Computing. Up until now

Does Cloud Computing Still Matter? A Mainframer s Update. The trouble with cloud.

Cloud 101. Mike Gangl, Caltech/JPL, 2015 California Institute of Technology. Government sponsorship acknowledged

MEGA Web Application Architecture Overview MEGA 2009 SP4

CloudCmp:Comparing Cloud Providers. Raja Abhinay Moparthi

Integrating cloud services with Polaris. Presented by: Wes Osborn

Cloud computing with the Azure platform

Ø Teaching Evaluations. q Open March 3 through 16. Ø Final Exam. q Thursday, March 19, 4-7PM. Ø 2 flavors: q Public Cloud, available to public

On- Prem MongoDB- as- a- Service Powered by the CumuLogic DBaaS Platform

March Lynn Langit twitter

DISTRIBUTED SYSTEMS [COMP9243] Lecture 9a: Cloud Computing WHAT IS CLOUD COMPUTING? 2

A Review on Leaders in Cloud Computing Service Providers and Cloud SQL a Case Study

BIG DATA TRENDS AND TECHNOLOGIES

Course 10978A Introduction to Azure for Developers

Cloud Computing using MapReduce, Hadoop, Spark

Harnessing the Power of the Microsoft Cloud for Deep Data Analytics

AppDev OnDemand Cloud Computing Learning Library

OVERVIEW OF MICROSOFT AZURE

Multi-Datacenter Replication

Cloud Computing: Meet the Players. Performance Analysis of Cloud Providers

Cloud Database Emergence

An introduction to Hosted SQL database applications

WHITE PAPER. Migrating an existing on-premise application to Windows Azure Cloud

Adopting Cloud Computing Build, Buy or Both? Pascal Walschots Communication Sector EMEA HQ February 11, 2009

CLOUD COMPUTING. Dana Petcu West University of Timisoara

How To Run A Modern Business With Microsoft Arknow

Symantec App Center 4.0 Admin Documentation

Transcription:

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 Provide you with 5 patterns for cloud-based applications Show implementations of these patterns

Defining Cloud Computing

Defining Cloud Computing Application runs on-premises Bring my own machines, connectivity, Buy my own software, hardware, etc. and manage my own and data responsibility center Complete control Upfront capital costs for the infrastructure

Defining Cloud Computing Application runs on-premises Application runs at a hoster Bring my own machines, connectivity, Buy my own software, hardware, etc. and manage my own and data responsibility center Complete control Upfront capital costs for the infrastructure Rent machines, connectivity, Pay someone to software host my application using fewer hardware that I specify Less control, but responsibilities Lower capital costs, but pay for fixed capacity, even if idle

Defining Cloud Computing Application runs on-premises Application runs at a hoster Application runs using cloud platform Bring my own machines, connectivity, Buy my own software, hardware, etc. and manage my own and data responsibility center Complete control Upfront capital costs for the infrastructure Rent machines, connectivity, Pay someone to software host my application using fewer hardware that I specify Less control, but responsibilities Lower capital costs, but pay for fixed capacity, even if idle Shared, multi-tenant Pay someone for a pool environment of computing resources that can computing be applied to a set resources, of applications Offers pool of abstracted from infrastructure Pay as you go

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 you go model

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, 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

Defining Cloud Computing Different Models Infrastructure as a Service (IaaS) vs. Platform as a Service (PaaS)

Defining Cloud Computing Your Application Deployment Frameworks Deployment Web Server OS Services Operating System Provided by Windows Azure Provided By Amazon EC2 Virtualized Instance Hardware

Defining Cloud Computing Deployment Your Application Frameworks Deployment Provided by Google AppEngine Web Server OS Services Operating System Virtualized Instance Provided by Windows Azure Hardware

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! Browser Request Response Web Tier B/L Tier Database

#1 - Using the Cloud for Scale Browser Browser Browser Browser Web Tier B/L Tier Database Server Busy Browser

#1 - Using the Cloud for Scale Browser Browser Browser Browser Web Tier B/L Tier Database Timeout 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 Browser Browser Browser N L B Web Tier Web Tier B/L Tier Database Web Tier

#1 - Using the Cloud for Scale How would Jim do this today on premises? Browser Browser Browser Browser Web Tier N L B B/L Tier B/L Tier B/L Tier Database Browser

#1 - Using the Cloud for Scale How would Jim do this today on premises? Browser Browser Browser Browser N L B Web Tier Web Tier Web Tier N L B B/L Tier B/L Tier B/L Tier Database Browser

#1 - Using the Cloud for Scale How would Jim do this today on premises? Browser p1 p2 p3 Browser Browser Browser N L B Web Tier Web Tier Web Tier N L B B/L Tier B/L Tier B/L Tier Database Browser

Not without consequences...

#1 - Using the Cloud for Scale How would Jim do this today on premises? Browser p1 p2 p3 Browser Browser Browser N L B Web Tier Web Tier Web Tier N L B B/L Tier B/L Tier B/L Tier Database Browser That took a lot of work - and money!

#1 - Using the Cloud for Scale How would Jim do this today on premises? Not so great now Browser N L B Web Tier Web Tier Web Tier N L B B/L Tier B/L Tier B/L Tier p1 p2 p3 Database That took a lot of work - and money! Hmmm... Most of this stuff is sitting idle...

#1 - Using the Cloud for Scale Datacenter peak load Usage Idle time Jan Apr Jul Oct

How can cloud computing help?

#1 - Using the Cloud for Scale Wow! What a great site! Browser Request Response Web Role Worker Role Azure Storage

#1 - Using the Cloud for Scale Browser Browser Browser Browser Web Role Worker Role Azure Storage Server Busy Browser

#1 - Using the Cloud for Scale Browser Browser Browser Browser Browser N L B Web Role Web Role Worker Role Azure Storage Web Role You don t see this bit

#1 - Using the Cloud for Scale Browser Browser Browser Browser N L B Web Role Web Role Web Role N L B Worker Role Worker Role Worker Role Azure Storage Browser

OK, so changing config is easy... but what else do I need to know?

#1 - Using the Cloud for Scale Browser Browser Browser Browser N L B Web Role Web Role Web Role N L B Worker Role Worker Role Worker Role Azure Storage Browser

#1 - Using the Cloud for Scale Browser Browser Browser Browser N L B Web Role Web Role Web Role N L B Worker Role Worker Role Worker Role Azure Storage Browser Tight coupling between web and worker role is an anti-pattern

#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

#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

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 Browser WMI_Win32_PerfFormattedData_ASPNET_ASPNETApplications /RequestsPerSecond Browser Browser Browser Browser N L B Web Role Web Role Worker Role Azure Storage Web Role Log Worker Role Management API or Email

How many web and worker roles do you need?

#1 - Using the Cloud for Scale Web Role Web Role Web Role Worker Role Req Req Req Queue Web Role Web Role Web Role Monitor queue length against user s expectations

#1 - Using the Cloud for Scale Web Role Web Role Web Role Worker Role Worker Role Worker Role Req Req Req Queue Web Role Web Role Web Role Monitor queue length against user s expectations Worker Role Worker Role Worker Role

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

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 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

Gets expensive pretty quickly

#2 - Using the Cloud for Multi Tenancy Browser Customer #1 Browser Web Tier B/L Tier Database Customer #2 Browser Customer #3

Schema Customizations UI Customizations

Schema Customizations UI Customizations

3 options for data in multi tenant environment

#2 - Using the Cloud for Multi Tenancy Browser Customer #1 Fixed Schema Browser Web Tier B/L Tier Database Customer #2 Browser Customer #3 Option 1: Everyone Uses the Same Database/Schema Pros: Simplest approach, easy to maintain/upgrade. Cons: No customizations. Restoring of tenant data.

#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 Customer #3 Database 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.

#2 - Using the Cloud for Multi Tenancy Browser Customer #1 Fixed Schema with Customizations Browser Web Tier B/L Tier Database Customer #2 Browser Customer #3 Option 3: Fixed Database/Schema, with customizations Pros: Customers can add their own custom fields Cons: Non standard way of customizing the schema. Tenant restore is difficult.

#2 - Using the Cloud for Multi Tenancy 1 Tenant TenantID int TenantName nvarchar * * Employee Type EmployeeId int TypeID * int FirstName nvarchar Name nvarchar LastName nvarchar CLRType nvarchar 1 Customization 1 CustomizationID int * Value nvarchar *

#2 - Using the Cloud for Multi Tenancy 1 Tenant TenantID 1 TenantName UK Branch * * Employee Type EmployeeId 1 TypeID * 1 FirstName Gordon Name PostalCode LastName Brown CLRType string 1 Customization 1 CustomizationID 1 * Value SW1A 2AA *

#2 - Using the Cloud for Multi Tenancy 1 Tenant TenantID 2 TenantName US Branch * * Employee Type EmployeeId 2 TypeID * 2 FirstName Barack Name ZipCode LastName Obama CLRType string 1 Customization 1 * CustomizationID 2 Value 20500 *

#2 - Using the Cloud for Multi Tenancy Fixed Schema Applies to All Tenants 1 Tenant TenantID 2 TenantName US Branch * Could be both Employee Type * EmployeeId FirstName LastName 2 Barack Obama Customizable Tenant by Tenant Basis TypeID Name CLRType * 2 ZipCode string 1 Customization 1 * CustomizationID 2 Value 20500 *

Schema Customizations UI Customizations

#2 - Using the Cloud for Multi Tenancy Browser Customer #1 Browser Web Tier B/L Tier Database Customer #2 Browser Customer #3

URL Handing

Routing using MVC approach

#2 - Using the Cloud for Multi Tenancy Browser http://hr.contoso.co.uk Customer #1 http://employeedata.cloudapp.net Browser Web Tier B/L Tier Database Customer #2 Browser Customer #3 http://hr.fabrikam.com

#2 - Using the Cloud for Multi Tenancy Browser http://hr.contoso.co.uk -> CNAME (employeedata.cloudapp.net) 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)

#2 - Using the Cloud for Multi Tenancy Browser http://hr.contoso.co.uk -> CNAME (employeedata.cloudapp.net) 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)

Demo: Multi Tenant Schema and UI

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

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 nodes

#3 - Using the Cloud for Compute Data Worker Data Client Master Worker Data Worker Data

#3 - Using the Cloud for Compute Result Worker Client Master Result Worker Result 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? Data Worker M<k,v> Client Master Worker M<k,v> Worker M<k.v> Map M< the quick brown. e > M< fox jumps over. e > M< the lazy dog. e >

#3 - Using the Cloud for Compute L<k,v> Worker Client Master L<k,v> Worker Result Worker 3 x e s found Reduce L<k,v> L< e, 1 > L< e, 1 > L< e, 1 >

And it s definitely popular...

#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

Frameworks

#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

How would Jim do this today on premises?

#3 - Using the Cloud for Compute How would Jim do this today on premises? Data Worker Data Client Master Worker Data Client Application Job/Task Scheduler Worker Data Remote Service

How about implementing this on Windows Azure?

#3 - Using the Cloud for Compute Data Worker Data Client Web Role Worker Data Client Application Job/Task Scheduler Worker Data Remote Service Req Queue Table

Demo: Windows Azure Demo Inspired by MapReduce

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

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? Client File RPC/NFS File Server Store

#4 - Using the Cloud for Storage How would Jim do this today on premises? Client Data TDS (Tabular Data Stream) DB Server RDBMS

#4 - Using the Cloud for Storage How would Jim do this today on premises? Browser Data HTTP POST Web Server Database

#4 - Using the Cloud for Storage I love you! I love you too! Server Data Affinity between your data and physical hardware that serves it

#4 - Using the Cloud for Storage I love you! I love 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

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 PUT http://account.blob.core.windows./net/containername/blobname Blob Container Client REST API Azure Blob Storage http://account.blob.core.windows.net/containername/blobname PutBlob = 64Mb MAX MetaData = 8Kb per Blob

#4 - Using the Cloud for Storage Blob Container Client REST API GetBlob GET http://account.blob.core.windows./net/containername/blobname Azure Blob Storage http://account.blob.core.windows.net/containername/blobname

#4 - Using the Cloud for Storage Blob Container Client REST API GetBlob GET http://account.blob.core.windows./net/containername/blobname Range: bytes=329300-730000 Azure Blob Storage http://account.blob.core.windows.net/containername/blobname

#4 - Using the Cloud for Storage PutBlock(blobname, blockid, data) PutBlockList(blobname, blockid1,, blockidn) Client REST API Blob Container Azure Blob Storage http://account.blob.core.windows.net/containername/blobname PutBlock = 4Mb MAX to a maximum of 50Gb BlockId = 64 bytes

Blobs, Tables, Relational

#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 Each Table: http://account.table.core.windows.net PartitionKey (e.g. DocumentName) to ensure scalability RowKey (e.g. version number) [fields] for data

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... Client Data TDS DB Server RDBMS

#4 - Using the Cloud for Storage So, this is what I would like to do in the cloud... Client Data TDS DB Server RDBMS

SQL Data Services (MIX09)

SQL Azure (July 2009)

#4 - Using the Cloud for Storage So, this is what I would like to do... Client Data TDS SQL Azure RDBMS

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

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

Migration!

#4 - Using the Cloud for Storage The Data Center Browser HTTP Web Tier Bus. Logic TDS SQL Server RDBMS

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

Demo: SQL Azure CTP

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

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 Company 2 Client Server FTP Client FTP Server

#5 - Using the Cloud for Communications Internet Company 1 Telco provided WAN Company 2 Client Server FTP Client FTP Server

#5 - Using the Cloud for Communications Internet Company 1 Telco provided WAN Company 2 DMZ Client Server Browser Extranet Site

What does the cloud provide?

#5 - Using the Cloud for Communications http://app.queue.core.windows.net/ Client REST Azure Queue

#5 - Using the Cloud for Communications Company 1 Client http://app.queue.core.windows.net/ REST Azure Queue Company 2 Client

#5 - Using the Cloud for Communications Company 1 Client http://app.queue.core.windows.net/ REST Azure Queue Company 2 Client

#5 - Using the Cloud for Communications Company 1 Client Primary Access Key http://app.queue.core.windows.net/ REST Azure Queue Company 2 Client Primary Access Key

#5 - Using the Cloud for Communications Company 1 Client http://app.queue.core.windows.net/ Web Role REST Azure Queue Company 2 Client

#5 - Using the Cloud for Communications Company 1 Client Proxy? Firewall http://app.queue.core.windows.net/ Web Role REST Azure Queue Company 2 Client Firewall

#5 - Using the Cloud for Communications Company 1 Client Firewall http://app.queue.core.windows.net/ Web Role REST Azure Queue Company 2 65.55.33.204 Client 192.168.14.100 Firewall NAT?

#5 - Using the Cloud for Communications Company 1 Client Firewall http://app.queue.core.windows.net/ Web Role REST Azure Queue Company 2 65.55.33.204 Client 192.168.14.100 Firewall OK, so I ll do a HTTP poll every minute

#5 - Using the Cloud for Communications Company 1 Client Firewall http://app.queue.core.windows.net/ Web Role REST Azure Queue Company 2 65.55.33.204 Client 192.168.14.100 Firewall and how about other protocols other than HTTP?

How does the.net Service Bus help?

#5 - Using the Cloud for Communications Company 1 Client sb://.../myqueue.net Service Bus Company 2 Client

Two modes: TCP Relay and Message Buffer

Two modes: TCP Relay and Message Buffer

#5 - Using the Cloud for Communications Company 1 Client sb://.../myqueue.net Service Bus Company 2 Client Firewall Outbound bi-directional socket Kept alive in background

#5 - Using the Cloud for Communications Company 1 Client Firewall Outbound one-way socket sb://.../myqueue Company 2.NET Service Bus Client Firewall Outbound bi-directional socket Kept alive in background Message routed accordingly

#5 - Using the Cloud for Communications This Conference Application My Laptop Localhost:1000 Firewall Outbound one-way socket sb://.../myqueue My Home Home PC 192.168.14.193 SQL Express Port 1433 Firewall Outbound bi-directional socket Kept alive in background.net Service Bus Message routed accordingly

Two modes: TCP Relay and Message Buffer

#5 - Using the Cloud for Communications Company 1 Client sb://.../myqueue.net Service Bus Company 2 Client ATOMPub via REST Firewall Consumer defines and creates a Message Buffer

#5 - Using the Cloud for Communications Company 1 Client Producer sends messages to the Message Buffer sb://.../myqueue Company 2 Firewall ATOMPub via REST.NET Service Bus Client Firewall

#5 - Using the Cloud for Communications Company 1 Client sb://.../myqueue Company 2 Firewall ATOMPub via REST.NET Service Bus Client Firewall Consumer picks up these messages (retrieve, peek, lock)

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

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 application in PHP that scales to many nodes

Putting the Patterns Together Use the principles of multi tenancy to create a version of the application across multiple vendors Windows Azure PHP Google AppEngine Java Servlet (10 nodes) Amazon EC2 ASP.NET (5 nodes using ELB)

Putting the Patterns Together Windows Azure PHP Job Google AppEngine Client Job Job Java Servlet Amazon EC2 ASP.NET Compute results with a MapReduce-like way of distributing work across all of these applications

Store the results in a SQL Azure database Putting the Patterns Together Windows Azure PHP Client Job Job Google AppEngine Java Servlet SQL Azure Database Job Amazon EC2 ASP.NET

Putting the Patterns Together.NET Service Bus Windows Azure PHP Client Job Job Google AppEngine Java Servlet SQL Azure Database Job Coordinate communication through the.net Service Bus Amazon EC2 ASP.NET

Putting the Patterns Together.NET Service Bus Windows Azure PHP Client Job Job Google AppEngine Java Servlet SQL Azure Database Job Amazon EC2 ASP.NET

How many prime numbers between 1 and 10,000,000? Putting the Patterns Together.NET Service Bus Windows Azure PHP Compute Store results in SQL Azure Client Job Job Job Google AppEngine Java Servlet Compute SQL Azure Database 40 jobs of 250,000 numbers Amazon EC2 ASP.NET Compute

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 Explore the 5 usage patterns for your scenarios today Think about the next steps for implementation and migration

simon.guest@microsoft.com http://simonguest.com