60
Best Practices for CouchDB Developers on Windows Azure Brian Benz, Sr. Technical Evangelist Microsoft Open Technologies, Inc. [email protected]

MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Embed Size (px)

Citation preview

Page 1: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Best Practices for CouchDB Developers on Windows Azure

Brian Benz, Sr. Technical EvangelistMicrosoft Open Technologies, [email protected]

Page 2: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Agenda• App Demo• Windows Azure• CouchDB• Windows Azure Virtual Machines• Windows Azure Web Sites• Options for working with Azure VMs and Web Sites• Under the hood of the app:

– Node.js– Grunt

• Q&A

Page 3: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Demo

Windows Azure, Virtual Machines, Web Sites, CouchDB, node.js, grunt

Conference Scheduling App

Page 5: MongoDB on Windows Azure: IaaS, PaaS, and SaaS
Page 6: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Conference Scheduler

• Attendees can track sessions, vote sessions up and down

• Offline Capabilities– IndexedDB

• CouchDB VM for Data Storage• Web site hosting the application– Node.js– Grunt

Page 7: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Demo Architecture

CouchDB

Node.js app:• Store and Retrieve

Schedule• Filter by criteria• Store in CouchDB

CORS-SERV

Windows Azure Virtual MachineBrowser app

Node.jsGrunt

WAWS

Page 8: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Windows Azure in 60 Seconds

A brief high-level overview for those who are new to Windows Azure

Page 9: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Cloud ComputingPackaged Software

Storage

Servers

Networking

O/S

Middleware

Virtualization

Data

Applications

Runtime

You

man

age

Infrastructure(as a Service)

Storage

Servers

Networking

O/S

Middleware

Virtualization

Data

Applications

Runtime

Managed by vendor

You

man

age

Platform(as a Service)

Managed by vendor

You

man

age

Storage

Servers

Networking

O/S

Middleware

Virtualization

Applications

Runtime

Data

Software(as a Service)

Managed by vendor

Storage

Servers

Networking

O/S

Middleware

Virtualization

Applications

Runtime

Data

Page 10: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Windows Azure: What It Is

Win·dows·Az·ure [win-dohz-azh-er]

Noun: A comprehensive set of services that enable you to quickly build, deploy and manage applications across a global network of Microsoft-managed datacenters.

99.95% Monthly SLAPay only for what you use

Page 11: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Windows Azure: What It Is

Open

Flexible

Solid

Page 12: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Windows Azure: What It Is

Global Footprint

Page 13: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Windows Azure: What It Is

Cloud Services

WebSites

Virtual Machines

Page 14: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Windows Azure: What It Is

Flexible

Page 15: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Windows Azure: What It Is

Host Build Consume

IaaS PaaS SaaS

Page 16: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Getting Started

http://www.windowsazure.com/en-us/pricing/free-trial/

http://channel9.msdn.com/Events/WindowsAzureConf/2012/KEY01

Sign up for a free trial

Learn about the latest features

Page 17: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

CouchDB on Windows Azure provides all the benefits customers have come to expect from cloud computing: elasticity, on-demand capacity, faster time to market, and pay-for-what-you-use pricing.

• CouchDB offers built-in support for horizontal scaling

• Windows Azure offers built-in support for responsive auto-scaling

+

Page 18: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Clustered nodes hosted

on Windows Azure

worker roles orvirtual machines

Cluster

PrimarySecondar

ySecondar

y

DriverYour Application

Clusters: High Availability

Page 19: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Virtual MachinesDeploying CouchDB on Windows

Azure virtual machines

Page 20: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Windows AzureVirtual

Machines

Windows Server 2008 R2

Windows Server 2012

OpenSUSE 12.1

CentOS 6.2

Ubuntu 12.04

SUSE Linux Enterprise Server SP2

Page 21: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Virtual Machine Sizes

Each Persistent Data Disk Can be up to 1 TB

VM Size CPU Cores Memory Bandwidth

(Mbps)# Data Disks

Extra Small Shared 768 MB 5 1

Small 1 1.75 GB 100 2

Medium 2 3.5 GB 200 4

Large 4 7 GB 400 8

Extra Large 8 14 GB 800 16

Page 22: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Deploying to Virtual Machines

– Compared to worker role (PaaS), VM-basedclusters offer more control, aswell as more responsibility

– Create new Virtual Machine – Windows 2012– Start or install a Browser– Download CouchDB– Run the Installer and Launch– Start Futon to verify install– Also available: Install Scripts Windows Azure 2008 Images:

• http://ossonazure.interoperabilitybridges.com/articles/couchdb-installer-for-windows-azure

Page 23: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

VM Depothttp://vmdepot.msopentech.com– Call to action: Developers can use VM Depot to reach new

audiences!

Page 24: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

• Open-source SDKs forpopular programminglanguages, to get youup and running quickly

• Choice of popular IDEssuch as Visual Studioand Eclipse

• Consistent REST protocols and APIs across Windows Azure services

http://www.windowsazure.com/en-us/develop/overview/

Windows Azure Developer CenterCouchDB drivers:

.NET driver

Node.js driver

Java driver

PHP driver

Python driverDriver download page

Page 25: MongoDB on Windows Azure: IaaS, PaaS, and SaaS
Page 26: MongoDB on Windows Azure: IaaS, PaaS, and SaaS
Page 27: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

azure topic verb options

Command Line Syntax Overviewprompt>

accountaccount locationaccount affinity-groupvmvm diskvm endpointvm imageserviceservice certsiteconfig

downloadimportlistshowdeletestartrestartshutdowncapturecreateattachdetachbrowseset

usernamepassworddns-prefixvm-namelb-porttarget-image-namesource-pathdisk-image-namesize-in-gbthumbprintvalue-v-vv

Page 28: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Example: Provisioning a Clusterazure vm create couchsd "OpenLogic__OpenLogic-CentOS-62-20120531-en-us-30GB.vhd" username password -l "West US" -e azure vm create couchsd "OpenLogic__OpenLogic-CentOS-62-20120531-en-us-30GB.vhd" username password -l "West US" -e 23 -c azure vm create couchsd "OpenLogic__OpenLogic-CentOS-62-20120531-en-us-30GB.vhd" username password -l "West US" -e 24 -c

azure vm endpoint create couchsd 27017 27017azure vm endpoint create couchsd-2 27018 27018azure vm endpoint create couchsd-3 27019 27019

Page 29: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

VM Management and Automation

Active Directory Group Policy

Windows Remote Management (WinRM)

SCOM 2012 Support for Managing Virtual Machines

Full REST API for Programmatic Automation and Management

Windows Azure PowerShell Cmdlets

Cross Platform Scripting (Linux, Mac and Windows)

Windows Azure Monitoring Service (On Roadmap)

Page 30: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Scripting Capabilities

Automation Support• Windows Azure PowerShell Cmdlets• Cross Platform Scripting Built on node.js

Capabilities• Provisioning, Removal• Reboot, Start• Import and Export VM settings• Support for Windows and Linux VMs• Domain Join at Provision for Windows• Fully Customize VM with Data Disks and

Endpoint Configuration• Automate Virtual Network Settings

Page 31: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

PaaS and SaaSDeploying CouchDB as Cloud Services

and Software-As-A-Service

Page 32: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Deploying CouchDB as a Cloud Service

– Windows Azure cloud servicesrun on a fully automated, highlyscalable cloud platform

– Ongoing management of the OS and infrastructure is handled by Windows Azure

– Infinitely scalable, on demand– App and CouchDB in same cloud service provides security – PaaS approach is the easiest way to deploy CouchDB on

Windows Azure– For quick and simple deployment, use the CouchDB on

Azure Worker Role Install:http://ossonazure.interoperabilitybridges.com/articles/couchdb-installer-for-windows-azure#h2Section5

Page 33: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

33

• Founded May 2008• Database-as-a-service (DBaaS)– Managed, hosted fork of

CouchDB– Incremental MapReduce

engine– Horizontal scaling & built-in

Lucene search• 8 Cloudants are committers to

Apache CouchDB• 13,000+ users

Page 34: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Cloudant’s Commitment to Apache CouchDB

34

• 25% of Apache CouchDB project committers work at Cloudant

• Apache CouchDB roadmap– BigCouch: Horizontal scaling

framework• based on Amazon Dynamo

paper• folding into the next Apache

release– Fauxton: Futon replacement

• modular CouchDB Web dashboard

• live JSON editor with JavaScript hinting

Page 35: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Hybrid Approaches

Combining hosted services, cloud applications, and on-premises

applications

Page 36: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

IaaSVirtual Machines

PaaSWeb Sites

PaaSCloud Services

Other sites, local apps, etc.

Your App

IaaSVirtual Machines

PaaSCloud Services

SaaSGit Deployments

Self-hosted

Your Data

Page 37: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Deployment Complexity

OperationalResponsibility Flexibility OS Security

IaaS Some High High Linux or Windows Custom

PaaS Some Low High Windows only Built-in

SaaS Low/none None Limited N/A Built-in

Which approach is best for you?

Page 38: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Web SitesDeploying Web Sites on Windows

Page 39: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Your Datacenter

Virtualization

O/S

Hardware

Network

Data

Applications

Firewall

Web Sites

Applications

Data

Cloud Services

Applications

Firewall Rules

Data

Virtual Network

Virtual Machines

Virtual Network

Data

Applications

Firewall Rules

O/S

Focus on the Application

Windows Azure

Page 40: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Windows Azure Web Sites powerful web sites in seconds

start simplestart free, scale up and out as you go, friction-free and without the headaches

code smartwith classic asp, asp.net, php or node.js, develop on Windows, OSX or Linux

go livedeploy live in seconds, easily monitor performance, rapidly diagnose and fix issues

Page 41: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

1shared reserved

SHARED INSTANCES

:-)

shared

web sites

Page 42: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

2SHARED INSTANCES

:-)

:-)

shared reserved

shared

web sites

Page 43: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

SHARED INSTANCES

:-)

1shared reserved

RESERVED INSTANCE

:-):-)

0reserved

web sites

Page 44: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

2shared reserved

RESERVED INSTANCE

:-)

RESERVED INSTANCE

:-)

reserved

web sites

Page 45: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

2shared reserved

RESERVED INSTANCE

:-)

RESERVED INSTANCE

:-):-)

:-) :-)

:-):-) :-)

reserved

web sites

Page 46: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Supported Web Frameworks

Bring your own runtime…

Page 47: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Supported Publishing Methods

FTP:// TFS WEBDEPLOY

Page 49: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Windows Azure Web Sites

code smart go livestart simple

Page 50: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Start Simple

Get started with 10 free web sites

Create new sites in seconds

Easily manage and scale your sites

Automatic load balancing and shared storage across instances

Scale out or up to reserved instances for improved performance and scale

Page 51: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Code Smart

Use ASP.NET, ASP, PHP, Node.js or Custom

SQL Azure or MySQL databases

Start with open source apps

Develop with VS and WebMatrix

Supports any Web development tool on any platform (Windows, OSX, Linux)

Page 52: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Go Live

Rapid deployment for quick iteration

Integrated source control with Team Foundation Server (TFS) and Git

Built-in monitoring of perf and usage data

Quick access to request logs, failed requests diagnostics and diagnostics

Page 53: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Node.js and Grunt

Deploying Web Sites on Windows Azure Web Sites

Page 54: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

What is Node.js?

• A JavaScript runtime environment– Server-side JavaScript– Compiled for speed– Command line– JavaScript API for network and file system access

• Designed for high concurrency– Events, not threads or processes

• Never blocks, not even for I/O• Uses CommonJS framework syntax– Close to real OO

Page 55: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Why Use Node.js ?

• JavaScript on server-side and client-side• Event loop with a stack– Node.JS serves requests in an event loop– Large number of simultaneous requests.

• Avoids Context Switching– Waiting for I/O or Synchronization operation to

complete.• Node attaches JS callbacks to I/O requests– The “event driven” part– When the original IO is completed, a callback to the

server completes the request.

Page 56: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Speedy I/O With EventsThreads Events

Threads lock apps / threads One threadListens for incoming requests Process from queueMultiple threads dependent on multiple processes

State saved for each event

Depends on context switching Not dependent on I/O or Synchronization

Page 57: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Node.js with Grunt

• Node.js - Scalable, Event-Driven HTTP server– JavaScript and simple API

• Grunt on Node.js– Deployment and Task Management

Page 58: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Popular open source appsLaunch a professional looking site with a few clicks using apps like WordPress, Joomla!, Drupal, DotNetNuke and Umbraco

Continuous developmentDeploy directly from your source code repository, using Git or Team Foundation Service.

Modern web appsPerfect if your app consists of client side markup and scripting, server side scripting and a database. Powerful capability to scale out and up as needed.

Application Scenarios

Web Sites

Apps that require advanced administrationCloud-based applications that require admin access, remote desktop access or elevated permissions

Cloud Services

Multi-tier applicationsCloud-based applications that separate application logic into multiple tiers (i.e. caching middle tier, asynchronous background processes like order processing) using both Web and Worker Roles

Apps that require advanced networkingCloud-based applications that require network isolation for use with Windows Azure Connect or Windows Azure Virtual Network

Porting existing line of business appsChoose an image from the library or upload your own VHD.

Enterprise server applicationsRun your existing enterprise applications in the cloud, such as SQL Server, SharePoint Server or Active Directory.

Windows or Linux operating system Support for Windows Server, along with community and commercial versions of Linux. Connect virtual machines with cloud services to take full advantage of PaaS services.

Virtual Machines

Page 59: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Other Resources• Microsoft Open Technologies Blog: http://blogs.msdn.com/b/interoperability• VM Depot:

http://vmdepot.msopentech.com• Windows Azure development:

www.WindowsAzure.com • SDKs and Command Line Tools:• http://www.windowsazure.com/en-us/downloads/• Windows Azure Training Kit:

http://windowsazure-trainingkit.github.com/ • Microsoft Web Platform Installer:• http://www.microsoft.com/web/downloads/platform.aspx• Web Matrix• http://www.microsoft.com/web/webmatrix/• Project Kudu• https://github.com/projectkudu/kudu• The application I showed today• https://github.com/axemclion/conference

Page 60: MongoDB on Windows Azure: IaaS, PaaS, and SaaS

Q&A