SlideShare una empresa de Scribd logo
1 de 26
Do you queue?
Characteristics of
scalability
Kevin Schroeder
Technology Evangelist
Zend Technologies
2
•Kevin Schroeder
 Technology Evangelist for Zend
 Programmer
 Sys Admin
 Author
• IBM i Programmer’s Guide to PHP
• You want to do WHAT with PHP?
 Race Ferraris on the weekend
• My Honda has a dismal win record
About me
3
I blog at eschrade.com
Follow us!
(good things will happen to you)
 Zend Technologies
 http://twitter.com/zend
 http://twitter.com/kpschrade (me!)
4
Could your PHP apps benefit from being able to
process data or execute asynchronously?
Twtpoll results
5
•Performance
 Execute logic apart from the main request (asynchronicity)
•Scalability
 The ability to handle non-immediate logic as resources are
available
Why would you want to queue?
6
•People often say that performance and scalability are two
completely different things.
This is inaccurate
•Performance is the speed by which a request is executed
•Scalability is the ability of that request to maintain its
performance as load/infrastructure increases
Performance & Scalability
7
•DON’T!!
•You are not Facebook
•You probably won’t be
•Don’t overcomplicate your problems by trying to be
So how do you scale to Facebook size?
8
Typical anatomy of a PHP Application
|
Presentation
Application Control
Database Access
Business Logic
Presentation
Application Control
Business Logic
Presentation
Bad for
scala-
bility!
9| |
Presentation
Database Access
Business Logic
Application Control
Someth
ing.pht
ml
Someth
ing.pht
ml
Someth
ing.pht
ml
Someth
ing.pht
ml
Someth
ing.pht
ml
Someth
ing.pht
ml
Someth
ing.pht
ml
Someth
ing.pht
ml
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Someth
ing.php
Good for
Scalability
10
Defined tasks
Loose coupling
Resource discovery
What helps make software scalable?
11
The Golden Rule of Scalability
“It can probably wait”
12
•Pre-caching data
•Data analysis
•Data processing
•Pre-calculating (preparing data for the next request)
Data is “out of date” once it leaves the web server
Immediacy is seldom necessary
Asynchronous execution uses
13
•A sledgehammer can hit a machine
 Scalability and High Availability are yin and yang
• A site that can’t keep running is not scalable
• A site that can’t scale will fail (if it gets really popular)
•Machines can be added and removed at will
 Not “cloudy” necessarily
•No single point of failure
 Data exists in at least two, preferably at least three, places
Characteristics
14
•Waste disk space
•Control usage (don’t let users do anything they want)
•Pre-calculate as much as possible
 Calculate and cache/store
•Don’t scan large amounts of data
•Keep data processing off the front end servers
•Don’t just cache
 Don’t let it substitute for thought
 Cache hit rates can be meaningless if you have hundreds of cache
hits for a request
Considerations
15
• Build a deployment mechanism with NO hardcoded values
like directory or resource locations
• Make as much as possible configurable/discoverable
•Decouple/Partition
 Don’t tie everything (relationships and such) into the database
•Use queues/messaging
 Stomp interfaces are really good for PHP – Can also use Java Bridge
 Zend_Queue has several interfaces
•Try to use stateless interfaces
 (polling is more scalable than idle connections)
Considerations
16
•Use Cron /w PHP CLI (probably shouldn’t do this)
•Use Gearman
•Use home-grown (don’t do this)
•Use pcntl_fork() (NEVER do this)
•Use Zend Server Job Queue
Options
17
Gearman* Zend Server Job Queue
Free
Lightweight
Open Source
(mostly) language
agnostic
Distributed queuing
Ready to go
Integrates with Event Monitoring
Integrates with Code Tracing
Runs over a widely known protocol
Load distribution can be
accomplished outside of the queue
Your only real options
* I am not an expert on Gearman. Corrections will be taken in the spirit that they are given.
Very cloud friendly
For obvious reasons, I will focus on Zend Server
18
•Schedule jobs in the future
•Set recurring jobs
•Execute immediately, as resources are available (my fav)
•Utilize ZendJobQueue()
Using the Zend Server Job Queue
19
Job Queue Architecture – Elastic Backend
Users!
Web Server
/w JQ
Web Server
/w JQ
Web Server
/w JQ
Web Server
Web Server
Web Server
LoadBalancer
•Pros
 Scale the backend as necessary
 Default (easy) mechanism
•Cons
 Getting the job status requires using a DB
20
Job Queue Architecture – Elastic Frontend
Users!
Web Server
Web Server
Web Server
Web Server
/w JQ
Web Server
/w JQ
Web Server
/w JQ
LoadBalancer
•Pros
• Easy to communicate with the Job Queue server handling the job
Cons
• Requires you to build your own interface
21
•Create a task-handling controller
•Create an abstract task class
 Understands the Job Queue
 Self contained
• If Elastic Backend: connects to localhost
• If Elastic Frontend: connects to load balancer (my preferred), load
balanced JQ servers manage themselves
•Execute the task, have it serialize itself and send it to send
to the task handler
Kevin’s favorite way to implement it
22
 Q_Manager
Handles connecting to the queue and passing results back and forth
 Q_JobAbstract
Abstract class that a job would be based off of
 Q_Response
The response from the manager when a job is queued. Contains the
server name and job number
 Job_Scandir
The actual job that scans the directory
 Job_ScandirResult
An object that represents the data found
Classes involved in the demo
23
 Create job and set data
 Execute job
• Job passes itself to the queue manager
• Manager serializes job
• Manager uses HTTP call through a load balancer to queue the job
• The queue on the other end returns the job id and server name
• Job ID and server name is passed to the client
 Client polls the manager to get a completed job
• When the job is returned pass the serialized version of the executed
job
Execution Flow
24
Let’s write some code
(no I’m not copping out with slides. We’re all told to show our work in
grade scool)
25
Follow us!
 Zend Technologies
 http://twitter.com/zend
 http://twitter.com/kpschrade (me!)
26
Get this information and all the
examples at eschrade.com…

Más contenido relacionado

La actualidad más candente

Why use Go for web development?
Why use Go for web development?Why use Go for web development?
Why use Go for web development?Weng Wei
 
Azkaban-en
Azkaban-enAzkaban-en
Azkaban-enwyukawa
 
Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.Herman Peeren
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Derek Jacoby
 
RubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applicationsRubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applicationsFlorian Dutey
 
Webcomponents are your frameworks best friend
Webcomponents are your frameworks best friendWebcomponents are your frameworks best friend
Webcomponents are your frameworks best friendFilip Bruun Bech-Larsen
 
Optimization of modern web applications
Optimization of modern web applicationsOptimization of modern web applications
Optimization of modern web applicationsEugene Lazutkin
 
Theming in WordPress - Where do I Start?
Theming in WordPress - Where do I Start?Theming in WordPress - Where do I Start?
Theming in WordPress - Where do I Start?Edmund Turbin
 
Untangling spring week4
Untangling spring week4Untangling spring week4
Untangling spring week4Derek Jacoby
 
Web a Quebec - JS Debugging
Web a Quebec - JS DebuggingWeb a Quebec - JS Debugging
Web a Quebec - JS DebuggingRami Sayar
 
Talk about java
Talk about javaTalk about java
Talk about javaDavis Chen
 
Exciting JavaScript - Part II
Exciting JavaScript - Part IIExciting JavaScript - Part II
Exciting JavaScript - Part IIEugene Lazutkin
 
Untangling - fall2017 - week 10
Untangling - fall2017 - week 10Untangling - fall2017 - week 10
Untangling - fall2017 - week 10Derek Jacoby
 
Saving Time By Testing With Jest
Saving Time By Testing With JestSaving Time By Testing With Jest
Saving Time By Testing With JestBen McCormick
 
Migrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoMigrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoWeng Wei
 
Developing Complex WordPress Sites without Fear of Failure (with MVC)
Developing Complex WordPress Sites without Fear of Failure (with MVC)Developing Complex WordPress Sites without Fear of Failure (with MVC)
Developing Complex WordPress Sites without Fear of Failure (with MVC)Mike Schinkel
 
Performance metrics for a social network
Performance metrics for a social networkPerformance metrics for a social network
Performance metrics for a social networkThierry Schellenbach
 

La actualidad más candente (20)

Why use Go for web development?
Why use Go for web development?Why use Go for web development?
Why use Go for web development?
 
Azkaban-en
Azkaban-enAzkaban-en
Azkaban-en
 
Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.Webservices: connecting Joomla! with other programs.
Webservices: connecting Joomla! with other programs.
 
Untangling - fall2017 - week 9
Untangling - fall2017 - week 9Untangling - fall2017 - week 9
Untangling - fall2017 - week 9
 
A Day of REST
A Day of RESTA Day of REST
A Day of REST
 
RubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applicationsRubyConf Taiwan 2016 - Large scale Rails applications
RubyConf Taiwan 2016 - Large scale Rails applications
 
Webcomponents are your frameworks best friend
Webcomponents are your frameworks best friendWebcomponents are your frameworks best friend
Webcomponents are your frameworks best friend
 
Optimization of modern web applications
Optimization of modern web applicationsOptimization of modern web applications
Optimization of modern web applications
 
Frameworks and webcomponents
Frameworks and webcomponentsFrameworks and webcomponents
Frameworks and webcomponents
 
Theming in WordPress - Where do I Start?
Theming in WordPress - Where do I Start?Theming in WordPress - Where do I Start?
Theming in WordPress - Where do I Start?
 
Untangling spring week4
Untangling spring week4Untangling spring week4
Untangling spring week4
 
Web a Quebec - JS Debugging
Web a Quebec - JS DebuggingWeb a Quebec - JS Debugging
Web a Quebec - JS Debugging
 
Untangling11
Untangling11Untangling11
Untangling11
 
Talk about java
Talk about javaTalk about java
Talk about java
 
Exciting JavaScript - Part II
Exciting JavaScript - Part IIExciting JavaScript - Part II
Exciting JavaScript - Part II
 
Untangling - fall2017 - week 10
Untangling - fall2017 - week 10Untangling - fall2017 - week 10
Untangling - fall2017 - week 10
 
Saving Time By Testing With Jest
Saving Time By Testing With JestSaving Time By Testing With Jest
Saving Time By Testing With Jest
 
Migrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to GoMigrate PHP E-Commerce Site to Go
Migrate PHP E-Commerce Site to Go
 
Developing Complex WordPress Sites without Fear of Failure (with MVC)
Developing Complex WordPress Sites without Fear of Failure (with MVC)Developing Complex WordPress Sites without Fear of Failure (with MVC)
Developing Complex WordPress Sites without Fear of Failure (with MVC)
 
Performance metrics for a social network
Performance metrics for a social networkPerformance metrics for a social network
Performance metrics for a social network
 

Similar a Do you queue

BTV PHP - Building Fast Websites
BTV PHP - Building Fast WebsitesBTV PHP - Building Fast Websites
BTV PHP - Building Fast WebsitesJonathan Klein
 
Best practices-wordpress-enterprise
Best practices-wordpress-enterpriseBest practices-wordpress-enterprise
Best practices-wordpress-enterpriseTaylor Lovett
 
Best Practices for WordPress in Enterprise
Best Practices for WordPress in EnterpriseBest Practices for WordPress in Enterprise
Best Practices for WordPress in EnterpriseTaylor Lovett
 
Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i  Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i Zend by Rogue Wave Software
 
Slideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You QueueSlideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You Queue10n Software, LLC
 
Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPressTaylor Lovett
 
Testing with laravel
Testing with laravelTesting with laravel
Testing with laravelDerek Binkley
 
Headless cms architecture
Headless cms architectureHeadless cms architecture
Headless cms architectureKevin Wenger
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsTaylor Lovett
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQLKonstantin Gredeskoul
 
Scaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHPScaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHP120bi
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsAchievers Tech
 
Untangling spring week1
Untangling spring week1Untangling spring week1
Untangling spring week1Derek Jacoby
 
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 Potsdam
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 PotsdamFrom Zero to Performance Hero in Minutes - Agile Testing Days 2014 Potsdam
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 PotsdamAndreas Grabner
 
GraphQL-PHP: Dos and don'ts
GraphQL-PHP: Dos and don'tsGraphQL-PHP: Dos and don'ts
GraphQL-PHP: Dos and don'tsVáclav Šír
 
Gearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleGearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleMike Willbanks
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your WebsiteAcquia
 

Similar a Do you queue (20)

Do you queue (updated)
Do you queue (updated)Do you queue (updated)
Do you queue (updated)
 
BTV PHP - Building Fast Websites
BTV PHP - Building Fast WebsitesBTV PHP - Building Fast Websites
BTV PHP - Building Fast Websites
 
Best practices-wordpress-enterprise
Best practices-wordpress-enterpriseBest practices-wordpress-enterprise
Best practices-wordpress-enterprise
 
Best Practices for WordPress in Enterprise
Best Practices for WordPress in EnterpriseBest Practices for WordPress in Enterprise
Best Practices for WordPress in Enterprise
 
Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i  Fundamentals of performance tuning PHP on IBM i
Fundamentals of performance tuning PHP on IBM i
 
Slideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You QueueSlideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You Queue
 
Best Practices for WordPress
Best Practices for WordPressBest Practices for WordPress
Best Practices for WordPress
 
Testing with laravel
Testing with laravelTesting with laravel
Testing with laravel
 
Voldemort Nosql
Voldemort NosqlVoldemort Nosql
Voldemort Nosql
 
Headless cms architecture
Headless cms architectureHeadless cms architecture
Headless cms architecture
 
Best Practices for Building WordPress Applications
Best Practices for Building WordPress ApplicationsBest Practices for Building WordPress Applications
Best Practices for Building WordPress Applications
 
North east user group tour
North east user group tourNorth east user group tour
North east user group tour
 
12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL12-Step Program for Scaling Web Applications on PostgreSQL
12-Step Program for Scaling Web Applications on PostgreSQL
 
Scaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHPScaling a High Traffic Web Application: Our Journey from Java to PHP
Scaling a High Traffic Web Application: Our Journey from Java to PHP
 
Scaling High Traffic Web Applications
Scaling High Traffic Web ApplicationsScaling High Traffic Web Applications
Scaling High Traffic Web Applications
 
Untangling spring week1
Untangling spring week1Untangling spring week1
Untangling spring week1
 
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 Potsdam
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 PotsdamFrom Zero to Performance Hero in Minutes - Agile Testing Days 2014 Potsdam
From Zero to Performance Hero in Minutes - Agile Testing Days 2014 Potsdam
 
GraphQL-PHP: Dos and don'ts
GraphQL-PHP: Dos and don'tsGraphQL-PHP: Dos and don'ts
GraphQL-PHP: Dos and don'ts
 
Gearman: A Job Server made for Scale
Gearman: A Job Server made for ScaleGearman: A Job Server made for Scale
Gearman: A Job Server made for Scale
 
5 Common Mistakes You are Making on your Website
 5 Common Mistakes You are Making on your Website 5 Common Mistakes You are Making on your Website
5 Common Mistakes You are Making on your Website
 

Más de 10n Software, LLC

Delaying Gratification: Using queues to build efficient systems
Delaying Gratification: Using queues to build efficient systemsDelaying Gratification: Using queues to build efficient systems
Delaying Gratification: Using queues to build efficient systems10n Software, LLC
 
Flex and PHP For the Flash Folks
Flex and PHP For the Flash FolksFlex and PHP For the Flash Folks
Flex and PHP For the Flash Folks10n Software, LLC
 
PHP Performance: Principles and tools
PHP Performance: Principles and toolsPHP Performance: Principles and tools
PHP Performance: Principles and tools10n Software, LLC
 
Application Deployment with Zend Server 5.5 beta
Application Deployment with Zend Server 5.5 betaApplication Deployment with Zend Server 5.5 beta
Application Deployment with Zend Server 5.5 beta10n Software, LLC
 
Creating stunning data analytics dashboard using php and flex
Creating stunning data analytics dashboard using php and flexCreating stunning data analytics dashboard using php and flex
Creating stunning data analytics dashboard using php and flex10n Software, LLC
 
Slides from LAX & DEN usergroup meetings
Slides from LAX & DEN usergroup meetingsSlides from LAX & DEN usergroup meetings
Slides from LAX & DEN usergroup meetings10n Software, LLC
 

Más de 10n Software, LLC (12)

Delaying Gratification: Using queues to build efficient systems
Delaying Gratification: Using queues to build efficient systemsDelaying Gratification: Using queues to build efficient systems
Delaying Gratification: Using queues to build efficient systems
 
10 things
10 things10 things
10 things
 
Flex and PHP For the Flash Folks
Flex and PHP For the Flash FolksFlex and PHP For the Flash Folks
Flex and PHP For the Flash Folks
 
PHP Performance: Principles and tools
PHP Performance: Principles and toolsPHP Performance: Principles and tools
PHP Performance: Principles and tools
 
Application Deployment with Zend Server 5.5 beta
Application Deployment with Zend Server 5.5 betaApplication Deployment with Zend Server 5.5 beta
Application Deployment with Zend Server 5.5 beta
 
Flex for php developers
Flex for php developersFlex for php developers
Flex for php developers
 
Creating stunning data analytics dashboard using php and flex
Creating stunning data analytics dashboard using php and flexCreating stunning data analytics dashboard using php and flex
Creating stunning data analytics dashboard using php and flex
 
Php security common 2011
Php security common 2011Php security common 2011
Php security common 2011
 
Zend Server - OSI Days
Zend Server - OSI DaysZend Server - OSI Days
Zend Server - OSI Days
 
Zend Framework Workshop
Zend Framework WorkshopZend Framework Workshop
Zend Framework Workshop
 
Slides from LAX & DEN usergroup meetings
Slides from LAX & DEN usergroup meetingsSlides from LAX & DEN usergroup meetings
Slides from LAX & DEN usergroup meetings
 
Flex and Zend Framework
Flex and Zend FrameworkFlex and Zend Framework
Flex and Zend Framework
 

Último

Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
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 2024The Digital Insurer
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
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...Martijn de Jong
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelDeepika Singh
 

Último (20)

Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
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...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 

Do you queue

  • 1. Do you queue? Characteristics of scalability Kevin Schroeder Technology Evangelist Zend Technologies
  • 2. 2 •Kevin Schroeder  Technology Evangelist for Zend  Programmer  Sys Admin  Author • IBM i Programmer’s Guide to PHP • You want to do WHAT with PHP?  Race Ferraris on the weekend • My Honda has a dismal win record About me
  • 3. 3 I blog at eschrade.com Follow us! (good things will happen to you)  Zend Technologies  http://twitter.com/zend  http://twitter.com/kpschrade (me!)
  • 4. 4 Could your PHP apps benefit from being able to process data or execute asynchronously? Twtpoll results
  • 5. 5 •Performance  Execute logic apart from the main request (asynchronicity) •Scalability  The ability to handle non-immediate logic as resources are available Why would you want to queue?
  • 6. 6 •People often say that performance and scalability are two completely different things. This is inaccurate •Performance is the speed by which a request is executed •Scalability is the ability of that request to maintain its performance as load/infrastructure increases Performance & Scalability
  • 7. 7 •DON’T!! •You are not Facebook •You probably won’t be •Don’t overcomplicate your problems by trying to be So how do you scale to Facebook size?
  • 8. 8 Typical anatomy of a PHP Application | Presentation Application Control Database Access Business Logic Presentation Application Control Business Logic Presentation Bad for scala- bility!
  • 9. 9| | Presentation Database Access Business Logic Application Control Someth ing.pht ml Someth ing.pht ml Someth ing.pht ml Someth ing.pht ml Someth ing.pht ml Someth ing.pht ml Someth ing.pht ml Someth ing.pht ml Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Someth ing.php Good for Scalability
  • 10. 10 Defined tasks Loose coupling Resource discovery What helps make software scalable?
  • 11. 11 The Golden Rule of Scalability “It can probably wait”
  • 12. 12 •Pre-caching data •Data analysis •Data processing •Pre-calculating (preparing data for the next request) Data is “out of date” once it leaves the web server Immediacy is seldom necessary Asynchronous execution uses
  • 13. 13 •A sledgehammer can hit a machine  Scalability and High Availability are yin and yang • A site that can’t keep running is not scalable • A site that can’t scale will fail (if it gets really popular) •Machines can be added and removed at will  Not “cloudy” necessarily •No single point of failure  Data exists in at least two, preferably at least three, places Characteristics
  • 14. 14 •Waste disk space •Control usage (don’t let users do anything they want) •Pre-calculate as much as possible  Calculate and cache/store •Don’t scan large amounts of data •Keep data processing off the front end servers •Don’t just cache  Don’t let it substitute for thought  Cache hit rates can be meaningless if you have hundreds of cache hits for a request Considerations
  • 15. 15 • Build a deployment mechanism with NO hardcoded values like directory or resource locations • Make as much as possible configurable/discoverable •Decouple/Partition  Don’t tie everything (relationships and such) into the database •Use queues/messaging  Stomp interfaces are really good for PHP – Can also use Java Bridge  Zend_Queue has several interfaces •Try to use stateless interfaces  (polling is more scalable than idle connections) Considerations
  • 16. 16 •Use Cron /w PHP CLI (probably shouldn’t do this) •Use Gearman •Use home-grown (don’t do this) •Use pcntl_fork() (NEVER do this) •Use Zend Server Job Queue Options
  • 17. 17 Gearman* Zend Server Job Queue Free Lightweight Open Source (mostly) language agnostic Distributed queuing Ready to go Integrates with Event Monitoring Integrates with Code Tracing Runs over a widely known protocol Load distribution can be accomplished outside of the queue Your only real options * I am not an expert on Gearman. Corrections will be taken in the spirit that they are given. Very cloud friendly For obvious reasons, I will focus on Zend Server
  • 18. 18 •Schedule jobs in the future •Set recurring jobs •Execute immediately, as resources are available (my fav) •Utilize ZendJobQueue() Using the Zend Server Job Queue
  • 19. 19 Job Queue Architecture – Elastic Backend Users! Web Server /w JQ Web Server /w JQ Web Server /w JQ Web Server Web Server Web Server LoadBalancer •Pros  Scale the backend as necessary  Default (easy) mechanism •Cons  Getting the job status requires using a DB
  • 20. 20 Job Queue Architecture – Elastic Frontend Users! Web Server Web Server Web Server Web Server /w JQ Web Server /w JQ Web Server /w JQ LoadBalancer •Pros • Easy to communicate with the Job Queue server handling the job Cons • Requires you to build your own interface
  • 21. 21 •Create a task-handling controller •Create an abstract task class  Understands the Job Queue  Self contained • If Elastic Backend: connects to localhost • If Elastic Frontend: connects to load balancer (my preferred), load balanced JQ servers manage themselves •Execute the task, have it serialize itself and send it to send to the task handler Kevin’s favorite way to implement it
  • 22. 22  Q_Manager Handles connecting to the queue and passing results back and forth  Q_JobAbstract Abstract class that a job would be based off of  Q_Response The response from the manager when a job is queued. Contains the server name and job number  Job_Scandir The actual job that scans the directory  Job_ScandirResult An object that represents the data found Classes involved in the demo
  • 23. 23  Create job and set data  Execute job • Job passes itself to the queue manager • Manager serializes job • Manager uses HTTP call through a load balancer to queue the job • The queue on the other end returns the job id and server name • Job ID and server name is passed to the client  Client polls the manager to get a completed job • When the job is returned pass the serialized version of the executed job Execution Flow
  • 24. 24 Let’s write some code (no I’m not copping out with slides. We’re all told to show our work in grade scool)
  • 25. 25 Follow us!  Zend Technologies  http://twitter.com/zend  http://twitter.com/kpschrade (me!)
  • 26. 26 Get this information and all the examples at eschrade.com…