SlideShare a Scribd company logo
Architecting with Queues for
Scale, Speed and Separation
Sandy Smith
DCPHP 3/11/15
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
The Challenge
2
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Social Contest
•Show off Azure + PHP
•People submit tweets to enter contest
•Pull specified keywords from Twitter queue (prefiltered by
Node.js app)
•Human admins filter out inappropriate content
•Humans or computer pulls out winner from approved entries,
on timer or arbitrarily
•Display latest entries and latest winners to public
3
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Stretch goals
•Allow any size contest
•Assume global contest with distributed moderators
4
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Initial design
5
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
The real bottleneck
What’s the slowest and
most variable part of any
application?
6
Insert Text Here
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
The real bottleneck
7
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Quick refresher
Performance vs. Scaling

Vertical vs. Horizontal Scaling
8
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Traditional database design
•Group by kind
•Keep metadata with object or in metadata tables
•Objects (Document, Person, Account) are most important
•Reinforced by TableGateway, ActiveRecord patterns, and ORM
and framework module generator defaults
•Works for 80% of cases
9
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Tradeoffs of traditional design
•Everything’s in one table, even when you routinely only need a
subset
•Typically one master writes, replicants read
•Design is focused around what something is, not its state or
other attribute
•Requires creative solutions for horizontal scaling
•Encourages (but does not require) centralizing logic for a given
type of data
10
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Worst of all…
•This design really didn’t show off all the stuff in Azure
11
(We had a week left)
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Redesign time
12
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Redesign goals
•Include as much Azure stuff as is reasonable
•Implement the stretch goals of scalability
13
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Queues to the rescue!
(Plus some other cool stuff)
14
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
New approach
•Keep long term but fast storage
•Central concern is not the Thing (Entry) but Status
– Unapproved

– Approved

– Denied

– Winner

•Separate updates to long term storage from status changes
•Minimal impact to working code
15
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Azure queuing options
Azure Queues (duh)
•Simple
•“Short”-lived (<7 days)
•Used within Azure
•Uses REST
•Can track message
processing
16
Azure Service Bus
•Enterprisey
•Long-lived
•In Azure or private cloud
•Can use AMQP, REST, or
API
•Can publish/subscribe
•Can batch requests
•Can guarantee FIFO
•etc.
See https://msdn.microsoft.com/en-us/library/azure/hh767287.aspx
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
More options
•Anything you can install on Linux or Windows (RabbitMQ,
ZeroMQ, Kafka, Kestrel, ActiveMQ, etc.)
•Any relational or NoSQL database
•Azure Tables - Simple REST NoSQL store with a twist
17
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Solutions
•Long term storage and display retrieval: Azure Table
•Since entries could begin long before a conference, use
Service Bus to store changes in status
•Have daemons pull incoming status changes out and write
them to the Table
18
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
New design
19
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Azure Table basics
20
require_once 'vendorautoload.php';

use WindowsAzureCommonServicesBuilder;

use WindowsAzureCommonServiceException;

use WindowsAzureTableModelsEntity;

use WindowsAzureTableModelsEdmType;



// Create table REST proxy.

$tableRestProxy = ServicesBuilder::getInstance()->createTableService($connectionString);



try {

// Create table.

$tableRestProxy->createTable("mytable");

} catch(ServiceException $e){

// Handle exception based on error codes and messages.

}



$entity = new Entity();

$entity->setPartitionKey("pk");

$entity->setRowKey("1");

$entity->addProperty("PropertyName", EdmType::STRING, "Sample");



try {

$tableRestProxy->insertEntity("mytable", $entity);

} catch(ServiceException $e){

// Handle exception based on error codes and messages.

}
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Create and send with Service Bus
21
require_once 'vendorautoload.php';

use WindowsAzureServiceBusModelsQueueInfo;

use WindowsAzureCommonServiceException;

use WindowsAzureCommonServicesBuilder;



$serviceBusRestProxy = ServicesBuilder::getInstance()-
>createServiceBusService($connectionString);



try {

$queueInfo = new QueueInfo("myqueue");

$serviceBusRestProxy->createQueue($queueInfo);

} catch(ServiceException $e) {

// handle error

}



try {

// Create message.

$message = new BrokeredMessage();

$message->setBody("my message");



// Send message.

$serviceBusRestProxy->sendQueueMessage("myqueue", $message);

} catch(ServiceException $e) {

// handle error

}
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Receive with Service Bus
22
require_once 'vendorautoload.php';

use WindowsAzureServiceBusModelsQueueInfo;

use WindowsAzureCommonServiceException;

use WindowsAzureCommonServicesBuilder;



$serviceBusRestProxy = ServicesBuilder::getInstance()-
>createServiceBusService($connectionString);



try {

// Set the receive mode to PeekLock (default is ReceiveAndDelete).

$options = new ReceiveMessageOptions();

$options->setPeekLock(true);



// Receive message.

$message = $serviceBusRestProxy->receiveQueueMessage("myqueue", $options);

echo "Body: ".$message->getBody()."<br />";

echo "MessageID: ".$message->getMessageId()."<br />";



// *** Process message here ***



// Delete message.

$serviceBusRestProxy->deleteMessage($message);

} catch(ServiceException $e){

// handle error

}
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Benefits
•Queues add safety: if processing fails, main store is unchanged
•App doesn’t wait for process-update-delete cycle
– Concerns more separated

•Can move queue processing to separate machines
•Trivial to move to different stores for each status
•Very performant with up-to-second data
23
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Challenges
•No full ACID
•Safety is largely in the application layer
•Potential for race conditions
– Humans suck
24
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Takeaways
•Look for more than just long processes
•Use to decouple functions
•Look for status changes
•Is the type of data the most important aspect of your data?
– It usually is!

•Design for replacement of components
– Makes changes easier (not easy)
25
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Links
•Azure: http://azure.microsoft.com/en-us/
•Social Contest:

https://github.com/MusketeersMe/SocialContest
•Me
– @SandyS1

– http://phparch.com/

•Feedback! https://joind.in/event/dc-php-march-2015
•Lone Star PHP (April 16–18): http://lonestarphp.com
•php[tek] (May 18–22) http://tek.phparch.com
•Slides will be at: http://www.slideshare.net/SandySmith
26
Architecting with Queues - Sandy Smith - DCPHP - 3/11/15
Image credits
•Questions? by Valerie Everett

https://flic.kr/p/5zEjFG
•Expanded coke zero can! by Audin Malmin

https://flic.kr/p/5Ldjx8
27

More Related Content

PDF
Architecting queueslsp15
PPTX
Azure Recovery Services
PDF
Gluster: a SWOT Analysis
PDF
GlusterFS w/ Tiered XFS
PDF
Automating Gluster @ Facebook - Shreyas Siravara
PPTX
Scaling DataStax in Docker
PDF
Antoine Coetsier - billing the cloud
PPTX
Drupal performance
Architecting queueslsp15
Azure Recovery Services
Gluster: a SWOT Analysis
GlusterFS w/ Tiered XFS
Automating Gluster @ Facebook - Shreyas Siravara
Scaling DataStax in Docker
Antoine Coetsier - billing the cloud
Drupal performance

What's hot (20)

PPTX
Windows Azure Drive
PDF
Running Java Applications inside Kubernetes with Nested Container Architectur...
PDF
Atom: A cloud native deep learning platform at Supremind
PPTX
Storage Services
PPTX
Paul Angus - CloudStack Container Service
PDF
Performance tuning in BlueStore & RocksDB - Li Xiaoyan
PDF
Bacd zenoss
PDF
Integration of Glusterfs in to commvault simpana
PPTX
Drupal performance optimization Best Practices
PDF
Architectural patterns for high performance microservices in kubernetes
PDF
ASP.NET Scalability - NxtGen Oxford
PDF
CEPH DAY BERLIN - CEPH MANAGEMENT THE EASY AND RELIABLE WAY
PPTX
Adam Dagnall: Advanced S3 compatible storage integration in CloudStack
PPTX
Kubernetes #2 monitoring
PDF
Architectural caching patterns for kubernetes
PPTX
Red Hat Gluster Storage, Container Storage and CephFS Plans
PDF
Architecting with Queues - Northeast PHP 2015
PPTX
Redis Labs and SQL Server
PDF
Device Synchronization with Javascript and PouchDB
ODP
Sdc challenges-2012
Windows Azure Drive
Running Java Applications inside Kubernetes with Nested Container Architectur...
Atom: A cloud native deep learning platform at Supremind
Storage Services
Paul Angus - CloudStack Container Service
Performance tuning in BlueStore & RocksDB - Li Xiaoyan
Bacd zenoss
Integration of Glusterfs in to commvault simpana
Drupal performance optimization Best Practices
Architectural patterns for high performance microservices in kubernetes
ASP.NET Scalability - NxtGen Oxford
CEPH DAY BERLIN - CEPH MANAGEMENT THE EASY AND RELIABLE WAY
Adam Dagnall: Advanced S3 compatible storage integration in CloudStack
Kubernetes #2 monitoring
Architectural caching patterns for kubernetes
Red Hat Gluster Storage, Container Storage and CephFS Plans
Architecting with Queues - Northeast PHP 2015
Redis Labs and SQL Server
Device Synchronization with Javascript and PouchDB
Sdc challenges-2012
Ad

Viewers also liked (20)

PDF
Grokking regex
PDF
Don't Fear the Regex LSP15
PPT
TDA Center Depok update 2014 (Concept)
PDF
Don't Fear the Regex - CapitalCamp/GovDays 2014
PDF
Unicode Regular Expressions
ODP
Multibyte string handling in PHP
PDF
GAIQ - Regular expressions-google-analytics
PDF
Regular expressions
ODP
Hyperlocalisation or "localising everything"
KEY
Lessons from a Dying CMS
KEY
Regular expressions
PPTX
Regular expressions
PDF
Iterators, ArrayAccess & Countable (Oh My!) - Madison PHP 2014
ODP
Regular Expressions: Backtracking, and The Little Engine that Could(n't)?
PPT
Working with Databases and MySQL
PPT
How to report a bug
PDF
Don't Fear the Regex - Northeast PHP 2015
PPTX
Learning Regular Expressions for the Extraction of Product Attributes from E-...
Grokking regex
Don't Fear the Regex LSP15
TDA Center Depok update 2014 (Concept)
Don't Fear the Regex - CapitalCamp/GovDays 2014
Unicode Regular Expressions
Multibyte string handling in PHP
GAIQ - Regular expressions-google-analytics
Regular expressions
Hyperlocalisation or "localising everything"
Lessons from a Dying CMS
Regular expressions
Regular expressions
Iterators, ArrayAccess & Countable (Oh My!) - Madison PHP 2014
Regular Expressions: Backtracking, and The Little Engine that Could(n't)?
Working with Databases and MySQL
How to report a bug
Don't Fear the Regex - Northeast PHP 2015
Learning Regular Expressions for the Extraction of Product Attributes from E-...
Ad

Similar to Architecting with Queues for Scale, Speed, and Separation (DCPHP 3/11/15) (20)

PPT
Arc Ready Cloud Computing
PPT
ArcReady - Architecting For The Cloud
PPTX
Cloud computing and the Windows Azure Services Platform (KU Leuven)
PPTX
Windows Azure
PPTX
Running PHP In The Cloud
PDF
Windows Azure introduction
PPTX
DevDays 2011- Let’s get ready for the cloud: Building your applications so th...
PPTX
Microsoft Azure Cloud Basics Tutorial
PPTX
BizSpark Startup Night Windows Azure March 29, 2011
PPTX
Scalability in cloud applications
PPTX
Data stream processing and micro service architecture
PDF
Cloud computing - an architect's perspective
PPTX
Mobile services on windows azure (part1)
PPTX
ArchitectNow - Designing Cloud-Native apps in Microsoft Azure
PPTX
Put Your Existing Application On Windows Azure
PDF
In De Wolken Met Cloud Computing
PDF
Windows Azure For Architects
PPTX
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
PPTX
Take the spaghetti out of windows azure – an insight for it pro techies part 1
PPTX
Introduction To Cloud Computing
Arc Ready Cloud Computing
ArcReady - Architecting For The Cloud
Cloud computing and the Windows Azure Services Platform (KU Leuven)
Windows Azure
Running PHP In The Cloud
Windows Azure introduction
DevDays 2011- Let’s get ready for the cloud: Building your applications so th...
Microsoft Azure Cloud Basics Tutorial
BizSpark Startup Night Windows Azure March 29, 2011
Scalability in cloud applications
Data stream processing and micro service architecture
Cloud computing - an architect's perspective
Mobile services on windows azure (part1)
ArchitectNow - Designing Cloud-Native apps in Microsoft Azure
Put Your Existing Application On Windows Azure
In De Wolken Met Cloud Computing
Windows Azure For Architects
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Take the spaghetti out of windows azure – an insight for it pro techies part 1
Introduction To Cloud Computing

Recently uploaded (20)

PDF
System and Network Administraation Chapter 3
PPTX
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
PDF
top salesforce developer skills in 2025.pdf
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
2025 Textile ERP Trends: SAP, Odoo & Oracle
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PPTX
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Designing Intelligence for the Shop Floor.pdf
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PPTX
history of c programming in notes for students .pptx
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PDF
Nekopoi APK 2025 free lastest update
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPT
Introduction Database Management System for Course Database
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
medical staffing services at VALiNTRY
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
System and Network Administraation Chapter 3
Embracing Complexity in Serverless! GOTO Serverless Bengaluru
top salesforce developer skills in 2025.pdf
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
2025 Textile ERP Trends: SAP, Odoo & Oracle
Upgrade and Innovation Strategies for SAP ERP Customers
Agentic AI Use Case- Contract Lifecycle Management (CLM).pptx
Wondershare Filmora 15 Crack With Activation Key [2025
Designing Intelligence for the Shop Floor.pdf
Reimagine Home Health with the Power of Agentic AI​
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
history of c programming in notes for students .pptx
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Nekopoi APK 2025 free lastest update
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
Introduction Database Management System for Course Database
CHAPTER 2 - PM Management and IT Context
medical staffing services at VALiNTRY
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025

Architecting with Queues for Scale, Speed, and Separation (DCPHP 3/11/15)

  • 1. Architecting with Queues for Scale, Speed and Separation Sandy Smith DCPHP 3/11/15
  • 2. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 The Challenge 2
  • 3. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Social Contest •Show off Azure + PHP •People submit tweets to enter contest •Pull specified keywords from Twitter queue (prefiltered by Node.js app) •Human admins filter out inappropriate content •Humans or computer pulls out winner from approved entries, on timer or arbitrarily •Display latest entries and latest winners to public 3
  • 4. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Stretch goals •Allow any size contest •Assume global contest with distributed moderators 4
  • 5. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Initial design 5
  • 6. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 The real bottleneck What’s the slowest and most variable part of any application? 6
  • 7. Insert Text Here Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 The real bottleneck 7
  • 8. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Quick refresher Performance vs. Scaling Vertical vs. Horizontal Scaling 8
  • 9. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Traditional database design •Group by kind •Keep metadata with object or in metadata tables •Objects (Document, Person, Account) are most important •Reinforced by TableGateway, ActiveRecord patterns, and ORM and framework module generator defaults •Works for 80% of cases 9
  • 10. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Tradeoffs of traditional design •Everything’s in one table, even when you routinely only need a subset •Typically one master writes, replicants read •Design is focused around what something is, not its state or other attribute •Requires creative solutions for horizontal scaling •Encourages (but does not require) centralizing logic for a given type of data 10
  • 11. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Worst of all… •This design really didn’t show off all the stuff in Azure 11
  • 12. (We had a week left) Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Redesign time 12
  • 13. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Redesign goals •Include as much Azure stuff as is reasonable •Implement the stretch goals of scalability 13
  • 14. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Queues to the rescue! (Plus some other cool stuff) 14
  • 15. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 New approach •Keep long term but fast storage •Central concern is not the Thing (Entry) but Status – Unapproved – Approved – Denied – Winner •Separate updates to long term storage from status changes •Minimal impact to working code 15
  • 16. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Azure queuing options Azure Queues (duh) •Simple •“Short”-lived (<7 days) •Used within Azure •Uses REST •Can track message processing 16 Azure Service Bus •Enterprisey •Long-lived •In Azure or private cloud •Can use AMQP, REST, or API •Can publish/subscribe •Can batch requests •Can guarantee FIFO •etc. See https://msdn.microsoft.com/en-us/library/azure/hh767287.aspx
  • 17. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 More options •Anything you can install on Linux or Windows (RabbitMQ, ZeroMQ, Kafka, Kestrel, ActiveMQ, etc.) •Any relational or NoSQL database •Azure Tables - Simple REST NoSQL store with a twist 17
  • 18. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Solutions •Long term storage and display retrieval: Azure Table •Since entries could begin long before a conference, use Service Bus to store changes in status •Have daemons pull incoming status changes out and write them to the Table 18
  • 19. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 New design 19
  • 20. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Azure Table basics 20 require_once 'vendorautoload.php';
 use WindowsAzureCommonServicesBuilder;
 use WindowsAzureCommonServiceException;
 use WindowsAzureTableModelsEntity;
 use WindowsAzureTableModelsEdmType;
 
 // Create table REST proxy.
 $tableRestProxy = ServicesBuilder::getInstance()->createTableService($connectionString);
 
 try {
 // Create table.
 $tableRestProxy->createTable("mytable");
 } catch(ServiceException $e){
 // Handle exception based on error codes and messages.
 }
 
 $entity = new Entity();
 $entity->setPartitionKey("pk");
 $entity->setRowKey("1");
 $entity->addProperty("PropertyName", EdmType::STRING, "Sample");
 
 try {
 $tableRestProxy->insertEntity("mytable", $entity);
 } catch(ServiceException $e){
 // Handle exception based on error codes and messages.
 }
  • 21. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Create and send with Service Bus 21 require_once 'vendorautoload.php';
 use WindowsAzureServiceBusModelsQueueInfo;
 use WindowsAzureCommonServiceException;
 use WindowsAzureCommonServicesBuilder;
 
 $serviceBusRestProxy = ServicesBuilder::getInstance()- >createServiceBusService($connectionString);
 
 try {
 $queueInfo = new QueueInfo("myqueue");
 $serviceBusRestProxy->createQueue($queueInfo);
 } catch(ServiceException $e) {
 // handle error
 }
 
 try {
 // Create message.
 $message = new BrokeredMessage();
 $message->setBody("my message");
 
 // Send message.
 $serviceBusRestProxy->sendQueueMessage("myqueue", $message);
 } catch(ServiceException $e) {
 // handle error
 }
  • 22. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Receive with Service Bus 22 require_once 'vendorautoload.php';
 use WindowsAzureServiceBusModelsQueueInfo;
 use WindowsAzureCommonServiceException;
 use WindowsAzureCommonServicesBuilder;
 
 $serviceBusRestProxy = ServicesBuilder::getInstance()- >createServiceBusService($connectionString);
 
 try {
 // Set the receive mode to PeekLock (default is ReceiveAndDelete).
 $options = new ReceiveMessageOptions();
 $options->setPeekLock(true);
 
 // Receive message.
 $message = $serviceBusRestProxy->receiveQueueMessage("myqueue", $options);
 echo "Body: ".$message->getBody()."<br />";
 echo "MessageID: ".$message->getMessageId()."<br />";
 
 // *** Process message here ***
 
 // Delete message.
 $serviceBusRestProxy->deleteMessage($message);
 } catch(ServiceException $e){
 // handle error
 }
  • 23. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Benefits •Queues add safety: if processing fails, main store is unchanged •App doesn’t wait for process-update-delete cycle – Concerns more separated •Can move queue processing to separate machines •Trivial to move to different stores for each status •Very performant with up-to-second data 23
  • 24. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Challenges •No full ACID •Safety is largely in the application layer •Potential for race conditions – Humans suck 24
  • 25. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Takeaways •Look for more than just long processes •Use to decouple functions •Look for status changes •Is the type of data the most important aspect of your data? – It usually is! •Design for replacement of components – Makes changes easier (not easy) 25
  • 26. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Links •Azure: http://azure.microsoft.com/en-us/ •Social Contest:
 https://github.com/MusketeersMe/SocialContest •Me – @SandyS1 – http://phparch.com/ •Feedback! https://joind.in/event/dc-php-march-2015 •Lone Star PHP (April 16–18): http://lonestarphp.com •php[tek] (May 18–22) http://tek.phparch.com •Slides will be at: http://www.slideshare.net/SandySmith 26
  • 27. Architecting with Queues - Sandy Smith - DCPHP - 3/11/15 Image credits •Questions? by Valerie Everett
 https://flic.kr/p/5zEjFG •Expanded coke zero can! by Audin Malmin
 https://flic.kr/p/5Ldjx8 27