Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction to Azure

Introduction to Azure

A presentation given in Nessos Information Technologies.

Aggelos Biboudis

June 02, 2010
Tweet

More Decks by Aggelos Biboudis

Other Decks in Technology

Transcript

  1. Introduction to Windows Azure Platform Windows Azure Platform in a

    nutshell Friday, July 02, 2010 by Aggelos Mpimpoudis
  2. Windows Azure Platform Compute: Virtualized compute environment based on Windows

    Server Storage: Durable, scalable, & available storage Management: Automated, model-driven 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 AppFabric
  3. Clarifying Term ‘fabric’ Windows Server AppFabric != Windows Azure AppFabric

    != Azure Fabric != Development Fabric != Azure Fabric Controller
  4. Windows Azure Internet Storage Tables LB Blobs Worker Service Worker

    Service Worker Service Web Site (ASPX, ASMX, WCF) Web Site (ASPX, ASMX, WCF) Web Site (ASPX, WCF, etc.) Queues Windows Azure Internet LB
  5. Roles Windows Server 2008 x64 IIS 7 ASP.NET 3.5 SP1

    FastCGI – PHP Native Code Full Trust User Mode Windows Server 2008 x64 .NET Start Native Code User Mode Inbound any TCP Port Web Role Worker Role
  6. Role Programming Model Inherits RoleEntryPoint OnStart() Method Called by Fabric

    on startup, allows you to perform initialization tasks. Reports Busy status to load balancer until you return true. OnStop() Method Called when role is to be shutdown, graceful exit. Run() Method Main logic is here – can do anything, typically loop and never exit.
  7. Storage Blobs, Drives, Tables, Queues Designed for the cloud 3

    replicas Guaranteed consistency Accessible directly from the internet via REST API .NET Client library supported Does not require compute Storage account drives unique URL, e.g.: https://<youraccount>.blob.core.windows.net
  8. Blobs Blobs stored in Containers 1 or more Containers per

    account Scoping is at container level …/Container/blobname $root is special name for root container Blobs Two types, Page and Block Page is random R/W, Block has block semantics Metadata, accessed independently name/value pairs (8kb total) Private or Public container access
  9. Queues Simple asynchronous dispatch queue Create and delete queues Message:

    Retrieved at least once Max size 8kb Operations: Enqueue Dequeue RemoveMessage
  10. Tables Entities and properties (rows & columns) Tables scoped by

    account Designed for billions+ Scale-out using partitions Partition key & row key Operations performed on partitions Efficient queries No limit on number of partitions Use ADO.NET Data Services
  11. Client A ClientB 5 : Ch9, Jan-1, 3 1 :

    Ch9, Jan-2, 2 1 : Ch9, Jan-2, 2 1 : Ch9, Jan-2, 2 2: Ch9, Jan-2, 5 Use standard HTTP mechanisms – Etag and If-Match Get entity – get system maintained version as ETag Update Entities Locally – change rating Send Update with version check - IF-Match with Etag Success if version matches, and update version on Client-A Precondition failed (412) if version does not match Concurrent Updates 9 : Ch9, Jan-3, 6 If-Match: 1 Ch9, Jan-2, 5 If-Match: 1 Ch9, Jan-2, 4 Version Rating 1: Ch9, Jan-2, 4 1: Ch9, Jan-2, 5 Error: 412 2: Ch9, Jan-2, 5
  12. .NET: LINQ Take(N) function Getting the Top N entities serviceUri

    = new Uri("http://<account>.table.core.windows.net"); DataServiceContext context = new DataServiceContext(serviceUri); var allMessages = context.CreateQuery<Message>("Messages"); foreach (Message message in allMessages.Take(100)) { Console.WriteLine(message.Name); } GET http://<serviceUri>/Messages?$top=100
  13. GET http://<Uri>/Messages?$filter=...&$top=100 &NextPartitionKey=xxxxxxx &NextRowKey=yyyyyy Pagination – Continuation Tokens Send a

    request GET http://<serviceUri>/Messages?$filter=...&$top=100 x-ms-continuation-NextPartitionKey: xxxxxxx x-ms-continuation-NextRowKey: yyyyyy Messages Ch9, Date1, Ch9, Date2, Ch9, … Ch9,Date100, Ch9,Date101, Ch9, … 100
  14. Single Table Consistency ACID transactions for single entity CUD Insert/update/delete

    Snapshot isolation for query within a single partition Consistent view from start time of the query No dirty (uncommitted) reads Does not block concurrent updates No snapshot isolation across partitions No snapshot isolation across different continuations of a query Batch transactions within partition only
  15. Cross Table Consistency Application is responsible for maintaining consistency Example

    When a channel is deleted, delete all the messages for that channel Failures can occur in the middle Example - Application fails after deleting some messages Use Windows Azure Queues to help ensure completion of operation
  16. SQL Azure MS Datacenter SOAP/REST HTTP/S SQL Azure access from

    within MS Datacenter (Azure compute – ADO.NET) Windows Azure T-SQL (TDS) MS Datacenter T-SQL (TDS) App Code / Tools SQL Azure access from outside MS Datacenter (On-premises – ADO.NET) App Code (ASP.NET) ADO.NET Data Svcs/REST - EF HTTP/S Code Far SQL Data Services SQL Data Services Application/ Browser Code Near
  17. Sample of SQL Compatibility Currently Supported Tables, indexes and views

    Stored Procedures Triggers Constraints Table variables, session temp tables (#t) Spatial … Not Currently Supported Distributed Transactions Distributed Query CLR Service Broker Physical server or catalog DDL and views
  18. Connection Model Use existing client libraries ADO.NET, ODBC, PHP Client

    libraries pre-installed in Azure roles Support for ASP.NET controls Clients connect directly to a database Cannot hop across DBs (no USE)
  19. AppFabric Service Bus Expose apps and services through firewalls, NAT

    gateways, and other problematic network boundaries Lower barriers to building composite applications by exposing endpoints easily, supporting multiple connection options and publish and subscribe for multicasting. Lightweight developer friendly programming model that supports standard protocols and extends similar standard bindings for Windows® Communication Foundation programmers Helps blocks malicious traffic and shields your services from intrusions and denial-of-service attacks Access Control Federated identity and access control through rule based authorization enables applications to respond as if the user accounts were managed locally Flexible standards-based service that supports multiple credentials and relying parties Lightweight developer-friendly programming model based on the Microsoft .NET Framework and Windows Communication Foundation
  20. Access Control All application scenarios that involve AppFabric Access Control

    consist of three service components: Service provider: The REST Web service. Service consumer: The client application that accesses the Web service. Token issuer: The AppFabric Access Control service itself. AppFabric Access Control features Cross-platform support. AppFabric Access Control can be accessed from applications that run on on almost any operating system or platform that can perform HTTPS operations. Active Directory Federation Services (ADFS) version 2.0 integration. This includes the ability to parse and publish WS-Federation metadata. Lightweight authentication and authorization using symmetric keys and HMACSHA256 signatures. Configurable rules that enable mapping input claims to output claims. Web Resource Authorization Protocol (WRAP) and Simple Web Token (SWT) support.
  21. Interop Java Windows Azure SDK for Java™ AppFabric SDK for

    Java™ Developers PHP Windows Azure SDK for PHP Windows Azure Command-line Tools for PHP AppFabric SDK for PHP Developers Ruby AppFabric SDK for Ruby Developers
  22. Azure Compute $0.12 / hour Storage $0.15 / GB stored

    / month Storage transactions $0.01 / 10K Data transfers $0.10 in / $0.15 out / GB ($0.30 in / $0.45 out / GB in Asia)
  23. SQL Two SQL Azure Database SKUs: Web & Business Web

    Edition: 1 GB @ $9.99/month | 5 GB @ $49.95/month Business Edition: Up to 50 GB @ $99.99/10 GB/month 10 GB @ $99.99 | 20 GB @ $199.98 | 30 GB @ $299.97 | 40 GB @ $399.96 | 50 GB @ $499.95 You specify Web or Business Edition Web: EDITION = Web Business: EDITION = Business You specify MAXSIZE Web: MAXSIZE = 1GB| 5GB Business: MAXSIZE = 10GB | 20GB | 30GB | 40GB | 50GB This is the size we will not let you grow beyond You will be charged for the actual (peak) size (in any one day) CREATE DATABASE foo1 (EDITION='business', MAXSIZE=50GB); CREATE DATABASE foo2 (EDITION='business', MAXSIZE=30GB); CREATE DATABASE bar1 (EDITION='web', MAXSIZE=5GB); CREATE DATABASE bar2 (EDITION='web'); -- Defaults to 1GB
  24. AppFabric Access Control Access Control transactions = $1.99/100K Service Bus

    connections $3.99 per connection on a “pay-as-you-go” basis $9.95 for a pack of 5 connections $49.75 for a pack of 25 connections $199 for a pack of 100 connections $995 for a pack of 500 connections Data transfers Data transfers = $0.10 in / $0.15 out / GB - ($0.30 in / $0.45 out / GB in Asia)*
  25. For your msdn premium eyes only Introductory 8-month Offer Available

    Today Introductory 8-month Offer Available Today Services by Subscription Level (no extra charge) * Premium, Ultimate & BizSpark Windows Azure Small compute instance 750 hours / month Storage 10 GB Transactions 1,000,000 / month AppFabric Service Bus Connections 5 / month Access Control Transactions 1,000,000 / month SQL Azure Web Edition databases (1GB) 3 Data Transfers Europe and North America 7 GB in / month 14 GB out / month Asia Pacific 2.5 GB in / month 5 GB out / month Estimated retail value for 8 months (USD): $1,264