Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

52
Windows Azure Uma Plataforma para o Desenvolvimento de Aplicações Pedro Rosa http://netpont o.org 11ª Reunião Presencial - 19/06/2010

description

A plataforma Windows Azure abre espaço a desenvimento de aplicações utilizando o novo paradigma: "A Nuvem". Aplicações escaláveis, redundantes, e mais próximas do utilizador final. Isto tudo utilizando como base os conhecimentos que já tem e o novo Visual Studio 2010.

Transcript of Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Page 1: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Windows AzureUma Plataforma para o Desenvolvimento de Aplicações

Pedro Rosa

http://netponto.org11ª Reunião Presencial - 19/06/2010

Page 2: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Pedro Rosa - DeepDiveIn

Contacto+351 961 624 203

LinkedInhttp://pt.linkedin.com/in/pedrobarraurosa

Twitterhttp://twitter.com/pedrorosa

Page 3: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Agenda

• Why Cloud?• What is it anyway?• How can I benefit?

Page 4: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Business Drivers for IT Projects

• Increase market share and revenue– Investing in product development and customer

facing interaction channels• Increase efficiency and lower TCO

– Investing in technologies and processes to drive efficiency and lower cost through optimization

Page 5: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Economy of ScaleLow High

ControlHigh Low

Control vs. Economy of Scale

Page 6: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Economy of ScaleLow High

ControlHigh Low

Build vs. Buy

This is not new…

Page 7: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Economy of ScaleLow High

ControlHigh Low

On premises vs. in the cloud

This is new…

Page 8: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Leveraging Economy of Scale

Ratio between $ buckets for medium and very large DC

Technology RatioNetwork 7.1Storage 5.7Administration 7.1

Source: Above the Clouds: A Berkeley View of Cloud Computing

Page 10: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Short distance access to hydroelectric power

Long distance transmission over the grid

Energy generation based on expensive resources

Location Matters

Page 11: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Short distance access to hydroelectric power

Long distance transmission over the grid

Energy generation based on expensive resources

Price per KWH 3.6¢ Idaho 10.0¢ California

18.8¢ Hawaii

Location Matters

Page 12: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Application runs on-premises

Buy my own hardware, and

manage my own data center

Application runs at a hoster

Pay someone to host my

application using hardware that I

specify

Application runs using cloud

platform

Pay someone for a pool of computing resources that can be applied to a set

of applications

Datacenter Options

Page 13: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Datacenter Options

Application runs on-premises

• Bring my own machines, connectivity, software, etc.

• Complete control and responsibility

• Upfront capital costs for the infrastructure

Application runs at a hoster

• Rent machines, connectivity, software

• Less control, but fewer responsibilities

• Lower capital costs, but pay for fixed capacity, even if idle

Application runs using cloud

platform

• Shared, multi-tenant environment

• Offers pool of computing resources, abstracted from infrastructure

• Pay as you go

Page 14: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Software as a Service• Use applications over a network

Platform as a Service• Deploy customer-created applications to

a cloud

Infrastructure as a Service• Rent processing, storage, network

capacity, and other fundamental computing resources

X as a Service

Page 15: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

IaaS

• User gets access to a pool of resources through VM abstraction

• User needs to patch/maintain the system• Scales only if stateless or if well partitioned

• E.g. Amazon EC2

Page 16: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

PaaS

• User gets access to a pool of resources through a programming model

• System is managed by the cloud provider• Platform (programming model) can provide

scalability

• E.g. Windows Azure, Google App Engine

Page 17: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

SaaS

• User gets access to applications• System is completely managed by the cloud

provider• Cloud provider may offer customization and

extensibility options

• E.g. Salesforce.com, Microsoft BPOS, Google Apps

Page 19: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Need for Elasticity

Page 20: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Wall Street firm on Amazon EC2

3000 CPU’s for one firm’s risk management processes

Num

ber

of E

C2

Inst

ance

s

300 CPU’s on weekends

Thursday4/23/2009

Friday4/24/2009

Sunday4/26/2009

Monday4/27/2009

Tuesday4/28/2009

Saturday4/25/2009

Wednesday4/22/2009

3000--

300 --

Page 21: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Scale through PaaS

• The platform abstracts the physical infrastructure• Ability to scale built into the programming model

– Google’s AppEngine– Microsoft’s Windows Azure– Amazon’s elastic MapReduce– …

Page 22: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

What is Windows Azure?An Operating System for the cloud

• Hardware Abstraction across multiple servers• Distributed Scalable, Available Storage• Deployment, Monitoring and Maintenance• Automated Service Management, Load Balancers,

DNS• Programming Environments• Interoperability• Designed for Utility Computing

Page 23: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Why Windows Azure?

• OS Takes care of your service in the cloud– Deployment– Availability– Patching– Hardware Configuration

• You worry about writing the service

Page 24: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

What is Windows Azure?Features

• Automated Service Management• Compute• Storage• Developer Experience

Page 25: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

What is Windows Azure?

Compute Storage

DeveloperSDK

Page 26: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

DeveloperTools

What is Windows Azure?

Compute• .NET 4.0• Server 2008 – 64bit• Full Trust*• Web Role

• IIS7 Web Sites (ASP.NET, FastCGI)

• Web Services (WCF)

• Worker Role• Stateless Servers• Http(s), TCP

Storage

Page 27: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

DeveloperTools

What is Windows Azure?

Compute

Storage• Durable, scalable, available• Blobs• Drives• Tables• Queues• REST interfaces

– Can be used without compute

Page 28: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

All of the hardwareHardware Load BalancersServersNetworksDNSMonitoring

Automated service management

What is Windows Azure?

Compute Storage

DeveloperTools

Page 29: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

What is Windows Azure?

Compute Storage

Developer SDK

• Windows Azure SDK– Local Development Fabric emulates running multiple

instances, load-balancing, service API– Local Development Storage emulates blob, tables and

queue storage– Command line tools allows integration outside of Visual

Studio

• Microsoft Visual Studio 2008, 2010 add-in– Provide rich tooling and templates to easily build your

application

Page 30: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Windows Azure API

• All operations are accessed through RoleEnvironment• RoleEnvironment Handles

– Retrieving configuration information– LocalResource locations (local disk)– Accessing Role information like InstanceEndpoints necessary for

inter-role communication– Exposes events during instance lifecycle, allowing a chance to

respond to topology or config change

Page 31: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Service Models

• Describes your Service<?xml version="1.0" encoding="utf-8"?><ServiceDefinition name="CloudService1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> <WebRole name="WebRole"> <ConfigurationSettings> <Setting name="AccountName"/> </ConfigurationSettings> <LocalStorage name="scratch" sizeInMB="50"/> <InputEndpoints> <!-- Must use port 80 for http and port 443 for https when running in the cloud --> <InputEndpoint name="HttpIn" protocol="http" port="80" /> </InputEndpoints> </WebRole> <WorkerRole name="WorkerRole"> <ConfigurationSettings> <Setting name="AccountName"/> <Setting name="TableStorageEndpoint"/> </ConfigurationSettings> </WorkerRole></ServiceDefinition>

Page 32: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Service Architecture

Page 33: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Service Architecture

Page 34: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

My First Service (WorkerRole)

demo

Page 35: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

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

Page 36: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

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

Page 37: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Queues

• Simple asynchronous dispatch queue– Create and delete queues

• Message:– Retrieved at least once– Max size 8kb– Operations:

• Enqueue• Dequeue• RemoveMessage

Page 38: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

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

Page 39: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Deploying Services

demo

Page 40: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Service Lifecycle

• Create service packageBinaries + Content + Service Metadata

• Deploy via web portal or Service Management API• Add & remove capacity via web portal or API• Deployed across fault domains• Upgrade with zero downtime

Page 41: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Automated Service Management

• You tell us what, we take care of how• What

– Service metadata• How

– Metadata describes service– No OS footprint– Service is copied to instances– Instances were copied to physical hardware– Physical hardware booted from VHD– All patching is performed offline

Page 42: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Service Monitoring

• SDK component providing distributed monitoring & data collection for cloud apps

• Support Standard Diagnostics APIs– Trace, Debug normally

• Manage multiple role instances centrally• Scalable• Choose what to collect & when to collect it

– Event Logs, Trace/Debug, Performance Counters, IIS Logs, Crash Dumps, Arbitrary log files

Page 43: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Design Considerations

• Scale and availability are the design points• Storage isn’t a relational database• Stateless

– Stateless front ends, store state in storage• Use queues to decouple components• Instrument your application (Trace)• Once you are on - stay on• Think about patching & updates

Page 44: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

The CxO Value Proposition

• Time to Market– No upfront CAPEX– Instant access to compute resources

• Total Cost of Ownership – CAPEX/OPEX– Economy of scale– Elasticity

• Productivity– Higher level of abstraction for compute resources

• Risk Mitigation– Allows for trial and error– Unpredictable utilization patterns

Page 45: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Cloud Pricing

• Pricing Options– Pay as you go – flexible but unpredictable– Flat fees, Quotas, Limits allow for better control– Decisions based on business model, predictability, IT budgeting

• Pricing Dimensions– Compute pricing

• # CPUs (hours deployed vs. hours utilized)• Dedicated local storage & memory

– Bandwidth (inbound, outbound, inter-DC)• Can become very pricy for large storages• Disk shipments

– Storage• Average used storage capacity vs. , “fixe sized” storage• Storage transactions (read, write)• Used query time

Page 46: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

The Bandwidth Challenge

• Storage vs. Bandwidth• Time and cost of transferring data

– AWS Import/Export• Compute and storage location matters

– Compute where the data is stored instead of moving the data to the compute resource

Page 47: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

The Regulation Challenge

• Safe Harbor Act– Datacenter locations matter

• Patriot Act– Big Brother might get access to your data

• Industry Regulations– E.g. Payment Card Industry Data Security

Standard (PCI DSS)

Page 48: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Where to Start?

• Find a business case first!• Compute Scenarios

– Capabilities with little integration requirements• Input compute output

– High scalability/performance requirements– Challenging utilization requirements

• Storage Scenarios– Archiving solutions– Cross-corporate data sharing– Look for capabilities with infrequent compute

Page 49: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Questões?

Page 51: Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações

Próximas reuniões presenciais

• 19/06/2010 - Junho• 10/07/2010 - Julho• 14/08/2010 - Agosto• 18/09/2010 - Setembro

Reserva estes dias na agenda! :)