azure best practices2

104
Windows Azure in the Real World: From Idea to Production in a Few Months Jesus Rodriguez Tellago Studios, Inc

Upload: jesusmrv

Post on 18-Dec-2014

427 views

Category:

Documents


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Azure best practices2

Windows Azure in the Real World: From Idea to Production in a Few Months

Jesus RodriguezTellago Studios, Inc

Page 2: Azure best practices2

About Me

• Co-Founder Tellago, Inc• Co-Founder Tellago Studios, Inc• Seat at the Board of a few software companies• Microsoft MVP• Microsoft Architect Advisor• Speaker, Autthor• http://jrodthoughts.com/ • http://weblogs.asp.net/gsusx/ • https://twitter.com/jrdothoughts

Page 3: Azure best practices2

About Today

• Windows Azure vs. the competition• What did we build?• Architecting, building and

operating large scale Windows Azure solutions in the real world: best practices & lessons learned

Page 4: Azure best practices2

How Real is this Real-World Talk?

Page 5: Azure best practices2

KidoZen(www.kidozen.com ): A Mobile-First PaaS

Page 6: Azure best practices2

KidoZen: An Enterprise Mobile PaaS

Messaging Services

Connector Services

AppCenterStorage Services

HTML5 Hosted Apps

Security Services

Integration Services

SDKs

KidoZen

Your Datacenter

Page 7: Azure best practices2

KidoZen Capabilities

• Security– AD Authentication– Google ID

Authentication– Live ID

Authentication• Storage

– Object Storage– Logging– Configuration

• Integration– Queuing – Publish-Subscribe– Service Relay

• Messaging– SMS– Email– Push Notification

• Connectors– SharePoint– Exchange– SQL Server, Oracle– MongoDB– …

• IOS• Android• Windows

Phone • Windows 8• JavaScript• PhoneGap

• Mobile app provisioning

• Mobile app security management

• Mobile app backend magenement

• App analytics

• HTML5 application hosting

• HTML5 application deployment

Backend as a Service

Mobile SDKs

Enterprise App Center

Hosted HTML5

Apps

• Time Tracking

• Event Viewer• IIS Manager• Expense

Report

Page 8: Azure best practices2

How did we get here?

Page 9: Azure best practices2

Why Windows Azure?

Page 10: Azure best practices2

We Needed a PaaS Platform

Page 11: Azure best practices2
Page 12: Azure best practices2

Not So Fast…

Page 13: Azure best practices2

Why? Aren’t you using .NET and SQL

Server?

Page 14: Azure best practices2

Not Exactly

Page 15: Azure best practices2

The Candidates

Page 16: Azure best practices2

We Needed Rapid/Hot Application Deployment

Page 17: Azure best practices2

Rapid and Hot Application Deployment

Page 18: Azure best practices2

We Needed First Class Node.JS Support

Page 19: Azure best practices2

Node.JS Support

Page 20: Azure best practices2

We Needed an Identity Infrastructure

Page 21: Azure best practices2

Identity Services

Page 22: Azure best practices2

We Needed to be Able to Control the Hosting

Instances

Page 23: Azure best practices2

Open VMs

Page 24: Azure best practices2

We Needed Solid Support for Windows

Page 25: Azure best practices2

Windows Support

Page 26: Azure best practices2

We Needed a Cloud Service Virtualization

Technology

Page 27: Azure best practices2

Service Virtualization Technology

Page 28: Azure best practices2

No Vendor Lock In

Page 29: Azure best practices2

No Vendor Lock In

Page 30: Azure best practices2

Integration With Test Tools and Frameworks

Page 31: Azure best practices2

Cloud Testing

Page 32: Azure best practices2

And The Winner Is…

Page 33: Azure best practices2
Page 34: Azure best practices2

Why Windows Azure?

• Support for both IaaS and PaaS models• Great development toolset• Global footprint• Phenomenal NodeJS experience• Some really unique technologies

• Windows Azure Active Directory• Windows Azure Service Bus

Page 35: Azure best practices2

What did we learn?

Page 36: Azure best practices2

Lesson Learned: If you are going to build for the

cloud….design for the cloud

Page 37: Azure best practices2

Building Blocks….

Page 38: Azure best practices2

Storage

Page 39: Azure best practices2

A few options available

Page 40: Azure best practices2

SQL AzureTable Service Blob Storage

HDInsight Service (Hadoop)

Page 41: Azure best practices2

A few observations…

Page 42: Azure best practices2

Mobile data == semi-structured data

Page 43: Azure best practices2

Blob storage is awesome….but for

binaries

Page 44: Azure best practices2

Table service is useless: doesn’t support any

serious queries, slow, doesn’t support indexes

Page 45: Azure best practices2

SQL Azure is great for rows and columns but…It doesn’t support JSONAnd it’s not optimal for

large databases

Page 46: Azure best practices2

HDInsight Service is not ready for primetime

Page 47: Azure best practices2

That sucks….Now what?

Page 48: Azure best practices2

Azure

MongoDB

Page 49: Azure best practices2

MongoDB on Windows Azure

• Two deployment models– Virtual Machines– Worker Roles

• Support for multiple Oss• Native toolset

Page 50: Azure best practices2

KidoZen MongoDB Scalable Topology in Windows Azure

Shards and mongos (router) hosted on Windows Azure worker roles or virtual machines

Key range A-B

Primary

Secondary

Secondary

Key range B-C

Primary

Secondary

Secondary

Key range C-D

Primary

Secondary

Secondary

Key range D-E

Primary

Secondary

Secondary

Mongos (router)

KidoZen Storage, Logging,

Configuration APIs

Page 51: Azure best practices2

Tons of challenges…

Page 52: Azure best practices2

Scaling?

Page 53: Azure best practices2

Monitoring?

Page 54: Azure best practices2

Monitoring: Mongo Monitoring Service(MMS)

Page 55: Azure best practices2

Backup?

Page 56: Azure best practices2

Effective Data Backup

MongoDB

MongoDB

MongoDB

MongoDB

Backup Process

Blob Storage Blob Storage

Data Center 1 Data Center 2

Page 57: Azure best practices2

Lesson Learned: In Windows Azure Storage:

VMs== Control== Flexibility == Operational

Headaches

Page 58: Azure best practices2

Service APIs

Page 59: Azure best practices2

Requirement: Optimized for concurrency, Rapid

provisioning, Deep HTTP Support, Easy

Deployment, Portability

Page 60: Azure best practices2

Welcome

Page 61: Azure best practices2

Native integration with Windows Azure:

var azure = require('azure');

Page 62: Azure best practices2

Native support in Web Matrix

Page 63: Azure best practices2

Challenges?

Page 64: Azure best practices2

Testing?

Page 65: Azure best practices2

expresso to the resqueexports['test String#length'] = function(beforeExit, assert) { assert.equal(6, 'foobar'.length); };

Page 66: Azure best practices2

HOW ARE YOU DOING?Create a status or health

endpoint.process.memoryprocess.uptime

process.pidconnections

proc: cpu microtime

Page 67: Azure best practices2

Integration with your corporate assets

Page 68: Azure best practices2

Requirement: Integrate your enterprise mobile

apps on-premise systems

Page 69: Azure best practices2

Introducing the Windows Azure Service Bus

Page 70: Azure best practices2

Windows Azure SB

Service Relay Queues Topics

Your Datacenter

Azure SB

Page 71: Azure best practices2

Tenant Provisioning and Management

Page 72: Azure best practices2

Requirement: Provision and scale tenants

dynamically

Page 73: Azure best practices2

Dedicated

Instance

Tenant

Tenant

Tenant

Tenant

Tenant

Tenant

Tenant

Tenant

Tenant

Share Instance

Page 74: Azure best practices2

Provision Tenant

Provision VM

Provision Storage

Provision Services

Configure Load Balancers

Provision SB Namespace

Page 75: Azure best practices2

Leverage Windows Azure Management APIs

Page 76: Azure best practices2

Automate tenant provision and management

Page 77: Azure best practices2

Performance

Page 78: Azure best practices2

Requirement: Process data and messages close

to the consumer

Page 79: Azure best practices2

Leverage Windows Azure Content Delivery Network

Page 80: Azure best practices2

Consider geo-routing technologies

Page 81: Azure best practices2

Windows Azure Traffic Manager has been in

perpetual beta

Page 82: Azure best practices2

Introducing Dyn

Page 83: Azure best practices2

Development Practices

Page 84: Azure best practices2

Requirement: Achieve development agility in

the cloud

Page 85: Azure best practices2

Test in the cloud: Emulators are for babies

Page 86: Azure best practices2

Deploy Regularly

Page 87: Azure best practices2

Version Everything

Page 88: Azure best practices2

Security Practices

Page 89: Azure best practices2

Requirement: Secure every byte that flows through the platform.

Federate with different identity providers

Page 90: Azure best practices2

Window Azure Active Directory is AWESOME

(conceptually) and PAINFUL(Operationally)

Page 91: Azure best practices2

Leverage Windows Azure Connect to create virtual

private networks

Page 92: Azure best practices2

Operational Practices

Page 93: Azure best practices2

Backup Everything

Page 94: Azure best practices2

Plan for disaster

Page 95: Azure best practices2
Page 96: Azure best practices2
Page 97: Azure best practices2

Monitor everything

Page 98: Azure best practices2

Cost-based architecture

Page 99: Azure best practices2

The results?

Page 100: Azure best practices2

KidoZen

• Operating in 6 data centers• 700+ production deployments• Survived two major outages• ~1TB tracking data• 60 compute instances

Page 101: Azure best practices2

What’s next?

Page 102: Azure best practices2

KidoZen

• Leverage HDInsight service for analytics • Leverage Media Services for video and pictures storage• Integrate with Skydrive for data synchronization • Use Workflow Manager for internal business processes

Page 103: Azure best practices2

Summary

• Windows Azure IaaS and PaaS capabilities present a great offering for building large scale cloud applications

• If you are building for the cloud, design for the cloud• Think outside the box, Windows Azure is great but not

enough• Consider cost • Start small, iterate

Page 104: Azure best practices2

[email protected]

http://www.tellagostudios.com http://jrodthoughts.com

http://twitter.com/#!/jrodthoughtshttp://weblogs.asp.net/gsusx