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

PHP para aplicações Web de grande porte

Jan 17, 2015

Download

Business

Felipe Ribeiro

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PHP para aplicações Web  de grande porte

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

Maio de 2008

João Pessoa - PB

Page 2: PHP para aplicações Web  de grande porte

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]

Page 3: PHP para aplicações Web  de grande porte

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í?

Page 4: PHP para aplicações Web  de grande porte

O que é PHP?

Page 5: PHP para aplicações Web  de grande porte

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.

Page 6: PHP para aplicações Web  de grande porte

Um pouco de históriaPHP nasceu em 1994

Page 7: PHP para aplicações Web  de grande porte

Foi criado por Rasmus Lerdorf

Page 8: PHP para aplicações Web  de grande porte

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-->

Page 9: PHP para aplicações Web  de grande porte

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;?>

Page 10: PHP para aplicações Web  de grande porte

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();?>

Page 11: PHP para aplicações Web  de grande porte

Como funciona?Fonte: Zend Technologies

Page 12: PHP para aplicações Web  de grande porte

PHP é popular!Fonte: Netcraft

Page 13: PHP para aplicações Web  de grande porte

Quem usa?

Yahoo!

Facebook

Flickr

del.icio.us

Digg

Wikipedia

Sourceforge

Last.fm

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

Page 14: PHP para aplicações Web  de grande porte

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

Page 15: PHP para aplicações Web  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

Page 16: PHP para aplicações Web  de grande porte

Os desafiantes

Page 17: PHP para aplicações Web  de grande porte

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

Page 18: PHP para aplicações Web  de grande porte

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

Page 19: PHP para aplicações Web  de grande porte

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

Page 20: PHP para aplicações Web  de grande porte

Vantagens do PHPSimplicidade

Escalabilidade

Custo

Comunidade

Apache

Deployment simples

Independente de plataforma e fornecedor

Page 21: PHP para aplicações Web  de grande porte

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!)

Page 22: PHP para aplicações Web  de grande porte

Integração com outros sistemas

Webservices

SOAP

SoapClient

SoapServer

REST

libcurl

XMLWriter

XMLReader

Page 23: PHP para aplicações Web  de grande porte

Integração com outros sistemas

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

Java

C/C++ e COM/.NET

Perl

Page 24: PHP para aplicações Web  de grande porte

SGBDs

Suporte nativo a vários SGBDs

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

Camadas de abstração

PDO

MDB2

Page 25: PHP para aplicações Web  de grande porte

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

Page 26: PHP para aplicações Web  de grande porte

Extensões

PEAR (The PHP Extension and Application Repository)

http://pear.php.net

Repositório de classes escritas em PHP

Page 27: PHP para aplicações Web  de grande porte

Extensões

PECL (The PHP Extension Comunity Library)

http://pecl.php.net

Extensões nativas, escritas em C.

Page 28: PHP para aplicações Web  de grande porte

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

Page 29: PHP para aplicações Web  de grande porte

IDEs (ou simples editores)

Zend Studio ($$$)

Eclipse PDT

Komodo

Delphi for PHP ($$$)

gEdit

KDevelop

TextMate ($$$)

Emacs

Vim

Entre outros...

Page 30: PHP para aplicações Web  de grande porte

Frameworks

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

Zend Framework

Symfony

Prado

CakePHP

Muitos outros...

Page 31: PHP para aplicações Web  de grande porte

Escalabilidade

Muito Simples!

Apache mod_proxy_balancer faz quase tudo que você precisa!

Page 32: PHP para aplicações Web  de grande porte

Performance

PHP dificilmente é o gargalo

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

Mas mesmo assim, podemos otimizar

Page 33: PHP para aplicações Web  de grande porte

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 ($$$)

Page 34: PHP para aplicações Web  de grande porte

E o suporte?

Comunidade ativa

Zend

Grandes investidores

Oracle

Yahoo!

IBM

Page 35: PHP para aplicações Web  de grande porte

O que vem por aí?

PHP 5.3 e PHP 6 prometem novidades

Namespaces

Closures

Unicode

Page 36: PHP para aplicações Web  de grande porte

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!

Page 37: PHP para aplicações Web  de grande porte

Perguntas?

Page 39: PHP para aplicações Web  de grande porte

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)