Options for deploying PHP applications
-
Upload
kevin-schroeder -
Category
Technology
-
view
10.886 -
download
5
description
Transcript of Options for deploying PHP applications
©All rights reserved. Zend Technologies, Inc.
Guidelines for deploying PHP applications
By Kevin Schroeder
Technology Evangelist
Zend Technologies
©All rights reserved. Zend Technologies, Inc.
About me
• Kevin Schroeder Technology Evangelist for Zend
Programmer
Sys Admin
Author• IBM i Programmer’s Guide to PHP
• You want to do WHAT with PHP? – Coming up
Race Ferraris on the weekend• My Honda has a dismal win record
©All rights reserved. Zend Technologies, Inc.
• If you have a question you can Type in the Q&A panel
Follow us! Zend Technologies
http://twitter.com/zend
http://twitter.com/kpschrade (me!)
©All rights reserved. Zend Technologies, Inc.
Agenda
• What we will be talking about Deployment->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
©All rights reserved. Zend Technologies, Inc.
Application Stages
| 5 Increasing Maturity of PHP Applications
Development Testing/QA Staging Production
©All rights reserved. Zend Technologies, Inc.
Maturity
| 6 Increasing Maturity of PHP Applications
Testing & Validating
Application
Testing & Validating
Environment
Benefit
Structure
Distinct Dev Environments
Uptime!!
Where are you?
©All rights reserved. Zend Technologies, Inc.
Development
• Purpose To provide developers an environment to write their code
• Characteristics Should be similar to production, though it usually isn’t
Often more open security
Usually local to the developer, though not required
©All rights reserved. Zend Technologies, Inc.
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
©All rights reserved. Zend Technologies, Inc.
Prepared for and handed off to System Administrators
(the stuff we’re here to talk about)
©All rights reserved. Zend Technologies, Inc.
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
©All rights reserved. Zend Technologies, Inc.
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
©All rights reserved. Zend Technologies, Inc.
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
©All rights reserved. Zend Technologies, Inc.
Production
• Purpose• 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
• Very limited inbound traffic – generally only the service that is being served. i.e. HTTP
©All rights reserved. Zend Technologies, Inc.
Application considerations
• Build the application to be aware of different environments Zend_Config_* is good at this
• Do not set the environment type in your code Environment variables can be placed in server config
• It means that you won’t accidentally keep your development settings turned on in production
• Make production your default environment Keeps accidental data leakage to a minimum
©All rights reserved. Zend Technologies, Inc.
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
©All rights reserved. Zend Technologies, Inc.
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
©All rights reserved. Zend Technologies, Inc.
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
©All rights reserved. Zend Technologies, Inc.
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
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• E.g. Invalidating the cache
©All rights reserved. Zend Technologies, Inc.
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
©All rights reserved. Zend Technologies, Inc.
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
©All rights reserved. Zend Technologies, Inc.
Takeaways
• No need for copy-and-paste deployment
• No need for (S)FTP
• 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
©All rights reserved. Zend Technologies, Inc.
• If you have a question you can Type in the Q&A panel
Follow us! Zend Technologies
http://twitter.com/zend
http://twitter.com/kpschrade (me!)
©All rights reserved. Zend Technologies, Inc.
Get this information and all the examples at
eschrade.com… once I’ve written it