tomáS

pensando alto sobre a web

O PHP e a escalabilidade

com 6 comentários

Uma coisa é você fazer um site de relacionamento por exemplo que será acessado pelas pessoas do seu bairro outra coisa é você ter um site que será acessado globalmente por milhares (ou até milhões de pessoas). Um site do segundo tipo precisa ser escalável que, para usar a definição da Wikipédia seria:

escalabilidade é uma característica desejável em todo o sistema, em uma rede ou em um processo, que indica sua habilidade de manipular uma porção crescente de trabalho de forma uniforme, ou estar preparado para o crescimento do mesmo”

ponte.jpg

Um site do segundo tipo deve ser fácil de manter, estar preparado para um crescimento rápido além de ser capaz de usar os recursos (principalmente hardware e conexão) de forma ótima e fazer isso não é fácil. Às vezes, por falta de experiência, alguns programadores acabam ignorando totalmente esse aspecto no sistema que ele está desenvolvendo, resultando em uma aplicação que não é capaz de receber uma demanda muito grande de acessos. O que não é exatamente um problema se você estiver desenvolvendo sites pequenos e que permanecerão pequenos.

Agora em aplicações do governo, sistemas de transações bancárias, ou qualquer outro site que será projetado para realizar um grande número de acessos e operações precisam pensar em escalabilidade. Assim o desenvolvedor deverá pensar em cache, otimização de banco de dados, persistência, otimização de código, diminuir o consumo de banda entre outras coisas. Existe muita coisa pra aprender em cada um desses tópicos e é isso que diferencia um desenvolvedor de um “sobrinho“.

sobrinho.jpg

Por isso a indústria ama ambientes de programação como Java, .Net, que têm linguagens que não possuem a flexibilidade das linguagens dinâmicas como o Ruby, Python mas têm soluções (bibliotecas, padrões, servidores de aplicações, além de estudos) para todos esses problemas de escalabilidade, além de outros que aparecem quando você está criando sistemas críticos que irão receber grande número de acessos e irão manipular quantidades massivas de dados.

A esta altura você deve estar perguntando: “sim, e o PHP do título do post tem a ver com isso?”. Bom, o PHP é uma linguagem bastante popular e muito fácil de se aprender, logo existe um grande número de pessoas que sabem PHP e desenvolvem sistemas de tudo quanto é jeito inclusive sem levar em conta nenhuma boa prática de programação. Para ilustrar melhor o que eu quero falar, veja um trecho deste excelente artigo:

Todos sabemos que a versão 4 do PHP é poderosa, mas a imagem de que projetos desenvolvidos em PHP tem a vantagem de que “até meu sobrinho pode terminar” infelizmente está enraizada na mente de muitos gerentes de TI.

O texto citado fala do fim da descontinuação do PHP 4 e advento do PHP 5 e de, talvez, uma “nova fase” da vida desta linguagem. O PHP 5 traz uma implementação de orientação a objetos bastante poderosa, o que dá poder ao projetista o poder de implementar boas práticas de projeto, os design patterns. Além disso existem vários frameworks bons como o Zend além de vários casos de sucesso da adoção da linguagem no desenvolvimento de sites de acesso massivo como: Facebook, Flickr, last.fm. O que mostra que a linguagem pode sim ser usada de maneira séria para projetos que levam em conta a escalabilidade e outros fatores que são importantes no desenvolvimento destes tipos de sistema.

Claro que não é a linguagem utilizada que irá fazer o seu sistema ser robusto ou não, mas os “criadores” da linguagem podem ajudá-lo através da criação de Frameworks com bons princípios, recursos na própria linguagem que permitam os programadores implementarem boas práticas de programação e, claro, criar uma cultura de bom desenvolvimento entre os seus programadores. Bom, acho que isto está acontecendo para o PHP, com certeza boa coisa vem por ai.

Escrito por tomas

26 Março, 2008 às 11:38

6 Respostas

Subscreva aos comentários comRSS.

  1. Boa Tomas! Agora já tenho o que mostrar pros caras que falam que PHP é linguagem de estagiário… hahahaha

    fore

    26 Março, 2008 em 11:55

  2. Pois é fore, existem esses comentários sobre o PHP mas um dos sites mais inovadores e de maior tráfego do momento (Facebook) usa o PHP, engraçado né?

    E o texto foi um desabafo e irei usá-lo pra mostrar pra essas pessoas também hehe…

    tomas

    27 Março, 2008 em 12:23

  3. Cara, mas e o assunto sobre a escalabildiade, como fazer, como implementar, ou onde acho material para realizar isso??

    abraços

    Fernando Chucre

    29 Maio, 2008 em 2:14

  4. Olá Fernando,

    Na verdade escalabilidade é um assunto complexo e cheio de caminhos mas dá pra resumir de maneira simples o que é: “escalabilidade é a habilidade de fazer um sistema que esteja preparando para a demanda e para o crescimento.” Isto pode ser atingido de várias maneiras.

    - Arquiteturando melhor o seu sistema (estude design patterns, padrões de projeto)
    - Utilizando cache: Eu uso o Zend_Cache, do Zend Framework, para isso…
    - Otimizando ao máximo a utilização de banco de dados, assunto extenso
    mas temos o Google pra isso…
    - Utilizando frameworks prontos para não ter que refazer trabalho e ter um código de qualidade por trás do seu site…
    - …

    Bom, como eu falei o assunto é amplo e, muitos assuntos do tema escalabilidade não virão com o rótulo “escalabilidade”, mas sim otimização, arquitetura,… de maneira geral tudo que melhore o desempenho do seu sistema ou das partes do mesmo irá ajudar o seu sistema a se tornar mais escalável.

    tomas

    29 Maio, 2008 em 2:28

  5. you car ugly we see you english see bag

    greedhousewh

    8 Julho, 2008 em 2:42

  6. ola tomas… estou fazendo um trabalho no qual devo apresentar como fazer um site de relacionamento… Devo falar mais sobre o software…
    Tem como vc me da uma maozinha nao?
    algum site q me explica melhor sobre isso e tals…
    Obrigada!

    Bruna

    22 Outubro, 2008 em 11:35


Deixe uma resposta