KEMBAR78
Move to azure | PPTX
Move to Azure!
FREE MICROSOFT AZURE INFORMATIONAL SESSION
PAUL IRWIN, LEAD SOFTWARE ENGINEER @ FEATURE[23]
About Me
 Paul Irwin
 Lead Software Engineer at
feature[23]
 Past experience as lead engineer on
Fanatics’ ecommerce platform
 Microsoft Certified Solutions
Developer: Web Applications
 Co-founder of Code on the Beach
and Code on the Sea
 pirwin@feature23.com
 @paulirwin
Code on the Beach
 The Beachside Software
Engineering Conference
 www.codeonthebeach.com
 @CodeOnTheBeach
 August 8 – 10, 2014
 Registration open now at $250
 Charles Petzold, Greg Young, and
John Papa
 World class resort hotel
 Beach games and events
 Excellent networking
Code on the Sea
 The Software Engineering Cruise
 www.codeonthesea.com
 @CodeOnTheSea
 February 28 – March 5, 2015
 Registration starting at $650
 5 Day Cruise to Bahamas from
Jacksonville
 Carnival Fascination
 Family friendly
 Our greatest hospitality
conference
Why move to Microsoft Azure?
WHAT’S IN IT FOR ME?
Why move to Microsoft Azure?
 Per-minute billing: pay only for what you use
 Instant provisioning
 Insanely scalable
 Save on Windows Server, SQL Server, etc. licenses
 Less infrastructure maintenance costs
 No need to deal with hardware failures
 Geographically-distributed High Availability / Disaster Recovery
 Tons of built-in APIs and services
Windows Azure Facilities
Inside a Facility
Inside a Container
Moving to Microsoft Azure
 Covered today: ASP.NET Apps (WebForms, MVC, Web API, etc.)
 Not covered today: PHP, Python, Node.js, Ruby, Java, etc.
 Simple apps can usually be moved as-is
 Complex apps need architecture thought
 Platform-as-a-Service vs Infrastructure-as-a-Service
PaaS vs IaaS
Platform-as-a-Service (PaaS)
 Pros
 Easy to scale
 Can be cheaper than IaaS
 Feature-rich cloud APIs
 No software licenses needed
 Cons
 Can necessitate re-architecting
 Less control
Infrastructure-as-a-Service (IaaS)
 Pros
 Full control
 Run any software unmodified
 BYO or Per-minute Licenses
 Cons
 Usually more expensive
 Must scale the “old way” or create
custom scripts
 You still need licenses
Scenario
 Employment ASP.NET MVC Web Application in Web Farm
 SQL Server database
 ASP.NET State Server for Session State
 Facebook and Google OAuth sign-in
 Lots of CSS, JS, and image content
 Windows Scheduled Tasks to inform applicants of new opportunities
 MSMQ queue where job applications are received for processing
 Job application processor Windows Service
 DR datacenter across country
Step 1: Move the SQL Database
Step 1: Move the SQL Database
 SQL Server in an Azure Virtual Machine (IaaS solution)
 Pros
 Ultimate power and flexibility
 Full feature set
 SSIS, SSAS, SSRS, SQL Agent
 RDP into the VM for management
 No new training required
 Easy to set up AlwaysOn/mirroring HA
 Option to pay per-minute with SQL Server license included
 Cons
 EXTREMELY expensive if license included and running 24/7
 Not as performant as high-end on-prem hardware
 Manage updates/service packs manually
Step 1: Move the SQL Database
 Azure SQL Database (PaaS solution)
 Pros
 Very affordable (starting at $5/mo)
 Scales easily
 Built-in High Availability
 Auto-management of updates/service packs
 No need for Windows Server / SQL Server licenses
 Cons
 Limited feature set
 Limited control over instances
Azure SQL Database Missing Features
• Integration Services
• Analysis Services
• Reporting Services
• SQL Agent
• SQL CLR
• Msdb, model databases
• Traditional Backup/Restore/Attach
• Distributed transactions
• Unlimited DB size
• Windows Authentication
• Extended Events
• FILESTREAM
• File Groups (i.e. ON PRIMARY)
• File management
• Full-text search
• Replication / Mirroring
• Service Broker
• XML Indexing
• “USE [database]” / Cross-DB queries
• Hekaton – In-Memory OLTP (SQL Svr 2014)
Azure SQL Database Features
 Just about everything else
 Tables, indexes, FKs, views, stored procedures, functions, triggers, CTEs,
custom types, TVPs, temp tables, logins/users, etc.
 Built-in High Availability
 Your database synced to multiple nodes with auto failover – for FREE!
 Click-to-scale
 Latest T-SQL Features
 i.e. OFFSET/FETCH in SQL Server 2012
 REST API for managing databases
 CHEAP
 Connect to it from elsewhere
 Via SSMS, SSIS, SSAS, SSRS, SQL Agent, bcp, etc.
SQL Server VM IaaS Pricing
Size CPUs Memory BYO
License
Web
Edition
Standard
Edition
Enterprise
Edition
Small 1 1.75GB $66.96 $100.44 $476.16 $1,629.36
Medium 2 3.5GB $133.92 $167.40 $543.12 $1,696.32
Large 4 7GB $267.84 $301.32 $677.04 $1,830.24
X-Large 8 14GB $535.68 $602.64 $1,354.08 $3,660.48
A5 (HM) 2 14GB $297.60 $331.08 $706.80 $1,860.00
A6 (HM) 4 28GB $595.20 $628.68 $1,004.40 $2,157.60
A7 (HM) 8 56GB $1,190.40 $1,257.36 $2,008.80 $4,315.20
Azure SQL Database PaaS Pricing
Database Size Monthly Price
20 MB FREE
100 MB $5.00
1 GB $9.99
5 GB $25.98
10 GB $45.96
50 GB $125.88
100 GB $175.83
150 GB $225.78
> 150 GB * Premium Instance Pricing *
The Amazing NEW Button
Creating a New Azure SQL DB
Subscriptions and Directories
 Highest level: Directories
 Equivalent to Active Directory directories
 One is created for you automatically
 Can contain multiple Subscriptions
 Should be organization-level
 Next level: Subscriptions
 Now must belong to a Directory
 Contain multiple Services
 Tied to a credit card
 Should be used for keeping billing separate
 Lowest level: Services
 Must belong to a Subscription
 Changing the Subscription later is not fun
SQL Azure Firewall Rules
Move Your Data/Schema to SQL Azure
1. Entity Framework Migrations
2. “Generate Scripts” from SSMS
3. BCP.exe
4. BACPAC to Blob Storage
5. RedGate SQL Compare and SQL Data Compare
Entity Framework Migrations
 Schema and seeded data only
 Update-Database -ConnectionStringName ProdForMigrations
 Database.SetInitializer(new MigrateDatabaseToLatestVersion(…))
“Generate Scripts” for SQL Azure
BCP.exe to SQL Azure
 bcp AdventureWorks2012.Sales.Customer in
C:UsersuserDocumentsMoveDataToSQLAzure.txt -c -U
username@servername -S tcp:servername.database.windows.net -P
password
 http://tinyurl.com/azuresqlbcp
BACPAC to Blob Storage
 In SSMS: Tasks / Export Data-tier
Application / Save to Windows
Azure
 Save to Blob Storage
 Will throw errors on any Azure-
incompatible objects
 Load BACPAC from Blob Storage
into NEW database
 http://tinyurl.com/azuresqlbacpac
RedGate Tools
 SQL Compare to compare schema
 SQL Data Compare to compare table records
 Beware of long-connection timeouts!
 $495 from www.redgate.com
Step 2: Move the ASP.NET App
Options for Web Hosting in Azure
Azure Web Sites
• PaaS
• Cheaper to get started
• Supports ASP.NET,
Node.js, PHP, etc.
• Simpler to deploy
• Less powerful
Azure Cloud
Services
• PaaS
• Cheaper to scale
• Only ASP.NET
• Staging/Production VIP
Swap Deployments
• Very powerful
• RDP into instance(s)
• Auto-updated
IIS in a Windows
Server VM
• IaaS
• Expensive
• Full IIS/Windows
Features
• Need to manage
Windows Updates, etc.
Azure Cloud Service Web Roles
 ASP.NET WebForms, MVC, Web API, WCF, etc.
 Provisions a Windows Server VM and deploys your app to IIS
 Control over version of Windows Server (IIS)
 Windows Server 2008 R2, 2012, or 2012 R2
 No need to pay for Windows Server license
 Staging/Production deployments with VIP Swap
 Temporary or persisted local storage
 Load balancing built-in
 Click-to-scale or Auto-scale
 HTTP, HTTPS, or TCP internal/external endpoints
Azure Cloud Service Pricing
Size Name Virtual Cores Memory Price Per Hour Price Per Month
Extra-Small Shared 768 MB $0.02 ~ $15
Small 1 1.75 GB $0.08 ~ $60
Medium 2 3.5 GB $0.16 ~ $120
Large 4 7 GB $0.32 ~ $239
Extra-Large 8 14 GB $0.64 ~ $477
High-Memory A5 2 14 GB $0.35 ~ $261
High-Memory A6 4 28 GB $0.71 ~ $529
High-Memory A7 8 56 GB $1.41 ~ $1,050
www.windowsazure.com/en-us/pricing/details/cloud-services/
Cloud Service Deployment
1. Create an Azure Cloud Service project in your VS sln
2. Add your ASP.NET web site to the Cloud Service project as a Web
Role
3. Package your Cloud Service
4. Upload package to Azure, provisions new Staging environment
5. Test staging site at unique URL
6. VIP Swap staging into production (and vice versa)
7. Test production
8. Stop staging environment (save on billing costs)
Creating a Cloud Service
Our Existing Application
Creating a Cloud Service Project
Add Existing Project as Web Role
Choose Web Project as Web Role
Set Scale
Package Cloud Service for
Deployment
Deployment Options
Upload to Azure Portal
Uploading a Package
Provisioning Staging Environment
Up and Running
Finding Staging Site URL
Testing Staging
VIP Swap into Production
Test Production
DNS Setup
 Cloud Services
 CNAME only
 i.e.: www.myapp.com is CNAME’d to myapp.cloudapp.net
 Redirect from myapp.com to www.myapp.com
 Web Sites
 CNAME or A
 Must verify domain name with awverify CNAME
 Can be finicky!
Delete Staging Environment
Monitoring your Cloud Service
Scaling your Cloud Service
Step 3: Handling Session State
Azure Session State Options
Table Storage
•Cheap
•Slower
•Scalable
•HA built-in
•Persisted
SQL Database
•Cheap-ish
•Fast-ish
•Not as
scalable
•HA built-in
•Persisted
Cache Role
•Costly
•Fast
•Scalable
•HA available
•Feature rich
•Not persisted
In-Role Cache
•No cost
•Fast
•Scalable
•HA with
scale
•Feature rich
•Not persisted
Enable In-Role Caching
Enable Cache Providers
Set Cache Client Settings
Step 4: Enabling ACS for OAuth
Azure Access Control Service
 Provides managed identity federation
 Supports Active Directory and OAuth
 FREE! Like really, truly FREE!
 OAuth Providers:
 Microsoft Account
 Google
 Yahoo!
 Facebook
 Uses Windows Identity Foundation
 More info: http://msdn.microsoft.com/library/azure/hh147631.aspx
Overview
Create an ACS Namespace
Manage ACS Namespace
ACS Management Portal
Add Identity Provider(s)
Add Facebook Application
Configured Identity Providers
Add Relying Party Application
Generate Default Rules
Configure WIF
Web.config Changes
More Web.config Changes
[Authorize] Actions
Secure Page Redirect
Sign In at Identity Provider
… and we’re authenticated!
More ACS Information
 There was a bit of code I didn’t show you…
 http://garvincasimir.wordpress.com/2012/04/16/tutorial-mvc-
application-using-azure-acs-and-forms-authentication-part-2/
Step 5: Store the Images
Azure Storage Options
Blob
•Any binary
data
•Cheap
•Scalable
•HA built-in
Table
•Structured
non-
relational
data
•Cheap
•Scalable
•HA built-in
Queue
•FIFO
messages
•Cheap
•Scalable
•HA built-in
SQL
•Structured
relational
data
•Pricey
•Somewhat
scalable
•HA built-in
Blob Storage Overview
 Any binary data: images, files, disks, backups, etc.
 Block blobs: read/write entire blob at once
 Page blobs: read/write pages of blob randomly
 LRS: Locally-redundant Storage – 3 copies in same facility
 GRS: Geographically-redundant Storage – 6 copies in 2 regions
 LRS Pricing: 5 to 6.8 cents per GB per month or less
 GRS Pricing: 8.5 to 9.5 cents per GB per month or less
 New ZRS (Zone-redundant Storage) to match Amazon
Blob Storage Developer Workflow
1. Connection string: UseDevelopmentStorage=true
2. Start debugging, starts storage emulator
3. Test app
4. When ready to deploy, transform connection string
Setting up Blob Storage
Storage Dashboard
Manage Access Keys
Setup Connection Strings
Create a Blob
List Blobs
Get Blob Data
Step 6: Azure CDN for static content
When to use the Azure CDN
 Content Delivery Networks efficiently cache static content at edge
nodes close to your site viewers
 Great for JavaScript, CSS, images, etc.
 Well suited for content that doesn’t change often
 Helps your app scale
 Frees up your web server to do other things
Azure CDN Requirements
 Blob Storage CDN
 Blob container must be publicly available
 Blob container must allow anonymous access
 Items should be less than 10 GB in size
 Cloud Service CDN
 Content must be under /cdn folder
 Cloud Service must be a Production deployment
 Content must be available on port 80
 Content should be static
Azure CDN Pricing
 1 cent per month for every 100k transactions
 12 cents per GB transferred per month
 For North America and Europe; other zones more expensive
 Price drops per GB after 10 TB transferred per month
Create New CDN Endpoint
CDN Endpoint Details
Replace Content URLs
 Blob storage URL:
http://f23azuredemo.blob.core.windows.net/images/Microsoft.png
 Equivalent CDN URL:
http://az590111.vo.msecnd.net/images/Microsoft.png
 Alternatively, create a CNAME DNS entry for your CDN hostname
Step 7: Scheduled Tasks
Azure Scheduler
 Allows you to schedule HTTP requests to invoke your code
 Or post a message to a storage Queue
 Scheduled tasks are “jobs”
 Jobs are organized into Job Collections
Azure Scheduler Pricing
Free Tier
 FREE
 1 job collection
 Up to 5 jobs
 Max hourly frequency
 Up to 3,600 executions per month
Standard Tier
 $10/mo
 Up to 10 job collections
 Up to 50 jobs per collection
 Max every minute frequency
 Unlimited executions per month
Creating a Job Collection
Creating a Job Collection
Create New HTTP Job
Create New Queue Job
Define a Schedule
Step 8: Move the MSMQ Queue
Scenario
 MSMQ queue
 Each message is a job application
 Service picks up job applications for processing
User
Job
Application
MSMQ
Processing
Service
Azure Queue Offerings
Azure Storage Queue
 0.5 cents per 100k transactions
 7 cents per GB (LRS)
 Simple REST API
 Max 64KB message size
 Leasing to handle service failures
 Transaction logging
 7-day limit
 Batched receive only
Azure Service Bus
 1 cent per 10k messages
 WCF Integration
 Duplicate detection
 Transaction support
 Can exceed 7 days
 Messages should be < 64KB
 256 KB message size limit
 Guaranteed FIFO
 Batched send & receive
Azure Storage Queue Workflow
 Posting Messages
1. Create Queue Client
2. Create new CloudQueueMessage
3. Call AddMessageAsync
 Receiving Messages
1. Create Queue Client
2. Call GetMessageAsync
3. If null, return or wait to try again
4. Process message however you like
5. Call DeleteMessageAsync
Add Message to Storage Queue
Get Message from Queue
Azure Service Bus Workflow
 Prerequisite: Create SB namespace and queue, get credentials
 Posting Messages
1. Create Service Bus QueueClient
2. Create new BrokeredMessage
3. Call SendAsync
 Receiving Messages
1. Create Service Bus QueueClient
2. Call ReceiveAsync
3. If null, return or wait to try again
4. Process message however you would like
5. Call CompleteAsync on success, or Abandon on failure
Creating a Service Bus Queue
Creating a Service Bus Queue
Configure Service Bus Queue
Add Message to SB Queue
Receive Message from SB Queue
Step 9: Application Processing Service
Scenario
 Job Application Processing Service
 Windows Service
 Takes applications from MSMQ – now Service Bus or Storage Queue
 Sends emails to employers, stores data in SQL
Azure Worker Roles
 Similar to Cloud Service Web Roles
 Same instance sizing and pricing
 Same scaling options
 Same deployment model
 Same benefits/tradeoffs
 Designed for:
 WCF services
 WF services
 while (true) { … }
Add New Worker Role Project
Create New Worker Role Project
Project Structure
Worker Role Lifecycle
 bool OnStart()
 Called when role is started
 Load initial state, set options
 void Run()
 This is where your main work happens
 while (true) { … }
 void OnStop()
 Called when role is stopping
 This can be a manual stop or Windows Updates
 Clean up after your service
 Max 5 minutes, then terminated
Worker Role RunAsync
Process Queue Messages
Step 10: High Availability and
Disaster Recovery
HA and DR: SQL Database
 HA Built-in
 3 nodes in same facility
 One Primary and Two Secondary nodes
 Transient failure retry logic required
 DR options
 BACPAC to another data center
 Sync data with SSIS (from another server/VM)
 RedGate Cloud Services – cloudservices.redgate.com
 Backup SQL Database to Blob Storage or Amazon S3
 Transactionally-consistent
 Set custom retention policy
RedGate Cloud Services Pricing
Backup Frequency Monthly Price
Weekly $2.50
Daily $10.00
2x Daily (12 hrs) $20.00
4x Daily (6 hrs) $40.00
Does not include storage, transaction, or bandwidth costs.
DON’T HAVE A BACKUP STRATEGY!
HA and DR: Azure Storage
 HA Built-in
 LRS: 3 copies of data in same facility
 ZRS: 3 copies of data in different facilities, same region
 GRS: 6 copies of data, 3 each in 2 regions
 DR Options
 Rely on ZRS or GRS
 RedGate Cloud Services – cloudservices.redgate.com
 Backup blobs or tables to another blob storage region or Amazon S3
 Table backups are compressed JSON
 Same pricing as SQL backup
HA and DR: Cloud Services
 HA Available
 Should use at least 2 instances of each web/worker role
 99.95% SLA if at least 2 instances
 Update domains maintain uptime
 DR Options
 Azure Traffic Manager
 Cloud service running in multiple regions
 Failover to other region, or load balance (costly)
 BYO Traffic Manager
 F5, Juniper, etc.
HA and DR: Service Bus Queues
 HA Built-in
 99.9% monthly SLA
 DR Options
 Persist queue messages elsewhere as backup (blob, table, sql, etc)
 Multiple SB namespaces/queues in different regions
 Sync queues
 Restore queue messages from backup in other region (if needed)
Summary
Summary
The Old Way
 ASP.NET Web Application
 SQL Server Database
 ASP.NET State Server
 Manual OAuth Wire-up
 CSS, JS, Image content in IIS
 Windows Scheduled Tasks
 MSMQ queue for job applications
 Windows service
 DR datacenter across country
The Azure Way
 Cloud Service Web Role
 Azure SQL Database
 In-Role Distributed Caching
 Azure Access Control Service
 Azure CDN, Blob Storage
 Azure Scheduler
 Azure Storage Queue / Service Bus
 Cloud Service Worker Role
 HA by default, easy DR options
Code Changes
 Use only SQL Database features available
 Add transient failure retry logic for ADO.NET queries
 Add HrdClient for Azure Access Control Service
 Rewrite URLs for Azure CDN
 Code to read/write images from Blob Storage
 Code to handle HTTP or queue message from scheduled task
 Handle Storage Queue or Service Bus Queue messages
 Move Windows Service code to Worker Role
Azure Features Not Covered
 Table Storage
 Web Sites
 Virtual Machines
 Mobile Services
 Mobile Push Notifications
 HDInsight – Hadoop on Azure
 Media Services – Olympics
 Service Bus Topics
 Service Bus Relays
 Service Bus Notification Hubs
 Cache Roles
 BizTalk Services
 Recovery Services
 Virtual Networks
 Management Alerts
 Azure Active Directory
 Multi-factor Authentication
 Rights management
 Add-ons
 … and other features added since
I made this presentation
Q&A

Move to azure

  • 1.
    Move to Azure! FREEMICROSOFT AZURE INFORMATIONAL SESSION PAUL IRWIN, LEAD SOFTWARE ENGINEER @ FEATURE[23]
  • 2.
    About Me  PaulIrwin  Lead Software Engineer at feature[23]  Past experience as lead engineer on Fanatics’ ecommerce platform  Microsoft Certified Solutions Developer: Web Applications  Co-founder of Code on the Beach and Code on the Sea  pirwin@feature23.com  @paulirwin
  • 3.
    Code on theBeach  The Beachside Software Engineering Conference  www.codeonthebeach.com  @CodeOnTheBeach  August 8 – 10, 2014  Registration open now at $250  Charles Petzold, Greg Young, and John Papa  World class resort hotel  Beach games and events  Excellent networking
  • 4.
    Code on theSea  The Software Engineering Cruise  www.codeonthesea.com  @CodeOnTheSea  February 28 – March 5, 2015  Registration starting at $650  5 Day Cruise to Bahamas from Jacksonville  Carnival Fascination  Family friendly  Our greatest hospitality conference
  • 5.
    Why move toMicrosoft Azure? WHAT’S IN IT FOR ME?
  • 6.
    Why move toMicrosoft Azure?  Per-minute billing: pay only for what you use  Instant provisioning  Insanely scalable  Save on Windows Server, SQL Server, etc. licenses  Less infrastructure maintenance costs  No need to deal with hardware failures  Geographically-distributed High Availability / Disaster Recovery  Tons of built-in APIs and services
  • 7.
  • 8.
  • 9.
  • 10.
    Moving to MicrosoftAzure  Covered today: ASP.NET Apps (WebForms, MVC, Web API, etc.)  Not covered today: PHP, Python, Node.js, Ruby, Java, etc.  Simple apps can usually be moved as-is  Complex apps need architecture thought  Platform-as-a-Service vs Infrastructure-as-a-Service
  • 11.
    PaaS vs IaaS Platform-as-a-Service(PaaS)  Pros  Easy to scale  Can be cheaper than IaaS  Feature-rich cloud APIs  No software licenses needed  Cons  Can necessitate re-architecting  Less control Infrastructure-as-a-Service (IaaS)  Pros  Full control  Run any software unmodified  BYO or Per-minute Licenses  Cons  Usually more expensive  Must scale the “old way” or create custom scripts  You still need licenses
  • 12.
    Scenario  Employment ASP.NETMVC Web Application in Web Farm  SQL Server database  ASP.NET State Server for Session State  Facebook and Google OAuth sign-in  Lots of CSS, JS, and image content  Windows Scheduled Tasks to inform applicants of new opportunities  MSMQ queue where job applications are received for processing  Job application processor Windows Service  DR datacenter across country
  • 13.
    Step 1: Movethe SQL Database
  • 14.
    Step 1: Movethe SQL Database  SQL Server in an Azure Virtual Machine (IaaS solution)  Pros  Ultimate power and flexibility  Full feature set  SSIS, SSAS, SSRS, SQL Agent  RDP into the VM for management  No new training required  Easy to set up AlwaysOn/mirroring HA  Option to pay per-minute with SQL Server license included  Cons  EXTREMELY expensive if license included and running 24/7  Not as performant as high-end on-prem hardware  Manage updates/service packs manually
  • 15.
    Step 1: Movethe SQL Database  Azure SQL Database (PaaS solution)  Pros  Very affordable (starting at $5/mo)  Scales easily  Built-in High Availability  Auto-management of updates/service packs  No need for Windows Server / SQL Server licenses  Cons  Limited feature set  Limited control over instances
  • 16.
    Azure SQL DatabaseMissing Features • Integration Services • Analysis Services • Reporting Services • SQL Agent • SQL CLR • Msdb, model databases • Traditional Backup/Restore/Attach • Distributed transactions • Unlimited DB size • Windows Authentication • Extended Events • FILESTREAM • File Groups (i.e. ON PRIMARY) • File management • Full-text search • Replication / Mirroring • Service Broker • XML Indexing • “USE [database]” / Cross-DB queries • Hekaton – In-Memory OLTP (SQL Svr 2014)
  • 17.
    Azure SQL DatabaseFeatures  Just about everything else  Tables, indexes, FKs, views, stored procedures, functions, triggers, CTEs, custom types, TVPs, temp tables, logins/users, etc.  Built-in High Availability  Your database synced to multiple nodes with auto failover – for FREE!  Click-to-scale  Latest T-SQL Features  i.e. OFFSET/FETCH in SQL Server 2012  REST API for managing databases  CHEAP  Connect to it from elsewhere  Via SSMS, SSIS, SSAS, SSRS, SQL Agent, bcp, etc.
  • 18.
    SQL Server VMIaaS Pricing Size CPUs Memory BYO License Web Edition Standard Edition Enterprise Edition Small 1 1.75GB $66.96 $100.44 $476.16 $1,629.36 Medium 2 3.5GB $133.92 $167.40 $543.12 $1,696.32 Large 4 7GB $267.84 $301.32 $677.04 $1,830.24 X-Large 8 14GB $535.68 $602.64 $1,354.08 $3,660.48 A5 (HM) 2 14GB $297.60 $331.08 $706.80 $1,860.00 A6 (HM) 4 28GB $595.20 $628.68 $1,004.40 $2,157.60 A7 (HM) 8 56GB $1,190.40 $1,257.36 $2,008.80 $4,315.20
  • 19.
    Azure SQL DatabasePaaS Pricing Database Size Monthly Price 20 MB FREE 100 MB $5.00 1 GB $9.99 5 GB $25.98 10 GB $45.96 50 GB $125.88 100 GB $175.83 150 GB $225.78 > 150 GB * Premium Instance Pricing *
  • 20.
  • 21.
    Creating a NewAzure SQL DB
  • 22.
    Subscriptions and Directories Highest level: Directories  Equivalent to Active Directory directories  One is created for you automatically  Can contain multiple Subscriptions  Should be organization-level  Next level: Subscriptions  Now must belong to a Directory  Contain multiple Services  Tied to a credit card  Should be used for keeping billing separate  Lowest level: Services  Must belong to a Subscription  Changing the Subscription later is not fun
  • 23.
  • 24.
    Move Your Data/Schemato SQL Azure 1. Entity Framework Migrations 2. “Generate Scripts” from SSMS 3. BCP.exe 4. BACPAC to Blob Storage 5. RedGate SQL Compare and SQL Data Compare
  • 25.
    Entity Framework Migrations Schema and seeded data only  Update-Database -ConnectionStringName ProdForMigrations  Database.SetInitializer(new MigrateDatabaseToLatestVersion(…))
  • 26.
  • 27.
    BCP.exe to SQLAzure  bcp AdventureWorks2012.Sales.Customer in C:UsersuserDocumentsMoveDataToSQLAzure.txt -c -U username@servername -S tcp:servername.database.windows.net -P password  http://tinyurl.com/azuresqlbcp
  • 28.
    BACPAC to BlobStorage  In SSMS: Tasks / Export Data-tier Application / Save to Windows Azure  Save to Blob Storage  Will throw errors on any Azure- incompatible objects  Load BACPAC from Blob Storage into NEW database  http://tinyurl.com/azuresqlbacpac
  • 29.
    RedGate Tools  SQLCompare to compare schema  SQL Data Compare to compare table records  Beware of long-connection timeouts!  $495 from www.redgate.com
  • 30.
    Step 2: Movethe ASP.NET App
  • 31.
    Options for WebHosting in Azure Azure Web Sites • PaaS • Cheaper to get started • Supports ASP.NET, Node.js, PHP, etc. • Simpler to deploy • Less powerful Azure Cloud Services • PaaS • Cheaper to scale • Only ASP.NET • Staging/Production VIP Swap Deployments • Very powerful • RDP into instance(s) • Auto-updated IIS in a Windows Server VM • IaaS • Expensive • Full IIS/Windows Features • Need to manage Windows Updates, etc.
  • 32.
    Azure Cloud ServiceWeb Roles  ASP.NET WebForms, MVC, Web API, WCF, etc.  Provisions a Windows Server VM and deploys your app to IIS  Control over version of Windows Server (IIS)  Windows Server 2008 R2, 2012, or 2012 R2  No need to pay for Windows Server license  Staging/Production deployments with VIP Swap  Temporary or persisted local storage  Load balancing built-in  Click-to-scale or Auto-scale  HTTP, HTTPS, or TCP internal/external endpoints
  • 33.
    Azure Cloud ServicePricing Size Name Virtual Cores Memory Price Per Hour Price Per Month Extra-Small Shared 768 MB $0.02 ~ $15 Small 1 1.75 GB $0.08 ~ $60 Medium 2 3.5 GB $0.16 ~ $120 Large 4 7 GB $0.32 ~ $239 Extra-Large 8 14 GB $0.64 ~ $477 High-Memory A5 2 14 GB $0.35 ~ $261 High-Memory A6 4 28 GB $0.71 ~ $529 High-Memory A7 8 56 GB $1.41 ~ $1,050 www.windowsazure.com/en-us/pricing/details/cloud-services/
  • 34.
    Cloud Service Deployment 1.Create an Azure Cloud Service project in your VS sln 2. Add your ASP.NET web site to the Cloud Service project as a Web Role 3. Package your Cloud Service 4. Upload package to Azure, provisions new Staging environment 5. Test staging site at unique URL 6. VIP Swap staging into production (and vice versa) 7. Test production 8. Stop staging environment (save on billing costs)
  • 35.
  • 36.
  • 37.
    Creating a CloudService Project
  • 38.
  • 39.
    Choose Web Projectas Web Role
  • 40.
  • 41.
    Package Cloud Servicefor Deployment
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
    VIP Swap intoProduction
  • 50.
  • 51.
    DNS Setup  CloudServices  CNAME only  i.e.: www.myapp.com is CNAME’d to myapp.cloudapp.net  Redirect from myapp.com to www.myapp.com  Web Sites  CNAME or A  Must verify domain name with awverify CNAME  Can be finicky!
  • 52.
  • 53.
  • 54.
  • 55.
    Step 3: HandlingSession State
  • 56.
    Azure Session StateOptions Table Storage •Cheap •Slower •Scalable •HA built-in •Persisted SQL Database •Cheap-ish •Fast-ish •Not as scalable •HA built-in •Persisted Cache Role •Costly •Fast •Scalable •HA available •Feature rich •Not persisted In-Role Cache •No cost •Fast •Scalable •HA with scale •Feature rich •Not persisted
  • 57.
  • 58.
  • 59.
  • 60.
    Step 4: EnablingACS for OAuth
  • 61.
    Azure Access ControlService  Provides managed identity federation  Supports Active Directory and OAuth  FREE! Like really, truly FREE!  OAuth Providers:  Microsoft Account  Google  Yahoo!  Facebook  Uses Windows Identity Foundation  More info: http://msdn.microsoft.com/library/azure/hh147631.aspx
  • 62.
  • 63.
    Create an ACSNamespace
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
    Add Relying PartyApplication
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
    Sign In atIdentity Provider
  • 77.
    … and we’reauthenticated!
  • 78.
    More ACS Information There was a bit of code I didn’t show you…  http://garvincasimir.wordpress.com/2012/04/16/tutorial-mvc- application-using-azure-acs-and-forms-authentication-part-2/
  • 79.
    Step 5: Storethe Images
  • 80.
    Azure Storage Options Blob •Anybinary data •Cheap •Scalable •HA built-in Table •Structured non- relational data •Cheap •Scalable •HA built-in Queue •FIFO messages •Cheap •Scalable •HA built-in SQL •Structured relational data •Pricey •Somewhat scalable •HA built-in
  • 81.
    Blob Storage Overview Any binary data: images, files, disks, backups, etc.  Block blobs: read/write entire blob at once  Page blobs: read/write pages of blob randomly  LRS: Locally-redundant Storage – 3 copies in same facility  GRS: Geographically-redundant Storage – 6 copies in 2 regions  LRS Pricing: 5 to 6.8 cents per GB per month or less  GRS Pricing: 8.5 to 9.5 cents per GB per month or less  New ZRS (Zone-redundant Storage) to match Amazon
  • 82.
    Blob Storage DeveloperWorkflow 1. Connection string: UseDevelopmentStorage=true 2. Start debugging, starts storage emulator 3. Test app 4. When ready to deploy, transform connection string
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
    Step 6: AzureCDN for static content
  • 91.
    When to usethe Azure CDN  Content Delivery Networks efficiently cache static content at edge nodes close to your site viewers  Great for JavaScript, CSS, images, etc.  Well suited for content that doesn’t change often  Helps your app scale  Frees up your web server to do other things
  • 92.
    Azure CDN Requirements Blob Storage CDN  Blob container must be publicly available  Blob container must allow anonymous access  Items should be less than 10 GB in size  Cloud Service CDN  Content must be under /cdn folder  Cloud Service must be a Production deployment  Content must be available on port 80  Content should be static
  • 93.
    Azure CDN Pricing 1 cent per month for every 100k transactions  12 cents per GB transferred per month  For North America and Europe; other zones more expensive  Price drops per GB after 10 TB transferred per month
  • 94.
  • 95.
  • 96.
    Replace Content URLs Blob storage URL: http://f23azuredemo.blob.core.windows.net/images/Microsoft.png  Equivalent CDN URL: http://az590111.vo.msecnd.net/images/Microsoft.png  Alternatively, create a CNAME DNS entry for your CDN hostname
  • 97.
  • 98.
    Azure Scheduler  Allowsyou to schedule HTTP requests to invoke your code  Or post a message to a storage Queue  Scheduled tasks are “jobs”  Jobs are organized into Job Collections
  • 99.
    Azure Scheduler Pricing FreeTier  FREE  1 job collection  Up to 5 jobs  Max hourly frequency  Up to 3,600 executions per month Standard Tier  $10/mo  Up to 10 job collections  Up to 50 jobs per collection  Max every minute frequency  Unlimited executions per month
  • 100.
    Creating a JobCollection
  • 101.
    Creating a JobCollection
  • 102.
  • 103.
  • 104.
  • 105.
    Step 8: Movethe MSMQ Queue
  • 106.
    Scenario  MSMQ queue Each message is a job application  Service picks up job applications for processing User Job Application MSMQ Processing Service
  • 107.
    Azure Queue Offerings AzureStorage Queue  0.5 cents per 100k transactions  7 cents per GB (LRS)  Simple REST API  Max 64KB message size  Leasing to handle service failures  Transaction logging  7-day limit  Batched receive only Azure Service Bus  1 cent per 10k messages  WCF Integration  Duplicate detection  Transaction support  Can exceed 7 days  Messages should be < 64KB  256 KB message size limit  Guaranteed FIFO  Batched send & receive
  • 108.
    Azure Storage QueueWorkflow  Posting Messages 1. Create Queue Client 2. Create new CloudQueueMessage 3. Call AddMessageAsync  Receiving Messages 1. Create Queue Client 2. Call GetMessageAsync 3. If null, return or wait to try again 4. Process message however you like 5. Call DeleteMessageAsync
  • 109.
    Add Message toStorage Queue
  • 110.
  • 111.
    Azure Service BusWorkflow  Prerequisite: Create SB namespace and queue, get credentials  Posting Messages 1. Create Service Bus QueueClient 2. Create new BrokeredMessage 3. Call SendAsync  Receiving Messages 1. Create Service Bus QueueClient 2. Call ReceiveAsync 3. If null, return or wait to try again 4. Process message however you would like 5. Call CompleteAsync on success, or Abandon on failure
  • 112.
  • 113.
  • 114.
  • 115.
  • 116.
  • 117.
    Step 9: ApplicationProcessing Service
  • 118.
    Scenario  Job ApplicationProcessing Service  Windows Service  Takes applications from MSMQ – now Service Bus or Storage Queue  Sends emails to employers, stores data in SQL
  • 119.
    Azure Worker Roles Similar to Cloud Service Web Roles  Same instance sizing and pricing  Same scaling options  Same deployment model  Same benefits/tradeoffs  Designed for:  WCF services  WF services  while (true) { … }
  • 120.
    Add New WorkerRole Project
  • 121.
    Create New WorkerRole Project
  • 122.
  • 123.
    Worker Role Lifecycle bool OnStart()  Called when role is started  Load initial state, set options  void Run()  This is where your main work happens  while (true) { … }  void OnStop()  Called when role is stopping  This can be a manual stop or Windows Updates  Clean up after your service  Max 5 minutes, then terminated
  • 124.
  • 125.
  • 126.
    Step 10: HighAvailability and Disaster Recovery
  • 127.
    HA and DR:SQL Database  HA Built-in  3 nodes in same facility  One Primary and Two Secondary nodes  Transient failure retry logic required  DR options  BACPAC to another data center  Sync data with SSIS (from another server/VM)  RedGate Cloud Services – cloudservices.redgate.com  Backup SQL Database to Blob Storage or Amazon S3  Transactionally-consistent  Set custom retention policy
  • 128.
    RedGate Cloud ServicesPricing Backup Frequency Monthly Price Weekly $2.50 Daily $10.00 2x Daily (12 hrs) $20.00 4x Daily (6 hrs) $40.00 Does not include storage, transaction, or bandwidth costs.
  • 129.
    DON’T HAVE ABACKUP STRATEGY!
  • 130.
    HA and DR:Azure Storage  HA Built-in  LRS: 3 copies of data in same facility  ZRS: 3 copies of data in different facilities, same region  GRS: 6 copies of data, 3 each in 2 regions  DR Options  Rely on ZRS or GRS  RedGate Cloud Services – cloudservices.redgate.com  Backup blobs or tables to another blob storage region or Amazon S3  Table backups are compressed JSON  Same pricing as SQL backup
  • 131.
    HA and DR:Cloud Services  HA Available  Should use at least 2 instances of each web/worker role  99.95% SLA if at least 2 instances  Update domains maintain uptime  DR Options  Azure Traffic Manager  Cloud service running in multiple regions  Failover to other region, or load balance (costly)  BYO Traffic Manager  F5, Juniper, etc.
  • 132.
    HA and DR:Service Bus Queues  HA Built-in  99.9% monthly SLA  DR Options  Persist queue messages elsewhere as backup (blob, table, sql, etc)  Multiple SB namespaces/queues in different regions  Sync queues  Restore queue messages from backup in other region (if needed)
  • 133.
  • 134.
    Summary The Old Way ASP.NET Web Application  SQL Server Database  ASP.NET State Server  Manual OAuth Wire-up  CSS, JS, Image content in IIS  Windows Scheduled Tasks  MSMQ queue for job applications  Windows service  DR datacenter across country The Azure Way  Cloud Service Web Role  Azure SQL Database  In-Role Distributed Caching  Azure Access Control Service  Azure CDN, Blob Storage  Azure Scheduler  Azure Storage Queue / Service Bus  Cloud Service Worker Role  HA by default, easy DR options
  • 135.
    Code Changes  Useonly SQL Database features available  Add transient failure retry logic for ADO.NET queries  Add HrdClient for Azure Access Control Service  Rewrite URLs for Azure CDN  Code to read/write images from Blob Storage  Code to handle HTTP or queue message from scheduled task  Handle Storage Queue or Service Bus Queue messages  Move Windows Service code to Worker Role
  • 136.
    Azure Features NotCovered  Table Storage  Web Sites  Virtual Machines  Mobile Services  Mobile Push Notifications  HDInsight – Hadoop on Azure  Media Services – Olympics  Service Bus Topics  Service Bus Relays  Service Bus Notification Hubs  Cache Roles  BizTalk Services  Recovery Services  Virtual Networks  Management Alerts  Azure Active Directory  Multi-factor Authentication  Rights management  Add-ons  … and other features added since I made this presentation
  • 137.