SlideShare ist ein Scribd-Unternehmen logo
1 von 120
Today’s Goal
Go much deeper than “hello world” and
cover key development patterns and
practices that will help you build real world
cloud apps
Cloud Patterns we will Cover
Part 1:

Part 2:

•

•

•
•
•
•
•
•

Automate Everything
Source Control
Continuous Integration &
Delivery
Web Dev Best Practices
Enterprise Identity Integration
Data Storage Options
Data Partitioning Strategies

•
•
•
•
•

Unstructured Blob Storage
Designing to Survive
Failures
Monitoring & Telemetry
Transient Fault Handling
Distributed Caching
Queue Centric Work Pattern
Cloud Patterns we will discuss
Part 1:

Part 2:

•

•

•
•
•
•
•

Automate Everything
Source Control
Continuous Integration &
Delivery
Web Dev Best Practices
Enterprise Identity Integration
Data Storage Options

•
•
•
•
•
•

Data Partitioning Strategies
Unstructured Blob Storage
Designing to Survive
Failures
Monitoring & Telemetry
Transient Fault Handling
Distributed Caching
Queue Centric Work Pattern
Dev/Ops Workflow
Develop



Deploy

Learn

Operate

Repeatable
 Reliable
 Predictable
 Low Cycle Time
Source Control
•

Use it! 

•

Treat automation scripts as source code and version it
together with your application code

•

Parameterize automation scripts –> never check-in
secrets

•

Structure your source branches to enable DevOps
workflow
Example Source Branch Structure
Master

Code that is live in production

Code in final testing before production
Stagin
g
Where features are being integrated
Developmen
t
Feature Feature
Feature
Branch A Branch B Branch C
Need to make a quick hotfix?
Master

Stagin
g
Developmen
Hotfix
t
145
Feature Feature
Feature
Branch A Branch B Branch C
Continuous Integration & Delivery
•

Each check-in to Development, Staging and Master
branches should kick off automated build + check-in
tests

•

Use your automation scripts so that successful checkins to Development and Staging automatically deploy to
environments in the cloud for more in-depth testing

•

Deploying Master to Production can be automated, but
more commonly requires an explicit human to sign-off
before live production updated
Visual Studio Online
•
•
•
•
•
•
•

TFS and Git support
Elastic Build Service
Continuous Integration
Continuous Delivery
Load Testing Support
Team Room
Collaboration
Agile Project
Management
Web Development Best Practices
•

Scale-out your web tier using stateless web servers
behind smart load balancers

•

Dynamically scale your web tier based on actual usage
load
Windows Azure Web
Sites
 Build with ASP.NET, Node.js, PHP or Python


Deploy in seconds with
FTP, WebDeploy, Git, TFS



Easily scale up as demand grows
Windows Azure Web Site Service
Load Balancer
(1 of n)

Load Balancer
(2 of n)

Developer or
Automation
Script

Reserved Instance
Virtual Machine with
IIS already setup
(1 of n…)
(1 of 2)

Reserved Instance
Virtual Machine with
Server Failure….
IIS already setup
(2 of 2)
(2 of n…)

Deployment
Service
(FTP, WebDeploy,
GIT, TFS, etc)

Reserved Instance
Virtual Machine with
IIS already setup
(2 of 2)
AutoScale – Built-into Windows Azure
•
•
•
•

AutoScale based on real
usage
CPU % thresholds
Queue Depth
Supports schedule times
Web Development Best Practices
•

Scale-out your web tier using stateless web servers
behind smart load balancers

•

Dynamically scale your web tier based on actual usage
load

•

Avoid using session state (use cache provider if you
must)

•

Use CDN to edge cache static file assets
(images, scripts)
Windows Azure AD


Active Directory in the Cloud



Integrate with on-premises Active
Directory



Enable single sign-on within your apps



Supports SAML, WS-Fed, and OAuth
2.0



Enterprise Graph REST API
Config wizard automatically launches
Enter Windows Azure AD Credentials
Enter Windows Server AD Credentials
Enable Hashed Password Sync
Almost done
Finished – Sync will start
automatically

No need to install on multiple DC’s. No reboot required!
Enable SSO with Azure AD and
ASP.NET
Enable SSO with Azure AD and
ASP.NET
Enable SSO with Azure AD and
ASP.NET
Data Storage
Range of options for storing data
Different query semantics, durability, scalability and ease-of-use options available in the cloud

Compositional approaches
No “one size fits all” – often using multiple storage systems in a single app provides best approach

Balancing priorities
Investigate and understand the strengths and limitations of different options
Data Storage Options on Windows Azure

Platform as a Service
(managed services)

Infrastructure as a Service
(virtual machines)
Some Data Storage Questions to Ask
Choosing Relational Database on
Windows Azure
Azure SQL Database (PaaS) SQL Server in a Virtual Machine (IaaS)
Pros

•
•
•
•
•

Pros
Database as a Service (no VMs required)
Database-Level SLA (HA built-in)
Updates, patches handled automatically for you
Pay only for what you use (no license required)
Good for handling large numbers of smaller
databases (<=150 GB each)

Cons

•
•
•

Some feature gaps with on-prem SQL Server
(lack of CLR, TDE, Compression support, etc.)
Database size limit of 150GB
Recommended max table size of 10GB

•
•
•
•
•

Feature compatible with on-prem SQL Server
VM-level SLA (SQL Server HA via AlwaysOn in 2+VMs)
You have complete control over how SQL is managed
Can re-use SQL licenses or pay by the hour for one
Good for handling fewer but larger (1TB+) databases

Cons

•
•
•

Updates/patches (OS and SQL) are your responsibility
Creation and management of DBs your responsibility
Disk IOPS limited to ~8000 IOPS (via 16 data drives)

http://blogs.msdn.com/b/windowsazure/archive/2013/02/14/choosing-between-sql-server-in-windows-azure-vm-amp-windows-azure-sql-database.aspx
Understanding the 3-Vs of Data
Storage
Volume
How much data will you ultimately store?

Velocity
What is the rate at which your data will grow? What will the usage pattern look
like?

Variety
What type of data will you store? Relational, images, key-value pairs, social
graphs?
Scale out your data by partitioning it
Vertical Partitioning
Horizontal Partitioning (Sharding)
Hybrid Partitioning
It is a lot easier to choose one of these
partitioning schemes before you go
live….
Data Storage Options on Windows Azure

Platform as a Service
(managed services)

Infrastructure as a Service
(virtual machines)
Blob Storage
Design to survive failures
Given enough time and pressure, everything fails
How will your application behave?
• Gracefully handle failure modes, continue to deliver value
• Or not so gracefully…

Types of failures:
• Transient - Temporary service interruptions, self-healing
• Enduring - Require intervention.
Failure scope
Regions may become
unavailable

Region

Connectivity Issues, acts of nature

Service

Entire Services May Fail
Service dependencies (internal and external)

Machines

Individual Machines May Fail
Connectivity Issues (transient failures), hardware
failures, configuration and code errors
What do the 9’s mean in an SLA?
Making it a little more real…
How to design with this in mind?
•

•
•
•
•

Have good monitoring and telemetry
Handle Transient Faults
Use Distributed Caching
Circuit Breakers
Loose Coupling via the Queue Centric Work
Pattern
Running a Live Site Service
Running without Insight / Telemetry
Buy/Rent a Telemetry Solution
http://www.hanselman.com/blog/PennyPinchingInTheCloudEnablingNewRelicPerformanceMonitoringOnWindowsAzureWebsites.aspx
Logging for Insight
Instrument your code for production logging
• If you didn’t capture it, it didn’t happen

Implement inter-service monitoring and logging
• Capture and log inter-service activity
• Capture both the availability and latency of all inter-service calls

Run-time configurable logging
• Enable activation (capture or delivery) of logging levels without
requiring a redeployment of your application
Logging Insight
Choosing Logging Levels
•

Must be able to isolate issues solely through
telemetry logs

Level

Context

Error

Always on in production. Any errors will
trigger ACTION to resolve (automated or
human).
• Configuration issues
• Application failure (cascading failure or
critical service down)

•

Telemetry is meant to INFORM (I want you to know
something) or ACT (I want you to do something)

•

Too much ACT creates noise – too much work to sift
through to find genuine issues

•

In a cloud app, only things that require intervention
(automatic or manual) should trigger ACT

Warning

Always on in production. Warnings will
INFORM, and may signal potential ACTION
• Timeouts or throttling in external service

Design your telemetry levels (and consumers) with
this in mind

Info

Always on in production. Info messages
INFORM during diagnostics and
troubleshooting

Debug
(Verbose)

On during active debugging and
troubleshooting on a case by case basis

•

•

Machines failing is NOT something that should require
manual intervention in a good cloud application.
Built-in Logging Support in Azure
Web Sites

Storage Analytics

System.Diagnostics -> Table Storage
Logs -> Blob Storage
HTTP/FREB Logs -> File-System or Blob Storage
Metrics -> Table Storage
Windows Events -> File-System

Cloud Services
System.Diagnostics -> Table Storage
HTTP/FREB Logs -> Blob Storage
Performance Counters -> Table Storage
Windows Events -> Table Storage
Custom Directory Monitoring -> Copy files to Blob
Storage
Transient Failures
Temporary service interruptions, typically self-healing
•
•
•

Connection failures to an external service (or suddenly aborted connections)
Busy signals from an external service (sometimes due to “noisy neighbors”)
External service throttling your app due to overly aggressive calls

Can often mitigate with smart retry/back-off logic
•
•
•

Transient Fault Handling Block from P&P can make this easy to express
Storage Library already has built-in support for retry/back-offs
Entity Framework V6 will include built-in support for it with SQL Databases
Patterns & Practices
Transient Fault Handling Application Block

http://nuget.org/packages/EnterpriseLibrary.WindowsAzure.TransientFaultHandling
Entity Framework
Built-in support fault-retry logic coming with EF6

Above code will do connection retries up to 3 times
within 5 seconds (with an exponential back-off
delay)
Be mindful of max delay thresholds

At some point, your request could be blocking the line and cause back pressure.
Often better to fail gracefully at some point, and get out of the queue!
Distributed Caching
Not always practical to hit data source on every
request
•

Throughput and latency impact as traffic grows

Data doesn’t always need to be immediately
consistent even when things are working well
Cached copy of data can help you provide better
customer experience when things aren’t working
well
Windows Azure Cache Service
High throughput, low-latency distributed cache
•
•

In-memory (not written to disk)
Scale-out architecture that distributes across many servers

Key/Value Programming Model
•

•

Get(key) => avg. 1ms latency end-to-end
Put(key) => avg. 1.2ms latency end-to-end

128MB to 150GB of content can be stored in each Cache Service
Web.Config Update
Coding against the cache
Monitoring Usage
Scaling the Cache
2
4
Popular Cache Population Strategies
On Demand / Cache Aside
•

Web/App Tier pulls data from source and caches on cache hit miss

Background Data Push
•

Background services (VMs or worker roles) push data into cache on a
regular schedule, and then the web tier always pull from the cache

Circuit Breaker
•

Switch from live dependency to cached data if dependency goes down
Use distributed caching in any application whose
users share a lot of common data/content or
where the content doesn’t change frequently
Queue Centric Work Pattern
Enable loose coupling between a web-tier and backend
service by asynchronously sending messages via a queue
Scenarios it is useful for:
•
•
•

•

Doing work that is time consuming (high latency)
Doing work that is resource intensive (high CPU)
Doing work that requires an external service that might not always be available
Protecting against sudden load bursts (rate leveling)

Cons:
•

Trade off can be higher end-to-end times for short latency scenarios
Tightly Coupled
Tightly Coupled
Loosely Coupled
Loosely Coupled
Loosely Coupled
Scale Tiers Independently
Create Action in our Web App (before)
Create Action in our Web App (after)
Simple SendMessage Implementation
Why does this bring us?
Resiliency if our database is ever unavailable
•

Our customers can still make FixIt requests even if this happens

Ability to add more backend logic on each FixIt
request
•
•

•

No longer gated by what can be done in lifetime of HTTP request
Examples: workflow routing on who it is assigned
to, email/SMS, etc
Queues can give us resiliency to these additional external
services too
What is our composite SLA now for the
“Create FixIt Request” scenario?
Previously

Now
How could we make it even better?
Have two queues – in two different regions
Chances of both being down at same time very, very small
Web App and Queue Listeners could be smart and fail-over if primary is having a problem

Have the web-app deployed in two different regions
Use Windows Azure Traffic Manager to automatically redirect users if one is having a
problem
Cloud Patterns we Covered
Part 1:

Part 2:

•

•

•
•
•
•
•

Automate Everything
Source Control
Continuous Integration &
Delivery
Web Dev Best Practices
Enterprise Identity Integration
Data Storage Options

•
•
•
•
•
•

Data Partitioning Strategies
Unstructured Blob Storage
Designing to Survive
Failures
Monitoring & Telemetry
Transient Fault Handling
Distributed Caching
Queue Centric Work Pattern
Summary
Cloud computing offers tremendous opportunities
Reach more users and customers, and in a deeper way
Be more cost effective by elastically scaling up and down
Deliver solutions that weren’t possible or practical before
Leverage a flexible, rich, development platform

Follow these cloud patterns and you’ll be even more
successful with the solutions you build
To Learn More
FailSafe: Building Scalable, Resilient Cloud Services
http://aka.ms/FailsafeCloud
Cloud Service Fundamentals in Windows Azure http://aka.ms/csf
Cloud Architecture Patterns: Using Microsoft Azure
great book by Bill Wilder
Release It!: Design and Deploy Production-Ready Software
Great book by Michael T. Nygard
start now.
http://WindowsAzure.com
Building Real World Applications using Windows Azure - Scott Guthrie, 2nd December 2013

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Tech ED 2014 Running Oracle Databases and Application Servers on Azurev1
Tech ED 2014   Running Oracle Databases and Application Servers on Azurev1Tech ED 2014   Running Oracle Databases and Application Servers on Azurev1
Tech ED 2014 Running Oracle Databases and Application Servers on Azurev1
 
Tech Ed North America 2014 - Java on Azure
Tech Ed North America 2014 - Java on AzureTech Ed North America 2014 - Java on Azure
Tech Ed North America 2014 - Java on Azure
 
IaaS azure_vs_amazon
IaaS azure_vs_amazonIaaS azure_vs_amazon
IaaS azure_vs_amazon
 
Move to azure
Move to azureMove to azure
Move to azure
 
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
From VMs to Containers: Introducing Docker Containers for Linux and Windows S...
 
UK WVD User Group January - Jim Moyle - BC/DR with WVD
UK WVD User Group January - Jim Moyle - BC/DR with WVDUK WVD User Group January - Jim Moyle - BC/DR with WVD
UK WVD User Group January - Jim Moyle - BC/DR with WVD
 
Taking SharePoint to the Cloud
Taking SharePoint to the CloudTaking SharePoint to the Cloud
Taking SharePoint to the Cloud
 
Blue Green Sitecore Deployments on Azure
Blue Green Sitecore Deployments on AzureBlue Green Sitecore Deployments on Azure
Blue Green Sitecore Deployments on Azure
 
KoprowskiT_SPBizConference_2AMaDisasterJustBegan
KoprowskiT_SPBizConference_2AMaDisasterJustBeganKoprowskiT_SPBizConference_2AMaDisasterJustBegan
KoprowskiT_SPBizConference_2AMaDisasterJustBegan
 
Tarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshooting
Tarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshootingTarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshooting
Tarabica 2019 (Belgrade, Serbia) - SQL Server performance troubleshooting
 
Introduction to Windows Azure Data Services
Introduction to Windows Azure Data ServicesIntroduction to Windows Azure Data Services
Introduction to Windows Azure Data Services
 
Introduction to SQL Server Analysis services 2008
Introduction to SQL Server Analysis services 2008Introduction to SQL Server Analysis services 2008
Introduction to SQL Server Analysis services 2008
 
Azure SQL - more or/and less than SQL Server
Azure SQL - more or/and less than SQL ServerAzure SQL - more or/and less than SQL Server
Azure SQL - more or/and less than SQL Server
 
Hyper-V Dynamic Memory in Depth
Hyper-V Dynamic Memory in Depth Hyper-V Dynamic Memory in Depth
Hyper-V Dynamic Memory in Depth
 
It's a wrap - closing keynote for nlOUG Tech Experience 2017 (16th June, The ...
It's a wrap - closing keynote for nlOUG Tech Experience 2017 (16th June, The ...It's a wrap - closing keynote for nlOUG Tech Experience 2017 (16th June, The ...
It's a wrap - closing keynote for nlOUG Tech Experience 2017 (16th June, The ...
 
Expertslive azure site recovery
  Expertslive   azure site recovery  Expertslive   azure site recovery
Expertslive azure site recovery
 
Azure Site Recovery - BC/DR - Migrations & assessments in 60 minutes!
Azure Site Recovery - BC/DR - Migrations & assessments in 60 minutes!Azure Site Recovery - BC/DR - Migrations & assessments in 60 minutes!
Azure Site Recovery - BC/DR - Migrations & assessments in 60 minutes!
 
SQL ON Azure (decision-matrix)
SQL  ON  Azure (decision-matrix)SQL  ON  Azure (decision-matrix)
SQL ON Azure (decision-matrix)
 
Azure Site Recovery Loves Business Continuity
Azure Site Recovery Loves Business ContinuityAzure Site Recovery Loves Business Continuity
Azure Site Recovery Loves Business Continuity
 
SQL Azure for ITPros
SQL Azure for ITProsSQL Azure for ITPros
SQL Azure for ITPros
 

Ähnlich wie Building Real World Applications using Windows Azure - Scott Guthrie, 2nd December 2013

Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
Amazon Web Services
 
Cloud computing 3702
Cloud computing 3702Cloud computing 3702
Cloud computing 3702
Jess Coburn
 
Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017
Amazon Web Services
 

Ähnlich wie Building Real World Applications using Windows Azure - Scott Guthrie, 2nd December 2013 (20)

Building Real World Application with Azure
Building Real World Application with AzureBuilding Real World Application with Azure
Building Real World Application with Azure
 
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
Using AWS to Build a Scalable Big Data Management & Processing Service (BDT40...
 
Scaling Systems: Architectures that grow
Scaling Systems: Architectures that growScaling Systems: Architectures that grow
Scaling Systems: Architectures that grow
 
Navigating the turbulence on take-off: Setting up SharePoint on Azure IaaS th...
Navigating the turbulence on take-off: Setting up SharePoint on Azure IaaS th...Navigating the turbulence on take-off: Setting up SharePoint on Azure IaaS th...
Navigating the turbulence on take-off: Setting up SharePoint on Azure IaaS th...
 
Tech Talk on Cloud Computing
Tech Talk on Cloud ComputingTech Talk on Cloud Computing
Tech Talk on Cloud Computing
 
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
Building Highly Scalable Java Applications on Windows Azure - JavaOne S313978
 
Scaling Systems: Architectures that Grow
Scaling Systems: Architectures that GrowScaling Systems: Architectures that Grow
Scaling Systems: Architectures that Grow
 
Cloud computing 3702
Cloud computing 3702Cloud computing 3702
Cloud computing 3702
 
Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...
Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...
Jeremy Edberg (MinOps ) - How to build a solid infrastructure for a startup t...
 
Configuration Management in the Cloud | AWS Public Sector Summit 2017
Configuration Management in the Cloud | AWS Public Sector Summit 2017Configuration Management in the Cloud | AWS Public Sector Summit 2017
Configuration Management in the Cloud | AWS Public Sector Summit 2017
 
Cloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and CloudCloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and Cloud
 
Azure Serverless with Functions, Logic Apps, and Event Grid
Azure Serverless with Functions, Logic Apps, and Event Grid  Azure Serverless with Functions, Logic Apps, and Event Grid
Azure Serverless with Functions, Logic Apps, and Event Grid
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...
Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...
Navigating the turbulence on takeoff: Setting up SharePoint on Azure IaaS the...
 
Azure basics
Azure basicsAzure basics
Azure basics
 
Web Speed And Scalability
Web Speed And ScalabilityWeb Speed And Scalability
Web Speed And Scalability
 
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
AWS re:Invent 2016: Amazon CloudFront Flash Talks: Best Practices on Configur...
 
SPSNYC SharePoint Worst Practices
SPSNYC SharePoint Worst PracticesSPSNYC SharePoint Worst Practices
SPSNYC SharePoint Worst Practices
 
Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017Building Serverless Web Applications - DevDay Austin 2017
Building Serverless Web Applications - DevDay Austin 2017
 
Microservices and Serverless for Mega Startups - DevOps IL Meetup
Microservices and Serverless for Mega Startups - DevOps IL MeetupMicroservices and Serverless for Mega Startups - DevOps IL Meetup
Microservices and Serverless for Mega Startups - DevOps IL Meetup
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Kürzlich hochgeladen (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Building Real World Applications using Windows Azure - Scott Guthrie, 2nd December 2013

  • 1.
  • 2. Today’s Goal Go much deeper than “hello world” and cover key development patterns and practices that will help you build real world cloud apps
  • 3. Cloud Patterns we will Cover Part 1: Part 2: • • • • • • • • Automate Everything Source Control Continuous Integration & Delivery Web Dev Best Practices Enterprise Identity Integration Data Storage Options Data Partitioning Strategies • • • • • Unstructured Blob Storage Designing to Survive Failures Monitoring & Telemetry Transient Fault Handling Distributed Caching Queue Centric Work Pattern
  • 4.
  • 5. Cloud Patterns we will discuss Part 1: Part 2: • • • • • • • Automate Everything Source Control Continuous Integration & Delivery Web Dev Best Practices Enterprise Identity Integration Data Storage Options • • • • • • Data Partitioning Strategies Unstructured Blob Storage Designing to Survive Failures Monitoring & Telemetry Transient Fault Handling Distributed Caching Queue Centric Work Pattern
  • 6.
  • 8.
  • 9.
  • 10. Source Control • Use it!  • Treat automation scripts as source code and version it together with your application code • Parameterize automation scripts –> never check-in secrets • Structure your source branches to enable DevOps workflow
  • 11. Example Source Branch Structure Master Code that is live in production Code in final testing before production Stagin g Where features are being integrated Developmen t Feature Feature Feature Branch A Branch B Branch C
  • 12. Need to make a quick hotfix? Master Stagin g Developmen Hotfix t 145 Feature Feature Feature Branch A Branch B Branch C
  • 13.
  • 14. Continuous Integration & Delivery • Each check-in to Development, Staging and Master branches should kick off automated build + check-in tests • Use your automation scripts so that successful checkins to Development and Staging automatically deploy to environments in the cloud for more in-depth testing • Deploying Master to Production can be automated, but more commonly requires an explicit human to sign-off before live production updated
  • 15. Visual Studio Online • • • • • • • TFS and Git support Elastic Build Service Continuous Integration Continuous Delivery Load Testing Support Team Room Collaboration Agile Project Management
  • 16.
  • 17. Web Development Best Practices • Scale-out your web tier using stateless web servers behind smart load balancers • Dynamically scale your web tier based on actual usage load
  • 18. Windows Azure Web Sites  Build with ASP.NET, Node.js, PHP or Python  Deploy in seconds with FTP, WebDeploy, Git, TFS  Easily scale up as demand grows
  • 19. Windows Azure Web Site Service Load Balancer (1 of n) Load Balancer (2 of n) Developer or Automation Script Reserved Instance Virtual Machine with IIS already setup (1 of n…) (1 of 2) Reserved Instance Virtual Machine with Server Failure…. IIS already setup (2 of 2) (2 of n…) Deployment Service (FTP, WebDeploy, GIT, TFS, etc) Reserved Instance Virtual Machine with IIS already setup (2 of 2)
  • 20. AutoScale – Built-into Windows Azure • • • • AutoScale based on real usage CPU % thresholds Queue Depth Supports schedule times
  • 21.
  • 22. Web Development Best Practices • Scale-out your web tier using stateless web servers behind smart load balancers • Dynamically scale your web tier based on actual usage load • Avoid using session state (use cache provider if you must) • Use CDN to edge cache static file assets (images, scripts)
  • 23.
  • 24.
  • 25.
  • 26.
  • 27. Windows Azure AD  Active Directory in the Cloud  Integrate with on-premises Active Directory  Enable single sign-on within your apps  Supports SAML, WS-Fed, and OAuth 2.0  Enterprise Graph REST API
  • 28.
  • 29.
  • 31. Enter Windows Azure AD Credentials
  • 32. Enter Windows Server AD Credentials
  • 35. Finished – Sync will start automatically No need to install on multiple DC’s. No reboot required!
  • 36. Enable SSO with Azure AD and ASP.NET
  • 37. Enable SSO with Azure AD and ASP.NET
  • 38. Enable SSO with Azure AD and ASP.NET
  • 39.
  • 40. Data Storage Range of options for storing data Different query semantics, durability, scalability and ease-of-use options available in the cloud Compositional approaches No “one size fits all” – often using multiple storage systems in a single app provides best approach Balancing priorities Investigate and understand the strengths and limitations of different options
  • 41. Data Storage Options on Windows Azure Platform as a Service (managed services) Infrastructure as a Service (virtual machines)
  • 42. Some Data Storage Questions to Ask
  • 43. Choosing Relational Database on Windows Azure Azure SQL Database (PaaS) SQL Server in a Virtual Machine (IaaS) Pros • • • • • Pros Database as a Service (no VMs required) Database-Level SLA (HA built-in) Updates, patches handled automatically for you Pay only for what you use (no license required) Good for handling large numbers of smaller databases (<=150 GB each) Cons • • • Some feature gaps with on-prem SQL Server (lack of CLR, TDE, Compression support, etc.) Database size limit of 150GB Recommended max table size of 10GB • • • • • Feature compatible with on-prem SQL Server VM-level SLA (SQL Server HA via AlwaysOn in 2+VMs) You have complete control over how SQL is managed Can re-use SQL licenses or pay by the hour for one Good for handling fewer but larger (1TB+) databases Cons • • • Updates/patches (OS and SQL) are your responsibility Creation and management of DBs your responsibility Disk IOPS limited to ~8000 IOPS (via 16 data drives) http://blogs.msdn.com/b/windowsazure/archive/2013/02/14/choosing-between-sql-server-in-windows-azure-vm-amp-windows-azure-sql-database.aspx
  • 44.
  • 45.
  • 46. Understanding the 3-Vs of Data Storage Volume How much data will you ultimately store? Velocity What is the rate at which your data will grow? What will the usage pattern look like? Variety What type of data will you store? Relational, images, key-value pairs, social graphs?
  • 47. Scale out your data by partitioning it
  • 51. It is a lot easier to choose one of these partitioning schemes before you go live….
  • 52.
  • 53. Data Storage Options on Windows Azure Platform as a Service (managed services) Infrastructure as a Service (virtual machines)
  • 55.
  • 56.
  • 57.
  • 58.
  • 59. Design to survive failures Given enough time and pressure, everything fails How will your application behave? • Gracefully handle failure modes, continue to deliver value • Or not so gracefully… Types of failures: • Transient - Temporary service interruptions, self-healing • Enduring - Require intervention.
  • 60. Failure scope Regions may become unavailable Region Connectivity Issues, acts of nature Service Entire Services May Fail Service dependencies (internal and external) Machines Individual Machines May Fail Connectivity Issues (transient failures), hardware failures, configuration and code errors
  • 61. What do the 9’s mean in an SLA?
  • 62. Making it a little more real…
  • 63. How to design with this in mind? • • • • • Have good monitoring and telemetry Handle Transient Faults Use Distributed Caching Circuit Breakers Loose Coupling via the Queue Centric Work Pattern
  • 64.
  • 65. Running a Live Site Service
  • 66. Running without Insight / Telemetry
  • 69. Logging for Insight Instrument your code for production logging • If you didn’t capture it, it didn’t happen Implement inter-service monitoring and logging • Capture and log inter-service activity • Capture both the availability and latency of all inter-service calls Run-time configurable logging • Enable activation (capture or delivery) of logging levels without requiring a redeployment of your application
  • 71. Choosing Logging Levels • Must be able to isolate issues solely through telemetry logs Level Context Error Always on in production. Any errors will trigger ACTION to resolve (automated or human). • Configuration issues • Application failure (cascading failure or critical service down) • Telemetry is meant to INFORM (I want you to know something) or ACT (I want you to do something) • Too much ACT creates noise – too much work to sift through to find genuine issues • In a cloud app, only things that require intervention (automatic or manual) should trigger ACT Warning Always on in production. Warnings will INFORM, and may signal potential ACTION • Timeouts or throttling in external service Design your telemetry levels (and consumers) with this in mind Info Always on in production. Info messages INFORM during diagnostics and troubleshooting Debug (Verbose) On during active debugging and troubleshooting on a case by case basis • • Machines failing is NOT something that should require manual intervention in a good cloud application.
  • 72. Built-in Logging Support in Azure Web Sites Storage Analytics System.Diagnostics -> Table Storage Logs -> Blob Storage HTTP/FREB Logs -> File-System or Blob Storage Metrics -> Table Storage Windows Events -> File-System Cloud Services System.Diagnostics -> Table Storage HTTP/FREB Logs -> Blob Storage Performance Counters -> Table Storage Windows Events -> Table Storage Custom Directory Monitoring -> Copy files to Blob Storage
  • 73.
  • 74.
  • 75. Transient Failures Temporary service interruptions, typically self-healing • • • Connection failures to an external service (or suddenly aborted connections) Busy signals from an external service (sometimes due to “noisy neighbors”) External service throttling your app due to overly aggressive calls Can often mitigate with smart retry/back-off logic • • • Transient Fault Handling Block from P&P can make this easy to express Storage Library already has built-in support for retry/back-offs Entity Framework V6 will include built-in support for it with SQL Databases
  • 76. Patterns & Practices Transient Fault Handling Application Block http://nuget.org/packages/EnterpriseLibrary.WindowsAzure.TransientFaultHandling
  • 77. Entity Framework Built-in support fault-retry logic coming with EF6 Above code will do connection retries up to 3 times within 5 seconds (with an exponential back-off delay)
  • 78.
  • 79. Be mindful of max delay thresholds At some point, your request could be blocking the line and cause back pressure. Often better to fail gracefully at some point, and get out of the queue!
  • 80.
  • 81. Distributed Caching Not always practical to hit data source on every request • Throughput and latency impact as traffic grows Data doesn’t always need to be immediately consistent even when things are working well Cached copy of data can help you provide better customer experience when things aren’t working well
  • 82. Windows Azure Cache Service High throughput, low-latency distributed cache • • In-memory (not written to disk) Scale-out architecture that distributes across many servers Key/Value Programming Model • • Get(key) => avg. 1ms latency end-to-end Put(key) => avg. 1.2ms latency end-to-end 128MB to 150GB of content can be stored in each Cache Service
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 94. 2
  • 95. 4
  • 96. Popular Cache Population Strategies On Demand / Cache Aside • Web/App Tier pulls data from source and caches on cache hit miss Background Data Push • Background services (VMs or worker roles) push data into cache on a regular schedule, and then the web tier always pull from the cache Circuit Breaker • Switch from live dependency to cached data if dependency goes down
  • 97. Use distributed caching in any application whose users share a lot of common data/content or where the content doesn’t change frequently
  • 98.
  • 99. Queue Centric Work Pattern Enable loose coupling between a web-tier and backend service by asynchronously sending messages via a queue Scenarios it is useful for: • • • • Doing work that is time consuming (high latency) Doing work that is resource intensive (high CPU) Doing work that requires an external service that might not always be available Protecting against sudden load bursts (rate leveling) Cons: • Trade off can be higher end-to-end times for short latency scenarios
  • 106.
  • 107.
  • 108.
  • 109. Create Action in our Web App (before)
  • 110. Create Action in our Web App (after)
  • 112.
  • 113. Why does this bring us? Resiliency if our database is ever unavailable • Our customers can still make FixIt requests even if this happens Ability to add more backend logic on each FixIt request • • • No longer gated by what can be done in lifetime of HTTP request Examples: workflow routing on who it is assigned to, email/SMS, etc Queues can give us resiliency to these additional external services too
  • 114. What is our composite SLA now for the “Create FixIt Request” scenario? Previously Now
  • 115. How could we make it even better? Have two queues – in two different regions Chances of both being down at same time very, very small Web App and Queue Listeners could be smart and fail-over if primary is having a problem Have the web-app deployed in two different regions Use Windows Azure Traffic Manager to automatically redirect users if one is having a problem
  • 116. Cloud Patterns we Covered Part 1: Part 2: • • • • • • • Automate Everything Source Control Continuous Integration & Delivery Web Dev Best Practices Enterprise Identity Integration Data Storage Options • • • • • • Data Partitioning Strategies Unstructured Blob Storage Designing to Survive Failures Monitoring & Telemetry Transient Fault Handling Distributed Caching Queue Centric Work Pattern
  • 117. Summary Cloud computing offers tremendous opportunities Reach more users and customers, and in a deeper way Be more cost effective by elastically scaling up and down Deliver solutions that weren’t possible or practical before Leverage a flexible, rich, development platform Follow these cloud patterns and you’ll be even more successful with the solutions you build
  • 118. To Learn More FailSafe: Building Scalable, Resilient Cloud Services http://aka.ms/FailsafeCloud Cloud Service Fundamentals in Windows Azure http://aka.ms/csf Cloud Architecture Patterns: Using Microsoft Azure great book by Bill Wilder Release It!: Design and Deploy Production-Ready Software Great book by Michael T. Nygard