php para aplicações web de grande porte

39
PHP para aplicações Web de grande porte Felipe Ribeiro - http://feliperibeiro.com Maio de 2008 João Pessoa - PB

Upload: felipe-ribeiro

Post on 17-Jan-2015

8.773 views

Category:

Business


1 download

DESCRIPTION

 

TRANSCRIPT

PHP para aplicações Web de grande porteFelipe Ribeiro - http://feliperibeiro.com

Maio de 2008

João Pessoa - PB

Quem é esse cara?

Felipe Ribeiro

Estudante de Ciência da Computação na UFCG

Engenheiro de sistemas da startup americana Shoprizer.com

Experiência em sistemas distribuídos e desenvolvimento Web há 6 anos

http://feliperibeiro.com

[email protected]

Agenda

Apresentando o PHP

O que é uma aplicação de grande porte

Outras tecnologias

Vantagens e desvantagens do PHP

Features e ferramentas para atender os requisitos

O que vem por aí?

O que é PHP?

O que é PHP?

PHP originalmente significava Personal Home Page;

Hoje, assim como GNU, é um acrônimo recursivo que significa: “PHP Hypertext Preprocessor”;

É uma linguagem dinâmica;

Tomou o lugar do Perl no boom da Web;

Uma linguagem de programação focada na Web.

Um pouco de históriaPHP nasceu em 1994

Foi criado por Rasmus Lerdorf

E tinha essa cara<!--getenv HTTP_USER_AGENT--><!--ifsubstr $exec_result Mozilla-->Hey, you are using Netscape!<p><!--endif-->

<!--sql database select * from table where user='$username'-->

<!--ifless $numentries 1-->Sorry, that record does not exist<p><!--endif exit-->

Welcome <!--$user-->!<p>You have <!--$index:0--> credits left in your account.<p>

<!--include /text/footer.html-->

Depois virou PHP/FI<? $name = "bob"; $db = "db"; $result = msql($db,"select * from table where firstname='$name'"); $num = msql_numrows($result); echo "$num records found!<p>"; $i=0; while($i<$num); echo msql_result($result,$i,"fullname"); echo "<br>"; echo msql_result($result,$i,"address"); echo "<br>"; $i++; endwhile;?>

E hoje é mais ou menos assim...<?phpclass SimpleClass { private $attribute; public function foo($bar) { echo $this->attribute * $bar; }}

class ExtendedClass extends SimpleClass { public function foo($bar) { try { do_something(); } catch(FooBarException $e) { die($e->getMessage()); } parent::foo($bar); }}

$o = new ExtendedClass;$o->foo();?>

Como funciona?Fonte: Zend Technologies

PHP é popular!Fonte: Netcraft

Quem usa?

Yahoo!

Facebook

Flickr

del.icio.us

Digg

Wikipedia

Sourceforge

Last.fm

E mais de 20 milhões de sites! :)

O que são aplicações de grande porte?

Grande volume de dados

Grande número de acessos

Necessidade de alta disponibilidade e redundância (Hot swap, cluster failover, etc)

Componentes

Ambiente heterogêneo (integração com diferentes linguagens de programação e SOs)

Aplicações de grande porte

Os desafiantes

JavaBastante robusta e padrão de mercado, porém sua “burocracia” dificulta mudanças rápidas.

.NETCustos de licença, dependência da IDE, dependência de plataforma, código fechado.

Ruby e PythonTrazem ótimos conceitos, mas ainda estão em fase de maturação.

Vantagens do PHPSimplicidade

Escalabilidade

Custo

Comunidade

Apache

Deployment simples

Independente de plataforma e fornecedor

Desvantagens do PHP

Falta suporte a multi-threading.

Infelizmente carrega um karma de quick’n’dirty por causa de alguns maus programadores. (Mas vamos virar esse jogo!)

Integração com outros sistemas

Webservices

SOAP

SoapClient

SoapServer

REST

libcurl

XMLWriter

XMLReader

Integração com outros sistemas

Integração com outras linguagens de programação

Java

C/C++ e COM/.NET

Perl

SGBDs

Suporte nativo a vários SGBDs

MySQL, PostgreSQL, Oracle, SQLite, etc...

Camadas de abstração

PDO

MDB2

Testes de Unidade

Os testes devem ser automatizados

Pelo menos nas fases em que isso é possível

Scripts de teste desenvolvidos ao longo do tempo aumentam o patrimônio da empresa e garantirão uma qualidade cada vez maior do software

PHPUnit

http://phpunit.de

Extensões

PEAR (The PHP Extension and Application Repository)

http://pear.php.net

Repositório de classes escritas em PHP

Extensões

PECL (The PHP Extension Comunity Library)

http://pecl.php.net

Extensões nativas, escritas em C.

ProdutividadePHP por si só já é bastante produtivo, mas existem IDEs e Frameworks que melhoram ainda mais a produtividade.

IDEs (ou simples editores)

Zend Studio ($$$)

Eclipse PDT

Komodo

Delphi for PHP ($$$)

gEdit

KDevelop

TextMate ($$$)

Emacs

Vim

Entre outros...

Frameworks

Frameworks ajudam na padronização de código e reutilização de componentes.

Zend Framework

Symfony

Prado

CakePHP

Muitos outros...

Escalabilidade

Muito Simples!

Apache mod_proxy_balancer faz quase tudo que você precisa!

Performance

PHP dificilmente é o gargalo

80-90% do tempo de carregamento de um site está no front-end

Mas mesmo assim, podemos otimizar

Caching e Performance

PHP tem um compilador JIT que gera um código intermedário chamado opcode que é então interpretado.

Por default essa compilação ocorre em todas as execuções do script. Para otimização e caching desse opcode, existem algumas soluções:

Pacote APC do PECL

XCache

Zend Platform ($$$)

E o suporte?

Comunidade ativa

Zend

Grandes investidores

Oracle

Yahoo!

IBM

O que vem por aí?

PHP 5.3 e PHP 6 prometem novidades

Namespaces

Closures

Unicode

Conclusões

PHP nasceu para Web e por isso sai na frente.

PHP é bom o suficiente para grande maioria das aplicações que rodam na Web.

PHP é simples e barato.

LAMP dá conta do recado!

Perguntas?

ReferênciasPHP 5 Objects, Patterns, and Practice - Matt Zandstra - Editora Apress

PHP Leads Web 2.0 - Andi Gutmans (White Paper)

PHP 5: Open Source Scripting for the Heterogeneous Enterprise - Zend Technologies (White Paper)

An overview on PHP - Zend Technologies (White Paper)