Back-End

7 jun, 2013

Plack – Super-Bonder para a Web

Publicidade

Plack é uma implementação em Perl da especificação PSGI. Ela foi criada para resolver o problema das múltiplas interfaces de implantação de aplicações web em servidores. O PSGI é baseado no Rack (Ruby) e no WSGI (Pytho9n), agregando as melhores features dessas duas especificações.

Arquitetura

O Plack possui diversos componentes que podem ser combinados para construir uma stack completa e autônoma para a web.

  • Handlers: adaptadores para diversos servidores web e interfaces de gateway, como Apache 1 e 2, nginx, CGI, FastCGI e um servidor web autônomo implementado pelo próprio Plack. São esses componentes que vão executar a aplicação propriamente dita e realizar coisas como pre-fork e load balancing.
  • Loaders: componentes que carregam a aplicação em conjunto com um Handler. A forma como a aplicação é carregada pode ter bastante impacto na execução da aplicação, como por exemplo, carregar as bibliotecas antes dos forks acontecerem, para se aproveitar do copy-on-write e diminuir a assinatura de memória. Outros casos também incluem carregamento sob demanda, que é útil para desenvolvimento, além do gerenciamento de sinais para recarregamento graceful.
  • Aplicações .psgi: o PSGI define um formato para as aplicações, que devem ser escritas em Perl.
  • Executores: utilitários para uso em linha de comando que controlam os diversos aspectos da execução da aplicação. O Plack implementa um executor que se chama plackup e é tipicamente usado em desenvolvimento para “subir” uma versão light da aplicação.
  • Construtor de Aplicações: o Plack permite que você combine componentes de forma arbitrária usando a semântica fornecida pelo builder:

fgf

  • Middlewares:  são componentes intermediários entre a web e as aplicações e cuidam de coisas como compressão/descompressão de conteúdo, caching e manipulação de headers. Existem centenas disponíveis no CPAN implentando as mais diversas funcionalidades.
  • Frameworks: Catalyst; Dancer; Mojo; CGI::Application; Jifty
  • Testers: o Plack possui uma série de emuladores de requisições que são úteis para realizar testes. Dessa forma, tanto o cliente HTTP, quanto o servidor são executados e se comunicam dentro do mesmo processo, o que elimina o overhead de criar um par requisição/resposta em HTTP.
  • Servers: servidores autônomos de HTTP.
    • Starman: servidor com pre-forking de alta performance, serve até 7000 requisições por segundo com uma única CPU.
    • Twiggy: servidor assíncrono, útil para execução em ambientes sem fork, serve até 4000 requisições por segundo numa única CPU.

Assista ao vídeo:

http://videolog.tv/video.php?id=959830

***

Este artigo foi publicado originalmente na Revista iMastersAcesse e leia todo o conteúdo.