43

The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Embed Size (px)

Citation preview

Page 1: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
Page 2: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

The Last Mile

Problem

Page 3: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
Page 4: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
Page 5: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
Page 6: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Development Live

Page 7: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

The Dog

Ate My Deployment

Page 8: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Rule 1: Implement deployment at the

beginning of your project

Page 9: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

+ https://puphpet.com/

Page 10: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Every configuration has to be

done by Puppet

Page 11: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Developers and Operations

share the same configuration

Page 12: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Rule 2: Automate everything

Page 13: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
Page 14: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
Page 15: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Create Targets

For Everything

Page 16: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Structure Your

Ant Files

Page 17: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Use A Framework For This http://abc.tools.qafoo.com/

Page 18: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

$ ant build

Page 19: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Rule 3: Test the quality of your

project

Page 20: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
Page 21: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Jenkins PHP Template http://jenkins-php.org/

Page 22: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

PHP QA Tools

Page 23: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Too many violations should

break your builds

Page 24: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Test performance factors

of your application

Page 25: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

$this->assertLessThan( 10, $profile->getCollector('db') ->getQueryCount() );

Page 26: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Rule 4: Create deployable artifacts

Page 27: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Build them so that they only

need configuration to run

Page 28: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Create them once reuse

them in all deployments

Page 29: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Continous Integration

Testing Staging Live

Page 30: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Rule 5: Run your deployment with

only one invocation

Page 31: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
Page 32: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Choose Your

Deployment Tool

Page 33: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Choose It

With Your Operations Team

Page 34: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Shell Scripts

Page 35: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
Page 36: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Choose A Tool

That Helps You

Page 37: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Fabric

Page 38: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Capistrano

Page 39: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Rex

Page 40: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

group myserver => "server-a", "server-b"; task "deploy", group => "frontend", sub { deploy $tarball; needs "configure"; needs "test"; };

Page 41: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

Keep Your Deployment

Configuration With Your Code

Page 42: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013

$ rex deploy –-tarball=version1.0.1.tar.gz

Page 43: The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013