Boston Code Camp October-2012 (1:30 – 2:40)

Slides:



Advertisements
Similar presentations
System Center 2012 R2 Overview
Advertisements

What’s New in Windows Azure A platform overview + how it can fit into my development shop today… New England Microsoft Dev Group 06-June-2013 (6:30-8:30.
Plan Introduction What is Cloud Computing?
Joan Wortman Architecting for the Cloud Bill Wilder An App in the Cloud is not a Cloud-Native App Boston Code Camp #19 08-Mar-2013 (2:50 – 4:00 PM EDT)
How WebMD Maintains Operational Flexibility with NoSQL Rajeev Borborah, Sr. Director, Engineering Matt Wilson – Director, Production Engineering – Consumer.
A Brief Overview by Aditya Dutt March 18 th ’ Aditya Inc.
Cloud computing is the use of computing resources (hardware and software) that are delivered as a service over the Internet. Cloud is the metaphor for.
Training Workshop Windows Azure Platform. Presentation Outline (hidden slide): Technical Level: 200 Intended Audience: Developers Objectives (what do.
Cloud Computing. What is Cloud Computing? Cloud computing is a model for enabling convenient, on-demand network access to a shared pool of configurable.
Preparing your Fabric & Apps for Windows Server 2003 End of Support Jeff Woolsey Principal Program Manager.
Overview of Cloud Computing Sven Rosvall ACCU
1 Moshe Shadmon ScaleDB Scaling MySQL in the Cloud.
Azure Best Practices How to Successfully Architect Windows Azure Apps for the Cloud 13-Mar-2013 (1:00 PM EDT) Bill Wilder An App in the Cloud is not (necessarily)
Server Virtualization
Windows Azure. Azure Application platform for the public cloud. Windows Azure is an operating system You can: – build a web application that runs.
 Mike Martin  Architect  MEET Member  Crew Member of Azug  Windows Azure Insider  Windows Azure MVP  
Windows Azure Web Sites Second-generation PaaS Boston Cloud Meetup 14-January-2014 (00:30) Boston Azure User Group
3/12/2013Computer Engg, IIT(BHU)1 CLOUD COMPUTING-1.
Cloud Architecture Patterns for Mere Mortals New England Code Camp #16 29-October-2011 Copyright (c) 2011, Bill Wilder – Use allowed under Creative Commons.
Architecture Patterns for Building Cloud-Native Applications NYC Code Camp 7 15-September-2012 (10:45 – noon) Boston Azure User Group
Building Cloud Solutions Presenter Name Position or role Microsoft Azure.
(re)-Architecting cloud applications on the windows Azure platform CLAEYS Kurt Technology Solution Professional Microsoft EMEA.
Cloud Computing from a Developer’s Perspective Shlomo Swidler CTO & Founder mydrifts.com 25 January 2009.
 Cloud Computing technology basics Platform Evolution Advantages  Microsoft Windows Azure technology basics Windows Azure – A Lap around the platform.
© 2012 Eucalyptus Systems, Inc. Cloud Computing Introduction Eucalyptus Education Services 2.
BIG DATA/ Hadoop Interview Questions.
Amazon Web Services. Amazon Web Services (AWS) - robust, scalable and affordable infrastructure for cloud computing. This session is about:
Cloud-Native Architecture Patterns (Or… why your pre-cloud architecture won’t work so well in the cloud) Azure Florida Association 28-March-2012 Boston.
Platform as a Service (PaaS)
Unit 3 Virtualization.
Connected Infrastructure
Understanding The Cloud
Cloud Architecture Patterns for Mere Mortals
Platform as a Service (PaaS)
Business Continuity & Disaster Recovery
The Cloud Primer for Dynamics GP Customers
Platform as a Service (PaaS)
Distributed Cache Technology in Cloud Computing and its Application in the GIS Software Wang Qi Zhu Yitong Peng Cheng
Platform as a Service.
Logo here Module 3 Microsoft Azure Web App. Logo here Module Overview Introduction to App Service Overview of Web Apps Hosting Web Applications in Azure.
Couchbase Server is a NoSQL Database with a SQL-Based Query Language
Connected Infrastructure
Chapter 21: Cloud Computing and Related Security Issues
Introduction to Cloud Computing
Chapter 22: Cloud Computing Technology and Security
Exploring Azure Event Grid
Cloud Database Based on SQL Server 2012 Technologies
Architecture Patterns for Scalability & Reliability
Hello Farmington! 4:30-5:30, then dinner.
Business Continuity & Disaster Recovery
SQL Server 2012 Licensing Overview.
Capitalize on modern technology
Microsoft Azure P wer Lunch
New England Code Camp October-2010
Windows Azure 講師: 李智樺, Ruddy Lee
File Manager for Microsoft Office 365, SharePoint, and OneDrive: Extensible Via Custom Connectors in Enterprise Deployments, Ideal for End Users OFFICE.
20409A 7: Installing and Configuring System Center 2012 R2 Virtual Machine Manager Module 7 Installing and Configuring System Center 2012 R2 Virtual.
Get Enterprise-Grade Call Handling and Control for Microsoft Office 365 and Skype for Business with the Bridge Boss-Admin Executive Console OFFICE 365.
Outline Virtualization Cloud Computing Microsoft Azure Platform
Learn. Imagine. Build. .NET Conf
XtremeData on the Microsoft Azure Cloud Platform:
Cloud computing mechanisms
Saranya Sriram Developer Evangelist | Microsoft
Emerging technologies-
DevBoston 07-February-2013 (6:00 PM)
MS AZURE By Sauras Pandey.
5 Azure Services Every .NET Developer Needs to Know
Building global and highly-available services using Windows Azure
Zendos Tecnologia Utilizes the Powerful, Scalable
The Database World of Azure
Presentation transcript:

Boston Code Camp 18 20-October-2012 (1:30 – 2:40) Architecture Patterns for Building Cloud-Native Applications Align your application’s architecture with the architecture of the cloud… Or... going with the flow: using icebergs to max advantage                                          HELLO my name is Bill Wilder Boston Code Camp 18 20-October-2012 (1:30 – 2:40) Crossing the Chasm: Architecting for the Cloud Pre-cloud and cloud-native applications are based on different assumptions that require different approaches. We will highlight a number of key differences and show how your resulting application architecture will be different. 4:00 - 4:50 pm – eCoast Cloud Summit – Software Track – Bill Wilder: Crossing the Chasm- Architecting for the Cloud Horizontal Resource Allocation Horizontal Scale Shard Auto-Scale Fail-Retry Fail-Recover QCW We can run pre-cloud software on cloud infrastructure, but to truly take advantage of the cloud we need to build cloud-native applications. The architecture of a cloud-native application is different than the architecture of a traditional pre-cloud application, and in this talk we will examine several big ideas in software architecture you need to 'grok' if you want to truly leverage the cloud for cost savings, higher availability, and better scalability. We will examine several key architecture patterns that help unlock those cloud-native benefits, spanning computation, database, and resource-focused patterns. By the end of the talk you should appreciate how cloud architecture is more of a partnership with your hardware than it was with pre-cloud applications (fail-retry anyone?), that the cloud may be infinite (but not all at once), and how the cloud enables cost optimization (and is "green"). Boston Azure User Group http://www.bostonazure.org @bostonazure Bill Wilder http://blog.codingoutloud.com @codingoutloud

Bill Wilder HELLO my name is My name is Bill Wilder codingoutloud@gmail.com blog.codingoutloud.com @codingoutloud

Who is Bill Wilder? www.cloudarchitecturepatterns.com www.bostonazure.org www.devpartners.com

Who is Bill Wilder? www.cloudarchitecturepatterns.com www.bostonazure.org www.devpartners.com

I will ass-u-me… You know what “the cloud” is You have an inkling about Amazon Web Services and Windows Azure cloud platforms You understand that such cloud platforms include compute services [like hosted virtual machines (VMs), in both IaaS and PaaS modes], SQL and NoSQL database services, file storage services, messaging, DNS, management, etc. You are interested in understanding cloud-native applications

Roadmap for rest of talk… … Give context and definition for cloud-native Cover three specific patterns for building cloud-native applications Mention several other patterns Q&A during talk is okay (time permitting) Q&A at end with any remaining time Also feel free to join me for lunch to talk cloud ?

Cloud Platform Characteristics Scaling – or “resource allocation” – is horizontal and ∞ (“illusion of infinite resources”) Resources are easily added or released self-service portal or API; cloud scaling is automatable Pay only for currently allocated resources costs are operational, granular, controllable, and transparent Optimized for cost-efficiency cloud services are MT, hardware is commodity MTTR over MTTF Rich, robust functionality is simply accessible like an iceberg

www.pageofphotos.com Simple idea, simple app Two-tiers: web tier + database What’s the problem? We’ll reexamine – one tier at a time Scaling compute Scaling data Scaling geographically Handling failure … and all while maintaining User Experience (UX)

 1/9th above water According to wikipedia (http://en.wikipedia.org/wiki/Iceberg) “typically only one-ninth of the volume of an iceberg is above water” Iceberg comment not specific to CLOUD NATIVE – but just a reminder to the power of the CLOUD Photo credit: http://upload.wikimedia.org/wikipedia/commons/a/ac/Iceberg.jpg

Cloud-Native Application Characteristics Application architecture is aligned with the cloud platform architecture uses the platform in the most natural way lets the platform do the heavy lifting Are loosely coupled for scalability, reliability, and flexibility Scale horizontally, automatically, bidirectionally maintaining UX and cost-optimizing scale operationally along with capacity Handle busy signals and node failures without unnecessary UX degradation Use geo-distribution services minimize network latency

Know the rules “If I had asked people what they wanted, they would have said faster horses.” - Henry Ford CNA is future (late 1800s) 150,000 horses in NYC each producing 15-30 lbs of manure per day = 3 million pounds of horse manure per day…

Know the rules “If I had asked IT departments what they wanted, they would have said IaaS.” - Henry Cloud CNA is future (late 1800s) 150,000 horses in NYC each producing 15-30 lbs of manure per day = 3 million pounds of horse manure per day…

Use the right tool for the job… Better on water than on land…. sorta “unreliable”when used on land. Canoe image: http://en.wikipedia.org/wiki/File:Morris-canoe-600.jpg

Modern Application Challenges Scaling compute Scaling data Scaling geographically Handling failure … and all while maintaining User Experience (UX) Example patterns we will review: Horizontal Scaling Queue-Centric Workflow Database Sharding Other patterns briefly as time permits

Pre-Cloud vs. Cloud-Native Old-School vs. Cloud-Native Control Efficiency Stable/Static Hardware Dynamic/∞ Resources Fixed/CapEx Variable/OpEx Vertical Scaling Horizontal Resourcing Minimize MTBF Minimize MTTR Data Storage = RDBMS Scenario-specific Storage Manage Infrastructure Managed Infrastructure Pre-Cloud vs. Cloud-Native architectural concerns Not shown: Strong Consistency vs. Eventual Consistency MINDSET.. CHARACTERISTICS OF PRE-CLOUD vs. CLOUD-NATIVE Efficiency: electrical grid, virtual machine-based, multi-tenant, commodity hardware - 1:15k (vs. 1:30 or at best 1:150) Dynamic/∞ Resources: use cloud platform API to allocate or release resources; infinite resources available - but not all at once Variable/OpEx: stop using, stop paying; pay for expanded use Horizontal Resourcing: Similar to Scaling Out/Horizontal Scaling, except not just for scale… and bi-directional Minimize MTTR: Failure is expected, be prepared to deal with it; partnership between CLOUD PLATFORM and YOUR APPLICATION ARCHITECTURE Scenario-Specific Storage: Relational Database no longer one-size-fits-all. NoSQL, Blobs, CDN, Relational++ (auto-sharding) Managed Infrastructure: “ManageD” – the “D” on the end changes everything… Want a database? - available on demand, here’s a connection string. Want application services like a Reliable Queue? – here’s its http address, feel free to start using it. LB – ready. Geo-LB – ready (and you may deploy to >1 datacenter too – maybe MANY if you use CDN). These are REALLY IMPACTFUL DIFFERENCES and an application optimized to live in harmony with properities is CLOUD-NATIVE, and apps in harmony with the old properties is PRE-CLOUD

Pre-Cloud vs. Cloud-Native Old-School vs. Cloud-Native Control Efficiency Stable/Static Hardware Dynamic/∞ Resources Fixed/CapEx Variable/OpEx Vertical Scaling Horizontal Resourcing Minimize MTBF Minimize MTTR Data Storage = RDBMS Scenario-specific Storage Manage Infrastructure Managed Infrastructure Pre-Cloud vs. Cloud-Native architectural concerns Not shown: Strong Consistency vs. Eventual Consistency MINDSET.. CHARACTERISTICS OF PRE-CLOUD vs. CLOUD-NATIVE Efficiency: electrical grid, virtual machine-based, multi-tenant, commodity hardware - 1:15k (vs. 1:30 or at best 1:150) Dynamic/∞ Resources: use cloud platform API to allocate or release resources; infinite resources available - but not all at once Variable/OpEx: stop using, stop paying; pay for expanded use Horizontal Resourcing: Similar to Scaling Out/Horizontal Scaling, except not just for scale… and bi-directional Minimize MTTR: Failure is expected, be prepared to deal with it; partnership between CLOUD PLATFORM and YOUR APPLICATION ARCHITECTURE Scenario-Specific Storage: Relational Database no longer one-size-fits-all. NoSQL, Blobs, CDN, Relational++ (auto-sharding) Managed Infrastructure: “ManageD” – the “D” on the end changes everything… Want a database? - available on demand, here’s a connection string. Want application services like a Reliable Queue? – here’s its http address, feel free to start using it. LB – ready. Geo-LB – ready (and you may deploy to >1 datacenter too – maybe MANY if you use CDN). These are REALLY IMPACTFUL DIFFERENCES and an application optimized to live in harmony with properities is CLOUD-NATIVE, and apps in harmony with the old properties is PRE-CLOUD

Modern Architecture Challenges • Scaling compute • Discover the advantages of horizontal scaling. Patterns covered include Horizontally Scaling Compute, Queue-Centric Workflow, and Auto-Scaling. • Scaling data • Learn how to handle large amounts of data (“big data”) across a distributed system. Eventual consistency is explained, along with the MapReduce and Database Sharding patterns. • Scaling geographically • Learn how to overcome delays due to network latency when building applications for a geographically distributed user base. Patterns covered include Colocation, Valet Key, CDN, and Multisite Deployment. • Handling failure • Understand how multitenant cloud services and commodity hardware influence your applications. Patterns covered include Busy Signal and Node Failure.

Cloud Architecture Patterns - TOC Scalability Primer Horizontally Scaling Compute Pattern Queue-Centric Workflow Pattern Auto-Scaling Pattern Eventual Consistency Primer MapReduce Pattern Database Sharding Pattern Multitenancy and Commodity Hardware Primer Busy Signal Pattern Node Failure Pattern Network Latency Primer Colocate Pattern Valet Key Pattern CDN Pattern Multisite Deployment Pattern

Horizontal Scaling Compute Pattern pattern 1 of 3

What’s the difference between performance and scale? SLA, practical reasons

Just an Analogy How many people have smart phones? Does it look like the picture? Major discontinuity in progression from good => better – sorta like a CHASM Smart phones taking over the world, so the MARKET says the disruption is WORTH IT Slower processors, not as much memory, tiny screen, terrible internet connections, low battery life, expensive, locked in, different programming model, platform-specific programming model and apps Consumerization of IT – mobile devices are helping set new IT standards But… it fits in your pocket, I manage it myself*, privacy, MP3 player, can take all kinds of pictures, and videos, and can geocache, and have maps, and text with my friends, and check email while sitting at dinner with a bunch of boring people, can tweet at a conference… COPING STRATEGIES: Responsive Design for web sites, Toolkits to build cross-device apps Cloud: parallel transition - analogous Coping strategies – like Responsive Design for web sites, it isn’t as good as a native app, but it is pretty good We cope by taking advantage of SOME capabilities, and it’s pretty good – this PRIVATE CLOUDS, and FORK-LIFTING APPS INTO THE CLOUD w/o aligning APP and CLOUD ARCHITECTURES – also pretty good, some value, but the future is cloud-native applications

In da cloud Cloud-Native & On-prem & … or still Pre-Cloud? Pre-Cloud What happens if you “cross over the chasm” but without understanding what’s different? Future: On-prem & Cloud-Native

Scale Up (and Scale Down??) vs. Horizontal Resourcing Common Terminology: Scaling Up/Down  Vertical Scaling Scaling Out/In  Horizontal “Scaling”  But really is Horizontal Resource Allocation Architectural Decision Big decision… hard to change

Vertical Scaling (“Scaling Up”) Resources that can be “Scaled Up” Memory: speed, amount CPU: speed, number of CPUs Disk: speed, size, multiple controllers Bandwidth: higher capacity pipe … and it sure is EASY . Downsides of Scaling Up Hard Upper Limit HIGH END HARDWARE  HIGH END CO$T Lower value than “commodity hardware” May have no other choice (architectural)

Scaling Horizontally: Adding Boxes autonomous nodes for scalability (stateless web servers, shared nothing DBs, your custom code in QCW)

Example: Web Tier www.pageofphotos.com Managed VMs (Cloud Service) Architectural concerns N>1 N+1 Reactive Load Balancer (Cloud Service)

Horizontal Scaling Considerations Auto-Scale Bidirectional Nodes can fail Auto-Scale is only one cause Handle shutdown signals Stateless (“like a taxi”) vs. Sticky Sessions Stateless nodes vs. Stateless apps N+1 rule vs. occasional downtime (UX) Architectural concerns N>1 N+1 Reactive

? How many users does your cloud-native application need before it needs to be able to horizontally scale? SLA, practical reasons

Queue-Centric Workflow Pattern pattern 2 of 3 (QCW for short)

Extend www.pageofphotos.com example into Service Tier QCW enables applications where the UI and back-end services are Loosely Coupled (Compare to CQRS at the end)

QCW Example: User Uploads Photo www.pageofphotos.com Web Server Compute Service Reliable Queue AJAX – orthogonal concern Worker Role not related to HTML 5 concept of Web Worker Reliable Storage

QCW [on Windows Azure] Compute (VM) resources to run our code WE NEED: Compute (VM) resources to run our code Web Roles (IIS) and Worker Roles (w/o IIS) Reliable Queue to communicate Azure Storage Queues Durable/Persistent Storage Azure Storage Blobs & Tables; SQL Azure

QCW Compute (VM) resources to run our code WE NEED: Compute (VM) resources to run our code Reliable Queue to communicate Durable/Persistent Storage

Where does Windows Azure fit?

QCW [on Windows Azure] Compute (VM) resources to run our code WE NEED: Compute (VM) resources to run our code Web Roles (IIS) and Worker Roles (w/o IIS) Reliable Queue to communicate Azure Storage Queues Durable/Persistent Storage Azure Storage Blobs & Tables; WASD

QCW on Azure: User Uploads a Photo push pull Web Role (IIS) Worker Role Azure Queue www.pageofphotos.com AJAX – orthogonal concern Worker Role not related to HTML 5 concept of Web Worker “Thumbnails” sample code available from http://code.msdn.microsoft.com/windowsazuresamples Azure Blob UX implications: user does not wait for thumbnail (architecture!)

QCW enables Responsive UX Response to interactive users is as fast as a work request can be persisted Time consuming work done asynchronously Comparable total resource consumption, arguably better subjective UX UX challenge – how to express Async to users? Communicate Progress Display Final results Long Polling/Web Sockets (e.g., SignalR or Node.io)

QCW enables Scalable App Decoupled front/back provides insulation Blocking is Bane of Scalability Order processing partner doing maintenance Twitter down Email server unreachable Internet connectivity interruption Loosely coupled, concern-independent scaling (see next slide) Get Scale Units right

General Case: Many Roles, Many Queues Worker Role Web Role (Admin) Worker Role Worker Role Queue Type 1 Worker Role Type 1 Queue Type 1 Web Role (Public) Queue Type 2 Web Role (IIS) Queue Type 2 Worker Role Web Role (IIS) Worker Role Worker Role Worker Role Type 2 Queue Type 3 Worker Role Type 2 Worker Role Type 2 Worker Role Type 2 Scaling best when Investment α Benefit Optimize for CO$T EFFICIENCY Logical vs. Physical Architecture

Reliable Queue & 2-step Delete var url = “http://pageofphotos.blob.core.windows.net/up/<guid>.png”; queue.AddMessage( new CloudQueueMessage( url ) ); (IIS) Web Role Worker Role Queue AJAX – orthogonal concern Worker Role not related to HTML 5 concept of Web Worker var invisibilityWindow = TimeSpan.FromSeconds( 10 ); CloudQueueMessage msg = queue.GetMessage( invisibilityWindow ); (… do some processing then …) queue.DeleteMessage( msg );

QCW requires Idempotent Perform idempotent operation more than once, end result same as if we did it once Example with Thumbnailing (easy case) App-specific concerns dictate approaches Compensating action, Last write wins, etc. PARTNERSHIP: division of responsibility between cloud platform & app Far cry from database transaction

QCW expects Poison Messages A Poison Message cannot be processed Error condition for non-transient reason Use dequeue count property Be proactive Falling off the queue may kill your system Determine a Max Retry policy per queue Delete, put on “bad” queue, alert human, …

QCW requires “Plan for Failure” VM restarts will happen Hardware failure, O/S patching, crash (bug) Bake in handling of restarts into our apps Restarts are routine: system “just keeps working” Idempotent support needed important Event Sourcing (commonly seen with CQRS) may help Not an exception case! Expect it! Consider N+1 Rule Windows Azure: Fabric Controller honors Fault Domains

What’s Up? Reliability as EMERGENT PROPERTY Typical Site Any 1 Role Inst Overall System Operating System Upgrade Application Code Update Scale Up, Down, or In Hardware Failure Software Failure (Bug) Security Patch Tech Windows

Aside: Is QCW same as CQRS? Short answer: “no” CQRS Command Query Responsibility Segregation Commands change state Queries ask for current state Any operation is one or the other Sometimes includes Event Sourcing Sometimes modeled using Domain Driven Design (DDD)

What about the DATA? You: Azure Web Roles and Azure Worker Roles Taking user input, dispatching work, doing work Follow a decoupled queue-in-the-middle pattern Stateless compute nodes Cloud: “Hard Part”: persistent, scalable data Azure Queue & Blob Services Three copies of each byte Blobs are geo-replicated Busy Signal Pattern

Database Sharding Pattern pattern 3 of 3

Extend www.pageofphotos.com example into Data Tier What happens when demands on data tier grow? The Database Sharding Pattern a little about reliability – a lot about scale and performance

Foursquare is a Social Network

WHAT WENT WRONG? Foursquare #Fail October 4, 2010 – trouble begins… After 17 hours of downtime over two days… “Oct. 5 10:28 p.m.: Running on pizza and Red Bull. Another long night.” WHAT WENT WRONG? Social Check-in Site Foursquare 32 employees (at the time) 10Gen Small company Microsoft BIG COMPANY (how many of the 90k employees work on SQL Server?) http://blog.foursquare.com/2010/10/05/so-that-was-a-bummer/ http://highscalability.com/blog/2010/10/15/troubles-with-sharding-what-can-we-learn-from-the-foursquare.html

What is Sharding? Problem: one database can’t handle all the data Too big, not performant, needs geo distribution, … Solution: split data across multiple databases One Logical Database, multiple Physical Databases Each Physical Database Node is a Shard Most scalable is Shared Nothing design May require some denormalization (duplication) [Not same as Data Warehouse or Reporting DB]

All shard have same schema SHARDS

Sharding is Difficult What defines a shard? (Where to put stuff?) Example – use country of origin: customer_us, customer_fr, customer_cn, customer_ie, … Use same approach to find records (can use lookup) What happens if a shard gets too big? Rebalancing shards can get complex (esp roll-your-own) Foursquare case study is interesting Query / join / transact across shards Cache coherence, connection pool management Roll-your-own challenge

Where does Windows Azure fit?

Windows Azure SQL Database (WASD) is SQL Server Except… SQL Server Specific (for now) WASD Specific Limitations 150 GB size limit Busy Signal Pattern Colocation Pattern New Capabilities Managed Service Highly Available Rental model Federations Common Full Text Search Native Encryption Many more… “Just change the connection string…” http://social.technet.microsoft.com/wiki/contents/articles/inside-sql-azure.aspx “Another feature in development is the ability to take control of your backups. Currently, backups are performed in the data centers to protect your data against disk or system problems. However, there is no way currently to control your own backups to provide protection against logical errors and use a RESTORE operation to return to an earlier point in time when a backup was made. The new feature involves the ability to make your own backups of your SQL Azure databases to your own on-premises storage, and the ability to restore those backups either to an on-premises database or to a SQL Azure database. Eventually Microsoft plans to provide the ability to perform SQL Azure backups across data centers and also make log backups so that point-in-time recovery can be implemented.” http://social.technet.microsoft.com/wiki/contents/articles/inside-sql-azure.aspx Additional information on Differences: http://msdn.microsoft.com/en-us/library/ff394115.aspx

Windows Azure SQL Databse Federations for Sharding Single “master” database “Query Fanout” makes partitions transparent Instead of customer_us, customer_fr, etc… we are back to customer database Handles redistributing shards Handles cache coherence Simplifies connection pooling No MERGE, only SPLIT currently http://blogs.msdn.com/b/cbiyikoglu/archive/2011/01/18/sql-azure-federations-robust-connectivity-model-for-federated-data.aspx http://blogs.msdn.com/b/cbiyikoglu/archive/2011/01/18/sql-azure-federations-robust-connectivity-model-for-federated-data.aspx

WHAT WENT WRONG? Foursquare #Fail Foursquare was implementing database sharding in the application layer. WASD Federations makes this unnecessary. WHAT WENT WRONG? Social Check-in Site Foursquare 32 employees (at the time) 10Gen Small company Microsoft BIG COMPANY (how many of the 90k employees work on SQL Server?) http://blog.foursquare.com/2010/10/05/so-that-was-a-bummer/ http://highscalability.com/blog/2010/10/15/troubles-with-sharding-what-can-we-learn-from-the-foursquare.html

? My database instance is limited to 150 GB. ∞ ∞ ∞ Does that mean the cloud doesn’t really offer the illusion of infinite resources?

Scenario-Specific Storage Services Type of Data Traditional Azure Way Relational SQL Server SQL Azure BLOB (“Binary Large Object”) File System, SQL Server Blobs File File System (Azure Drives) Blobs Logs File System, SQL Server, etc. NoSQL Non-Relational (Excel)

Pre-Cloud vs. Cloud-Native Lessons: being Cloud-Native 1:15,000 Efficiency Auto-Scaling via API Dynamic/∞ Resources Pay-As-You-Go Variable/OpEx Stateless, Autonomous Horizontal Resourcing N+1, Idempotent Minimize MTTR SQL, NoSQL, Blob Scenario-specific Storage VM, Storage, LB, DR Managed Infrastructure Pre-Cloud vs. Cloud-Native Not shown: Strong Consistency vs. Eventual Consistency MINDSET.. CHARACTERISTICS OF PRE-CLOUD vs. CLOUD-NATIVE Efficiency: electrical grid, virtual machine-based, multi-tenant, commodity hardware - 1:15k (vs. 1:30 or at best 1:150) Dynamic/∞ Resources: use cloud platform API to allocate or release resources; infinite resources available - but not all at once Variable/OpEx: stop using, stop paying; pay for expanded use Horizontal Resourcing: Similar to Scaling Out/Horizontal Scaling, except not just for scale… and bi-directional Minimize MTTR: Failure is expected, be prepared to deal with it; partnership between CLOUD PLATFORM and YOUR APPLICATION ARCHITECTURE Scenario-Specific Storage: Relational Database no longer one-size-fits-all. NoSQL, Blobs, CDN, Relational++ (auto-sharding) Managed Infrastructure: “ManageD” – the “D” on the end changes everything… Want a database? - available on demand, here’s a connection string. Want application services like a Reliable Queue? – here’s its http address, feel free to start using it. LB – ready. Geo-LB – ready (and you may deploy to >1 datacenter too – maybe MANY if you use CDN). These are REALLY IMPACTFUL DIFFERENCES and an application optimized to live in harmony with properities is CLOUD-NATIVE, and apps in harmony with the old properties is PRE-CLOUD

Know the rules “If I had asked people what they wanted, they would have said faster horses.” - Henry Ford

“Know the rules well, so you can break them effectively.” - Dalai Lama XIV

Cloud Architecture Patterns book Primer Chapters Scalability Eventual Consistency Multitenancy and Commodity Hardware Network Latency

Cloud Architecture Patterns book Pattern Chapters Horizontally Scaling Compute Pattern Queue-Centric Workflow Pattern Auto-Scaling Pattern MapReduce Pattern Database Sharding Pattern Busy Signal Pattern Node Failure Pattern Colocate Pattern Valet Key Pattern CDN Pattern Multisite Deployment Pattern

Questions? Comments? More information?

Business Card

BostonAzure.org Boston Azure cloud user group Focused on Microsoft’s PaaS cloud platform Monthly, 6:00-8:30 PM in Boston area Food; wifi; free; great topics; growing community Follow on Twitter: @bostonazure More info or to join our Meetup.com group: http://www.bostonazure.org

Contact Me Looking for … consulting help with Windows Azure Platform? someone to bounce Azure or cloud questions off? a speaker for your user group or company technology event? Just Ask! Bill Wilder @codingoutloud http://blog.codingoutloud.com community inquiries: codingoutloud@gmail.com business inquiries: www.devpartners.com

DONE

Subliminal … 0.25