enterprise php

Post on 18-May-2015

3.429 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

A presentation on PHP's position in the enterprise, its past & present, how to get ready for developing for enterprise. Inspired by Ivo Jansch's "PHP in the real wolrd" presentation.Presented at SoftExpo 2010, Dhaka, Bangladesh.

TRANSCRIPT

… to be precise: “PHP in real world”

Introduction

A look at PHP

What is Enterprise

Development Lifecycle

Enterprise Techniques

Take-Aways

Open Discussion

Who is here?

How many of us here are:

• Management / Decision makers

• Project Managers

• Developers – PHP

• Developers – Other (.NET/RoR/Python/Java/…)

• Student / Hobbyist

Past and Present

Made for the web

Low learning curve

Short time-to-market

Huge active community

Platform independent (Linux, windows, …)

Open source

Versatile

Backed by Zend, Microsoft, IBM, etc.

“PHP is for hobbyists”

• Low learning curve

• Proper software engineering => proper quality

“PHP is insecure”

• PHP is a language; it’s the programmer that implements

security

“PHP is not a real language”

• It’s a dynamic scripting language; but a powerful one

“PHP does not scale”

• Most often PHP is not the bottleneck, DB is

• Language does not scale, architecture does

“PHP is not ready for Enterprise”

• Already running in mission-critical enterprises

• More on this later

When to consider something enterprise, and why

Customizability

• Adherence to business-specific rules

• Adaption of changing business environment

• Change of direction

Scalability

• Need to scale as business grows

• Change in infrastructure

Security

• Security is priority #1

Integration

• Needs to work seamlessly with existing solutions

• Should be open for collaboration

Performance

• Response time

• Load time

How we do it in real life

Analysis

Design

Coding

Testing

Deployment and Maintenance

Scrum

Extreme Programming (XP)

Kanban

OpenAgile

Working software is delivered frequently

Working software is the principal measure of progress

Even late changes in requirements are welcomed

Regular adaptation to changing circumstances

Customer is a part of the team

How to get ready for the enterprise

Simple code

DRY

Code quality

Security

Testing

Caching

Debugging

Deployment

Performance

Refactoring

This is easier said than done

Do the simplest thing that could possibly work.

Do not run for complexity, complexity kills!

Stick to standards

Open source = open knowledge

Reuse Experience

Use Components

Use Frameworks

Static Code Analysis

• Lint (php -l)

• PHP_CodeSniffer

Software Metrics

• PHPUnit

• PHP_Depend

Output validation

• Tidy

• HTML/CSS validation

Security is not an afterthought, it should be built within

the system

Trust no one

Handle common issues:

• XSS,

• SQL/Code injection,

• Session fixation,

• Session hijacking,

• CSRF

Unit Tests

Integration Tests

Acceptance Tests

Testing Tools:

• PHPUnit (http://www.phpunit.de)

• Selenium (http://seleniumhq.org)

Use a compiler cache (Zend, APC, etc)

Cache generated content:

• Whole pages or fragments (disk, squid, memcache)

• Database query results (query cache, memcache)

• External data (memcache, disk)

Create a test to expose each bug

Keep the test, and run it often

Tool:

• xdebug (http://www.xdebug.org)

• Tracing

• Remote Debugging

Always automate deployment

Use 3 Systems

• Development

• Integration/Staging

• Live

Consider virtual machines / cloud hosting

Do not guess where to start

Profile your code

• how often are functions called

• how long does execution take

Look for all possible execution path

Tool:

• xdebug (http://www.xdebug.org)

Improve the design of software without changing its

behavior

Not adding new features

“Cleaning up” code

Keep refactoring your code constantly

Use unit tests to ensure you don't break anything

The Negatives

• PHP does not always have all of the functionality needed

• Java development/implementation is more difficult than many

situations require

The Positives

• PHP will do most of what you need to do, easier.

• Java can fill almost any feature void in PHP for a web-based

deployment

Source: Kevin Schroeder (Zend)

PHP is a serious language

PHP is used in big, real world projects

Good life cycle for project matters

PHP can be used in conjunction with other technologies

When developing software for enterprise:

• Keep things simple

• Accept change

• Test early and often

• Automate tests and deployment

Questions ??

top related