SlideShare ist ein Scribd-Unternehmen logo
1 von 39
Downloaden Sie, um offline zu lesen
Automated Deployment,[object Object],Building a simple automated deployment platform with PHP and Linux,[object Object],Michael Peacock@michaelpeacockmichaelpeacock.co.uk,[object Object]
whois?,[object Object],Senior / Lead Web Developer,[object Object],Zend Certified Engineer,[object Object],Published Author,[object Object],PHP 5 Social Networking, PHP 5 E-Commerce development & more,[object Object]
Deployment: (an) old style approach,[object Object],Take website offline / put into maintenance mode,[object Object],Backup everything,[object Object],Upload new files - FTP,[object Object],Upgrade database,[object Object],Put online, and hope for the best,[object Object],Do it twice: once for staging and once for deployment,[object Object]
http://xkcd.com/303/,[object Object]
The problem,[object Object],Down time for upgrades,[object Object],Manual process,[object Object],FTP takes time; ,[object Object],forgot to CHMOD? ,[object Object],Clients want to see progress now!,[object Object],Bugs and issues can lie dormant for some time,[object Object]
What about...,[object Object],Many existing solutions are geared towards large projects,[object Object],What about...,[object Object],the little guy;,[object Object],the small agency,[object Object],the web app start up on an entry level VPS?,[object Object]
What's in store?,[object Object],A few simple techniques, scripts and ideas that we currently use to make deployment easy,[object Object]
Deployment: the basics,[object Object],Get your latest code from version control, and stick it online,[object Object],Keep a central record of all the CHMOD / CHOWNing that you need to do,[object Object],Swap around your database connection details and other suitable configuration files,[object Object]
SVN Export,[object Object],Start with a simple svn export,[object Object],Store the date/time in a variable ,[object Object],Create two folders, named with the current date/time. One within the web root, one outside of it,[object Object],Two exports: public and private (or one export, and some moving around of folders – up to you!),[object Object]
#!/bin/bash,[object Object],DATE=`date +%H-%M-%e-%m-%y`,[object Object],mkdir  /var/www/staging/$DATE/,[object Object],mkdir /var/www/staging-private/$DATE/,[object Object],svn export --quiet --username phpne --password PhpN3 httP://localhost/svn/project/trunk /var/www/staging/$DATE/,[object Object],svn export --quiet --username phpne --password PhpN3 http://localhost/svn/project/private /var/www/staging-private/$DATE/,[object Object]
SVN Export,[object Object],Keep your servers svn client happy! It will ask what to do with the svn password, and nobody will listen – so tell it!,[object Object],sudonano /var/www/.subversion/servers,[object Object],store-plaintext-passwords = no,[object Object]
Autonomy,[object Object],ln –s /staging /live,[object Object]
Autonomy,[object Object],When the latest code is checked out, tests have been run, uploads imported, configuration changed and database patched we need to swap this into place instantly,[object Object],The answer: symlinks,[object Object]
#!/bin/bash,[object Object],DATE=`date +%H-%M-%e-%m-%y`,[object Object],...,[object Object],rm /home/user/public_html/,[object Object],ln –s /var/www/staging/$DATE/ /home/user/public_html/,[object Object],Sadly, you can’t edit a symlink, hence rm,[object Object]
My user profile pictures aren’t in version control…,[object Object]
User contributed files,[object Object],Store them elsewhere?,[object Object],On a content delivery network?,[object Object],On a sub-domain,[object Object],Symlink them,[object Object],Copy them in post svn export?,[object Object],A bit nasty and takes time, and what about new user uploads during the copying process?,[object Object]
The database,[object Object]
Photo of database table not found, or mysql gone away error message,[object Object],http://www.flickr.com/photos/meandmybadself/165846637/,[object Object]
Database changes: patches,[object Object],For database changes to apply on deploy, you need some deploy aware code in your project.  ,[object Object],Multi-query patch processing,[object Object],Schema compare; its easy to forget a database patch!,[object Object],Backup database before applying patches,[object Object]
public function updateDatabase( $patchID, $some=false ) ,[object Object],{ ,[object Object],	// look for the next patch ,[object Object],	if( file_exists( FRAMEWORK_PATH . '../database/patches/' . ++$patchID . '.php' ) ) ,[object Object],	{ ,[object Object],		$sql = file_get_contents( FRAMEWORK_PATH . 	'../database/patches/' . $patchID . '.php' );,[object Object],		// apply the changes from the patch ,[object Object],mysqli_multi_query( $sql ); ,[object Object],		// lather, rinse and repeat,[object Object],		$this->updateDatabase( $patchID, true ); ,[object Object],	} ,[object Object],	else if( $some ) ,[object Object],	{ ,[object Object],		// All done? Update patch ID in database,[object Object],mysqli_query(“UPDATE settings SET `value`=” . $patchID-1 . “ WHERE `key`=‘database-patch-id’ ” );,[object Object],		exit();  ,[object Object],	} ,[object Object],},[object Object],Apply your database patches,[object Object]
$testTables = array();,[object Object],mysqli_select_db( $config['patched_db'] );,[object Object],$result = mysql_query("SHOW TABLES");,[object Object],while( $row = mysql_fetch_row($result) ) ,[object Object],{,[object Object],	$testTables[ $row[0] ] = array();,[object Object],},[object Object],foreach( $testTables as $table => $fields ),[object Object],{,[object Object],	$result = mysql_query("SHOW COLUMNS FROM " . $table );,[object Object],	while( $row = mysql_fetch_assoc( $result ) ) ,[object Object],	{,[object Object],		$tables[ $table ][ $row['Field'] ] = $row;,[object Object],	},[object Object],},[object Object],Turn your database schema into an array,[object Object]
Compare your patched database to what you expected,[object Object],http://joefreeman.co.uk/blog/2009/07/php-script-to-compare-mysql-database-schemas/,[object Object]
Databases: Test Database,[object Object],If you are applying changes to your database structure, you will need another test database,[object Object],Changes are first applied to the test database,[object Object],Comparisons run against it,[object Object],Unit testing run against code working with that database,[object Object],When all is clear, the live database can be patched and upgraded,[object Object]
Ask the audience,[object Object],Database integration, patching, testing and deployment is probably the weakest link in this deployment chain,[object Object]
Unit testing,[object Object],While its good practice to only commit code which passes unit tests, sometimes a commit can break existing code if you are a lazy svn updater,[object Object],Run the unit tests against sandboxed code before pushing the deployment live,[object Object],Did the deployment fail?,[object Object]
Unit testing,[object Object],Both PHPUnit and PHP SimpleTest have command line interface,[object Object],Options:,[object Object],Parse the output and look for errors; then continue once its done,[object Object],Store a report, and require manual approval before continuing with deployment,[object Object],phpunit –testdox-text somefile.txt MyTests,[object Object],*this isn’t a stage I’ve actually implemented in our deployment pipeline, just something I’m working on,[object Object]
The problem with including Unit Tests,[object Object],Running unit tests take time,[object Object],We need to log deployment attempts, and try and deploy them once the tests have been run,[object Object],We need a central deployment system,[object Object]
Photo of USB “kill switch”,[object Object],http://www.flickr.com/photos/stevendepolo/3517227492/,[object Object]
Triggering deployment: PHP,[object Object],echo shell_exec( ‘/var/deploy/deploy.sh ’ . $project . ‘ ‘ . $environment );,[object Object],What about root?,[object Object],Deployment script requires root access? Update sudoers file,[object Object]
PHP Deploy as Root,[object Object],Edit the sudoers file,[object Object],Sudovisudo,[object Object],Create an alias for your deployment scripts,[object Object],Cmnd_Alias DPLY = /var/deploy/script1, /var/deploy/script2,[object Object],Let the webserver execute as root, without requiring a password,[object Object],www-data	ALL=(ALL)	NOPASSWD:	    DPLY,[object Object]
Automating deployment,[object Object],Cron,[object Object],Postcommit hooks,[object Object],Do this for your bleeding edge staging area; its good to continually test code in its live server environment,[object Object],Scheduled deployments,[object Object]
Deployment Infrastructure,[object Object],Deploying projects across multiple servers?,[object Object],Send your commands over SSH to a remote server,[object Object],Implement a skeleton deployment system on each server, called from a central deployment area,[object Object]
Build a deployment platform,[object Object],Projects,[object Object],Deployment areas:,[object Object],Bleeding,[object Object],Staging,[object Object],Production,[object Object],Configurations, reports and deployment schedules,[object Object]
Recap,[object Object],Export your repository,[object Object],Apply your permission changes,[object Object],Swap in/out the appropriate configuration files,[object Object],Backup your (test) database,[object Object],Patch your database,[object Object],Unit test validation,[object Object],Swap in/out your configuration files,[object Object],Pull in user contributed files,[object Object],Backup your environment database,[object Object],Patch your live database,[object Object],Update your symlinks,[object Object]
Rolling back,[object Object],Shit! That last deployment didn’t go as planned!,[object Object],Symlinks let you keep copies,[object Object],Database backup before patches were applied – just incase,[object Object],Database patch rollback files – allows you to keep new data but undo structural changes,[object Object],Make an undo button in your deployment platform; if you don’t you will need it – if you do, you wont*!,[object Object],* OK, I lied, you probably will at some point,[object Object]
Caveats,[object Object],Queue cheesy stock photo of confused bean figure,[object Object]
Caveats,[object Object],Some useful pointers when having multiple versions online (bleeding, staging and production),[object Object],Keep robots out (robots.txt meta_robots),[object Object],You don’t want search engines taking your users to the staging environment, nor do you want to be peanalised for duplicate content,[object Object],Keep unwanted users out (.htaccess or limited user database),[object Object],Make it clear that the environment is non-production – in case a production user stumbles upon staging!,[object Object]
Conclusion,[object Object],Deployment needs to take into account a lot of things,[object Object],Small and simple home-brew scripts, processes and techniques should help you out,[object Object],Look at pulling them together into a simple web-based deployment centre,[object Object]
Deploy your projects quickly!,[object Object],@michaelpeacock,[object Object],mkpeacock@gmail.com,[object Object],michaelpeacock.co.uk,[object Object],http://slidesha.re/phpdeploy ,[object Object],http://www.flickr.com/photos/jurvetson/4853963652/sizes/m/in/photostream/,[object Object]

Weitere ähnliche Inhalte

Was ist angesagt?

Virtualization auditing & security deck v1.0
Virtualization auditing & security deck v1.0Virtualization auditing & security deck v1.0
Virtualization auditing & security deck v1.0Concentrated Technology
 
Subversion workshop
Subversion workshopSubversion workshop
Subversion workshopTrafeX
 
Nguyễn Vũ Hưng: Subversion best practices
Nguyễn Vũ Hưng: Subversion best practicesNguyễn Vũ Hưng: Subversion best practices
Nguyễn Vũ Hưng: Subversion best practicesVu Hung Nguyen
 
Getting Started With Subversion
Getting Started With SubversionGetting Started With Subversion
Getting Started With SubversionJordan Hatch
 
Practical SVN for PHP Developers
Practical SVN for PHP DevelopersPractical SVN for PHP Developers
Practical SVN for PHP DevelopersLorna Mitchell
 
ScalabilityAvailability
ScalabilityAvailabilityScalabilityAvailability
ScalabilityAvailabilitywebuploader
 
Subversion on-the-fly replication
Subversion on-the-fly replicationSubversion on-the-fly replication
Subversion on-the-fly replicationnormanmaurer
 
Version Control with Subversion
Version Control with SubversionVersion Control with Subversion
Version Control with SubversionGuy K. Kloss
 
Maven 2 - more than a build tool
Maven 2 - more than a build toolMaven 2 - more than a build tool
Maven 2 - more than a build toolHarald Soevik
 
WebSphere : High Performance Extensible Logging
WebSphere : High Performance Extensible LoggingWebSphere : High Performance Extensible Logging
WebSphere : High Performance Extensible LoggingJoseph's WebSphere Library
 
The Pensions Trust - VM Backup Experiences
The Pensions Trust - VM Backup ExperiencesThe Pensions Trust - VM Backup Experiences
The Pensions Trust - VM Backup Experiencesglbsolutions
 
Flyway - database migrations made easy
Flyway - database migrations made easyFlyway - database migrations made easy
Flyway - database migrations made easyjstack
 
Subversion Retake
Subversion RetakeSubversion Retake
Subversion Retakemanat
 
SVN Tool Information : Best Practices
SVN Tool Information  : Best PracticesSVN Tool Information  : Best Practices
SVN Tool Information : Best PracticesMaidul Islam
 
Subversion Overview
Subversion OverviewSubversion Overview
Subversion Overviewpolarion
 

Was ist angesagt? (20)

Virtualization auditing & security deck v1.0
Virtualization auditing & security deck v1.0Virtualization auditing & security deck v1.0
Virtualization auditing & security deck v1.0
 
Svn Basic Tutorial
Svn Basic TutorialSvn Basic Tutorial
Svn Basic Tutorial
 
Subversion workshop
Subversion workshopSubversion workshop
Subversion workshop
 
Nguyễn Vũ Hưng: Subversion best practices
Nguyễn Vũ Hưng: Subversion best practicesNguyễn Vũ Hưng: Subversion best practices
Nguyễn Vũ Hưng: Subversion best practices
 
Getting Started With Subversion
Getting Started With SubversionGetting Started With Subversion
Getting Started With Subversion
 
Practical SVN for PHP Developers
Practical SVN for PHP DevelopersPractical SVN for PHP Developers
Practical SVN for PHP Developers
 
ScalabilityAvailability
ScalabilityAvailabilityScalabilityAvailability
ScalabilityAvailability
 
Users guide
Users guideUsers guide
Users guide
 
Subversion on-the-fly replication
Subversion on-the-fly replicationSubversion on-the-fly replication
Subversion on-the-fly replication
 
Version Control with Subversion
Version Control with SubversionVersion Control with Subversion
Version Control with Subversion
 
Top ESXi command line v2.0
Top ESXi command line v2.0Top ESXi command line v2.0
Top ESXi command line v2.0
 
From VB Script to PowerShell
From VB Script to PowerShellFrom VB Script to PowerShell
From VB Script to PowerShell
 
Maven 2 - more than a build tool
Maven 2 - more than a build toolMaven 2 - more than a build tool
Maven 2 - more than a build tool
 
WebSphere : High Performance Extensible Logging
WebSphere : High Performance Extensible LoggingWebSphere : High Performance Extensible Logging
WebSphere : High Performance Extensible Logging
 
The Pensions Trust - VM Backup Experiences
The Pensions Trust - VM Backup ExperiencesThe Pensions Trust - VM Backup Experiences
The Pensions Trust - VM Backup Experiences
 
Flyway - database migrations made easy
Flyway - database migrations made easyFlyway - database migrations made easy
Flyway - database migrations made easy
 
Subversion Retake
Subversion RetakeSubversion Retake
Subversion Retake
 
SVN Tool Information : Best Practices
SVN Tool Information  : Best PracticesSVN Tool Information  : Best Practices
SVN Tool Information : Best Practices
 
Subversion Overview
Subversion OverviewSubversion Overview
Subversion Overview
 
SVN Best Practices
SVN Best PracticesSVN Best Practices
SVN Best Practices
 

Ähnlich wie PHP North-East - Automated Deployment

Care and Feeding of Large Web Applications
Care and Feeding of Large Web ApplicationsCare and Feeding of Large Web Applications
Care and Feeding of Large Web ApplicationsPerrin Harkins
 
Ready, Set, Upgrade!
Ready, Set, Upgrade!Ready, Set, Upgrade!
Ready, Set, Upgrade!Cory Peters
 
Migrating to SharePoint 2013 - Business and Technical Perspective
Migrating to SharePoint 2013 - Business and Technical PerspectiveMigrating to SharePoint 2013 - Business and Technical Perspective
Migrating to SharePoint 2013 - Business and Technical PerspectiveJohn Calvert
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notesPerrin Harkins
 
Schema migration (DB migration) with Phinx
Schema migration (DB migration) with PhinxSchema migration (DB migration) with Phinx
Schema migration (DB migration) with PhinxHadi Ariawan
 
Best practices for share point solution deployment
Best practices for share point solution deploymentBest practices for share point solution deployment
Best practices for share point solution deploymentSalaudeen Rajack
 
Sa106 – practical solutions for connections administrators
Sa106 – practical solutions for connections administratorsSa106 – practical solutions for connections administrators
Sa106 – practical solutions for connections administratorsSharon James
 
WordPress Architecture for Tech-Savvy Managers
WordPress Architecture for Tech-Savvy ManagersWordPress Architecture for Tech-Savvy Managers
WordPress Architecture for Tech-Savvy ManagersMario Peshev
 
SharePoint Upgrade (WSS 2.0 to WSS 3.0 and SPS 2003 to MOSS 2007) by Joel Ole...
SharePoint Upgrade (WSS 2.0 to WSS 3.0 and SPS 2003 to MOSS 2007) by Joel Ole...SharePoint Upgrade (WSS 2.0 to WSS 3.0 and SPS 2003 to MOSS 2007) by Joel Ole...
SharePoint Upgrade (WSS 2.0 to WSS 3.0 and SPS 2003 to MOSS 2007) by Joel Ole...Joel Oleson
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal infoSynapseindiappsdevelopment
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersSarah Dutkiewicz
 
Embracing Distributed Version Control
Embracing Distributed Version ControlEmbracing Distributed Version Control
Embracing Distributed Version ControlNowell Strite
 
Connections install in 45 mins
Connections install in 45 minsConnections install in 45 mins
Connections install in 45 minsSharon James
 
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
 
SoCalCodeCamp Upgrade Microsoft Office SharePoint Server 2007 to SharePoint S...
SoCalCodeCamp Upgrade Microsoft Office SharePoint Server 2007 to SharePoint S...SoCalCodeCamp Upgrade Microsoft Office SharePoint Server 2007 to SharePoint S...
SoCalCodeCamp Upgrade Microsoft Office SharePoint Server 2007 to SharePoint S...Ivan Sanders
 
Practical solutions for connections administrators
Practical solutions for connections administratorsPractical solutions for connections administrators
Practical solutions for connections administratorsSharon James
 
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDocker, Inc.
 

Ähnlich wie PHP North-East - Automated Deployment (20)

Care and Feeding of Large Web Applications
Care and Feeding of Large Web ApplicationsCare and Feeding of Large Web Applications
Care and Feeding of Large Web Applications
 
Ready, Set, Upgrade!
Ready, Set, Upgrade!Ready, Set, Upgrade!
Ready, Set, Upgrade!
 
North east user group tour
North east user group tourNorth east user group tour
North east user group tour
 
Migrating to SharePoint 2013 - Business and Technical Perspective
Migrating to SharePoint 2013 - Business and Technical PerspectiveMigrating to SharePoint 2013 - Business and Technical Perspective
Migrating to SharePoint 2013 - Business and Technical Perspective
 
Care and feeding notes
Care and feeding notesCare and feeding notes
Care and feeding notes
 
IUG ATL PC 9.5
IUG ATL PC 9.5IUG ATL PC 9.5
IUG ATL PC 9.5
 
Schema migration (DB migration) with Phinx
Schema migration (DB migration) with PhinxSchema migration (DB migration) with Phinx
Schema migration (DB migration) with Phinx
 
Best practices for share point solution deployment
Best practices for share point solution deploymentBest practices for share point solution deployment
Best practices for share point solution deployment
 
Sa106 – practical solutions for connections administrators
Sa106 – practical solutions for connections administratorsSa106 – practical solutions for connections administrators
Sa106 – practical solutions for connections administrators
 
WordPress Architecture for Tech-Savvy Managers
WordPress Architecture for Tech-Savvy ManagersWordPress Architecture for Tech-Savvy Managers
WordPress Architecture for Tech-Savvy Managers
 
SharePoint Upgrade (WSS 2.0 to WSS 3.0 and SPS 2003 to MOSS 2007) by Joel Ole...
SharePoint Upgrade (WSS 2.0 to WSS 3.0 and SPS 2003 to MOSS 2007) by Joel Ole...SharePoint Upgrade (WSS 2.0 to WSS 3.0 and SPS 2003 to MOSS 2007) by Joel Ole...
SharePoint Upgrade (WSS 2.0 to WSS 3.0 and SPS 2003 to MOSS 2007) by Joel Ole...
 
SynapseIndia drupal presentation on drupal info
SynapseIndia drupal  presentation on drupal infoSynapseIndia drupal  presentation on drupal info
SynapseIndia drupal presentation on drupal info
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
 
Embracing Distributed Version Control
Embracing Distributed Version ControlEmbracing Distributed Version Control
Embracing Distributed Version Control
 
Connections install in 45 mins
Connections install in 45 minsConnections install in 45 mins
Connections install in 45 mins
 
Slides from LAX & DEN usergroup meetings
Slides from LAX & DEN usergroup meetingsSlides from LAX & DEN usergroup meetings
Slides from LAX & DEN usergroup meetings
 
SoCalCodeCamp Upgrade Microsoft Office SharePoint Server 2007 to SharePoint S...
SoCalCodeCamp Upgrade Microsoft Office SharePoint Server 2007 to SharePoint S...SoCalCodeCamp Upgrade Microsoft Office SharePoint Server 2007 to SharePoint S...
SoCalCodeCamp Upgrade Microsoft Office SharePoint Server 2007 to SharePoint S...
 
Practical solutions for connections administrators
Practical solutions for connections administratorsPractical solutions for connections administrators
Practical solutions for connections administrators
 
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing EnvironmentDCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
DCSF19 Transforming a 15+ Year Old Semiconductor Manufacturing Environment
 
Scaling 101
Scaling 101Scaling 101
Scaling 101
 

Mehr von Michael Peacock

Immutable Infrastructure with Packer Ansible and Terraform
Immutable Infrastructure with Packer Ansible and TerraformImmutable Infrastructure with Packer Ansible and Terraform
Immutable Infrastructure with Packer Ansible and TerraformMichael Peacock
 
Test driven APIs with Laravel
Test driven APIs with LaravelTest driven APIs with Laravel
Test driven APIs with LaravelMichael Peacock
 
Symfony Workflow Component - Introductory Lightning Talk
Symfony Workflow Component - Introductory Lightning TalkSymfony Workflow Component - Introductory Lightning Talk
Symfony Workflow Component - Introductory Lightning TalkMichael Peacock
 
Alexa, lets make a skill
Alexa, lets make a skillAlexa, lets make a skill
Alexa, lets make a skillMichael Peacock
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with LaravelMichael Peacock
 
An introduction to Laravel Passport
An introduction to Laravel PassportAn introduction to Laravel Passport
An introduction to Laravel PassportMichael Peacock
 
Refactoring to symfony components
Refactoring to symfony componentsRefactoring to symfony components
Refactoring to symfony componentsMichael Peacock
 
Dance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech TalkDance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech TalkMichael Peacock
 
Powerful and flexible templates with Twig
Powerful and flexible templates with Twig Powerful and flexible templates with Twig
Powerful and flexible templates with Twig Michael Peacock
 
Introduction to OOP with PHP
Introduction to OOP with PHPIntroduction to OOP with PHP
Introduction to OOP with PHPMichael Peacock
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsMichael Peacock
 
Evolution of a big data project
Evolution of a big data projectEvolution of a big data project
Evolution of a big data projectMichael Peacock
 
Real time voice call integration - Confoo 2012
Real time voice call integration - Confoo 2012Real time voice call integration - Confoo 2012
Real time voice call integration - Confoo 2012Michael Peacock
 
Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Michael Peacock
 
Data at Scale - Michael Peacock, Cloud Connect 2012
Data at Scale - Michael Peacock, Cloud Connect 2012Data at Scale - Michael Peacock, Cloud Connect 2012
Data at Scale - Michael Peacock, Cloud Connect 2012Michael Peacock
 
PHP Continuous Data Processing
PHP Continuous Data ProcessingPHP Continuous Data Processing
PHP Continuous Data ProcessingMichael Peacock
 

Mehr von Michael Peacock (20)

Immutable Infrastructure with Packer Ansible and Terraform
Immutable Infrastructure with Packer Ansible and TerraformImmutable Infrastructure with Packer Ansible and Terraform
Immutable Infrastructure with Packer Ansible and Terraform
 
Test driven APIs with Laravel
Test driven APIs with LaravelTest driven APIs with Laravel
Test driven APIs with Laravel
 
Symfony Workflow Component - Introductory Lightning Talk
Symfony Workflow Component - Introductory Lightning TalkSymfony Workflow Component - Introductory Lightning Talk
Symfony Workflow Component - Introductory Lightning Talk
 
Alexa, lets make a skill
Alexa, lets make a skillAlexa, lets make a skill
Alexa, lets make a skill
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with Laravel
 
An introduction to Laravel Passport
An introduction to Laravel PassportAn introduction to Laravel Passport
An introduction to Laravel Passport
 
Phinx talk
Phinx talkPhinx talk
Phinx talk
 
Refactoring to symfony components
Refactoring to symfony componentsRefactoring to symfony components
Refactoring to symfony components
 
Dance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech TalkDance for the puppet master: G6 Tech Talk
Dance for the puppet master: G6 Tech Talk
 
Powerful and flexible templates with Twig
Powerful and flexible templates with Twig Powerful and flexible templates with Twig
Powerful and flexible templates with Twig
 
Introduction to OOP with PHP
Introduction to OOP with PHPIntroduction to OOP with PHP
Introduction to OOP with PHP
 
Vagrant
VagrantVagrant
Vagrant
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friends
 
Evolution of a big data project
Evolution of a big data projectEvolution of a big data project
Evolution of a big data project
 
Real time voice call integration - Confoo 2012
Real time voice call integration - Confoo 2012Real time voice call integration - Confoo 2012
Real time voice call integration - Confoo 2012
 
Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012Dealing with Continuous Data Processing, ConFoo 2012
Dealing with Continuous Data Processing, ConFoo 2012
 
Data at Scale - Michael Peacock, Cloud Connect 2012
Data at Scale - Michael Peacock, Cloud Connect 2012Data at Scale - Michael Peacock, Cloud Connect 2012
Data at Scale - Michael Peacock, Cloud Connect 2012
 
Supermondays twilio
Supermondays twilioSupermondays twilio
Supermondays twilio
 
PHP & Twilio
PHP & TwilioPHP & Twilio
PHP & Twilio
 
PHP Continuous Data Processing
PHP Continuous Data ProcessingPHP Continuous Data Processing
PHP Continuous Data Processing
 

PHP North-East - Automated Deployment

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.

Hinweis der Redaktion

  1. Store expected schema, and generate schema array from applied patches.