Integração de Sistemas usando tecnologias open source
Upcoming SlideShare
Loading in...5
×
 

Integração de Sistemas usando tecnologias open source

on

  • 974 views

Palestra ministrada no primeiro

Palestra ministrada no primeiro

Statistics

Views

Total Views
974
Views on SlideShare
970
Embed Views
4

Actions

Likes
2
Downloads
3
Comments
0

2 Embeds 4

http://us-w1.rockmelt.com 3
http://paper.li 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Integração de Sistemas usando tecnologias open source Integração de Sistemas usando tecnologias open source Presentation Transcript

  • INTEGRAÇÃO DE SISTEMAS CASE: GLOBO.COM Utilizando software livre @pac_man Hack ‘n Rio 2011
  • QUEM SOU EU?• Tiago Peczenyj (@pac_man)• Desenvolvedor da globo.com• Distribuição de Videos/Webmedia• Apaixonado por Open Source• Blog pacman.blog.br
  • OPEN SOURCE NA GLOBO.COM• php, perl, python (Django, Tornado), ruby (Rails, Sinatra),• apache, nginx, mysql, memcached, jQuery, CentOS...• ffmpeg, mencoder, ImageMagick
  • INTEGRAÇÃO DE SISTEMAS• File Transfer• Shared Database• Remote Procedure Invocation• Messaging
  • CASE: PUBLICAÇÃO VIDEOS• Eisque eu preciso pegar um video bruto e publicar na internet...
  • PUBLICAÇÃO DE VIDEOS• E(f) - encodar o video no(s) formato(s) especificos•M - inserir meta-dados do video no(s) sistema(s)•D - disponibilizar video adequadamente
  • RESUMO• E(f) -> M -> D
  • THUMBNAILS?• E(f) -> T -> M -> D
  • DISPONIBILIZAR: FTP E SINALIZAR QUE ESTA OK• E(f) -> T -> M -> F -> S
  • DEFINIR OS FORMATOS• D-> E(f) -> T -> M -> F -> S
  • E TAMBÉM• Publicar em um tempo X (SLA)• Resistir à catástrofes (rede, banco, disco)• Utilizar bem meus recursos
  • COMOFAS/• Com um sistema apenas posso fazer tudo isso.•N vídeos, N instâncias do sistema simultaneamente.• Monolítico
  • MAS E O SLA?• Se tiver que produzir varios formatos, vou demorar se esperar um formato ficar pronto para produzir o próximo
  • RESISTIR À CATÁSTROFE• Sealguma das etapas falhar, precisarei seguir alguma protocolo de acordo com a natureza da falha.• Seprecisar retentar enquanto a falha persiste (ex: rede) pode ficar complexo o tratamento disso.• Devo evitar estados inconsistentes e voltar a funcionar OK
  • UTILIZAÇÃO DE RECURSOS• Linguagens interpretadas podem apresentar GIL• Maquinas atuais possuem CPU com varios cores• Precisoainda de redundância para garantir alta disponibilidade, meus gastos podem facilmente sair o dobro do esperado.• Cores de CPU ociosas são prejuizo
  • SOLUÇÃO• Perl• FFmpeg• PHP• MySQL
  • CONCEITOS
  • PROCESSOS• Possoter varios processos na mesma maquina trabalhando de forma cooperativa• A “morte” deum desses processos deve produzir uma resposta adequada (alarmar, reiniciar o processo por exemplo)• Monitoria dos processos é essencial (Watchdog, Monit, etc)
  • FILESYSTEM• Emintegração de sistemas as vezes precisamos realizar operações atômicas (ex: um mesmo video não pode ser encodado varias vezes).• Mover um arquivo entre diretórios É uma operação atômica.• Tudo no mundo *nix é arquivo...•2 + 2...
  • HTTP• HyperText Transfer Protocol• Define 4 métodos: GET, POST, PUT, DELETE (HEAD, etc)• Mensagem possui Header e Body• Codigos de retorno bem compreendidos (200, 404, 500, 302)• Trata de transferir recursos
  • REST• Representational State Transfer• Posso utilizar caracteristicas do HTTP para representar e transferir recursos entre sistemas• Facilita a integração pois praticamente tudo acessa a WEB• Equivalência entre métodos HTTP e CRUD
  • REST (2)• PUT -> Create• GET -> Retrieve• POST -> Update• DELETE -> Delete
  • REST (FIM)• Possotrafegar a representação (em XML, JSON, YAML...) entre aplicações diferentes.• Respeitando as regras e os verbos HTTP posso fazer muita coisa (no mínimo CRUD).• Tolerância a erros: problemas temporários basta tentar novamente apos X segundos, problemas irreversíveis devem ser vistos imediatamente.
  • VIDEO (REST)• Possui meta-dados, identificador e estado• Uma API REST (PHP) centraliza a maquina de estados• Video (dado) é armazenado em banco, arquivo no filesystem• Basta operar sobre o arquivo e alterar o estado na API
  • CARTAS NA MESA• Posso dividir as etapas em deamons independentes, que se comunicam transferindo o arquivo de video entre diretorios.• Consistencia é feita pela comunicação com a API• API fornece formatos de video• Cumprir todas as etapas torna o video apto a ser consumido
  • FLUXO UNICO•D -> E(f) -> T -> M -> F -> S (teorico)•D <- E(f) -> T -> M -> F -> S (pratico)
  • MAS O QUE FAZ A API?• Outros sistemas integram com a API• Um fluxo pode ser interrompido• Posso saber o que esta acontecendo• Centraliza regras de negócio
  • DEAMON TIPICO• Trabalha com conceito de diretorios• Indir é a entrada de videos• Workdir é onde o deamon trabalha• Outdir é a saída de videos• Se o outdir de um deamon for o Indir de outro... ?
  • REDUNDANCIA DE DEAMONS?• Operação move é atomica• Cada processo deve ter o seu Workdir• Varios procesos de uma mesma etapa tem o mesmo Indir• Quem chegar primeiro leva.• Reporta tudo a API REST (LWP)
  • use LWP::UserAgent;my $ua = LWP::UserAgent−>new;my $req = HTTP::Request−>new( GET => "http://api.xxx.com/video/$id" );my $res = $ua−>request($req);if ($res−>is_success) { process $res−>content;} else { error $res−>status_line ;}
  • <?php# http://www.slimframework.comrequire "Slim/Slim.php";$app = new Slim();$app->get(/video/:id, function($id) use ($app) { $service = new VideoService(); if ( !$service->exists($id) ) { $app->notFound(); } else { $app->render(video.tpl, $service->retrieve($id)); } });?>
  • E O SLA• Arquitetura garante paralelismo de atividades demoradas• Limita-se o tempo de encoding (via SIGALARM)• Dimensiona-se a infraestrutura para suportar uma média de videos• SLA é estatística
  • RESISTENCIA A DESASTRES• Separandoos deamons cada um fica com codigo minimo e reusando modulos (CPAN) evitamos (os nossos) bugs• Perda de rede não trava o encoding, são processos separados• Perda de banco local não trava o fluxo, depois o sistema é atualizado desde que haja cache de dados (http!)• Redundância natural, perder um processo não trava tudo• Recuperação simples: basta mover de volta o arquivo
  • OUTROS DETALHES• Meta Dados são publicados usando SOAP::Lite (ugh)• Thumbs são tranferidos usando base64 dentro do SOAP• Thumbs gerados pelo FFmpeg e ImageMagick• 5% dos videos são descartados por falta de qualidade• Transferencia hoje é SFTP
  • PERGUNTAS?