SlideShare uma empresa Scribd logo
1 de 58
Northeast User Group Tour – April 2011 By Kevin Schroeder Technology Evangelist Zend Technologies
About Kevin  Past: Programming/Sys Admin  Current: Technology Evangelist/Author/Composer          @kpschrade
What do we do?
Zend Framework Zend Server PHP Test Application Performance Reliability & Management Scale-Out Enterprise Enablement Acceleration Monitoring Clustering Hot Fixes Optimization Root-Cause Job Queue Support Profile Caching Downloads Java Bridge Configuration Zend Studio (Eclipse-based) Debug Collaborate Linux (rpm/web repositories) IBM i (PTF) Windows (MSI)
A quick word on something new…
Wanna try it? Go to http://prerelease.adobe.com/callout/?callid=6C1235C63BDC414896951DDCEC01D5E8 … or go to http://www.eschrade.com/fbphp:-) Email me at kevin@zend.com (this will help expedite your approval)
Things we’re giving away
1 Zend Certification Test (you still have to pass it) 1 copy of Zend Studio ElePHPants Books Dart Boards Little Note Books (the paper kind)
Queuing
Could your PHP apps benefit from being able to process data or execute asynchronously? Twtpoll results
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?
People often say that performance and scalability are separate things. This is inaccurate (consider Google) 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
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?
Typical anatomy of a PHP Application Bad for scala-bility! Presentation Application Control Database Access Business Logic Presentation Application Control Business Logic Presentation | 16
Good for Scalability Presentation Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Application Control Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Business Logic Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Database Access Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php | 17  |   14-Apr-11
Defined tasks Loose coupling Resource discovery What helps make software scalable?
The Golden Rule of Scalability “It can probably wait”
Pre-caching data Data analysis Pre-analysis (predicting where your users will go) 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
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
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
[object Object]
Make as much as possible configurable/discoverableDecouple/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 pollingis more scalable than idle connections; introduces lag Considerations
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
Your only real options Very cloud friendly * I am not an expert on Gearman.  Corrections will be taken in the spirit that they are given. For obvious reasons, I will focus on Zend Server
Schedule jobs in the future Set recurring jobs Execute immediately, as resources are available (my fav) Utilize ZendJobQueue() Using the Zend Server Job Queue
Job Queue Architecture – Elastic Backend Web Server /w JQ Web Server Users! Web Server /w JQ Web Server Load Balancer Web Server /w JQ Web Server Pros Scale the backend as necessary Default (easy) mechanism Cons Getting the job status requires using a DB
Job Queue Architecture – Elastic Frontend Web Server Web Server /w JQ Users! Web Server Web Server /w JQ Load Balancer Web Server Web Server /w JQ Pros Easy to communicate with the Job Queue server handling the job Cons Requires you to build your own interface
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
comendobqueueanager Handles connecting to the queue and passing results back and forth comendobqueueobAbstract Abstract class that a job would be based off of comendobqueueesponse The response from the manager when a job is queued.  Contains the server name and job number orgschradeobscandir The actual job that scans the directory orgschradeobscandirResult An object that represents the data found Classes involved in the demo
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
Let’s write some code (no I’m not copping out with slides.  We’re all told to show our work in grade skool)
Deployment
Agenda What we will be talking about  Development->Testing->Staging->Production  Rsync/SVN/PEAR/yum mechanisms What we will not be talking about  Build tools (Phing, Maven, etc.)  Database versioning/deployment  Continuous Integration  MSI installs (Sorry MS folks, I really wanted to but, y’know, time)  Test-Driven Development
Before we get started Who here is a developer? Who here is a system administrator? Who here has an existing deployment strategy? Who here has edited a file in production? Who here has wished they didn’t?
Application Stages | 36 Increasing Maturity of PHP Applications Development Testing/QA Staging Production
Maturity | 37 Increasing Maturity of PHP Applications Uptime!! Testing & Validating Environment Testing & Validating Application Distinct Dev Environments Benefit Where are you? Structure
Development Purpose To provide developers an environment to write their code Characteristics Should be similar to production, though it usually isn’t Often security is more open Usually local to the developer
Consider Virtualization
Testing Purpose To provide a non-programming environment to test functionality Characteristics Continuous Integration could be included Generally no development occurs, only testing Developers should not do the testing, if possible Restricted outbound networking Use Zend Server Monitoring and Code Tracing to help reproduce errors
Prepared for and handed off to System Administrators (the stuff we’re here to talk about)
Staging Purpose To test your deployment process/scripting (not your code) Characteristics Developers generally do not have access, unless they are also the sysadmin Very restricted outbound networking Mirrors production as best as possible
Change Control A formal process used to ensure that changes are introduced in a controlled and coordinated manner Protect against unnecessary changes introduced to a system without forethought Requires documenting the release process Software version number Plans for rollback (tested? y/n) Expected outage time Customer impact Done prior to doing anything in production
Pre-Production (Optional) Purpose Test the code in the production environment without impacting customers Characteristics Not likely to have use in the cloud or large scale deployments Deployed in production immediately prior to making it live Test the application with production settings without customer interaction
Production ,[object Object]
Do whatever it is that it’s supposed to be doing
Characteristics
Developers do not have access (as they might be tempted to fix something)Deployment should be done without requiring developer input ,[object Object],[object Object]
Deployment Option 1 – rsync Benefits Easy Already installed on your system Drawbacks No deployment script can be run Not integrated with either PHP or the OS Rollbacks require rolling back the entire source server Does not understand versioning  One option is to move the source tree prior to the rsync Uses xinetd
Deployment Option 2 – Source Control Benefits  Easy  You should already be using source control  Has versioning  Can have pre/post install scripts  Easy to do automatic deployments  Drawbacks  Do you want to put details on how to access your source code on your production box?  Requires that your source control is accessible from production Deny access to .svn directories
Deployment Option 3 – PEAR Benefits Designed for PHP Very scriptable Natural for doing things like clearing a cache Has a better understanding of PHP Cross  platform compatible Drawbacks Requires admins to be familiar with PHP code Limited to PHP deployment Available tooling is restrictive/build your own package.xml Define standardized locations (www, library, etc.)
Deployment Option 3 – PEAR Creating your PEAR Channel pear channel-discover pear.pirum-project.org  pear install pirum/Pirum-beta vi /var/www/pear/pirum.xml <server>  <name>localhost/pear</name>  <summary>OurOrg PEAR channel</summary>  <alias>helloworld</alias>  <url>http://localhost/pear/</url></server> php ./pirum build /var/www/pear/
Deployment Option 3 - PEAR Creating your PEAR package php ./build-pear.php pear package pirum add /var/www/pear/ HelloWorld-0.1.3.tgz
Deploying your app pear channel-discover localhost/pear pear config-set www_dir /var/www pear install helloworld/HelloWorld pear clear-cache pear upgrade helloworld/HelloWorld Roll Back pear uninstall helloworld/HelloWorld pear install helloworld/HelloWorld-0.1.3
Deployment Option 4 - OS-based Benefits Easily added as part of your server deployment Very cloud friendly Admins already know how to use it Can describe OS-requirements/dependencies Downtime limited to actual install, not network transfer time Drawbacks Depends on environment Any PHP deployment scripting needs to be deployed with the application and executed in %post hook
Which should you use? Need something simple?  rsync Need to deploy to multiple disparate platforms? PEAR Need to deploy internally/with minimal developer input?OS (yum/apt) If using the OS consider maintaining an internal “blessed” repository instead of depending on the distribution
Continuous Deployment Using automated deployment Very tight end-to-end integration Requires a lot of trust that the developers have a fully tested application w/ backend and frontend code Probably more work to manage if you can count the servers in your production environment with your fingers Could be beneficial but make sure you know what you’re doing You will need to have several testing experts

Mais conteúdo relacionado

Mais procurados

Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
PostgresOpen
 
Ssw forte-agile-seminar
Ssw forte-agile-seminarSsw forte-agile-seminar
Ssw forte-agile-seminar
SSW
 

Mais procurados (20)

Automate across Platform, OS, Technologies with TaaS
Automate across Platform, OS, Technologies with TaaSAutomate across Platform, OS, Technologies with TaaS
Automate across Platform, OS, Technologies with TaaS
 
selenium meetup sf talk march 2014 Selenium at Scale
selenium meetup sf talk march 2014 Selenium at Scaleselenium meetup sf talk march 2014 Selenium at Scale
selenium meetup sf talk march 2014 Selenium at Scale
 
Continuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CIContinuous Delivery - Automate & Build Better Software with Travis CI
Continuous Delivery - Automate & Build Better Software with Travis CI
 
Build Your Custom Performance Testing Framework
Build Your Custom Performance Testing FrameworkBuild Your Custom Performance Testing Framework
Build Your Custom Performance Testing Framework
 
Selenium at Salesforce Scale
Selenium at Salesforce ScaleSelenium at Salesforce Scale
Selenium at Salesforce Scale
 
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
Lessons Learned in Software Development: QA Infrastructure – Maintaining Rob...
 
Distributed Release Management
Distributed Release ManagementDistributed Release Management
Distributed Release Management
 
Continuous Deployment: The Dirty Details
Continuous Deployment: The Dirty DetailsContinuous Deployment: The Dirty Details
Continuous Deployment: The Dirty Details
 
Continuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsContinuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database Objects
 
Jonathon Wright - Intelligent Performance Cognitive Learning (AIOps)
Jonathon Wright - Intelligent Performance Cognitive Learning (AIOps)Jonathon Wright - Intelligent Performance Cognitive Learning (AIOps)
Jonathon Wright - Intelligent Performance Cognitive Learning (AIOps)
 
Product! - The road to production deployment
Product! - The road to production deploymentProduct! - The road to production deployment
Product! - The road to production deployment
 
Agile Engineering Best Practices by Richard Cheng
Agile Engineering Best Practices by Richard ChengAgile Engineering Best Practices by Richard Cheng
Agile Engineering Best Practices by Richard Cheng
 
A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5
 
Selenium + Specflow
Selenium + SpecflowSelenium + Specflow
Selenium + Specflow
 
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
Build your QA Pipeline using Serenity , Selenium WebDriver , Rest Assured and...
 
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
 
Dev ops is more than CI+CD tools
Dev ops is more than CI+CD toolsDev ops is more than CI+CD tools
Dev ops is more than CI+CD tools
 
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
CollabSphere 2021 - DEV114 - The Nuts and Bolts of CI/CD With a Large XPages ...
 
Challenges and best practices of database continuous delivery
Challenges and best practices of database continuous deliveryChallenges and best practices of database continuous delivery
Challenges and best practices of database continuous delivery
 
Ssw forte-agile-seminar
Ssw forte-agile-seminarSsw forte-agile-seminar
Ssw forte-agile-seminar
 

Destaque

Eudora e mail instructions
Eudora e mail instructionsEudora e mail instructions
Eudora e mail instructions
Derek D'Angelo
 
Exporting from data director, Importing into PowerSchool
Exporting from data director, Importing into PowerSchoolExporting from data director, Importing into PowerSchool
Exporting from data director, Importing into PowerSchool
Derek D'Angelo
 
Powerpoint instructions
Powerpoint instructionsPowerpoint instructions
Powerpoint instructions
Derek D'Angelo
 
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
10n Software, LLC
 
Slideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You QueueSlideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You Queue
10n Software, LLC
 
PHP Performance: Principles and tools
PHP Performance: Principles and toolsPHP Performance: Principles and tools
PHP Performance: Principles and tools
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 systems
10n Software, LLC
 

Destaque (20)

Blackboard
BlackboardBlackboard
Blackboard
 
Eudora e mail instructions
Eudora e mail instructionsEudora e mail instructions
Eudora e mail instructions
 
Inservice stations
Inservice stationsInservice stations
Inservice stations
 
Exporting from data director, Importing into PowerSchool
Exporting from data director, Importing into PowerSchoolExporting from data director, Importing into PowerSchool
Exporting from data director, Importing into PowerSchool
 
Igpro setup
Igpro setupIgpro setup
Igpro setup
 
Powerpoint instructions
Powerpoint instructionsPowerpoint instructions
Powerpoint instructions
 
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
 
Zend Framework Workshop
Zend Framework WorkshopZend Framework Workshop
Zend Framework Workshop
 
Flex and Zend Framework
Flex and Zend FrameworkFlex and Zend Framework
Flex and Zend Framework
 
Slideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You QueueSlideshare - Magento Imagine - Do You Queue
Slideshare - Magento Imagine - Do You Queue
 
Email progress
Email progressEmail progress
Email progress
 
Ikeepbookmarks
IkeepbookmarksIkeepbookmarks
Ikeepbookmarks
 
Do you queue
Do you queueDo you queue
Do you queue
 
Ikeepbookmarks
IkeepbookmarksIkeepbookmarks
Ikeepbookmarks
 
PHP Performance: Principles and tools
PHP Performance: Principles and toolsPHP Performance: Principles and tools
PHP Performance: Principles and tools
 
Etlc google earth
Etlc google earthEtlc google earth
Etlc google earth
 
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
 
Data director wednesday
Data director wednesdayData director wednesday
Data director wednesday
 
Learn How To Develop With CakePHP
Learn How To Develop With CakePHPLearn How To Develop With CakePHP
Learn How To Develop With CakePHP
 
Laptops
LaptopsLaptops
Laptops
 

Semelhante a North east user group tour

Slides from LAX & DEN usergroup meetings
Slides from LAX & DEN usergroup meetingsSlides from LAX & DEN usergroup meetings
Slides from LAX & DEN usergroup meetings
10n Software, LLC
 
Magento's Imagine eCommerce Conference: Do You Queue?
Magento's Imagine eCommerce Conference: Do You Queue?Magento's Imagine eCommerce Conference: Do You Queue?
Magento's Imagine eCommerce Conference: Do You Queue?
varien
 
PHP North-East - Automated Deployment
PHP North-East - Automated DeploymentPHP North-East - Automated Deployment
PHP North-East - Automated Deployment
Michael Peacock
 
Practical management of development & QA environments for SharePoint 2013
Practical management of development & QA environments for SharePoint 2013Practical management of development & QA environments for SharePoint 2013
Practical management of development & QA environments for SharePoint 2013
SharePointRadi
 
Stepin evening presented
Stepin evening presentedStepin evening presented
Stepin evening presented
Vijayan Reddy
 
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
Anna Russo
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12
Enkitec
 

Semelhante a North east user group tour (20)

Slides from LAX & DEN usergroup meetings
Slides from LAX & DEN usergroup meetingsSlides from LAX & DEN usergroup meetings
Slides from LAX & DEN usergroup meetings
 
Do you queue (updated)
Do you queue (updated)Do you queue (updated)
Do you queue (updated)
 
Magento's Imagine eCommerce Conference: Do You Queue?
Magento's Imagine eCommerce Conference: Do You Queue?Magento's Imagine eCommerce Conference: Do You Queue?
Magento's Imagine eCommerce Conference: Do You Queue?
 
Best practice adoption (and lack there of)
Best practice adoption (and lack there of)Best practice adoption (and lack there of)
Best practice adoption (and lack there of)
 
PHP North-East - Automated Deployment
PHP North-East - Automated DeploymentPHP North-East - Automated Deployment
PHP North-East - Automated Deployment
 
Automated Deployment
Automated DeploymentAutomated Deployment
Automated Deployment
 
Practical management of development & QA environments for SharePoint 2013
Practical management of development & QA environments for SharePoint 2013Practical management of development & QA environments for SharePoint 2013
Practical management of development & QA environments for SharePoint 2013
 
Isset Presentation @ EECI2009
Isset Presentation @ EECI2009Isset Presentation @ EECI2009
Isset Presentation @ EECI2009
 
WinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release PipelinesWinOps Conf 2016 - Michael Greene - Release Pipelines
WinOps Conf 2016 - Michael Greene - Release Pipelines
 
Presentation 1 open source tools in continuous integration environment v1.0
Presentation 1   open source tools in continuous integration environment v1.0Presentation 1   open source tools in continuous integration environment v1.0
Presentation 1 open source tools in continuous integration environment v1.0
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal info
 
Scaling PHP Applications with Zend Platform
Scaling PHP Applications with Zend PlatformScaling PHP Applications with Zend Platform
Scaling PHP Applications with Zend Platform
 
Stepin evening presented
Stepin evening presentedStepin evening presented
Stepin evening presented
 
Ci tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepinsCi tips and_tricks_linards_liepins
Ci tips and_tricks_linards_liepins
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
 
DevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & AnsibleDevOps, A brief introduction to Vagrant & Ansible
DevOps, A brief introduction to Vagrant & Ansible
 
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
STAREAST 2011 - 7 Steps To Improving Software Quality using Microsoft Test Ma...
 
Functional Continuous Integration with Selenium and Hudson
Functional Continuous Integration with Selenium and HudsonFunctional Continuous Integration with Selenium and Hudson
Functional Continuous Integration with Selenium and Hudson
 
Putting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/TestPutting the DOT in .NET - Dev/Ops/Test
Putting the DOT in .NET - Dev/Ops/Test
 
Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12Kelly potvin nosurprises_odtug_oow12
Kelly potvin nosurprises_odtug_oow12
 

Mais de 10n Software, LLC (6)

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
 
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
 

Último

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
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 New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
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
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 

North east user group tour

  • 1. Northeast User Group Tour – April 2011 By Kevin Schroeder Technology Evangelist Zend Technologies
  • 2. About Kevin Past: Programming/Sys Admin Current: Technology Evangelist/Author/Composer @kpschrade
  • 4.
  • 5. Zend Framework Zend Server PHP Test Application Performance Reliability & Management Scale-Out Enterprise Enablement Acceleration Monitoring Clustering Hot Fixes Optimization Root-Cause Job Queue Support Profile Caching Downloads Java Bridge Configuration Zend Studio (Eclipse-based) Debug Collaborate Linux (rpm/web repositories) IBM i (PTF) Windows (MSI)
  • 6. A quick word on something new…
  • 7.
  • 8. Wanna try it? Go to http://prerelease.adobe.com/callout/?callid=6C1235C63BDC414896951DDCEC01D5E8 … or go to http://www.eschrade.com/fbphp:-) Email me at kevin@zend.com (this will help expedite your approval)
  • 10. 1 Zend Certification Test (you still have to pass it) 1 copy of Zend Studio ElePHPants Books Dart Boards Little Note Books (the paper kind)
  • 12. Could your PHP apps benefit from being able to process data or execute asynchronously? Twtpoll results
  • 13. 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?
  • 14. People often say that performance and scalability are separate things. This is inaccurate (consider Google) 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
  • 15. 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?
  • 16. Typical anatomy of a PHP Application Bad for scala-bility! Presentation Application Control Database Access Business Logic Presentation Application Control Business Logic Presentation | 16
  • 17. Good for Scalability Presentation Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Something.phtml Application Control Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Business Logic Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php Database Access Something.php Something.php Something.php Something.php Something.php Something.php Something.php Something.php | 17 | 14-Apr-11
  • 18. Defined tasks Loose coupling Resource discovery What helps make software scalable?
  • 19. The Golden Rule of Scalability “It can probably wait”
  • 20. Pre-caching data Data analysis Pre-analysis (predicting where your users will go) 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
  • 21. 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
  • 22. 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
  • 23.
  • 24. Make as much as possible configurable/discoverableDecouple/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 pollingis more scalable than idle connections; introduces lag Considerations
  • 25. 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
  • 26. Your only real options Very cloud friendly * I am not an expert on Gearman. Corrections will be taken in the spirit that they are given. For obvious reasons, I will focus on Zend Server
  • 27. Schedule jobs in the future Set recurring jobs Execute immediately, as resources are available (my fav) Utilize ZendJobQueue() Using the Zend Server Job Queue
  • 28. Job Queue Architecture – Elastic Backend Web Server /w JQ Web Server Users! Web Server /w JQ Web Server Load Balancer Web Server /w JQ Web Server Pros Scale the backend as necessary Default (easy) mechanism Cons Getting the job status requires using a DB
  • 29. Job Queue Architecture – Elastic Frontend Web Server Web Server /w JQ Users! Web Server Web Server /w JQ Load Balancer Web Server Web Server /w JQ Pros Easy to communicate with the Job Queue server handling the job Cons Requires you to build your own interface
  • 30. 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
  • 31. comendobqueueanager Handles connecting to the queue and passing results back and forth comendobqueueobAbstract Abstract class that a job would be based off of comendobqueueesponse The response from the manager when a job is queued. Contains the server name and job number orgschradeobscandir The actual job that scans the directory orgschradeobscandirResult An object that represents the data found Classes involved in the demo
  • 32. 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
  • 33. Let’s write some code (no I’m not copping out with slides. We’re all told to show our work in grade skool)
  • 35. Agenda What we will be talking about Development->Testing->Staging->Production Rsync/SVN/PEAR/yum mechanisms What we will not be talking about Build tools (Phing, Maven, etc.) Database versioning/deployment Continuous Integration MSI installs (Sorry MS folks, I really wanted to but, y’know, time) Test-Driven Development
  • 36. Before we get started Who here is a developer? Who here is a system administrator? Who here has an existing deployment strategy? Who here has edited a file in production? Who here has wished they didn’t?
  • 37. Application Stages | 36 Increasing Maturity of PHP Applications Development Testing/QA Staging Production
  • 38. Maturity | 37 Increasing Maturity of PHP Applications Uptime!! Testing & Validating Environment Testing & Validating Application Distinct Dev Environments Benefit Where are you? Structure
  • 39. Development Purpose To provide developers an environment to write their code Characteristics Should be similar to production, though it usually isn’t Often security is more open Usually local to the developer
  • 41. Testing Purpose To provide a non-programming environment to test functionality Characteristics Continuous Integration could be included Generally no development occurs, only testing Developers should not do the testing, if possible Restricted outbound networking Use Zend Server Monitoring and Code Tracing to help reproduce errors
  • 42. Prepared for and handed off to System Administrators (the stuff we’re here to talk about)
  • 43. Staging Purpose To test your deployment process/scripting (not your code) Characteristics Developers generally do not have access, unless they are also the sysadmin Very restricted outbound networking Mirrors production as best as possible
  • 44. Change Control A formal process used to ensure that changes are introduced in a controlled and coordinated manner Protect against unnecessary changes introduced to a system without forethought Requires documenting the release process Software version number Plans for rollback (tested? y/n) Expected outage time Customer impact Done prior to doing anything in production
  • 45. Pre-Production (Optional) Purpose Test the code in the production environment without impacting customers Characteristics Not likely to have use in the cloud or large scale deployments Deployed in production immediately prior to making it live Test the application with production settings without customer interaction
  • 46.
  • 47. Do whatever it is that it’s supposed to be doing
  • 49.
  • 50. Deployment Option 1 – rsync Benefits Easy Already installed on your system Drawbacks No deployment script can be run Not integrated with either PHP or the OS Rollbacks require rolling back the entire source server Does not understand versioning One option is to move the source tree prior to the rsync Uses xinetd
  • 51. Deployment Option 2 – Source Control Benefits Easy You should already be using source control Has versioning Can have pre/post install scripts Easy to do automatic deployments Drawbacks Do you want to put details on how to access your source code on your production box? Requires that your source control is accessible from production Deny access to .svn directories
  • 52. Deployment Option 3 – PEAR Benefits Designed for PHP Very scriptable Natural for doing things like clearing a cache Has a better understanding of PHP Cross platform compatible Drawbacks Requires admins to be familiar with PHP code Limited to PHP deployment Available tooling is restrictive/build your own package.xml Define standardized locations (www, library, etc.)
  • 53. Deployment Option 3 – PEAR Creating your PEAR Channel pear channel-discover pear.pirum-project.org pear install pirum/Pirum-beta vi /var/www/pear/pirum.xml <server>  <name>localhost/pear</name>  <summary>OurOrg PEAR channel</summary>  <alias>helloworld</alias>  <url>http://localhost/pear/</url></server> php ./pirum build /var/www/pear/
  • 54. Deployment Option 3 - PEAR Creating your PEAR package php ./build-pear.php pear package pirum add /var/www/pear/ HelloWorld-0.1.3.tgz
  • 55. Deploying your app pear channel-discover localhost/pear pear config-set www_dir /var/www pear install helloworld/HelloWorld pear clear-cache pear upgrade helloworld/HelloWorld Roll Back pear uninstall helloworld/HelloWorld pear install helloworld/HelloWorld-0.1.3
  • 56. Deployment Option 4 - OS-based Benefits Easily added as part of your server deployment Very cloud friendly Admins already know how to use it Can describe OS-requirements/dependencies Downtime limited to actual install, not network transfer time Drawbacks Depends on environment Any PHP deployment scripting needs to be deployed with the application and executed in %post hook
  • 57. Which should you use? Need something simple? rsync Need to deploy to multiple disparate platforms? PEAR Need to deploy internally/with minimal developer input?OS (yum/apt) If using the OS consider maintaining an internal “blessed” repository instead of depending on the distribution
  • 58. Continuous Deployment Using automated deployment Very tight end-to-end integration Requires a lot of trust that the developers have a fully tested application w/ backend and frontend code Probably more work to manage if you can count the servers in your production environment with your fingers Could be beneficial but make sure you know what you’re doing You will need to have several testing experts
  • 59. Takeaways No need for copy-and-paste deployment No need for (S)FTP (Kinda not good for deployment) Have an easy rollback mechanism Prepare for errors in deployment Try to minimize the amount of scripting needed for deployment Consider using VMs on anything important to keep downtime to zero bit.ly/phpDepAll
  • 60. Follow us! Zend Technologies http://twitter.com/zend http://twitter.com/kpschrade (me!)
  • 61. Get this information and all the examples at eschrade.com…

Notas do Editor

  1. We released Zend Server and Zend Server Community Edition in April this year Products written from scratch based on our very extensive experience with Platform technologies Full integrated stack, native installer, ZF and Studio integration, software updates, all new UI, … Both editions have been very well received by users (love performance boost, ease of use, deployment) Great fit to our partners – we’re working with Varien/Magento, KnowledgeTree, MCS, … Next step will round up web app server offering to support high availability and scalability – more on this in the next few months