O documento discute a integração de sistemas para publicação de vídeos no site Globo.com utilizando arquitetura baseada em microsserviços e comunicação REST. O fluxo de publicação é dividido em etapas independentes executadas por deamons e a integração é feita através de uma API REST centralizada que gerencia o estado de cada vídeo. A arquitetura proposta permite escalabilidade, alta disponibilidade e recuperação mais fácil em caso de falhas.
Rex é uma ferramenta de automação baseada em SSH que permite executar tarefas de forma remota em servidores. Ela oferece vantagens como não precisar de agentes nas máquinas, fácil integração e extensibilidade. Rex pode ser usado para tarefas de DevOps com Drupal, como sincronização de configurações e execução de comandos Drush para deployments.
Este documento apresenta um projeto desenvolvido em Node.js para a aula 2 de Tópicos Avançados de Programação. Nele, é criado um projeto com npm init, implementado programas "Hello World", de manipulação de JSON e argumentos de linha de comando, e demonstrados recursos como leitura/escrita de arquivos e uso de módulos e pacotes npm.
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Jeronimo Zucco
O documento descreve como a UCS implementou a pilha ELK (Elasticsearch, Logstash, Kibana) para centralizar logs, criar dashboards de monitoramento e detectar incidentes de segurança nos frontends Nginx. Ele detalha a estrutura de rede da UCS, a rotina inicial de notificação de incidentes, a centralização de logs com ELK e como configurar o Nginx para bloquear ataques e extrair logs para notificação via Kibana.
O documento resume as principais mudanças na versão 2.0 do framework CakePHP, incluindo o abandono do suporte ao PHP 4, a adoção do PHPUnit para testes de unidade, a reestruturação de componentes, sessões e visões, a adição de novas funcionalidades como PDO e reescrita de URLs.
O documento resume as principais novidades da versão 3.0 do Zabbix, incluindo criptografia aprimorada, previsão e tendências, descoberta automática de serviços do Windows, melhorias de desempenho e suporte a múltiplos processos de escalador.
O documento apresenta um sistema de monitoramento chamado Prometheus. Ele discute a arquitetura do Prometheus, incluindo o servidor Prometheus, exportadores, AlertManager e Grafana. Também aborda conceitos como métricas, bancos de dados timeseries, instrumentação de código, push gateway e alertas.
Rex é uma ferramenta de automação baseada em SSH que permite executar tarefas de forma remota em servidores. Ela oferece vantagens como não precisar de agentes nas máquinas, fácil integração e extensibilidade. Rex pode ser usado para tarefas de DevOps com Drupal, como sincronização de configurações e execução de comandos Drush para deployments.
Este documento apresenta um projeto desenvolvido em Node.js para a aula 2 de Tópicos Avançados de Programação. Nele, é criado um projeto com npm init, implementado programas "Hello World", de manipulação de JSON e argumentos de linha de comando, e demonstrados recursos como leitura/escrita de arquivos e uso de módulos e pacotes npm.
Detectando e Respondendo Incidentes de Segurança em Frontends Nginx utilizand...Jeronimo Zucco
O documento descreve como a UCS implementou a pilha ELK (Elasticsearch, Logstash, Kibana) para centralizar logs, criar dashboards de monitoramento e detectar incidentes de segurança nos frontends Nginx. Ele detalha a estrutura de rede da UCS, a rotina inicial de notificação de incidentes, a centralização de logs com ELK e como configurar o Nginx para bloquear ataques e extrair logs para notificação via Kibana.
O documento resume as principais mudanças na versão 2.0 do framework CakePHP, incluindo o abandono do suporte ao PHP 4, a adoção do PHPUnit para testes de unidade, a reestruturação de componentes, sessões e visões, a adição de novas funcionalidades como PDO e reescrita de URLs.
O documento resume as principais novidades da versão 3.0 do Zabbix, incluindo criptografia aprimorada, previsão e tendências, descoberta automática de serviços do Windows, melhorias de desempenho e suporte a múltiplos processos de escalador.
O documento apresenta um sistema de monitoramento chamado Prometheus. Ele discute a arquitetura do Prometheus, incluindo o servidor Prometheus, exportadores, AlertManager e Grafana. Também aborda conceitos como métricas, bancos de dados timeseries, instrumentação de código, push gateway e alertas.
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorZabbix BR
O documento discute estratégias para deploy e performance do MySQL, incluindo: (1) instalação do MySQL e Zabbix, (2) particionamento de tabelas do banco de dados, e (3) técnicas de monitoramento e backup para melhorar o desempenho.
Gerenciamento de Backups PostgreSQL com pgbarmanJuliano Atanazio
O documento descreve o uso da ferramenta pgbarman para gerenciamento de backups do PostgreSQL. O pgbarman permite fazer backups remotos de múltiplos servidores PostgreSQL, auxiliando DBAs na recuperação de dados. É apresentada a instalação, configuração e uso básico do pgbarman, incluindo a criação de servidores, listagem de configurações e backups.
O documento discute a ascensão do Node.js e as limitações das tecnologias da web tradicionais para lidar com alta concorrência e escalabilidade. O Node.js surgiu para lidar com E/S de forma não bloqueante e baseada em eventos, permitindo que servidores suportem milhares de conexões simultâneas de forma eficiente.
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Ismael Stahelin
O documento apresenta a ferramenta Mina para deploy de aplicações Ruby. Mina é baseada em tarefas e permite implantações seguras através de safe deploys e deploy locks. O processo de deploy com Mina envolve a criação de um arquivo de configuração deploy.rb e a execução dos comandos "mina setup" e "mina deploy".
O documento discute as opções de persistência e backup para bancos de dados NoSQL Redis, Cassandra e PostgreSQL. Redis oferece RDB e AOF para persistência, enquanto Cassandra usa commitlog, SSTables e hinted handoff. PostgreSQL usa fsync e synchronous_commit. Todos permitem automatizar backup, embora com estratégias diferentes. Rotacionais são mais lentos que SSDs para escrita.
O documento discute técnicas para otimizar o desempenho de websites desenvolvidos em PHP. Ele aborda ajustes que podem ser feitos no servidor web e no banco de dados para melhorar a performance, como utilização de módulos do Apache, configuração do MySQL e uso de cache. Além disso, apresenta técnicas de profiling em PHP para identificar gargalos e otimizações como compactação de arquivos e static assets.
UserParameter vs Zabbix Sender - 2º ZABBIX MEETUP DO INTERIOR-SPZabbix BR
O documento apresenta duas ferramentas do Zabbix: UserParameter e Zabbix Sender. UserParameter permite monitorar métricas customizadas através de scripts, enquanto Zabbix Sender envia dados para itens configurados no servidor Zabbix. Ambas as ferramentas requerem configuração de itens e chaves correspondentes no servidor Zabbix.
Como migrar seu ambiente de desenvolvimento para LinuxMarcelo Sabadini
O documento apresenta como migrar o ambiente de desenvolvimento para Linux. Ele discute o que é necessário para começar, como instalar o sistema operacional Ubuntu e ferramentas como Apache, PHP, MySQL e Subversion. Também fornece exemplos de como usar comandos da linha de comando para automatizar tarefas e converter arquivos entre codificações de caracteres.
Análise comparativa de desempenho de FileSystems em ambientes virtualizadosKleber Silva
Neste artigo será apresentada uma comparação entre filesystems em ambientes virtualizados. O objetivo é avaliar seus resultados de desempenho na máquina virtual, a utilização de recursos de storage e características de provisionamento e backup em fita, para auxiliar na melhor escolha para uma implementação de consolidação de servidores e ambientes de computação em nuvem (cloud computing).
O documento descreve os 12 princípios para aplicações que seguem o manifesto Twelve-Factor, incluindo: 1) manter uma única base de código com uma única instância da aplicação, 2) declarar e isolar explicitamente as dependências, 3) armazenar configurações em variáveis de ambiente.
O documento discute problemas comuns de desempenho no PostgreSQL e soluções como melhorar a configuração do hardware, sistema operacional, parâmetros do PostgreSQL e banco de dados. Ele fornece recomendações para otimizar o I/O, memória, checkpoint, vacum e escalabilidade.
O Automatic Storage Management (ASM) distribui arquivos de dados e logs entre discos de forma automática, balanceando a carga de I/O e permitindo realocação de arquivos online sem interrupção. O ASM subdivide arquivos em extensões distribuídas em discos físicos de forma proporcional e tolerante a falhas. Ele facilita o gerenciamento de bases de dados maiores sem eliminar funcionalidades existentes.
1) O documento fornece instruções para instalação e configuração do sistema I-Educar, incluindo requisitos do sistema, como PHP, Apache, PostgreSQL e biblioteca PDFLib.
2) Ele descreve o processo de compilação e instalação da biblioteca PDFLib no Ubuntu, necessária para geração de PDFs pelo I-Educar.
3) Também explica como baixar, descompactar e configurar o banco de dados PostgreSQL 8.2.19, versão homologada para o I-Educar.
Este documento resume os principais pontos sobre como configurar e otimizar um servidor web usando a stack LNMP (Linux, Nginx, MySQL e PHP). Ele explica cada componente da stack e como configurá-los para melhor desempenho, cobrindo tópicos como ajustes no Linux, Nginx, PHP-FPM e MySQL. O documento também discute problemas comuns de desempenho e como lidar com picos de tráfego em eventos como a Black Friday.
O documento discute os principais tópicos da Java Virtual Machine (JVM), incluindo parâmetros da JVM, garbage collection, Just in Time compiler e class loaders.
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParametersZabbix BR
O documento apresenta sobre o uso do Zabbix Agent para monitoramento e formas de estender suas capacidades. Resume:
1) O Zabbix Agent é a forma padrão de coleta de dados no Zabbix, sendo ativo, de baixo consumo e estável.
2) Pode ser estendido através de UserParameters, ExternalScripts e system.run[] para monitorar dados adicionais.
3) Um estudo de caso mostra como o SkyDocs usa essas técnicas para monitoramento automático e sem interferência nos clientes.
O documento compara o desempenho de três frameworks PHP (CakePHP, Symfony e Zend) em um ambiente de testes padronizado. Os testes mediram o número de arquivos abertos, tempo de execução e requisições por segundo para cada framework. O Zend teve o melhor desempenho geral, com menos arquivos abertos, tempo de execução mais rápido e maior taxa de requisições por segundo.
Este documento descreve como configurar um proxy Zabbix usando um Raspberry Pi. Ele discute as especificações do Raspberry Pi 3 Model B, as opções para instalar o proxy Zabbix via pacotes ou Docker, e como configurar o proxy e agente Zabbix para monitorar remotamente dispositivos e centralizar a comunicação com o servidor Zabbix. O objetivo é customizar o proxy com scripts e sensores para gerenciar e monitorar mais equipamentos.
O documento fornece dicas sobre boas práticas de programação PHP para obter alta performance e escalabilidade. Em três frases ou menos, resume-se:
Divida a aplicação em camadas, use frameworks para padronização e reuso de código, e otimize o banco de dados e cache para melhorar a performance e capacidade de suportar alto tráfego.
O documento descreve como o uso de ferramentas como Python, Puppet, Cobbler, Func e Collectd permitem automatizar e gerenciar o deploy e a operação de um novo data center de forma remota e automatizada. O Control Station é apresentado como uma interface unificada para visualizar e gerenciar as informações coletadas por essas ferramentas.
O documento discute a automação do data center da empresa, incluindo o deploy de servidores, gerenciamento de configuração, administração centralizada, monitoração e integração utilizando ferramentas como Puppet, Cobbler, Collectd, Nagios, Func e Control Station.
Deploy MySQL e Performance Tuning - 3º Zabbix Meetup do InteriorZabbix BR
O documento discute estratégias para deploy e performance do MySQL, incluindo: (1) instalação do MySQL e Zabbix, (2) particionamento de tabelas do banco de dados, e (3) técnicas de monitoramento e backup para melhorar o desempenho.
Gerenciamento de Backups PostgreSQL com pgbarmanJuliano Atanazio
O documento descreve o uso da ferramenta pgbarman para gerenciamento de backups do PostgreSQL. O pgbarman permite fazer backups remotos de múltiplos servidores PostgreSQL, auxiliando DBAs na recuperação de dados. É apresentada a instalação, configuração e uso básico do pgbarman, incluindo a criação de servidores, listagem de configurações e backups.
O documento discute a ascensão do Node.js e as limitações das tecnologias da web tradicionais para lidar com alta concorrência e escalabilidade. O Node.js surgiu para lidar com E/S de forma não bloqueante e baseada em eventos, permitindo que servidores suportem milhares de conexões simultâneas de forma eficiente.
Deploy de aplicações Ruby com Mina - TDC Floripa 2014Ismael Stahelin
O documento apresenta a ferramenta Mina para deploy de aplicações Ruby. Mina é baseada em tarefas e permite implantações seguras através de safe deploys e deploy locks. O processo de deploy com Mina envolve a criação de um arquivo de configuração deploy.rb e a execução dos comandos "mina setup" e "mina deploy".
O documento discute as opções de persistência e backup para bancos de dados NoSQL Redis, Cassandra e PostgreSQL. Redis oferece RDB e AOF para persistência, enquanto Cassandra usa commitlog, SSTables e hinted handoff. PostgreSQL usa fsync e synchronous_commit. Todos permitem automatizar backup, embora com estratégias diferentes. Rotacionais são mais lentos que SSDs para escrita.
O documento discute técnicas para otimizar o desempenho de websites desenvolvidos em PHP. Ele aborda ajustes que podem ser feitos no servidor web e no banco de dados para melhorar a performance, como utilização de módulos do Apache, configuração do MySQL e uso de cache. Além disso, apresenta técnicas de profiling em PHP para identificar gargalos e otimizações como compactação de arquivos e static assets.
UserParameter vs Zabbix Sender - 2º ZABBIX MEETUP DO INTERIOR-SPZabbix BR
O documento apresenta duas ferramentas do Zabbix: UserParameter e Zabbix Sender. UserParameter permite monitorar métricas customizadas através de scripts, enquanto Zabbix Sender envia dados para itens configurados no servidor Zabbix. Ambas as ferramentas requerem configuração de itens e chaves correspondentes no servidor Zabbix.
Como migrar seu ambiente de desenvolvimento para LinuxMarcelo Sabadini
O documento apresenta como migrar o ambiente de desenvolvimento para Linux. Ele discute o que é necessário para começar, como instalar o sistema operacional Ubuntu e ferramentas como Apache, PHP, MySQL e Subversion. Também fornece exemplos de como usar comandos da linha de comando para automatizar tarefas e converter arquivos entre codificações de caracteres.
Análise comparativa de desempenho de FileSystems em ambientes virtualizadosKleber Silva
Neste artigo será apresentada uma comparação entre filesystems em ambientes virtualizados. O objetivo é avaliar seus resultados de desempenho na máquina virtual, a utilização de recursos de storage e características de provisionamento e backup em fita, para auxiliar na melhor escolha para uma implementação de consolidação de servidores e ambientes de computação em nuvem (cloud computing).
O documento descreve os 12 princípios para aplicações que seguem o manifesto Twelve-Factor, incluindo: 1) manter uma única base de código com uma única instância da aplicação, 2) declarar e isolar explicitamente as dependências, 3) armazenar configurações em variáveis de ambiente.
O documento discute problemas comuns de desempenho no PostgreSQL e soluções como melhorar a configuração do hardware, sistema operacional, parâmetros do PostgreSQL e banco de dados. Ele fornece recomendações para otimizar o I/O, memória, checkpoint, vacum e escalabilidade.
O Automatic Storage Management (ASM) distribui arquivos de dados e logs entre discos de forma automática, balanceando a carga de I/O e permitindo realocação de arquivos online sem interrupção. O ASM subdivide arquivos em extensões distribuídas em discos físicos de forma proporcional e tolerante a falhas. Ele facilita o gerenciamento de bases de dados maiores sem eliminar funcionalidades existentes.
1) O documento fornece instruções para instalação e configuração do sistema I-Educar, incluindo requisitos do sistema, como PHP, Apache, PostgreSQL e biblioteca PDFLib.
2) Ele descreve o processo de compilação e instalação da biblioteca PDFLib no Ubuntu, necessária para geração de PDFs pelo I-Educar.
3) Também explica como baixar, descompactar e configurar o banco de dados PostgreSQL 8.2.19, versão homologada para o I-Educar.
Este documento resume os principais pontos sobre como configurar e otimizar um servidor web usando a stack LNMP (Linux, Nginx, MySQL e PHP). Ele explica cada componente da stack e como configurá-los para melhor desempenho, cobrindo tópicos como ajustes no Linux, Nginx, PHP-FPM e MySQL. O documento também discute problemas comuns de desempenho e como lidar com picos de tráfego em eventos como a Black Friday.
O documento discute os principais tópicos da Java Virtual Machine (JVM), incluindo parâmetros da JVM, garbage collection, Just in Time compiler e class loaders.
1º Meetup Zabbix Meetup do Recife: Werneck Costa - UserParametersZabbix BR
O documento apresenta sobre o uso do Zabbix Agent para monitoramento e formas de estender suas capacidades. Resume:
1) O Zabbix Agent é a forma padrão de coleta de dados no Zabbix, sendo ativo, de baixo consumo e estável.
2) Pode ser estendido através de UserParameters, ExternalScripts e system.run[] para monitorar dados adicionais.
3) Um estudo de caso mostra como o SkyDocs usa essas técnicas para monitoramento automático e sem interferência nos clientes.
O documento compara o desempenho de três frameworks PHP (CakePHP, Symfony e Zend) em um ambiente de testes padronizado. Os testes mediram o número de arquivos abertos, tempo de execução e requisições por segundo para cada framework. O Zend teve o melhor desempenho geral, com menos arquivos abertos, tempo de execução mais rápido e maior taxa de requisições por segundo.
Este documento descreve como configurar um proxy Zabbix usando um Raspberry Pi. Ele discute as especificações do Raspberry Pi 3 Model B, as opções para instalar o proxy Zabbix via pacotes ou Docker, e como configurar o proxy e agente Zabbix para monitorar remotamente dispositivos e centralizar a comunicação com o servidor Zabbix. O objetivo é customizar o proxy com scripts e sensores para gerenciar e monitorar mais equipamentos.
O documento fornece dicas sobre boas práticas de programação PHP para obter alta performance e escalabilidade. Em três frases ou menos, resume-se:
Divida a aplicação em camadas, use frameworks para padronização e reuso de código, e otimize o banco de dados e cache para melhorar a performance e capacidade de suportar alto tráfego.
O documento descreve como o uso de ferramentas como Python, Puppet, Cobbler, Func e Collectd permitem automatizar e gerenciar o deploy e a operação de um novo data center de forma remota e automatizada. O Control Station é apresentado como uma interface unificada para visualizar e gerenciar as informações coletadas por essas ferramentas.
O documento discute a automação do data center da empresa, incluindo o deploy de servidores, gerenciamento de configuração, administração centralizada, monitoração e integração utilizando ferramentas como Puppet, Cobbler, Collectd, Nagios, Func e Control Station.
Nodejs - A performance que eu sempre quis terEmerson Macedo
O documento discute a evolução das tecnologias da web ao longo do tempo e as limitações das tecnologias atuais para suportar alta escalabilidade e concorrência. Propõe o uso de Node.js, que usa I/O não bloqueante e event loop para suportar milhares de usuários simultâneos de forma eficiente com poucos recursos.
O documento apresenta um curso avançado de treinamento em Linux com 40 horas de duração, ministrado pela Firewalls Security Corporation. O curso aborda tópicos como shell script, ferramentas de rede, compactadores de arquivos, configuração de servidores e segurança, entre outros. A versão 1.5 do curso inclui novas seções sobre NFS, SAMBA e segurança, além de correções em conteúdos anteriores.
O documento apresenta um curso avançado de treinamento em Linux com 40 horas de duração, ministrado pela Firewalls Security Corporation. O curso aborda tópicos como shell script, ferramentas de rede, compactadores de arquivos, agendamento de tarefas, configuração de servidores e segurança. Foi atualizado para a versão 1.5 com correções e novas seções sobre NFS, SAMBA e segurança.
Apostila Treinamento AvançAdo Em Linuxguest7a481e8
O documento fornece um guia de treinamento avançado em Linux com 40 horas de duração. O treinamento irá cobrir tópicos como shell script, ferramentas de rede, compactadores de arquivos, configuração de servidores e segurança em Linux. A versão 1.5 do guia inclui atualizações e correções de erros na versão anterior.
O documento descreve o serviço de armazenamento na nuvem MEO Cloud, incluindo sua arquitetura backend, aplicativos de desktop e API pública. A arquitetura backend usa Cassandra para armazenamento de metadados e Swift para armazenamento de arquivos. Os aplicativos de desktop são desenvolvidos para Windows, macOS e Linux usando Python, C++ e Objective-C. A API pública oferece mais de 40 operações para acesso aos dados do usuário.
O documento introduz Docker, explicando como ele pode isolar aplicações em containers e simplificar o desenvolvimento e deploy. Ele define Docker, imagens, containers e Dockerfile, mostrando como criar uma imagem passo a passo com Dockerfile e como orquestrar múltiplos containers com Docker Compose.
TDC2018SP | Trilha Serveless - Pra que SERVErless?tdc-globalcode
O documento discute o conceito de serverless computing, incluindo como ele remove a necessidade de gerenciar servidores, permite que as funções sejam acionadas por eventos e escalem automaticamente, e como ele pode trazer benefícios como redução de custos e complexidade.
O documento descreve os desafios enfrentados por uma equipe de desenvolvimento em manter um portal imobiliário. Inicialmente o processo de deploy era lento e complexo, com resistência da equipe de infraestrutura. Posteriormente a equipe migrou para a AWS, adotou processos ágeis e deploy contínuo, melhorando a agilidade e permitindo a venda do portal.
O documento discute vários tópicos relacionados ao Node.js, incluindo sua instalação, funcionamento, ferramentas e bibliotecas populares. É apresentado como um ambiente de execução JavaScript assíncrono e de código não bloqueante que usa o modelo de programação orientado a eventos.
Este documento fornece informações sobre segurança em servidores Linux de acordo com a norma ISO 27002. Resume as principais técnicas para garantir a segurança dos servidores, incluindo hardening do sistema, políticas de acesso, monitoramento e logs.
1) O documento discute como usar as ferramentas PHP, Memcached e Gearman para distribuir processamento e armazenamento em cache para melhorar escalabilidade e desempenho de aplicações.
2) Memcached é usado para armazenar objetos em memória RAM compartilhada para acelerar acessos frequentes e aliviar bancos de dados.
3) Gearman distribui tarefas assíncronas entre servidores para processamento paralelo e balanceamento de carga.
Sempre buscando atuar com inteligência na área de desenvolvimento, como DevOps, arquiteto, líder de projeto e desenvolvedor fullstack, sempre visando a melhor implementação (tecnologia certa para a tarefa certa), análise de custo benefício, eficiência, arquitetura macro de serviços, fluxograma de desenvolvimento, automatização de tarefas e controle de qualidade e principalmente valor ao negócio.
PHP foi desenvolvido em 1994 como Personal Home Page e veio substituir scripts em Perl. Hoje é conhecido como Hypertext Preprocessor e possui várias engines como Zend, Roadsend e Quercus. É amplamente utilizado em sites como SAPO e no mundo, sendo uma linguagem fácil de aprender e desenvolver para a web, suportada em múltiplas plataformas. Apresenta dicas sobre performance, segurança, depuração e boas práticas para desenvolvimento em PHP.
O documento introduz o Docker, explicando como ele permite entregar software de forma fácil e consistente através de contêineres leves que isolam as aplicações e serviços. O Docker facilita a criação de ambientes idênticos entre desenvolvimento e produção e permite escalar aplicações com agilidade e controle.
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
O documento resume um seminário sobre o framework PHP cakePHP. Apresenta brevemente a história e objetivos do framework, seu funcionamento baseado em MVC, características como validação de dados e geração de código, e passos para instalação e criação de um blog simples.
Performance e disponibilidade ‐ Um estudo de caso: website dos CorreiosAlex Hübner
[1] O documento descreve uma estratégia implementada para melhorar o desempenho e disponibilidade de um site institucional dos Correios que rodava no ColdFusion. [2] A estratégia envolveu duplicar as instâncias do ColdFusion em cada servidor para melhor aproveitar os recursos, otimizar configurações do servidor e do banco de dados, e estabelecer rotinas de reciclagem noturna. [3] As mudanças permitiram dobrar a capacidade do ambiente existente sem necessidade de novos servidores.
O documento discute a arquitetura de microsserviços em PHP, comparando arquiteturas monolíticas e distribuídas. Ele também cobre tópicos como disponibilidade, centralização vs descentralização, frameworks para criação de microsserviços em PHP e exemplos básicos de implementação.
Semelhante a Integração de Sistemas usando tecnologias open source (20)
Integração de Sistemas usando tecnologias open source
1. INTEGRAÇÃO DE SISTEMAS
CASE: GLOBO.COM
Utilizando software livre
@pac_man
Hack ‘n Rio 2011
2. QUEM SOU EU?
• Tiago Peczenyj (@pac_man)
• Desenvolvedor da globo.com
• Distribuição de Videos/Webmedia
• Apaixonado por Open Source
• Blog pacman.blog.br
6. 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
11. E TAMBÉM
• Publicar em um tempo X (SLA)
• Resistir à catástrofes (rede, banco, disco)
• Utilizar bem meus recursos
12. COMOFAS/
• Com um sistema apenas posso fazer tudo isso.
•N vídeos, N instâncias do sistema simultaneamente.
• Monolítico
13. MAS E O SLA?
• Se
tiver que produzir varios formatos, vou demorar se esperar
um formato ficar pronto para produzir o próximo
14. 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
15. 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
18. 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)
19. 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...
20. 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
21. 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
22. REST (2)
• PUT -> Create
• GET -> Retrieve
• POST -> Update
• DELETE -> Delete
23. 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.
24. 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
25. 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
26. FLUXO UNICO
•D -> E(f) -> T -> M -> F -> S (teorico)
•D <- E(f) -> T -> M -> F -> S (pratico)
27. 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
28. 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... ?
29. 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)
30. 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 ;
}
31. <?php
# http://www.slimframework.com
require "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));
}
});
?>
32. 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
33. 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
34. 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