Microsoft/Zend Webcast on Cloud Computing
Upcoming SlideShare
Loading in...5
×
 

Microsoft/Zend Webcast on Cloud Computing

on

  • 2,323 views

This is the presentation that I presented during a webcast with Microsoft and Zend on Cloud Computing. The demo focused on the SimpleCloud.org API

This is the presentation that I presented during a webcast with Microsoft and Zend on Cloud Computing. The demo focused on the SimpleCloud.org API

Statistics

Views

Total Views
2,323
Views on SlideShare
2,323
Embed Views
0

Actions

Likes
1
Downloads
25
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • We’ll start with SQL Azure... This will give most of developers a common frame of reference as most developers are comfortable with relational databases.In a short while, I will introduce Blobs, Tables, Queues, and DrivesSQL Azure can be thought of as your SQL Server in the cloud. It is based on a subset of SQL Server 2008.Blobs are a means of storing unstructured data, such as pictures, movies, PDF’s, Word documents, and the like.Tables are a means of storing semi-structured or tabular data. Tables are similar to an Excel spreadsheet in the sense that data is tabular and there is no strict type cohesion as there would be in a SQL Server table column. Data stored in tables is partitioned and keyed for retrievalQueues are a means of buffered message delivery. There are very useful for communicating data between our Windows Azure service instances. As our service instances do not have to wait around for the I/O of delivering the message or the result of the message processing, they can dramatically improve the scalability of our software system.Drives are a recently added feature announced at the Los Angeles PDC in November 2009. Drives provide durable storage that appears to our application as an NTFS volume. The drive itself is an abstraction over the same Windows Azure Data Storage used for Blobs. You can get more information on Drives by visiting the PDC site on my slide.Applications may use multiple types of data storage at the same time. In fact, this is quite common. When we do our first Windows Azure Data Storage demo together, I will be showing you an application that uses Blobs, Tables, and Queues in concert.
  • It’s time now to introduce Windows Azure Data Storage Blobs.Blobs are for storage of unstructured data.We partition our data by creating Blob containers which we give names to.We can create an unlimited number of Blob Containers.We then simply place our blob data into the blob containers, supplying a unique identifier.When we want to retrieve our data, we simply provide the container and the unique identifier.
  • Use queues as a way of communicating w/ the backend worker rolesWRs call getmessage and pass timeoutTimeout value is importantExpiration time is important; message is marked in the queue as invisible; for duration of timeout it’s invisibleWhen we’re done processing, we call a message to remove the message through a deleteTh reason we do this is imagine we have a second worker role; if something goes wrong, once the timeout expires, the message becomes visible, and the next person to do a get message will get the message
  • http://www.flickr.com/photos/cav666/3562455727/http://go.microsoft.com/fwlink/?LinkId=153401Windows Azure Data Storage Tables are how we get massively scalable and highly available databases.Although there are some similarities, these tables are very different from relational database tables.Data in Windows Azure Data Storage Tables is semi-structured; The concept of a Windows Azure Data Storage Table is similar to how a spreadsheet is used to provide tabularized organization to data without strongly enforcing data cohesion.… Data is indexed in Tables for high performance retrieval, but there are no relationships between Tables.The tables support ACID transactions over single entities and rich queries over the entire table.
  • The PartitionKey combined with the RowKey uniquely identifies an entity in a table.
  • 11:53Getting the all of dunnry’s post it fast because we’re selecting the entities by a partition keyGetting all of the posts after a certain is slow because we may have to traverse across multiple servers because we’re selecting entities that span partition keysA query without the partition key is really a scan
  • We have included this feature comparison table in anticipation of your likely questions about differences between using a relational database table as you may be currently doing with your SQL Server databases and the new Windows Azure Tables included in Windows Azure.
  • http://www.flickr.com/photos/timothymorgan/75593157/sizes/o/
  • As I stated earlier, SQL Azure is based on SQL Server 2008. At this time it is only a subset of the features of the server product.My intention here is to convey the high level features that are supported and the ones that are not.SQL Azure will support most of the things we need… Tables, Index, Views, Stored Procedures, Triggers, and Constraints… in my book… that’s all the functionality that I need for most of my applications.There are some other adjunct technologies that ship as part of SQL Server 2008 such as SQL Reporting Services and Analysis Services which are not supported. The Service Broker is also not supported.
  • So let’s assume that we have designed our relational database with local developer and data modeling tools.We can begin our story then by assuming that we want to get our database deployed to the cloud.There are some tools that will expedite this process which I will show you later, but for now lets assume that we have scripted our database schema. We apply this script to SQL Azure which speaks native TDS.If you created your database through the SQL Azure Portal, then SQL Azure will have created one master database and three replicas of that database. If you create your database with the script the same will be true.These replicas are stored in different database centers from the master to provide redundancy and protection against geographical catastrophe.
  • Configuring our application to use SQL Azure storage instead of SQL Server is simply a matter of modifying the connection string in our application’s configuration file.When our application requests data, ADO.NET speaks to the TDS which directs our queries to the master database server. The master database server performs our query and returns the results to our application.
  • From our application’s point of view, there is only one SQL Azure database.As we make updates to our database, those updates are replicated to other copies stored in other data centers so that in the event that our database fails for any reason, the other databases will be standing by ready to take its place.
  • But what if that master database server fails for some reason?TDS is receives notification of the database failure and automatically redirects the call to the replica!The Azure Cloud Fabric is self-healing… and the details are outside the scope of this presentation; however, the fabric will get busy repairing itself like drones on a Borg mother ship… essentially with the objective of keeping three replicas online at a time.
  • When you created your SQL Azure database server, you supplied an administrator’s user name and password. I have named my user accordingly… to remind me of its power.The SQL Portal will offer you the ability to copy these credentials in connection string format to your clip board… tempting you into believing that you should just paste this into your configuration file.This is terrific for demos like mine… BUT you should NEVER, EVER do this…A database server system administrator password placed in a configuration file in clear text format… there has got to be something naive in the extreme going on here… and worse… no way to create non-sa-like users through the UI… you must script your database users and then apply the script to the database. And to anticipate your question… no… you can’t use SQL Server Management Studio to do this either.I will demo this as well in session 3… so hang tight…

Microsoft/Zend Webcast on Cloud Computing Microsoft/Zend Webcast on Cloud Computing Presentation Transcript

  • Cloud Computing with Zend Framework and Windows Azure
    Josh Holmes
    @joshholmes
    josh.holmes@microsoft.com
    www.joshholmes.com
  • Agenda
    Testing the Waters
    What is cloud computing?
    What are the advantages of cloud computing?
    How’s Azure fit in?
    Diving Deep
    Digging into PHP on Azure
    Leveraging Azure Storage
    Leveraging SQL Azure
  • We are all excited about the cloud
  • In House or Hosted Servers
    Allocated IT-capacities
    Load Forecast
    “Under-supply“ of capacities
    “Waste“ of capacities
    Fixed cost of IT-capacities
    IT CAPACITY
    Barrier for
    innovations
    ActualLoad
    TIME
  • Cloud Computing
    Load Forecast
    Allocated IT capacities
    No “under-supply“
    IT CAPACITY
    Reduction of “over-supply“
    Possible reduction of IT-capacities in case of reduced load
    Reduction of initial investments
    ActualLoad
    Time
  • Types of Hosting Solutions
    Platform
    (as a Service)
    Private
    (On-Premise)
    Infrastructure
    (as a Service)
    You manage
    Applications
    Applications
    Applications
    You manage
    Runtimes
    Runtimes
    Runtimes
    Security & Integration
    Security & Integration
    Security & Integration
    Managed by vendor
    Databases
    Databases
    Databases
    You manage
    Servers
    Servers
    Servers
    Managed by vendor
    Virtualization
    Virtualization
    Virtualization
    Server HW
    Server HW
    Server HW
    Storage
    Storage
    Storage
    Networking
    Networking
    Networking
  • The Microsoft Cloud
    ~100 Globally Distributed Data Centers
    Quincy, WA
    Chicago, IL
    San Antonio, TX
    Dublin, Ireland
    Generation 4 DCs
  • ZENDFRAMEWORK
  • Two sides to talk about…
    Storage
    Compute
    User Code
    Runtime API
    VM Setup
    Cloud VM
  • Data Storage
  • PHP with Windows Azure Storage
    SimpleCloud API @ http://simplecloud.org
    Windows Azure SDK for PHP @ http://phpazure.codeplex.com
    PHP programming model for Windows Azure Storage
    Features
    PHP classes for Blobs, Tables & Queues
    Store PHP sessions in Table Storage
  • Windows Azure 4 Eclipse
    Does a lot of the heavy lifting for you
    Creates the Web.config, Web.roleConfig, PHP implementation and debugs in the dev fabric
    http://windowsazure4e.org
    Does a lot of the heavy lifting for you
  • Windows Azure Data Storage
    Queue
    Blob
    Account
    Tables
    Drives
  • Azure Platform Data Storage Options
    • Windows Azure Data Storage
    • Blobs
    • Unstructured data storage
    • Tables
    • Semi-structured or tabular data storage
    • Queues
    • Buffered delivery data storage
    • Drives
    • Durable NTFS volumes that Windows Azure applications can use. See: http://microsoftpdc.com/Sessions/SVC14
    SQL Azure
    • Relational data storage
  • Windows Azure Data Storage - Blobs
    Unstructured data storage
    Partitioned by container
    Unlimited containers
  • Storage: XDrive
    NTFS drive in the cloud: X:
    Fixed size between 16MB and 1TB
    Max 8 drives on your VM
    Implemented as a page blob
    Single instance write
    Multiple instance read
  • Queue Workflow Concepts
    Windows Azure Queue Provides
    Guarantee delivery (two-step consumption)
    Worker Dequeues Message and mark it as Invisible
    Worker Deletes Message when finished processing it
    If Worker role crashes, message becomes visible for another Worker to process
    Doesn’t guarantee “only once” delivery
    Doesn’t guarantee ordering
    Best effort FIFO
    Worker Role
    Web Role
    Input Queue (Work Items)
    Worker Role
    Azure Queue
    Web Role
    Worker Role
    Web Role
    Worker Role
  • Azure Queues
    RemoveMessage
    GetMessage (Timeout)
    Worker Role
    PutMessage
    Queue
    Msg 1
    Msg 2
    Msg 2
    Msg 1
    Web Role
    Worker Role
    Worker Role
    Msg 3
    Msg 4
    Msg 2
  • Loosely Coupled Work with Queues
    Worker-Queue Model
    Load work in a queue
    Many workers consume the queue
    Input Queue (Work Items)
    Azure Queue
    Worker Role
    Web Role
    Worker Role
    Web Role
    Worker Role
    Web Role
    Worker Role
  • Windows Azure Data Storage - Tables
    Semi-Structured data
    Tables contain entities
    Entities contain properties
    May be partitioned across thousands of servers.
    Support ACID transactions over single entities
    Queries over entire table
    .NET and REST interfaces
  • Windows Azure Data Storage – Tables (Terms Part 1)
    Table
    Contains a set of entities.
    Entity (Row)
    Basic data items stored in a table.
    Property (Column)
    Single value in an entity.
    RowKey
    Unique ID of the entity within a partition
    Timestamp
    Time it was created
  • Windows Azure Data Storage – Tables (Terms Part 2)
    Partition
    Entities in a table with the same partition key
    PartitionKey
    Segments entities in to partitions to automatically distribute the table’s entities over many storage nodes.
    Sort Order
    There is a single index provided for the CTP, where all entities in a table are sorted by PartitionKey and then RowKey
  • Key Example – Blog Posts
    Partition 1
    Partition 2
    Getting all of dunnry’s blog posts is fast
    Single partition
    Getting all posts after 2008-03-27 is slow
    Traverse all partitions
  • SQL Azure and Windows Azure Table Comparison
    Windows Azure Tables
    SQL Azure Tables
    Semi-structured
    Loosely typed
    Non-Relational (Not RDMS)
    Massively scalable
    Fully structured
    Strongly typed
    Relational (RDMS)
    Highly scalable
  • SQL Azure
  • SQL Azure Features
    Supported
    Tables, Indexes, Views
    Stored Procedures
    Triggers
    Constraints
    Table Variables
    Temp Tables (#Name)
    Not Supported
    Physical Server Access
    Catalog DDL
    Common Language Runtime
    Service Broker
    Reporting Services
    Analysis Services
    Distributed Transactions and Queries
  • SQL AzureDeployment
    Web Portal
    (API)
    DB Script
    SQL Azure
    TDS
  • SQL AzureAccessing databases
    Web Portal
    (API)
    Your App
    SQL Azure
    TDS
    Change Connection String
  • Database Replicas
    Single Database
    Multiple Replicas
    Replica 1
    Single Primary
    Replica 2
    DB
    Replica 3
  • SQL AzureDatabase Monitoring & Recovery
    Web Portal
    (API)
    !
    Your App
    SQL Azure
    TDS
  • SQL Azure Database Connection String
    An administrative user is created with the server
    User has system administrator permissions likesa”
    Server=tcp:itte80vcfq.database.windows.net; Database=FabrikamAzureDB;User ID=SaPaulM;Password=myPassword;Trusted_Connection=False;Encrypt=True;
  • Windows Azure VMs
    Small
    Medium
    Large
    X Large
    $0.12
    $0.24
    $0.48
    $0.96
    Per service hour
    Per service hour
    Per service hour
    Per service hour
    1 x 1.6Ghz
    2 x 1.6Ghz
    4 x 1.6Ghz
    8 x 1.6Ghz
    (moderate IO)
    (high IO)
    (high IO)
    (high IO)
    1.75 GB memory
    3.5 GB memory
    7.0 GB memory
    14 GB memory
  • Windows Azure, In One Picture
    Business Portal
    Developer Portal
    Service Management Service
    REST
    User Code


    Runtime API
    Storage Cluster
    VS Tools
    Compute Cluster

    WA SDK
    VM Setup
    REST
    MSFT Datacenters
    Desktop
    Cloud VM
  • Windows Azure Roles
    WorkerRole
    • Internal Facing
    • TCP/HTTP Endpoint
    • Long running processes
    • Think Service or Deamon
    WebRole
    • External Facing
    • HTTP/HTTPS Endpoint
    • Short lived calls
    • Think Web Server
  • Running PHP in Windows Azure
    How to Do It
    Host in Web role (like .NET)
    Supply PHP runtime
    Point to runtime via FastCGI configuration in
    Web.config
    Web.roleConfig
    PHP
    Web Role
    Instance 1
    VIP
    Load Balancer
    PHP
    Web Role
    Instance 2
  • Running EXEs in the Worker Process
    Start with a Worker Role Process to
    Copy the exes to the worker role’s app directory
    Execute the process
    Monitor the health of the process
    Other auxiliary tasks…
  • More resources
    Microsoft Windows Azure Interop
    http://www.microsoft.com/windowsazure/interop/
    Interop Bridges
    http://www.interoperabilitybridges.com/
  • More resources
    PHP
    http://www.windowsazure4e.org
    http://simplecloud.org
    http://phpazure.codeplex.com/
    MySQL
    Windows Azure MySQL PHP Solution Accelerator
    http://code.msdn.microsoft.com/winazuremysqlphp
  • And of course
    Josh Holmes
    http://www.joshholmes.com
  • Cloud Computing with Zend Framework and Windows Azure
    Josh Holmes
    @joshholmes
    josh.holmes@microsoft.com
    www.joshholmes.com