SlideShare a Scribd company logo
Enterprise PHP development Ivo Jansch <ivo@ibuildings.com> PHPLondon Conference, February 29, 2008
About me CTO at Ibuildings Development using PHP (websites, applications) Big projects (high traffic, multi-tier, clusters, high availability, large teams) Consultancy (training, audits) Partner of Zend Technologies 9 years in NL, 3 months in UK Geek! Author of several Open Source projects Interested in PHP, Web 2.0, Science Nervous in front of audiences bigger than 5 ;-)
What's an enterprise? Wikipedia: “ Any of several ships by that name in the Star Trek fictional universe” “ A business, company, or comparable organization”
Is PHP Enterprise ready? CIO Magazine: “ PHP works well for prototyping because it is easy to get a site up and running. Use PHP to design the site [...] but when it comes time for development, tell the team you want the result to look and act like this PHP site...but in Java” (Or: “great, this is exactly what I need! now do it again, at twice the cost!”) http://www.cio.com/article/176250 (skip the article, read the comments)
Is PHP Enterprise ready? Small Lightweight Cheap Easy to learn Big Enterprise friendly enterpriCe CS required
A word from my girlfriend It's not the  SIZE   of the tool... It's how you USE it.
PHP is changing... 1998 Personal stuff 2003 Simple websites Content management Blogs 2008 Big websites Banks Insurance Companies ...
PHP is changing... Traditional metaphor PHP is like Lego bricks Bricks allowing you to build anything
PHP is changing... PHP is no longer a toy Let’s use the metaphor of actual bricks  Because we’re building actual buildings now
About Bricks Extreme simplicity Easy to learn Versatile Cheap ... so building a skyscraper must be peanuts, right?
Enterprise development in 10 steps
Step 1 – The Team “Dear Mr. Businessman, I have read about your plans to build a new skyscraper and I am applying for a job. I have a lot of experience with Bricks. I taught myself how to use them and have been maintaining our family shed for a few years now.”
Step 1 – The Team Be a software engineer Train your skills Study OO principles Consider Zend Certification
Step 2 - Requirements What does the customer need? What do visitors want?
Step 2 - Requirements Functional Design Requirements definition Interaction Design /  Wireframes Flow diagrams
Step 3 - Architecture Don’t just start stacking bricks Create an architecture first
Step 3 - Architecture Technical Design Modelling Class diagrams ER diagram (data model) Colaboration diagrams Use cases etc. Tools: UML, whiteboards
Step 3 - Architecture High Level Architectures: MVC (Model View Controller) SOA (Service Oriented Architecture) Multi-tier development (Frontend, Application, Data) CBD (Component Based Development)
Step 4 - Tools You don’t need tools... But they make you productive
Step 4 - Tools Development: Eclipse (PDT) PhpED Vim Zend Studio IDE's vs Editors Debugging Profiling Navigation / cross references Inspection
Step 4 - Tools Source Control CVS / SVN Bitkeeper / GIT Branching Tagging
Step 5 - Foundation Start stacking bricks? How many bricks does it take.. What about stability? Start with a foundation
Step 5 - Foundation Use a framework Provides guidelines (frame) Off the shelf components Examples Zend Framework http://framework.zend.com CakePHP http://http://www.cakephp.org  ezComponents http://ez.no/ezcomponents  Symfony http://www.symfony-project.org ATK http://www.achievo.org/atk
Step 5 - Foundation The “Not Invented Here” Syndrome “The existing frameworks are no good. I can do this better.” “This framework is no good.  It can do A through Y but I need Z.” “This framework is too big. It provides A-Z but we only need A and B.” “I know there's a good framework. But I would like to learn.”
Step 6 – Design Patterns Requirement 1056.4: We need to be able to look outside, but we  can't make holes in the wall (rain should be  kept outside). When it's sunny, a hole is ok.
Step 6 – Design Patterns A ‘window’ is a concept Best practice way of solving a particular problem In IT, we call this a ‘design pattern’ Popular patterns in PHP: MVC, Factory, Singleton, Registry, Decorator Good read: php|architect's Guide to  PHP Design Patterns - Jason E. Sweat
Step 7 - Testing Is your software tested  after  it has gone live?
Step 7 - Testing Various types of testing Developer testing Functional testing Environment testing Performance testing Usability testing
Step 7 - Testing Common scenario
Step 7 - Testing User complains... MWOEHA! BUG!
Step 7 - Testing Developer attacks the problem fix_bug();
Step 7 - Testing Problem solved!
Step 7 - Testing Solution: Unit Tests Automated testing after each change Prevents regressions Testing for PHP applications: PHPUnit http://www.phpunit.de/   SimpleTest http://www.lastcraft.com/simple_test.php Continuous Integration: Xinc  http://code.google.com/p/xinc/
Step 7 - Testing Test Driven Development 1. Define functionality 2. Create testcase 3. Run test -> test fails 4. Implement functionality Test succeeds? Done Test fails? Refactor Repeat step 4 until finished
Step 8 - Optimization Users are reporting: &quot;I work on the 197th floor. Every day I  have to walk the stairs for 2 hours, then I  have only 4 hours left to do my job.&quot;
Step 8 - Optimization Solution: Elevator
Step 8 - Optimization In PHP, this ‘elevator’ is called an ‘accelerator’ This is how PHP works (pseudo-ish code): read index.php;    // enter the building compile index.php;  // go to floor 197 echo “Hello World”;  // get the job done An accelerator improves the first 2 steps Accelerators for PHP: eAccelerator http://eaccelerator.net/ APC http://pecl.php.net/package/APC Zend Platform http://www.zend.com/products/zend_platform
Step 8 - Optimization Users complain: “Every time I need coffee I have to go  to the top floor to get some.”
Step 8 - Optimization Solution: Create small coffee corners on every floor so people don’t have to go to the main restaurant every time. In PHP we call this caching Don’t query the database everytime you need data Use locally stored copy (file or memory) PHP Caching solutions: Zend_Cache http://framework.zend.com Smarty http://smarty.php.net Zend Platform http://www.zend.com/products/zend_platform Memcached http://danga.com/memcached/
Step 9 - Deployment Lifecycle: Develop Test Deploy to acceptance test environment Deploy to live Use SVN Code is just a part, don't forget the database Create a 'Deployment & Release Profile'
Step 9 - Deployment System Architecture PHP Apache Linux MySQL From a simple LAMP stack on a single machine...
Step 9 - Deployment System Architecture ... to a High Availability, Horizontally Scalable architecture
Step 10 - Operations Monitoring Logfiles Monitor infrastructure (tools such as Nagios) Monitor application (tools such as Zend Platform) Monitor business (is the money still pouring in?)
Step 10 - Operations Debugging Ideal: “I had error x when I selected y after I clicked z” Reality: “It doesn't work!” “What exactly doesn't work, and what did you do?” “It just ******** didn't work, FIX IT.”
Step 10 - Operations Solution A 'root cause  analysis' tool
Step 10 - Operations Change management Ticket system Stick to your deployment - use the DRP DON'T TOUCH THE LIVE ENVIRONMENT.  But I absolutely have to... DON'T! but... NO! I MEAN IT! :-)
The Big Picture No ‘cowboy coding’, but structured steps Higher quality  Software will be easier to maintain  (and cheaper) Development methodology Waterfall Agile (DSDM, XP, Scrum) Software Development Life Cycle (SDLC) Adapt from existing methods, learn from experts Document it properly Make it the cornerstone of your development efforts
More things to think about? Development Implementation Documentation Security
Before I finish Dutch PHP Conference 2008 http://www.phpconference.nl  Call for Ideas  see your favorite guru hear your favorite topic Buy my book “php|architect's Enterprise PHP Development” Should be available in a few months  Talk to us Visit our booth We are still hiring We have stuff to sell you ;-)
Questions? http://www.ibuildings.com http://www.jansch.nl [email_address]
Ad

More Related Content

What's hot (20)

Eric Loyd - Fractal Nagios
Eric Loyd - Fractal NagiosEric Loyd - Fractal Nagios
Eric Loyd - Fractal Nagios
Nagios
 
cLoki: Like Loki but for ClickHouse
cLoki: Like Loki but for ClickHousecLoki: Like Loki but for ClickHouse
cLoki: Like Loki but for ClickHouse
Altinity Ltd
 
Storage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
Storage Spaces Direct - the new Microsoft SDS star - Carsten RachfahlStorage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
Storage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
ITCamp
 
Sumit Goel - Monitoring Cloud Applications Using Zabbix | ZabConf2016
Sumit Goel - Monitoring Cloud Applications Using Zabbix | ZabConf2016Sumit Goel - Monitoring Cloud Applications Using Zabbix | ZabConf2016
Sumit Goel - Monitoring Cloud Applications Using Zabbix | ZabConf2016
Zabbix
 
Unreal Engine 4 Blueprints: Odio e amore Roberto De Ioris - Codemotion Rome 2017
Unreal Engine 4 Blueprints: Odio e amore Roberto De Ioris - Codemotion Rome 2017Unreal Engine 4 Blueprints: Odio e amore Roberto De Ioris - Codemotion Rome 2017
Unreal Engine 4 Blueprints: Odio e amore Roberto De Ioris - Codemotion Rome 2017
Codemotion
 
Apache Beam @ GCPUG.TW Flink.TW 20161006
Apache Beam @ GCPUG.TW Flink.TW 20161006Apache Beam @ GCPUG.TW Flink.TW 20161006
Apache Beam @ GCPUG.TW Flink.TW 20161006
Randy Huang
 
CQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspectiveCQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspective
Maria Gomez
 
Javantura v4 - Spring Boot and JavaFX - can they play together - Josip Kovaček
Javantura v4 - Spring Boot and JavaFX - can they play together - Josip KovačekJavantura v4 - Spring Boot and JavaFX - can they play together - Josip Kovaček
Javantura v4 - Spring Boot and JavaFX - can they play together - Josip Kovaček
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Let's talk about the future: state-of-the-art mobile web & hybrid apps
Let's talk about the future: state-of-the-art mobile web & hybrid appsLet's talk about the future: state-of-the-art mobile web & hybrid apps
Let's talk about the future: state-of-the-art mobile web & hybrid apps
Rakuten Group, Inc.
 
Javantura v4 - JVM++ The GraalVM - Martin Toshev
Javantura v4 - JVM++ The GraalVM - Martin ToshevJavantura v4 - JVM++ The GraalVM - Martin Toshev
Javantura v4 - JVM++ The GraalVM - Martin Toshev
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Create The Internet of Your Things example of a real system - Laurent Ellerbach
Create The Internet of Your Things example of a real system - Laurent EllerbachCreate The Internet of Your Things example of a real system - Laurent Ellerbach
Create The Internet of Your Things example of a real system - Laurent Ellerbach
ITCamp
 
Javantura v4 - FreeMarker in Spring web - Marin Kalapać
Javantura v4 - FreeMarker in Spring web - Marin KalapaćJavantura v4 - FreeMarker in Spring web - Marin Kalapać
Javantura v4 - FreeMarker in Spring web - Marin Kalapać
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
Serverless computing in Azure: Functions, Logic Apps and more!
Serverless computing in Azure: Functions, Logic Apps and more!Serverless computing in Azure: Functions, Logic Apps and more!
Serverless computing in Azure: Functions, Logic Apps and more!
Lorenzo Barbieri
 
How Microsoft Built and Scaled Cosmos
How Microsoft Built and Scaled CosmosHow Microsoft Built and Scaled Cosmos
How Microsoft Built and Scaled Cosmos
SingleStore
 
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
iguazio
 
Lessons Learned from Building and Operating Scuba
Lessons Learned from Building and Operating ScubaLessons Learned from Building and Operating Scuba
Lessons Learned from Building and Operating Scuba
SingleStore
 
An Introduction to Prometheus
An Introduction to PrometheusAn Introduction to Prometheus
An Introduction to Prometheus
Evgeny Shmarnev
 
Containerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with KubernetesContainerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with Kubernetes
Codemotion Tel Aviv
 
Live Coding a KSQL Application
Live Coding a KSQL ApplicationLive Coding a KSQL Application
Live Coding a KSQL Application
confluent
 
Clearing Airflow Obstructions
Clearing Airflow ObstructionsClearing Airflow Obstructions
Clearing Airflow Obstructions
Tatiana Al-Chueyr
 
Eric Loyd - Fractal Nagios
Eric Loyd - Fractal NagiosEric Loyd - Fractal Nagios
Eric Loyd - Fractal Nagios
Nagios
 
cLoki: Like Loki but for ClickHouse
cLoki: Like Loki but for ClickHousecLoki: Like Loki but for ClickHouse
cLoki: Like Loki but for ClickHouse
Altinity Ltd
 
Storage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
Storage Spaces Direct - the new Microsoft SDS star - Carsten RachfahlStorage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
Storage Spaces Direct - the new Microsoft SDS star - Carsten Rachfahl
ITCamp
 
Sumit Goel - Monitoring Cloud Applications Using Zabbix | ZabConf2016
Sumit Goel - Monitoring Cloud Applications Using Zabbix | ZabConf2016Sumit Goel - Monitoring Cloud Applications Using Zabbix | ZabConf2016
Sumit Goel - Monitoring Cloud Applications Using Zabbix | ZabConf2016
Zabbix
 
Unreal Engine 4 Blueprints: Odio e amore Roberto De Ioris - Codemotion Rome 2017
Unreal Engine 4 Blueprints: Odio e amore Roberto De Ioris - Codemotion Rome 2017Unreal Engine 4 Blueprints: Odio e amore Roberto De Ioris - Codemotion Rome 2017
Unreal Engine 4 Blueprints: Odio e amore Roberto De Ioris - Codemotion Rome 2017
Codemotion
 
Apache Beam @ GCPUG.TW Flink.TW 20161006
Apache Beam @ GCPUG.TW Flink.TW 20161006Apache Beam @ GCPUG.TW Flink.TW 20161006
Apache Beam @ GCPUG.TW Flink.TW 20161006
Randy Huang
 
CQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspectiveCQRS and Event Sourcing: A DevOps perspective
CQRS and Event Sourcing: A DevOps perspective
Maria Gomez
 
Let's talk about the future: state-of-the-art mobile web & hybrid apps
Let's talk about the future: state-of-the-art mobile web & hybrid appsLet's talk about the future: state-of-the-art mobile web & hybrid apps
Let's talk about the future: state-of-the-art mobile web & hybrid apps
Rakuten Group, Inc.
 
Create The Internet of Your Things example of a real system - Laurent Ellerbach
Create The Internet of Your Things example of a real system - Laurent EllerbachCreate The Internet of Your Things example of a real system - Laurent Ellerbach
Create The Internet of Your Things example of a real system - Laurent Ellerbach
ITCamp
 
Serverless computing in Azure: Functions, Logic Apps and more!
Serverless computing in Azure: Functions, Logic Apps and more!Serverless computing in Azure: Functions, Logic Apps and more!
Serverless computing in Azure: Functions, Logic Apps and more!
Lorenzo Barbieri
 
How Microsoft Built and Scaled Cosmos
How Microsoft Built and Scaled CosmosHow Microsoft Built and Scaled Cosmos
How Microsoft Built and Scaled Cosmos
SingleStore
 
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
Serverless and AI: Orit Nissan-Messing, Iguazio, Serverless NYC 2018
iguazio
 
Lessons Learned from Building and Operating Scuba
Lessons Learned from Building and Operating ScubaLessons Learned from Building and Operating Scuba
Lessons Learned from Building and Operating Scuba
SingleStore
 
An Introduction to Prometheus
An Introduction to PrometheusAn Introduction to Prometheus
An Introduction to Prometheus
Evgeny Shmarnev
 
Containerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with KubernetesContainerised ASP.NET Core apps with Kubernetes
Containerised ASP.NET Core apps with Kubernetes
Codemotion Tel Aviv
 
Live Coding a KSQL Application
Live Coding a KSQL ApplicationLive Coding a KSQL Application
Live Coding a KSQL Application
confluent
 
Clearing Airflow Obstructions
Clearing Airflow ObstructionsClearing Airflow Obstructions
Clearing Airflow Obstructions
Tatiana Al-Chueyr
 

Viewers also liked (20)

Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)
Ivo Jansch
 
Introduction to web and php mysql
Introduction to web and php mysqlIntroduction to web and php mysql
Introduction to web and php mysql
Programmer Blog
 
Magento eCommerce And The Next Generation Of PHP
Magento eCommerce And The Next Generation Of PHPMagento eCommerce And The Next Generation Of PHP
Magento eCommerce And The Next Generation Of PHP
varien
 
[Php] navigations
[Php] navigations[Php] navigations
[Php] navigations
Thai Pham
 
A SOA approximation on symfony
A SOA approximation on symfonyA SOA approximation on symfony
A SOA approximation on symfony
Joseluis Laso
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
Alessandro Cinelli (cirpo)
 
Telephony with OpenShift Twilio and MongoDB
Telephony with OpenShift Twilio and MongoDBTelephony with OpenShift Twilio and MongoDB
Telephony with OpenShift Twilio and MongoDB
Mark Atwood
 
Php my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.netPhp my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.net
Programmer Blog
 
Service Oriented Architecture for Distributed Identity Management System
Service Oriented Architecture for Distributed Identity Management SystemService Oriented Architecture for Distributed Identity Management System
Service Oriented Architecture for Distributed Identity Management System
adameq
 
Working with Asynchronous Events
Working with Asynchronous EventsWorking with Asynchronous Events
Working with Asynchronous Events
Garden of Concepts GmbH
 
Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...
Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...
Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...
Alessandro Nadalin
 
Services Oriented Architecture with PHP and MySQL
Services Oriented Architecture with PHP and MySQLServices Oriented Architecture with PHP and MySQL
Services Oriented Architecture with PHP and MySQL
Joe Stump
 
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Aaron Saray
 
May 2013 clif notes and dtr
May 2013 clif notes and dtrMay 2013 clif notes and dtr
May 2013 clif notes and dtr
U.S. Army Fort Drum & 10th Mountain Division
 
Program 2010
Program 2010Program 2010
Program 2010
YWCARO
 
Usability Review of Mashup Tools
Usability Review of Mashup ToolsUsability Review of Mashup Tools
Usability Review of Mashup Tools
Tanya Ahmed
 
Cloud foundry intro with groovy
Cloud foundry intro with groovyCloud foundry intro with groovy
Cloud foundry intro with groovy
Guillaume Laforge
 
Prehled firem a investic v CR - 2010
Prehled firem a investic v CR - 2010Prehled firem a investic v CR - 2010
Prehled firem a investic v CR - 2010
Innovation Tank
 
Eoffice eNetwork Directory 2013
Eoffice eNetwork Directory 2013Eoffice eNetwork Directory 2013
Eoffice eNetwork Directory 2013
Pier Paolo Mucelli
 
22 insights into Design by Tom Peters
22 insights into Design by Tom Peters22 insights into Design by Tom Peters
22 insights into Design by Tom Peters
Say Digital Media
 
Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)Enterprise PHP (php|works 2008)
Enterprise PHP (php|works 2008)
Ivo Jansch
 
Introduction to web and php mysql
Introduction to web and php mysqlIntroduction to web and php mysql
Introduction to web and php mysql
Programmer Blog
 
Magento eCommerce And The Next Generation Of PHP
Magento eCommerce And The Next Generation Of PHPMagento eCommerce And The Next Generation Of PHP
Magento eCommerce And The Next Generation Of PHP
varien
 
[Php] navigations
[Php] navigations[Php] navigations
[Php] navigations
Thai Pham
 
A SOA approximation on symfony
A SOA approximation on symfonyA SOA approximation on symfony
A SOA approximation on symfony
Joseluis Laso
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
Alessandro Cinelli (cirpo)
 
Telephony with OpenShift Twilio and MongoDB
Telephony with OpenShift Twilio and MongoDBTelephony with OpenShift Twilio and MongoDB
Telephony with OpenShift Twilio and MongoDB
Mark Atwood
 
Php my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.netPhp my sql - functions - arrays - tutorial - programmerblog.net
Php my sql - functions - arrays - tutorial - programmerblog.net
Programmer Blog
 
Service Oriented Architecture for Distributed Identity Management System
Service Oriented Architecture for Distributed Identity Management SystemService Oriented Architecture for Distributed Identity Management System
Service Oriented Architecture for Distributed Identity Management System
adameq
 
Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...
Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...
Tips and Tricks for your Service Oriented Architecture @ CakeFest 2013 in San...
Alessandro Nadalin
 
Services Oriented Architecture with PHP and MySQL
Services Oriented Architecture with PHP and MySQLServices Oriented Architecture with PHP and MySQL
Services Oriented Architecture with PHP and MySQL
Joe Stump
 
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Enterprise PHP Architecture through Design Patterns and Modularization (Midwe...
Aaron Saray
 
Program 2010
Program 2010Program 2010
Program 2010
YWCARO
 
Usability Review of Mashup Tools
Usability Review of Mashup ToolsUsability Review of Mashup Tools
Usability Review of Mashup Tools
Tanya Ahmed
 
Cloud foundry intro with groovy
Cloud foundry intro with groovyCloud foundry intro with groovy
Cloud foundry intro with groovy
Guillaume Laforge
 
Prehled firem a investic v CR - 2010
Prehled firem a investic v CR - 2010Prehled firem a investic v CR - 2010
Prehled firem a investic v CR - 2010
Innovation Tank
 
Eoffice eNetwork Directory 2013
Eoffice eNetwork Directory 2013Eoffice eNetwork Directory 2013
Eoffice eNetwork Directory 2013
Pier Paolo Mucelli
 
22 insights into Design by Tom Peters
22 insights into Design by Tom Peters22 insights into Design by Tom Peters
22 insights into Design by Tom Peters
Say Digital Media
 
Ad

Similar to Enterprise PHP (PHP London Conference 2008) (20)

Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)
Ivo Jansch
 
Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008
Ivo Jansch
 
When e-commerce meets Symfony
When e-commerce meets SymfonyWhen e-commerce meets Symfony
When e-commerce meets Symfony
Marc Morera
 
Drupal 7 ci and testing
Drupal 7 ci and testingDrupal 7 ci and testing
Drupal 7 ci and testing
Claudio Beatrice
 
Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9
PrinceGuru MS
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
joeysim
 
Behavior & Specification Driven Development in PHP - #OpenWest
Behavior & Specification Driven Development in PHP - #OpenWestBehavior & Specification Driven Development in PHP - #OpenWest
Behavior & Specification Driven Development in PHP - #OpenWest
Joshua Warren
 
Passing The Joel Test In The PHP World
Passing The Joel Test In The PHP WorldPassing The Joel Test In The PHP World
Passing The Joel Test In The PHP World
Lorna Mitchell
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015
Mirco Hering
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to Microservices
Ad van der Veer
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
Sigma Software
 
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
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1
Jacek Tomaszewski
 
Fed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpFed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype Dcphp
Tony Bibbs
 
Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...
Bhavin Javia
 
Universal apps lightning talk
Universal apps lightning talk Universal apps lightning talk
Universal apps lightning talk
Elyse Kolker Gordon
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
edm00se
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...
IT Event
 
Performance Tuning with XHProf
Performance Tuning with XHProfPerformance Tuning with XHProf
Performance Tuning with XHProf
Salesforce Engineering
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Svetlin Nakov
 
Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)Enterprise PHP (Zend UK Business Conference)
Enterprise PHP (Zend UK Business Conference)
Ivo Jansch
 
Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008Enterprise PHP Development - ZendCon 2008
Enterprise PHP Development - ZendCon 2008
Ivo Jansch
 
When e-commerce meets Symfony
When e-commerce meets SymfonyWhen e-commerce meets Symfony
When e-commerce meets Symfony
Marc Morera
 
Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9Phpworks enterprise-php-1227605806710884-9
Phpworks enterprise-php-1227605806710884-9
PrinceGuru MS
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
joeysim
 
Behavior & Specification Driven Development in PHP - #OpenWest
Behavior & Specification Driven Development in PHP - #OpenWestBehavior & Specification Driven Development in PHP - #OpenWest
Behavior & Specification Driven Development in PHP - #OpenWest
Joshua Warren
 
Passing The Joel Test In The PHP World
Passing The Joel Test In The PHP WorldPassing The Joel Test In The PHP World
Passing The Joel Test In The PHP World
Lorna Mitchell
 
Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015Dev Ops for systems of record - Talk at Agile Australia 2015
Dev Ops for systems of record - Talk at Agile Australia 2015
Mirco Hering
 
An Introduction to Microservices
An Introduction to MicroservicesAn Introduction to Microservices
An Introduction to Microservices
Ad van der Veer
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
Sigma Software
 
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
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1
Jacek Tomaszewski
 
Fed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype DcphpFed Up Of Framework Hype Dcphp
Fed Up Of Framework Hype Dcphp
Tony Bibbs
 
Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...Productive Programmer - Using IDE effectively and various small practices to ...
Productive Programmer - Using IDE effectively and various small practices to ...
Bhavin Javia
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
edm00se
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...
IT Event
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Svetlin Nakov
 
Ad

More from Ivo Jansch (20)

Own Your Apps
Own Your Apps Own Your Apps
Own Your Apps
Ivo Jansch
 
PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)
Ivo Jansch
 
Mobile for PHP developers
Mobile for PHP developersMobile for PHP developers
Mobile for PHP developers
Ivo Jansch
 
Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)
Ivo Jansch
 
The Business Case For Telecommuting
The Business Case For TelecommutingThe Business Case For Telecommuting
The Business Case For Telecommuting
Ivo Jansch
 
Php Development In The Cloud
Php Development In The CloudPhp Development In The Cloud
Php Development In The Cloud
Ivo Jansch
 
PHP in a mobile ecosystem
PHP in a mobile ecosystem PHP in a mobile ecosystem
PHP in a mobile ecosystem
Ivo Jansch
 
27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)
Ivo Jansch
 
Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)
Ivo Jansch
 
PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)
Ivo Jansch
 
PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)
Ivo Jansch
 
Content Management Selection and Strategy
Content Management Selection and StrategyContent Management Selection and Strategy
Content Management Selection and Strategy
Ivo Jansch
 
PHP and the Cloud
PHP and the CloudPHP and the Cloud
PHP and the Cloud
Ivo Jansch
 
PHP in the Real World
PHP in the Real WorldPHP in the Real World
PHP in the Real World
Ivo Jansch
 
Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)
Ivo Jansch
 
Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)
Ivo Jansch
 
Hello Enterprise, my name is PHP
Hello Enterprise, my name is PHPHello Enterprise, my name is PHP
Hello Enterprise, my name is PHP
Ivo Jansch
 
Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)
Ivo Jansch
 
Maatwerk Software
Maatwerk SoftwareMaatwerk Software
Maatwerk Software
Ivo Jansch
 
Introductie Web 2.0
Introductie Web 2.0Introductie Web 2.0
Introductie Web 2.0
Ivo Jansch
 
Own Your Apps
Own Your Apps Own Your Apps
Own Your Apps
Ivo Jansch
 
PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)PHP Development In The Cloud (php|tek edition)
PHP Development In The Cloud (php|tek edition)
Ivo Jansch
 
Mobile for PHP developers
Mobile for PHP developersMobile for PHP developers
Mobile for PHP developers
Ivo Jansch
 
Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)Building an SSO platform in PHP (Zend Webinar Edition)
Building an SSO platform in PHP (Zend Webinar Edition)
Ivo Jansch
 
The Business Case For Telecommuting
The Business Case For TelecommutingThe Business Case For Telecommuting
The Business Case For Telecommuting
Ivo Jansch
 
Php Development In The Cloud
Php Development In The CloudPhp Development In The Cloud
Php Development In The Cloud
Ivo Jansch
 
PHP in a mobile ecosystem
PHP in a mobile ecosystem PHP in a mobile ecosystem
PHP in a mobile ecosystem
Ivo Jansch
 
27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)27 Ways To Be A Better Developer (PHPBenelux 2011)
27 Ways To Be A Better Developer (PHPBenelux 2011)
Ivo Jansch
 
Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)
Ivo Jansch
 
PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)PHP in a Mobile Ecosystem (Zendcon 2010)
PHP in a Mobile Ecosystem (Zendcon 2010)
Ivo Jansch
 
PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)PHP and the Cloud (phpbenelux conference)
PHP and the Cloud (phpbenelux conference)
Ivo Jansch
 
Content Management Selection and Strategy
Content Management Selection and StrategyContent Management Selection and Strategy
Content Management Selection and Strategy
Ivo Jansch
 
PHP and the Cloud
PHP and the CloudPHP and the Cloud
PHP and the Cloud
Ivo Jansch
 
PHP in the Real World
PHP in the Real WorldPHP in the Real World
PHP in the Real World
Ivo Jansch
 
Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)Dynamic Languages In The Enterprise (4developers march 2009)
Dynamic Languages In The Enterprise (4developers march 2009)
Ivo Jansch
 
Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)Enterprise PHP Development (Dutch PHP Conference 2008)
Enterprise PHP Development (Dutch PHP Conference 2008)
Ivo Jansch
 
Hello Enterprise, my name is PHP
Hello Enterprise, my name is PHPHello Enterprise, my name is PHP
Hello Enterprise, my name is PHP
Ivo Jansch
 
Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)Introduction to PHP (Casino Affiliate Convention 2008)
Introduction to PHP (Casino Affiliate Convention 2008)
Ivo Jansch
 
Maatwerk Software
Maatwerk SoftwareMaatwerk Software
Maatwerk Software
Ivo Jansch
 
Introductie Web 2.0
Introductie Web 2.0Introductie Web 2.0
Introductie Web 2.0
Ivo Jansch
 

Recently uploaded (20)

intra-mart Accel series 2025 Spring updates-en.ppt
intra-mart Accel series 2025 Spring updates-en.pptintra-mart Accel series 2025 Spring updates-en.ppt
intra-mart Accel series 2025 Spring updates-en.ppt
NTTDATA INTRAMART
 
Avoiding the China Tariffs: Save Costs & Stay Competitive
Avoiding the China Tariffs: Save Costs & Stay CompetitiveAvoiding the China Tariffs: Save Costs & Stay Competitive
Avoiding the China Tariffs: Save Costs & Stay Competitive
NovaLink
 
The Rise of Payroll Outsourcing in the UK: Key Statistics for 2025
The Rise of Payroll Outsourcing in the UK: Key Statistics for 2025The Rise of Payroll Outsourcing in the UK: Key Statistics for 2025
The Rise of Payroll Outsourcing in the UK: Key Statistics for 2025
QX Accounting Services Ltd
 
India Advertising Market Size & Growth | Industry Trends
India Advertising Market Size & Growth | Industry TrendsIndia Advertising Market Size & Growth | Industry Trends
India Advertising Market Size & Growth | Industry Trends
Aman Bansal
 
EquariusAI analytics for business water risk
EquariusAI analytics for business water riskEquariusAI analytics for business water risk
EquariusAI analytics for business water risk
Peter Adriaens
 
Brandon Flatley - A Skilled Musician
Brandon Flatley - A Skilled MusicianBrandon Flatley - A Skilled Musician
Brandon Flatley - A Skilled Musician
Brandon Flatley
 
20250428 CDB Investor Deck_Apr25_vFF.pdf
20250428 CDB Investor Deck_Apr25_vFF.pdf20250428 CDB Investor Deck_Apr25_vFF.pdf
20250428 CDB Investor Deck_Apr25_vFF.pdf
yihong30
 
Strategic Enterprise Management - Unit I.pptx
Strategic Enterprise Management - Unit I.pptxStrategic Enterprise Management - Unit I.pptx
Strategic Enterprise Management - Unit I.pptx
PrekshyaRana
 
2_English_Vocabulary_In_Use_Pre-Intermediate_Cambridge_-_Fourth_Edition (1).pdf
2_English_Vocabulary_In_Use_Pre-Intermediate_Cambridge_-_Fourth_Edition (1).pdf2_English_Vocabulary_In_Use_Pre-Intermediate_Cambridge_-_Fourth_Edition (1).pdf
2_English_Vocabulary_In_Use_Pre-Intermediate_Cambridge_-_Fourth_Edition (1).pdf
ThiNgc22
 
Smart Home Market Size, Growth and Report (2025-2034)
Smart Home Market Size, Growth and Report (2025-2034)Smart Home Market Size, Growth and Report (2025-2034)
Smart Home Market Size, Growth and Report (2025-2034)
GeorgeButtler
 
Harnessing Hyper-Localisation: A New Era in Retail Strategy
Harnessing Hyper-Localisation: A New Era in Retail StrategyHarnessing Hyper-Localisation: A New Era in Retail Strategy
Harnessing Hyper-Localisation: A New Era in Retail Strategy
RUPAL AGARWAL
 
AlaskaSilver Corporate Presentation Apr 28 2025.pdf
AlaskaSilver Corporate Presentation Apr 28 2025.pdfAlaskaSilver Corporate Presentation Apr 28 2025.pdf
AlaskaSilver Corporate Presentation Apr 28 2025.pdf
Western Alaska Minerals Corp.
 
The Fascinating World of Hats: A Brief History of Hats
The Fascinating World of Hats: A Brief History of HatsThe Fascinating World of Hats: A Brief History of Hats
The Fascinating World of Hats: A Brief History of Hats
nimrabilal030
 
TNR Gold Investor Summary - Building The Green Energy Metals Royalty and Gold...
TNR Gold Investor Summary - Building The Green Energy Metals Royalty and Gold...TNR Gold Investor Summary - Building The Green Energy Metals Royalty and Gold...
TNR Gold Investor Summary - Building The Green Energy Metals Royalty and Gold...
Kirill Klip
 
NewBase 05 May 2025 Energy News issue - 1785 by Khaled Al Awadi_compressed.pdf
NewBase 05 May 2025  Energy News issue - 1785 by Khaled Al Awadi_compressed.pdfNewBase 05 May 2025  Energy News issue - 1785 by Khaled Al Awadi_compressed.pdf
NewBase 05 May 2025 Energy News issue - 1785 by Khaled Al Awadi_compressed.pdf
Khaled Al Awadi
 
Yuriy Chapran: Zero Trust and Beyond: OpenVPN’s Role in Next-Gen Network Secu...
Yuriy Chapran: Zero Trust and Beyond: OpenVPN’s Role in Next-Gen Network Secu...Yuriy Chapran: Zero Trust and Beyond: OpenVPN’s Role in Next-Gen Network Secu...
Yuriy Chapran: Zero Trust and Beyond: OpenVPN’s Role in Next-Gen Network Secu...
Lviv Startup Club
 
Salesforce_Architecture_Diagramming_Workshop (1).pptx
Salesforce_Architecture_Diagramming_Workshop (1).pptxSalesforce_Architecture_Diagramming_Workshop (1).pptx
Salesforce_Architecture_Diagramming_Workshop (1).pptx
reinbauwens1
 
Comments on Cloud Stream Part II Mobile Hub V1 Hub Agency.pdf
Comments on Cloud Stream Part II Mobile Hub V1 Hub Agency.pdfComments on Cloud Stream Part II Mobile Hub V1 Hub Agency.pdf
Comments on Cloud Stream Part II Mobile Hub V1 Hub Agency.pdf
Brij Consulting, LLC
 
Kiran Flemish - A Dynamic Musician
Kiran  Flemish  -  A   Dynamic  MusicianKiran  Flemish  -  A   Dynamic  Musician
Kiran Flemish - A Dynamic Musician
Kiran Flemish
 
The Peter Cowley Entrepreneurship Event Master 30th.pdf
The Peter Cowley Entrepreneurship Event Master 30th.pdfThe Peter Cowley Entrepreneurship Event Master 30th.pdf
The Peter Cowley Entrepreneurship Event Master 30th.pdf
Richard Lucas
 
intra-mart Accel series 2025 Spring updates-en.ppt
intra-mart Accel series 2025 Spring updates-en.pptintra-mart Accel series 2025 Spring updates-en.ppt
intra-mart Accel series 2025 Spring updates-en.ppt
NTTDATA INTRAMART
 
Avoiding the China Tariffs: Save Costs & Stay Competitive
Avoiding the China Tariffs: Save Costs & Stay CompetitiveAvoiding the China Tariffs: Save Costs & Stay Competitive
Avoiding the China Tariffs: Save Costs & Stay Competitive
NovaLink
 
The Rise of Payroll Outsourcing in the UK: Key Statistics for 2025
The Rise of Payroll Outsourcing in the UK: Key Statistics for 2025The Rise of Payroll Outsourcing in the UK: Key Statistics for 2025
The Rise of Payroll Outsourcing in the UK: Key Statistics for 2025
QX Accounting Services Ltd
 
India Advertising Market Size & Growth | Industry Trends
India Advertising Market Size & Growth | Industry TrendsIndia Advertising Market Size & Growth | Industry Trends
India Advertising Market Size & Growth | Industry Trends
Aman Bansal
 
EquariusAI analytics for business water risk
EquariusAI analytics for business water riskEquariusAI analytics for business water risk
EquariusAI analytics for business water risk
Peter Adriaens
 
Brandon Flatley - A Skilled Musician
Brandon Flatley - A Skilled MusicianBrandon Flatley - A Skilled Musician
Brandon Flatley - A Skilled Musician
Brandon Flatley
 
20250428 CDB Investor Deck_Apr25_vFF.pdf
20250428 CDB Investor Deck_Apr25_vFF.pdf20250428 CDB Investor Deck_Apr25_vFF.pdf
20250428 CDB Investor Deck_Apr25_vFF.pdf
yihong30
 
Strategic Enterprise Management - Unit I.pptx
Strategic Enterprise Management - Unit I.pptxStrategic Enterprise Management - Unit I.pptx
Strategic Enterprise Management - Unit I.pptx
PrekshyaRana
 
2_English_Vocabulary_In_Use_Pre-Intermediate_Cambridge_-_Fourth_Edition (1).pdf
2_English_Vocabulary_In_Use_Pre-Intermediate_Cambridge_-_Fourth_Edition (1).pdf2_English_Vocabulary_In_Use_Pre-Intermediate_Cambridge_-_Fourth_Edition (1).pdf
2_English_Vocabulary_In_Use_Pre-Intermediate_Cambridge_-_Fourth_Edition (1).pdf
ThiNgc22
 
Smart Home Market Size, Growth and Report (2025-2034)
Smart Home Market Size, Growth and Report (2025-2034)Smart Home Market Size, Growth and Report (2025-2034)
Smart Home Market Size, Growth and Report (2025-2034)
GeorgeButtler
 
Harnessing Hyper-Localisation: A New Era in Retail Strategy
Harnessing Hyper-Localisation: A New Era in Retail StrategyHarnessing Hyper-Localisation: A New Era in Retail Strategy
Harnessing Hyper-Localisation: A New Era in Retail Strategy
RUPAL AGARWAL
 
The Fascinating World of Hats: A Brief History of Hats
The Fascinating World of Hats: A Brief History of HatsThe Fascinating World of Hats: A Brief History of Hats
The Fascinating World of Hats: A Brief History of Hats
nimrabilal030
 
TNR Gold Investor Summary - Building The Green Energy Metals Royalty and Gold...
TNR Gold Investor Summary - Building The Green Energy Metals Royalty and Gold...TNR Gold Investor Summary - Building The Green Energy Metals Royalty and Gold...
TNR Gold Investor Summary - Building The Green Energy Metals Royalty and Gold...
Kirill Klip
 
NewBase 05 May 2025 Energy News issue - 1785 by Khaled Al Awadi_compressed.pdf
NewBase 05 May 2025  Energy News issue - 1785 by Khaled Al Awadi_compressed.pdfNewBase 05 May 2025  Energy News issue - 1785 by Khaled Al Awadi_compressed.pdf
NewBase 05 May 2025 Energy News issue - 1785 by Khaled Al Awadi_compressed.pdf
Khaled Al Awadi
 
Yuriy Chapran: Zero Trust and Beyond: OpenVPN’s Role in Next-Gen Network Secu...
Yuriy Chapran: Zero Trust and Beyond: OpenVPN’s Role in Next-Gen Network Secu...Yuriy Chapran: Zero Trust and Beyond: OpenVPN’s Role in Next-Gen Network Secu...
Yuriy Chapran: Zero Trust and Beyond: OpenVPN’s Role in Next-Gen Network Secu...
Lviv Startup Club
 
Salesforce_Architecture_Diagramming_Workshop (1).pptx
Salesforce_Architecture_Diagramming_Workshop (1).pptxSalesforce_Architecture_Diagramming_Workshop (1).pptx
Salesforce_Architecture_Diagramming_Workshop (1).pptx
reinbauwens1
 
Comments on Cloud Stream Part II Mobile Hub V1 Hub Agency.pdf
Comments on Cloud Stream Part II Mobile Hub V1 Hub Agency.pdfComments on Cloud Stream Part II Mobile Hub V1 Hub Agency.pdf
Comments on Cloud Stream Part II Mobile Hub V1 Hub Agency.pdf
Brij Consulting, LLC
 
Kiran Flemish - A Dynamic Musician
Kiran  Flemish  -  A   Dynamic  MusicianKiran  Flemish  -  A   Dynamic  Musician
Kiran Flemish - A Dynamic Musician
Kiran Flemish
 
The Peter Cowley Entrepreneurship Event Master 30th.pdf
The Peter Cowley Entrepreneurship Event Master 30th.pdfThe Peter Cowley Entrepreneurship Event Master 30th.pdf
The Peter Cowley Entrepreneurship Event Master 30th.pdf
Richard Lucas
 

Enterprise PHP (PHP London Conference 2008)

  • 1. Enterprise PHP development Ivo Jansch <[email protected]> PHPLondon Conference, February 29, 2008
  • 2. About me CTO at Ibuildings Development using PHP (websites, applications) Big projects (high traffic, multi-tier, clusters, high availability, large teams) Consultancy (training, audits) Partner of Zend Technologies 9 years in NL, 3 months in UK Geek! Author of several Open Source projects Interested in PHP, Web 2.0, Science Nervous in front of audiences bigger than 5 ;-)
  • 3. What's an enterprise? Wikipedia: “ Any of several ships by that name in the Star Trek fictional universe” “ A business, company, or comparable organization”
  • 4. Is PHP Enterprise ready? CIO Magazine: “ PHP works well for prototyping because it is easy to get a site up and running. Use PHP to design the site [...] but when it comes time for development, tell the team you want the result to look and act like this PHP site...but in Java” (Or: “great, this is exactly what I need! now do it again, at twice the cost!”) http://www.cio.com/article/176250 (skip the article, read the comments)
  • 5. Is PHP Enterprise ready? Small Lightweight Cheap Easy to learn Big Enterprise friendly enterpriCe CS required
  • 6. A word from my girlfriend It's not the SIZE of the tool... It's how you USE it.
  • 7. PHP is changing... 1998 Personal stuff 2003 Simple websites Content management Blogs 2008 Big websites Banks Insurance Companies ...
  • 8. PHP is changing... Traditional metaphor PHP is like Lego bricks Bricks allowing you to build anything
  • 9. PHP is changing... PHP is no longer a toy Let’s use the metaphor of actual bricks Because we’re building actual buildings now
  • 10. About Bricks Extreme simplicity Easy to learn Versatile Cheap ... so building a skyscraper must be peanuts, right?
  • 12. Step 1 – The Team “Dear Mr. Businessman, I have read about your plans to build a new skyscraper and I am applying for a job. I have a lot of experience with Bricks. I taught myself how to use them and have been maintaining our family shed for a few years now.”
  • 13. Step 1 – The Team Be a software engineer Train your skills Study OO principles Consider Zend Certification
  • 14. Step 2 - Requirements What does the customer need? What do visitors want?
  • 15. Step 2 - Requirements Functional Design Requirements definition Interaction Design / Wireframes Flow diagrams
  • 16. Step 3 - Architecture Don’t just start stacking bricks Create an architecture first
  • 17. Step 3 - Architecture Technical Design Modelling Class diagrams ER diagram (data model) Colaboration diagrams Use cases etc. Tools: UML, whiteboards
  • 18. Step 3 - Architecture High Level Architectures: MVC (Model View Controller) SOA (Service Oriented Architecture) Multi-tier development (Frontend, Application, Data) CBD (Component Based Development)
  • 19. Step 4 - Tools You don’t need tools... But they make you productive
  • 20. Step 4 - Tools Development: Eclipse (PDT) PhpED Vim Zend Studio IDE's vs Editors Debugging Profiling Navigation / cross references Inspection
  • 21. Step 4 - Tools Source Control CVS / SVN Bitkeeper / GIT Branching Tagging
  • 22. Step 5 - Foundation Start stacking bricks? How many bricks does it take.. What about stability? Start with a foundation
  • 23. Step 5 - Foundation Use a framework Provides guidelines (frame) Off the shelf components Examples Zend Framework http://framework.zend.com CakePHP http://http://www.cakephp.org ezComponents http://ez.no/ezcomponents Symfony http://www.symfony-project.org ATK http://www.achievo.org/atk
  • 24. Step 5 - Foundation The “Not Invented Here” Syndrome “The existing frameworks are no good. I can do this better.” “This framework is no good. It can do A through Y but I need Z.” “This framework is too big. It provides A-Z but we only need A and B.” “I know there's a good framework. But I would like to learn.”
  • 25. Step 6 – Design Patterns Requirement 1056.4: We need to be able to look outside, but we can't make holes in the wall (rain should be kept outside). When it's sunny, a hole is ok.
  • 26. Step 6 – Design Patterns A ‘window’ is a concept Best practice way of solving a particular problem In IT, we call this a ‘design pattern’ Popular patterns in PHP: MVC, Factory, Singleton, Registry, Decorator Good read: php|architect's Guide to PHP Design Patterns - Jason E. Sweat
  • 27. Step 7 - Testing Is your software tested after it has gone live?
  • 28. Step 7 - Testing Various types of testing Developer testing Functional testing Environment testing Performance testing Usability testing
  • 29. Step 7 - Testing Common scenario
  • 30. Step 7 - Testing User complains... MWOEHA! BUG!
  • 31. Step 7 - Testing Developer attacks the problem fix_bug();
  • 32. Step 7 - Testing Problem solved!
  • 33. Step 7 - Testing Solution: Unit Tests Automated testing after each change Prevents regressions Testing for PHP applications: PHPUnit http://www.phpunit.de/ SimpleTest http://www.lastcraft.com/simple_test.php Continuous Integration: Xinc http://code.google.com/p/xinc/
  • 34. Step 7 - Testing Test Driven Development 1. Define functionality 2. Create testcase 3. Run test -> test fails 4. Implement functionality Test succeeds? Done Test fails? Refactor Repeat step 4 until finished
  • 35. Step 8 - Optimization Users are reporting: &quot;I work on the 197th floor. Every day I have to walk the stairs for 2 hours, then I have only 4 hours left to do my job.&quot;
  • 36. Step 8 - Optimization Solution: Elevator
  • 37. Step 8 - Optimization In PHP, this ‘elevator’ is called an ‘accelerator’ This is how PHP works (pseudo-ish code): read index.php; // enter the building compile index.php; // go to floor 197 echo “Hello World”; // get the job done An accelerator improves the first 2 steps Accelerators for PHP: eAccelerator http://eaccelerator.net/ APC http://pecl.php.net/package/APC Zend Platform http://www.zend.com/products/zend_platform
  • 38. Step 8 - Optimization Users complain: “Every time I need coffee I have to go to the top floor to get some.”
  • 39. Step 8 - Optimization Solution: Create small coffee corners on every floor so people don’t have to go to the main restaurant every time. In PHP we call this caching Don’t query the database everytime you need data Use locally stored copy (file or memory) PHP Caching solutions: Zend_Cache http://framework.zend.com Smarty http://smarty.php.net Zend Platform http://www.zend.com/products/zend_platform Memcached http://danga.com/memcached/
  • 40. Step 9 - Deployment Lifecycle: Develop Test Deploy to acceptance test environment Deploy to live Use SVN Code is just a part, don't forget the database Create a 'Deployment & Release Profile'
  • 41. Step 9 - Deployment System Architecture PHP Apache Linux MySQL From a simple LAMP stack on a single machine...
  • 42. Step 9 - Deployment System Architecture ... to a High Availability, Horizontally Scalable architecture
  • 43. Step 10 - Operations Monitoring Logfiles Monitor infrastructure (tools such as Nagios) Monitor application (tools such as Zend Platform) Monitor business (is the money still pouring in?)
  • 44. Step 10 - Operations Debugging Ideal: “I had error x when I selected y after I clicked z” Reality: “It doesn't work!” “What exactly doesn't work, and what did you do?” “It just ******** didn't work, FIX IT.”
  • 45. Step 10 - Operations Solution A 'root cause analysis' tool
  • 46. Step 10 - Operations Change management Ticket system Stick to your deployment - use the DRP DON'T TOUCH THE LIVE ENVIRONMENT. But I absolutely have to... DON'T! but... NO! I MEAN IT! :-)
  • 47. The Big Picture No ‘cowboy coding’, but structured steps Higher quality Software will be easier to maintain (and cheaper) Development methodology Waterfall Agile (DSDM, XP, Scrum) Software Development Life Cycle (SDLC) Adapt from existing methods, learn from experts Document it properly Make it the cornerstone of your development efforts
  • 48. More things to think about? Development Implementation Documentation Security
  • 49. Before I finish Dutch PHP Conference 2008 http://www.phpconference.nl Call for Ideas see your favorite guru hear your favorite topic Buy my book “php|architect's Enterprise PHP Development” Should be available in a few months Talk to us Visit our booth We are still hiring We have stuff to sell you ;-)