As mais recentes alterações do projeto Expresso, feitas para torná-lo um software de comunicação ajustável para qualquer empresa ou país e para escalar a aplicação para milhares de usuários,
Escalabilidade via Software no ExpressoV3Flávio Lisboa
Apresentaremos o projeto ExpressoV3, suas funcionalidades, arquitetura e comunidade, mostraremos o cenário de expansão de usuários e detalharemos as soluções arquiteturais projetadas para escalar a aplicação, que podem servir para outras aplicações PHP.
Tirando água da rocha: escalabilidade via software no ExpressoV3Flávio Lisboa
1) O documento descreve como o ExpressoV3 escalou via software, incluindo o uso de cache, sessões, sharding de banco de dados e migração para nuvem.
2) Foi implementado um sistema de sharding virtual para distribuir usuários entre bancos de dados, embora os dados compartilhados ainda precisem ser replicados entre shards.
3) O próximo passo é migrar para bancos não-relacionais auto-gerenciados na nuvem para melhor escalabilidade.
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
1) O documento discute como criar infraestrutura de sites para receber milhões de usuários de forma escalável e altamente disponível.
2) Problemas como ponto único de falha no DNS, desempenho do banco de dados, tamanho de arquivos e consultas externas são abordados.
3) A solução proposta inclui balanceamento de carga, replicação, cache, sistemas de arquivos distribuídos e alta disponibilidade em vários níveis.
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
O documento discute as vantagens de bancos NoSQL em relação a bancos de dados relacionais tradicionais para armazenar grandes quantidades de dados. O autor apresenta exemplos de bancos NoSQL como MongoDB, orientado a documentos, e Riak, baseado em chave-valor, e discute como cada um pode ser usado para diferentes casos. O autor também fornece exemplos de código para inserir e consultar dados nesses bancos usando Python.
FISL12. Web Services e Computação em Nuvem com PHPFlávio Lisboa
O documento apresenta um palestrante, Flávio Gomes da Silva Lisboa, que irá falar sobre Web Services e Computação em Nuvem com PHP. O palestrante tem experiência com Ciência da Computação, Software Livre e temas como Java, PHP, padrões, frameworks e objetos.
O documento discute assincronicidade e concorrência em Python e Golang, comparando abordagens síncronas e assíncronas. Ele explica como a biblioteca asyncio do Python permite programação assíncrona e como frameworks como aiohttp podem ser usados para desenvolver aplicações web assíncronas de alto desempenho em Python.
Este documento presenta análisis técnicos de 10 acciones del mercado español y europeo, incluyendo recomendaciones de compra o venta, niveles de entrada y salida, y líneas de soporte y resistencia. Para cada acción, se especifican la estrategia recomendada (largo o corto), los precios objetivo, y un gráfico de líneas pivotales. El análisis fue realizado por Oscar Germade de Cortal Consors el 13 de septiembre de 2010.
1) O documento compara os paralelos entre a engenharia de software e o Guia PMBOK do PMI, que é um guia de conhecimento e melhores práticas para gerenciamento de projetos.
2) Ambos compartilham áreas de conhecimento como requisitos, planejamento, execução e monitoramento. A engenharia de software também inclui construção de software e testes.
3) Eles também compartilham conceitos como backlogs no SCRUM e coleta de requisitos no PMBOK.
Escalabilidade via Software no ExpressoV3Flávio Lisboa
Apresentaremos o projeto ExpressoV3, suas funcionalidades, arquitetura e comunidade, mostraremos o cenário de expansão de usuários e detalharemos as soluções arquiteturais projetadas para escalar a aplicação, que podem servir para outras aplicações PHP.
Tirando água da rocha: escalabilidade via software no ExpressoV3Flávio Lisboa
1) O documento descreve como o ExpressoV3 escalou via software, incluindo o uso de cache, sessões, sharding de banco de dados e migração para nuvem.
2) Foi implementado um sistema de sharding virtual para distribuir usuários entre bancos de dados, embora os dados compartilhados ainda precisem ser replicados entre shards.
3) O próximo passo é migrar para bancos não-relacionais auto-gerenciados na nuvem para melhor escalabilidade.
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
1) O documento discute como criar infraestrutura de sites para receber milhões de usuários de forma escalável e altamente disponível.
2) Problemas como ponto único de falha no DNS, desempenho do banco de dados, tamanho de arquivos e consultas externas são abordados.
3) A solução proposta inclui balanceamento de carga, replicação, cache, sistemas de arquivos distribuídos e alta disponibilidade em vários níveis.
Utilizando NoSQL no desenvolvimento de soluções inteligentesChristiano Anderson
O documento discute as vantagens de bancos NoSQL em relação a bancos de dados relacionais tradicionais para armazenar grandes quantidades de dados. O autor apresenta exemplos de bancos NoSQL como MongoDB, orientado a documentos, e Riak, baseado em chave-valor, e discute como cada um pode ser usado para diferentes casos. O autor também fornece exemplos de código para inserir e consultar dados nesses bancos usando Python.
FISL12. Web Services e Computação em Nuvem com PHPFlávio Lisboa
O documento apresenta um palestrante, Flávio Gomes da Silva Lisboa, que irá falar sobre Web Services e Computação em Nuvem com PHP. O palestrante tem experiência com Ciência da Computação, Software Livre e temas como Java, PHP, padrões, frameworks e objetos.
O documento discute assincronicidade e concorrência em Python e Golang, comparando abordagens síncronas e assíncronas. Ele explica como a biblioteca asyncio do Python permite programação assíncrona e como frameworks como aiohttp podem ser usados para desenvolver aplicações web assíncronas de alto desempenho em Python.
Este documento presenta análisis técnicos de 10 acciones del mercado español y europeo, incluyendo recomendaciones de compra o venta, niveles de entrada y salida, y líneas de soporte y resistencia. Para cada acción, se especifican la estrategia recomendada (largo o corto), los precios objetivo, y un gráfico de líneas pivotales. El análisis fue realizado por Oscar Germade de Cortal Consors el 13 de septiembre de 2010.
1) O documento compara os paralelos entre a engenharia de software e o Guia PMBOK do PMI, que é um guia de conhecimento e melhores práticas para gerenciamento de projetos.
2) Ambos compartilham áreas de conhecimento como requisitos, planejamento, execução e monitoramento. A engenharia de software também inclui construção de software e testes.
3) Eles também compartilham conceitos como backlogs no SCRUM e coleta de requisitos no PMBOK.
Experiência do estado do espírito santo em compras governamentais de mpeCONGESP
O documento descreve a experiência do estado do Espírito Santo em aumentar a participação de micro e pequenas empresas (MPE) nas compras governamentais. No início do projeto em 2007, as MPE representavam 12,9% das compras, com a meta de alcançar 30% (cerca de R$300 milhões por ano). Após capacitação e sensibilização, as compras de MPE aumentaram para 48,2% em número de transações e 50% em valor de contratos.
O documento discute como usar estágios para promover a formação profissional, social e cultural de estudantes e reduzir a evasão escolar. Ele propõe selecionar estudantes com base em critérios sociais, oferecer capacitação a todos os estagiários, e espera que isso resulte em maior aprovação escolar, notas mais altas, frequência maior à escola e menor evasão.
Domestic food production and hazard vulnerability jamaicaCIAT
The document discusses livelihood vulnerability among smallholder farmers in southern St. Elizabeth Parish, Jamaica. It finds that farmers are experiencing increasing vulnerability due to multiple stresses, including more frequent and intense droughts from climate change, as well as socioeconomic challenges. A Livelihood Vulnerability Index was constructed using household data on exposure, sensitivity, and adaptive capacity to quantify vulnerability across communities. The analysis found higher vulnerability among farmers with fewer alternative livelihood options, social support systems, and coping strategies for weather extremes.
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
O documento discute o framework PHP Zend Framework, destacando suas principais características como a implementação de padrões de projeto, componentes reusáveis e uma comunidade ativa. O framework fornece uma biblioteca de classes PHP 5 para desenvolvimento de aplicações web seguindo o padrão MVC e permite alta customização e extensibilidade do código.
Este documento proporciona análisis técnico de acciones españolas y europeas, recomendando posiciones largas u cortas basadas en líneas de soporte y resistencia. Incluye recomendaciones para 10 valores diferentes, con precios de entrada, stop loss y objetivos. Además, advierte que el análisis solo se proporciona con fines informativos y no debe tomarse como una recomendación de inversión.
JBIANCA Marketing presented a marketing proposal. They are a marketing firm located in Virginia that can be reached at 757-514-1010 or through their website at http://drop3in10.jamise.com. The document appears to be introducing their services but does not provide many details.
Quantum fields on the de sitter spacetime - Ion CotaescuSEENET-MTP
This document summarizes research on defining quantum fields on de Sitter spacetime. It discusses how external symmetries allow defining conserved observables like an energy operator, despite doubts in the literature. New quantum modes were obtained for scalar, Dirac, and vector fields on de Sitter spacetime using this energy operator. The paper reviews defining fields in local frames where spin is well-defined, and how isometries give rise to conserved quantities through external symmetry transformations that involve gauge transformations and diffeomorphisms. Generators of field representations are constructed from orbital and spin parts related to Killing vectors and structure functions.
O documento apresenta uma coleção de frases motivacionais sobre temas como solidão, esforço, perdão, amor próprio e coragem. As frases incentivam o leitor a construir pontes ao invés de muros, ter ombros fortes para suportar cargas, e colher o que se planta.
Este documento discute o bullying em Portugal e no Reino Unido. Analisa como o seio familiar e o meio escolar influenciam o bullying. Estudos mostram que cerca de metade dos alunos portugueses já foram vítimas ou agressores de bullying, e que o bullying ocorre com mais frequência no recreio.
O documento é um boletim informativo da vereadora Professora Josete (PT) de Curitiba. Ele resume seu mandato, defendendo os trabalhadores, movimentos sociais e a cidade. Também critica a gestão do prefeito Luciano Ducci e fala sobre despejos, transporte público, servidores municipais e outros temas.
2ª Sessão - Workshop formativo de apresentação do Modelo de Auto-Avaliação di...guest36ad53
Este documento apresenta um modelo de autoavaliação para bibliotecas escolares. O modelo inclui quatro domínios principais com vários subdomínios e indicadores para avaliar o desempenho da biblioteca. O modelo visa fornecer uma ferramenta para identificar áreas de sucesso e melhoria contínua, com o objetivo final de melhorar o apoio da biblioteca ao desenvolvimento curricular e às aprendizagens dos alunos.
The document provides an introduction and brief history of supersymmetry (SUSY). It discusses two approaches to constructing SUSY theories: (1) the component field formulation, which involves writing the most general SUSY transformations and invariant actions for chosen fields, and (2) the superspace formulation, which extends spacetime to include anticommuting fermionic coordinates. It then outlines N=1 and N=2 SUSY in one dimension as a simple example.
Helping Rural banks Comply with Microinsurance RegulationsMABSIV
This document summarizes key points from a presentation on helping rural banks comply with microinsurance regulations in the Philippines. It discusses a new circular allowing rural banks to sell microinsurance and outlines proposed licensing requirements and procedures for microinsurance agents and brokers. Key elements include limits on daily premiums and guaranteed benefits, requirements for microinsurance contracts, and the need for a national strategy and regulatory framework to support microinsurance development.
1) O documento identifica pontos fortes e fraquezas da biblioteca escolar, bem como oportunidades e ameaças;
2) São apontados desafios como a formação deficiente da equipa da biblioteca e a necessidade de reconhecer o professor bibliotecário como um profissional com capacidade pedagógica;
3) Entre as ações prioritárias destacam-se a garantia da manutenção da equipa da biblioteca e o investimento na sua formação contínua.
This document provides 10 tips for managing time more effectively. It recommends prioritizing tasks based on importance and urgency. It also suggests planning workloads, identifying time-wasters through daily logs, breaking large tasks into smaller pieces to beat procrastination, limiting when you check emails, prioritizing emails, leaving blank space in schedules, improving how interruptions are handled, learning to delegate tasks, and saying no to requests when appropriate.
Gene expression analysis in storage root of cassava using microarray dataCIAT
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
Palestra ministrada pelo Engenheiro Antonio Carlos Pinto da Petrobras no 1° Encontro de Jovens Liderenças da Industria do Petroleo sobre as inovaçoes Tecnologicas que o pre-sal ira demandar bem como as fases do projeto
1. O documento discute técnicas para escalar aplicações React e TypeScript, incluindo estrutura de projetos, boas práticas de código, testes e monitoramento.
2. O autor tem experiência desenvolvendo sites com milhões de visitas diárias e discute como projetos podem crescer rapidamente sem problemas de desempenho ou manutenibilidade.
3. Escalabilidade envolve estruturar o código e projeto para que novos desenvolvedores possam entender facilmente, adicionar novas funcionalidades rapid
O documento discute programação reativa e serverless no Azure. Na primeira parte, fornece contexto histórico sobre a evolução dos sistemas e mudanças nos paradigmas de programação. A segunda parte explica conceitos de programação reativa e como ela se relaciona com programação funcional. A terceira parte introduz o tópico de serverless e discute seu espectro de uso na nuvem.
Experiência do estado do espírito santo em compras governamentais de mpeCONGESP
O documento descreve a experiência do estado do Espírito Santo em aumentar a participação de micro e pequenas empresas (MPE) nas compras governamentais. No início do projeto em 2007, as MPE representavam 12,9% das compras, com a meta de alcançar 30% (cerca de R$300 milhões por ano). Após capacitação e sensibilização, as compras de MPE aumentaram para 48,2% em número de transações e 50% em valor de contratos.
O documento discute como usar estágios para promover a formação profissional, social e cultural de estudantes e reduzir a evasão escolar. Ele propõe selecionar estudantes com base em critérios sociais, oferecer capacitação a todos os estagiários, e espera que isso resulte em maior aprovação escolar, notas mais altas, frequência maior à escola e menor evasão.
Domestic food production and hazard vulnerability jamaicaCIAT
The document discusses livelihood vulnerability among smallholder farmers in southern St. Elizabeth Parish, Jamaica. It finds that farmers are experiencing increasing vulnerability due to multiple stresses, including more frequent and intense droughts from climate change, as well as socioeconomic challenges. A Livelihood Vulnerability Index was constructed using household data on exposure, sensitivity, and adaptive capacity to quantify vulnerability across communities. The analysis found higher vulnerability among farmers with fewer alternative livelihood options, social support systems, and coping strategies for weather extremes.
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
O documento discute o framework PHP Zend Framework, destacando suas principais características como a implementação de padrões de projeto, componentes reusáveis e uma comunidade ativa. O framework fornece uma biblioteca de classes PHP 5 para desenvolvimento de aplicações web seguindo o padrão MVC e permite alta customização e extensibilidade do código.
Este documento proporciona análisis técnico de acciones españolas y europeas, recomendando posiciones largas u cortas basadas en líneas de soporte y resistencia. Incluye recomendaciones para 10 valores diferentes, con precios de entrada, stop loss y objetivos. Además, advierte que el análisis solo se proporciona con fines informativos y no debe tomarse como una recomendación de inversión.
JBIANCA Marketing presented a marketing proposal. They are a marketing firm located in Virginia that can be reached at 757-514-1010 or through their website at http://drop3in10.jamise.com. The document appears to be introducing their services but does not provide many details.
Quantum fields on the de sitter spacetime - Ion CotaescuSEENET-MTP
This document summarizes research on defining quantum fields on de Sitter spacetime. It discusses how external symmetries allow defining conserved observables like an energy operator, despite doubts in the literature. New quantum modes were obtained for scalar, Dirac, and vector fields on de Sitter spacetime using this energy operator. The paper reviews defining fields in local frames where spin is well-defined, and how isometries give rise to conserved quantities through external symmetry transformations that involve gauge transformations and diffeomorphisms. Generators of field representations are constructed from orbital and spin parts related to Killing vectors and structure functions.
O documento apresenta uma coleção de frases motivacionais sobre temas como solidão, esforço, perdão, amor próprio e coragem. As frases incentivam o leitor a construir pontes ao invés de muros, ter ombros fortes para suportar cargas, e colher o que se planta.
Este documento discute o bullying em Portugal e no Reino Unido. Analisa como o seio familiar e o meio escolar influenciam o bullying. Estudos mostram que cerca de metade dos alunos portugueses já foram vítimas ou agressores de bullying, e que o bullying ocorre com mais frequência no recreio.
O documento é um boletim informativo da vereadora Professora Josete (PT) de Curitiba. Ele resume seu mandato, defendendo os trabalhadores, movimentos sociais e a cidade. Também critica a gestão do prefeito Luciano Ducci e fala sobre despejos, transporte público, servidores municipais e outros temas.
2ª Sessão - Workshop formativo de apresentação do Modelo de Auto-Avaliação di...guest36ad53
Este documento apresenta um modelo de autoavaliação para bibliotecas escolares. O modelo inclui quatro domínios principais com vários subdomínios e indicadores para avaliar o desempenho da biblioteca. O modelo visa fornecer uma ferramenta para identificar áreas de sucesso e melhoria contínua, com o objetivo final de melhorar o apoio da biblioteca ao desenvolvimento curricular e às aprendizagens dos alunos.
The document provides an introduction and brief history of supersymmetry (SUSY). It discusses two approaches to constructing SUSY theories: (1) the component field formulation, which involves writing the most general SUSY transformations and invariant actions for chosen fields, and (2) the superspace formulation, which extends spacetime to include anticommuting fermionic coordinates. It then outlines N=1 and N=2 SUSY in one dimension as a simple example.
Helping Rural banks Comply with Microinsurance RegulationsMABSIV
This document summarizes key points from a presentation on helping rural banks comply with microinsurance regulations in the Philippines. It discusses a new circular allowing rural banks to sell microinsurance and outlines proposed licensing requirements and procedures for microinsurance agents and brokers. Key elements include limits on daily premiums and guaranteed benefits, requirements for microinsurance contracts, and the need for a national strategy and regulatory framework to support microinsurance development.
1) O documento identifica pontos fortes e fraquezas da biblioteca escolar, bem como oportunidades e ameaças;
2) São apontados desafios como a formação deficiente da equipa da biblioteca e a necessidade de reconhecer o professor bibliotecário como um profissional com capacidade pedagógica;
3) Entre as ações prioritárias destacam-se a garantia da manutenção da equipa da biblioteca e o investimento na sua formação contínua.
This document provides 10 tips for managing time more effectively. It recommends prioritizing tasks based on importance and urgency. It also suggests planning workloads, identifying time-wasters through daily logs, breaking large tasks into smaller pieces to beat procrastination, limiting when you check emails, prioritizing emails, leaving blank space in schedules, improving how interruptions are handled, learning to delegate tasks, and saying no to requests when appropriate.
Gene expression analysis in storage root of cassava using microarray dataCIAT
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms for those who already suffer from conditions like anxiety and depression.
Palestra ministrada pelo Engenheiro Antonio Carlos Pinto da Petrobras no 1° Encontro de Jovens Liderenças da Industria do Petroleo sobre as inovaçoes Tecnologicas que o pre-sal ira demandar bem como as fases do projeto
1. O documento discute técnicas para escalar aplicações React e TypeScript, incluindo estrutura de projetos, boas práticas de código, testes e monitoramento.
2. O autor tem experiência desenvolvendo sites com milhões de visitas diárias e discute como projetos podem crescer rapidamente sem problemas de desempenho ou manutenibilidade.
3. Escalabilidade envolve estruturar o código e projeto para que novos desenvolvedores possam entender facilmente, adicionar novas funcionalidades rapid
O documento discute programação reativa e serverless no Azure. Na primeira parte, fornece contexto histórico sobre a evolução dos sistemas e mudanças nos paradigmas de programação. A segunda parte explica conceitos de programação reativa e como ela se relaciona com programação funcional. A terceira parte introduz o tópico de serverless e discute seu espectro de uso na nuvem.
Pangea - Plataforma digital com Google Cloud PlatformAndré Paulovich
O documento apresenta os benefícios da plataforma Google Cloud Platform, incluindo escalabilidade ilimitada, disponibilidade, desempenho garantido e preços competitivos. Apresenta também exemplos de como usar serviços como Compute Engine, Datastore e Cloud Storage para desenvolver aplicações de forma escalável e econômica na nuvem.
O documento discute ferramentas para desenvolvimento web como Yeoman, AngularJS, CouchDB e Cloudant. Ele também fornece resumos sobre cada ferramenta e discute como elas podem ser usadas para criar e hospedar aplicações.
O documento apresenta Frederico Maia Arantes e suas qualificações como programador Java. Em seguida, fornece uma introdução ao conceito de computação em nuvem, discutindo seus principais tipos (IaaS, SaaS, PaaS), vantagens como escalabilidade e elasticidade, e desafios como a ausência de joins e transações. Exemplos de serviços em nuvem como Google Docs, Dropbox e Amazon Web Services são apresentados.
Precisamos de um barco maior introdução ao dimensionamento de aplicaçõesJackson F. de A. Mafra
Em um momento ou outro, todo desenvolvedor se depara com o mesmo problema - seu aplicativo começa a ficar mais lento, começa a cair e não está disponível.
Muitas vezes, isso se resume a muitos usuários, muitos dados armazenados - em outras palavras, um problema de escala.
Analisando uma gama de opções, desde escalonamento horizontal e vertical até cache, fragmentação e otimização, veremos abordagens de escalonamento que podem ser usadas em novas aplicações e também algumas que podem ser adaptadas retroativamente a aplicações existentes.
Habilidades necessárias para integrar aplicativos e dadosJeison Barros
1) Os desenvolvedores precisam ter habilidades em desenvolvimento de APIs, estruturação de dados, e integração de sistemas como REST, JSON e bancos de dados.
2) É importante compreender fluxos e semântica de dados, escalabilidade, e arquitetura orientada a eventos.
3) As habilidades incluem APIs REST, JavaScript, compreensão de estruturas de dados, e capacidade de colaboração.
O documento apresenta uma introdução ao desenvolvimento web, abordando:
1) As características dos clientes e servidores na arquitetura cliente-servidor;
2) A evolução da web ao longo do tempo, desde a criação da HTML até o desenvolvimento de novas tecnologias como JavaScript, CSS e DHTML;
3) Tópicos importantes como a "guerra dos navegadores", a necessidade de padronização e o surgimento de novas especificações como HTML4, CSS e DOM.
O documento descreve como usar MongoDB com Zend Framework 2 para armazenar dados no lugar do componente Zend\Db. O documento introduz MongoDB e discute como instalá-lo e conectá-lo do PHP, bem como operações básicas como inserir, procurar, atualizar e remover documentos. Finalmente, o documento menciona o módulo DoctrineMongoODMModule para integrar MongoDB com Zend Framework 2.
O documento descreve um projeto para gerenciar a vacinação de mais de 200 mil pessoas usando ReactJS e GraphQL. O projeto permite o cadastro de empresas, controle de estoque e aplicação de doses, emissão de faturas e gerenciamento de usuários. Tecnologias como Redux, Redux Form, React Router e CSS Modules foram utilizadas para desenvolver a interface reativa enquanto GraphQL foi usado para a camada de API.
Web service permite a integração de sistemas e comunicação entre aplicações através de formato XML, permitindo que novas aplicações interajam com as existentes e sistemas de plataformas diferentes sejam compatíveis. MS SQL Server é um sistema gerenciador de banco de dados relacional desenvolvido pela Microsoft para armazenar e recuperar dados solicitados por outras aplicações. Hibernate é um framework Java que realiza mapeamento objeto-relacional para diminuir a complexidade de trabalhar com bancos de dados relacionais.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
O documento discute conceitos, tecnologias e tendências de desenvolvimento web. Aborda tópicos como HTML5, CSS3, frameworks responsivos, JavaScript, Node.js, linguagens e frameworks para desenvolvimento mobile, arquitetura empresarial e integração de sistemas. Apresenta também a agenda e perfil profissional do autor.
A Prill Tecnologia é uma empresa de consultoria e desenvolvimento de software que utiliza a linguagem Perl para criar aplicações que processam grandes volumes de dados para empresas de telecomunicações. A apresentação descreve três aplicações desenvolvidas utilizando Perl que resolveram problemas de escalabilidade e performance ao processar milhões de registros diariamente. A apresentação também discute o papel de Perl no mercado de TI e como a linguagem pode atender simultaneamente aos requisitos de custo, tempo e qualidade para as empresas.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
O documento descreve o que é Node.js, como funciona seu modelo de programação assíncrono baseado em eventos e algumas de suas principais aplicações como framework para desenvolvimento web e aplicações em tempo real.
A aula apresenta os conceitos fundamentais da Web 2.0, incluindo sua evolução, tecnologias e mercado de trabalho. Aborda tópicos como modelo de desenvolvimento em camadas, padrões da W3C e linguagens como HTML, CSS e JavaScript.
A proposta desta apresentação é mostrar uma alternativa para construção de aplicações com Ruby on Rails que dá ênfase a modelagem de domínio, separando o código que resolve o problema de negócio do código do framework.
O documento apresenta uma agenda para um workshop sobre arquitetura front-end e tecnologias front-end. A agenda inclui tópicos como SOA, tipos de arquiteturas para aplicações web, SOFEA, aplicações de página única, padrão Backends for Frontends, Angular, NodeJs, Gulp, Grunt, React e outros.
Similar to ExpressoBR para Um Milhão (de Usuários) (20)
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaFlávio Lisboa
Este documento discute as cooperativas de software livre no Brasil e na Argentina, comparando o ecossistema de cooperativas de tecnologia da informação nos dois países. Apresenta o conceito de cooperativismo e como ele oferece uma alternativa ao emprego e ao empreendedorismo individual, permitindo que trabalhadores assumam o controle coletivo de suas atividades por meio da autogestão e do trabalho em benefício comum. Destaca exemplos de cooperativas de software livre no Brasil e na Argentina.
Aprenda a afiar suas garras com LaminasFlávio Lisboa
Nesta palestra apresento a trajetória do meu trabalho de instrutor e promotor do Zend Framework, agora Laminas, culminando com o lançamento do livro PHP Web Development with Laminas, pela Packt Publishing. Apresento os tópicos de uma formação completa de desenvolvedor web PHP trabalhando com aplicações orientadas a objeto usando padrões de projeto e desenvolvimento orientado a testes.
Ciência e software livre: desenvolvendo com métodoFlávio Lisboa
Esta palestra visa mostrar como o software livre se beneficia do paradigma do método científico e quais as vantagens de times de desenvolvimento de assimilarem as boas práticas desse método e a vantagem de manter sempre uma atitude crítica na busca de soluções de problemas.
Tópicos abordados:
* O método científico e os paradigmas da ciência
* Como o software livre aplica o método científico
* Como assimilar isso em sua empresa
Flávio Gomes da Silva Lisboa apresenta suas qualificações e experiência, incluindo doutorando na UTFPR, mestre em Tecnologia e Sociedade, especialista em Java, instrutor de cursos de desenvolvimento de software e professor universitário. Ele também fala sobre seu trabalho atual com software para PaaS e como autor.
O documento apresenta a história do framework Zend Framework e sua transição para o framework Laminas. Descreve a compra do Zend Framework pela RogueWave e a saída de seus principais desenvolvedores em 2018, levando à criação do projeto Laminas sob a Linux Foundation. Também discute as perspectivas para a ferramenta de migração entre os frameworks e os próximos passos do projeto Laminas.
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Flávio Lisboa
Da Teoria da Evolução para a solução de problemas baseada em busca, com provocações para quem não gosta de pensar.
O componente usado na demonstração está disponível em https://github.com/fgsl/geneticalgorithm.
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.
Como se tornar o pior programador PHP do mundoFlávio Lisboa
O documento fornece sete lições para se tornar o pior programador PHP do mundo, focando em aspectos técnicos como usar apenas processos síncronos e não se preocupar com codificação de caracteres, e aspectos sociais como não seguir bons exemplos e ignorar outras linguagens de programação.
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
O documento discute a necessidade de ambientes integrados de desenvolvimento (IDEs) para projetos de software. Ele descreve as vantagens de usar o Eclipse PHP Development Tools, incluindo integração com controle de versão, bancos de dados e ferramentas PHP. Também fornece dicas sobre depuração, desempenho e técnicas para descoberta de bugs.
Comunicação e padrões em código aberto: quando convergente e divergente cooperamFlávio Lisboa
O documento discute como conciliar as demandas de clientes com as demandas da comunidade em projetos de código aberto. Sugere que a comunicação eficaz e o uso de padrões de projeto e arquitetura podem ajudar a fazer com que a comunidade aceite alterações necessárias para atender às demandas dos clientes.
Criação de robôs em PHP para raspagem de dadosFlávio Lisboa
Este documento discute raspagem de dados usando robôs em PHP. Ele fornece exemplos de como criar robôs para capturar código-fonte de páginas web e dados inseridos via JavaScript. O documento também responde perguntas sobre como lidar com cookies, manter dados atualizados e quebrar CAPTCHAs usando PHP.
A história conta a jornada de um piloto de testes, Martin Jordan, que enfrenta seus medos após um acidente aéreo. Ele é escolhido para ser o novo Lanterna Verde depois que o alienígena moribundo que ocupava o cargo o escolhe. Apesar de receoso no início, Martin aprende a usar o anel de poder e assume a responsabilidade de proteger a galáxia.
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosFlávio Lisboa
[1] O documento discute o uso de PHP no Serviço Federal de Processamento de Dados (SERPRO)
[2] O SERPRO desenvolve diversos sistemas utilizando a linguagem PHP, como o software livre SAGUI
[3] Entre 2009-2016, o SERPRO implementou 1221 projetos utilizando PHP, correspondendo a 83 sistemas diferentes.
Arquitetura PHP para um mundo orientado a microsserviçosFlávio Lisboa
Nesta palestra abordaremos diversos aspectos da arquitetura de software contextualizados para o cenário de aplicações PHP construídas a partir da integração de microsserviços integrados. Dentro desse cenário, iremos separar o que é responsabilidade do PHP e o que não é, mas com o que ele pode contribuir (ou como ele pode evitar que seus parceiros tornem sua vida difícil). Abordaremos motivações, boas práticas e orientações para lidar com transações, manipulação de erros, execução de código lento, execução em linha de comando, coleta de dados de usuário, análise e business intelligence.
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasFlávio Lisboa
O documento discute como o software livre e a tecnologia social podem promover a inclusão digital e social. Apresenta o conceito de software livre e como ele garante a liberdade e autonomia dos usuários. Também define tecnologia social como aquela adaptada para pequenos grupos e que promova a criatividade dos usuários. Por fim, discute como o acesso à tecnologia e a alfabetização digital podem levar à apropriação das ferramentas tecnológicas e sua utilização para fins sociais.
Programar computadores envolve escrever instruções claras e objetivas em linguagens de programação para ensinar máquinas a realizar tarefas. Ao longo da história, as linguagens evoluíram de códigos binários para linguagens de alto nível mais próximas da linguagem humana, à medida que computadores se tornaram mais poderosos e acessíveis. Programadores memoráveis contribuíram para o desenvolvimento da computação.
O documento discute a importância das comunidades e da economia colaborativa. Aponta exemplos como a Corporação Mondragón e o kernel Linux que ilustram como modelos cooperativos e colaborativos podem ser bem-sucedidos. Também descreve estratégias para empresas se adaptarem à economia colaborativa, como manter baixos custos fixos, buscar parcerias, e focar no relacionamento de longo prazo com clientes.
Aplicações Corporativas em PHP (CRM e ERP)Flávio Lisboa
This document discusses technology choices for corporate applications like CRM and ERP. It recommends open-source stacks for building portals, e-commerce sites, and CRM systems using frameworks like Drupal, Joomla, Magento, Prestashop, SugarCRM, and platforms like Zend, OroCRM, and Tine20. It also mentions ERP options like Marello and Inoideas that use open-source technologies.
1. ExpressoBR
para Um Milhão
(de Usuários)
Flávio Gomes da Silva Lisboa
Líder em soluções de TI para governo
2. O que é o ExpressoBR?
O ExpressoBR é um software de colaboração de
grupos, que inclui catálogo de endereços, agenda de
compromissos, e-mail, controle de tarefas,
webconferência e mensageria instantânea.
Em 2002 o Serpro administrava aproximadamente
10.000 caixas de correio eletrônico.
Em 2014, com o Expresso, já são 53.000 caixas
postais em 31 órgãos, incluindo o Serpro. Estão
previstos mais 6 órgãos (clientes) em fase de
contratação, com aproximadamente 11.250 caixas.
3. O que é o ExpressoBR?
O ExpressoBR é um software livre, implementado
com PHP e Javascript, linguagens livres, baseado em
um projeto aberto, o Tine 2.0, utilizado em vários
países de quatro continentes, sendo que o núcleo do
desenvolvimento encontra-se na Alemanha.
4. O que é o ExpressoBR?
O ExpressoBR é um software produzido pelo
SERPRO em colaboração com uma vibrante
comunidade formada por várias empresas, em pelo
menos 4 países.
SERPRO é o Serviço Federal de Processamento de
Dados, que mantém desde os dados de registro de
veículos de condutores no Brasil até as transações
financeiras entre todos os órgãos de governo,
passando pela arrecadação de tributos e controle do
comércio exterior e comunicação eletrônica de todo o
governo federal.
5. Para saber mais sobre o ExpressoBR
Dia 15/10/2014
Espaço Equador
17h - ExpressoBr - Parabéns comunidade! 10 anos
de evolução - Walter "Zapa" Zapalowski
18h - Migrando Dados para o Expresso V3 -
Gildomiro Bairros e Fabio Link
19h - Correio de bolso: mobilidade no ExpressoBR
- Rodrigo Dias
6. Quem sou eu?
● Chefe do setor de adequação do ExpressoV3 em Curitiba
9. Quem sou eu?
● Lecionei a disciplina Programação PHP Orientada a Objetos com Testes
Unitários no curso de especialização em Desenvolvimento de Aplicações
Web na UniCesumar.
12. Expresso para um milhão de usuários...
Abordaremos duas perspectivas com relação a essa
frase:
1ª Perspectiva: um Expresso que se ajuste às
necessidades de um milhão de usuários.
Muitos interesses.
2ª Perspectiva: um Expresso que seja escalável
para um milhão de usuários.
Muitas pessoas.
14. Problema arquitetural
Eu dependo de uma funcionalidade, mas não posso
acoplá-la ao meu software, pois nem todos irão fazer
uso dela, pois não é genérica.
Eu preciso fazer uma chamada a um método que não
pode estar estaticamente definido.
Ou seja, eu preciso fazer uma chamada a algo que deve
estar disponível somente quando eu precisar.
15. Mágica?
Aladdin is part of oriental culture although Disney has made an animation aboit him
16. Como injetar funcionalidades nas camadas?
A resposta foi criar uma arquitetura de plugins que
permitisse a injeção de dependências.
17. Tinebase_Pluggable
Uma classe mãe torna três camadas plugáveis.
Pluggable_Abstract
Frontend_Abstract Controller_Abstract Backend_Abstract
19. Criando um plugin de camada
Para criar um plugin de camada você deve:
Criar uma classe em uma biblioteca que siga o padrão
Zend Framework 1, dentro da pasta library.
Registrar o plugin na camada que deve receber a
funcionalidade, acrescentando uma linha como uma das
seguintes:
Tinebase_Frontend_Abstract::attachPlugin('nomeDoMétodo', 'NomeDaClasse');
Tinebase_Controller_Abstract::attachPlugin('nomeDoMétodo', 'NomeDaClasse');
Tinebase_Backend_Abstract::attachPlugin('nomeDoMétodo', 'NomeDaClasse');
20. Plugin de camada
Um plugin de camada é uma classe cujo método é
invocado de forma indireta por um objeto das camadas de
frontend, controller e backend.
Você pode criar e adicionar quantos plugins forem
necessários usando o método addPlugin() da classe
abstrata da camada.
Todas as suas herdeiras terão acesso aos métodos de
plugins.
21. Dependências ficam na pasta library
Plugins são classes que fazem
parte de bibliotecas, que são
dependências da aplicação.
Se você quer adicionar uma
funcionalidade específica a uma
camada, crie sua própria biblioteca
e dentro dela crie seus plugins.
22. E não é só isso!
É possível injetar outras dependências em,
init_plugins.php além das que afetam as camadas.
É possível, por exemplo, alterar a regra de validação de
endereçamento IP e a estratégia de armazenamento do
AccessLog.
Isso é tornar o ExpressoV3 configurável.
23. Plugins para o sistema de usuários e grupos
Tinebase_User::addPlugin('Tinebase_User_Plugin_Samba');
Tinebase_Group::addPlugin('Tinebase_Group_Plugin_Samba');
24. Mais plugins estão a caminho!
Nos próximos releases do ExpressoV3, serão
disponibilizados plugins para:
●Inicialização da aplicação
●Filtros de consultas
25. Escreva o seu!
Se precisar de alguma customização, não espere que
sua necessidade se torne genérica.
ESCREVA O SEU PLUGIN E USE!
28. Escalabilidade
Multidomínio
● Implementação para distribuir carga de
serviços entre domínios.
● O domínio, neste caso, refere-se à conta
de e-mail do usuário.
● Existe uma única instância de aplicação
para vários clientes, cada um com seus
serviços.
29. Arquitetura de Multidomínio
Frontend
Configuration
Backend
Single
Application
Domain 1
DB LDAP IMAP SMTP
Domain n
DB LDAP IMAP SMTP
Domain 2
DB LDAP IMAP SMTP
Escalabilidade
31. Escalabilidade
Impactos do Multidomínio
1)Não é mais realizada nenhuma consulta ao banco de dados para o
carregamento da página de login.
2)Todas as consultas a banco de dados para recuperação de dados de
configuração foram substituídas por consultas ao arquivo config.inc.php
(do domínio em uso). Para a recuperação de dados de configuração eram
feitas duas consultas para cada item de configuração, uma para a tabela
applications e outra para a tabela config.
3)Foi eliminada a dupla tentativa de autenticação via LDAP. Se não
autenticar, lança exceção.
37. Fato
“Unless we're doing a lot of file serving, the
database is the toughest part to scale.
If we can, best to avoid the issue altogether
and just buy bigger hardware”
Cal Henderson
38. Realidade
É necessário trabalhar com os recursos
existentes.
Não podemos adicionar mais serviços.
43. Restrições
Dificuldade de introduzir novas tecnologias, por
causa de:
● Necessidade de testes;
● Capacitação;
● Recursos para administrar novos serviços;
● Falta de automação da infraestrutura;
● Risco de indisponibilidade na substituição de
um produto por outro para realizar o mesmo
serviço.
44. Caminho
Dar sobrevida ao PostgreSQL, escalando a
aplicação com os recursos disponíveis e
permitindo a construção lenta, gradual e segura
para a solução definitiva.
45. Frase marcante
“Se for possível ter um
banco de dados por
usuário, não haverá limites
para a infraestrutura”
?!?!?!?!
46. O que o mercado faz
Facebook tem
800 milhões de usuários sendo que 500 milhões
visitam diariamente o site.
350 milhões de usuários mobile atualizando
constantemente seus status.
7 milhões de aplicações e Web sites integrados com a
plataforma Facebook.
>60 milhões de queries por segundo
Banco de dados MySQL dividido em 4000 shards
9000 instâncias de Memcached
1800 servidores para MySQL (2008)
805 servidores dedicados para Memcached
* Dados de 2011 [1],[2],[3]
50. O que o mercado faz
Foursquare tem
45 milhões de usuários (19/12/2013)
5 bilhões de check-ins (19/12/2013)
Banco de dados MongoDB com auto-sharding.
Hive e Hadoop.
Houve um caso de indisponibilidade de 7 horas em
2010.
* [4],[5],[6],[7]
51. Problemas
Para adaptar-se a bancos não relacionais é
necessário escrever adaptadores específicos e
ajustar as consultas para um nível mais alto
que SQL.
52. O que o mercado faz
Instagram tem
●14 milhões de usuários
●Amazon Elastic Load Balander com 3 instâncias de
NGINX
●Amazon Route53 para DNS
●Django sobre Apache com mod_wsgi
●PostgreSQL com sharding em cluster com 12
instâncias de memória extra-grandes quádruplas e 12
réplicas em uma zona diferente. Usa Streaming
Replication e Pgbouncer.
●Várias instâncias de Redis usadas extensivamente.
●Gearman para processamento paralelo com 200
threads.
* [8],[9]
53. Realidade
Não é possível replicar tabelas de forma
assíncrona em nosso ambiente.
54. Fato
Diante do cenário de restrição para aumento de
infraestrutura e limitações para introdução de
novas soluções de software, o sharding é a
solução mais viável de ser implementada, o
que não implica que seja a mais fácil de ser
administrada.
56. Com o Sharding
Instância da
aplicação
SShhaarrdd 11 Shard 2 Shard 3 Shard n
57. Como fazer sharding para o ExpressoV3
Sem dispor de uma solução que faça o
sharding de forma transparente para a
aplicação, como o EnterpriseDB [12], temos de
fazer sharding com a aplicação ciente disso.
A aplicação está assumindo uma tarefa que o
banco de dados não consegue realizar.
58. Como fazer sharding para o ExpressoV3
Por que não usamos EnterpriseDB? Bem, ele é
proprietário. A solução alternativa aberta é o
Postgres-XC-Cluster [11, p. 27], mas ele não
faz compartilhamento entre shards.
Além de não ter domínio do código, ainda
teríamos de desenvolver a parte de
compartilhamento na aplicação.
59. Mundo ideal
Delegaríamos o sharding para o EnterpriseDB e não
precisaríamos desenvolver uma camada para
administrar a segmentação de usuários.
EnterpriseDB
61. Arquitetura da solução de sharding para o
ExpressoV3
Aplicação
Virtual Shard Virtual Shard Virtual Shard Virtual Shard Virtual Shard Virtual Shard
Banco de
Dados
Banco de
Dados
Banco de
Dados
Banco de
Dados
Estratégia de Sharding
62. Não há mágica!
Virtual Shard Virtual Shard Virtual Shard Virtual Shard Virtual Shard Virtual Shard
Banco de
Dados
Banco de
Dados
Banco de
Dados
Banco de
Dados
● É preciso monitorar os shards!
63. A configuração de múltiplos bancos de dados
está pronta
● Já é possível usar o ExpressoV3 com sharding para novas
instalações.
● Para migrar instalações existentes, é necessário aguardar a
finalização do script de resharding.
● Os dados compartilhados não estão disponíveis. Cada
usuário compartilha somente dentro do seu shard. Usuários
de shards diferentes são como usuários de instâncias
diferentes de ExpressoV3.
● O uso de sharding é dependente da replicação dos dados
globais entre os shards.
64. Fato
● Se cada usuário tivesse de ter acesso somente a seus
dados, então cada shard teria as mesmas tabelas, mas
apenas com os registros dos usuários daquele shard.
Shard 1
Tabela 1 Tabela 2
Tabela 3 Tabela 4
Shard 2
Tabela 1 Tabela 2
Tabela 3 Tabela 4
65. Fato
● Mas existem tabelas globais, que precisam ser replicadas
em cada shard. E essa replicação deve ser síncrona.
Shard 1
Tabela 1 Tabela 2
Tabela 3 Tabela
Global
Shard 2
Tabela 1 Tabela 2
Tabela 3 Tabela
Global
66. Restrição
● Não é possível replicar tabelas globais com PostgreSQL em
nosso ambiente.
Shard 1
Tabela 1 Tabela 2
Tabela 3 Tabela
Global
Shard 2
Tabela 1 Tabela 2
Tabela 3 Tabela
Global
X
67. Caminho
● Desacoplar os dados globais dos shards.
Shard 1
Tabela 1 Tabela 2
Tabela 3
Shard 2
Tabela 1 Tabela 2
Tabela 3
Banco Global
Tabela
Global
68. Consequência
● Para cada usuário, duas conexões, não simultâneas:
Aplicação
Virtual Shard
Shard Banco
Global
69. Retorno ao passado
O NÚMERO DE
CONEXÕES
COM BANCO
NÃO SERÁ
REDUZIDA PARA
O BANCO
GLOBAL! E AÍ?
70. Ajustes para reduzir o uso do banco de dados
● A autenticação e controle de usuários e grupos usará
exclusivamente LDAP sem sincronização com o banco.
● O banco global terá menos tabelas.
● As tabelas do banco global não farão junções com outras.
● O uso da sessão será ampliado para evitar o uso do banco
de dados, armazenando ACL e containers.
● Podemos usar cache para os dados globais.
● Essa é a forma de replicar dados sem replicá-los (Como
fazer o avião pousar na fragata? Simples, ele não pousa).
71. Banco Global
Log de acessos Tarefas
assíncronas
Agendamento
de tarefas
ACL Containers
72. Fatos
● É necessário um banco global, já que não pode ser feita
replicação. Se ele será repartido em dois, é uma questão
que pode ser tratada mais adiante.
● Com a sobrevida dada pelo sharding, vale mais a pena
investir na adaptação da aplicação a um banco NoSQL com
auto-sharding e auto-replicação do que tentar delegar a
replicação para a aplicação.
● A mutabilidade do banco global em relação aos shards é
baixa.
● Com uso de sessão e cache, o acesso ao banco do global
será reduzido.
73. Mundo ideal
● Se o banco de dados fizesse o sharding, ele também
trataria as consultas de forma distribuída. Assim, não seria
necessário alterar as consultas na aplicação, pois o
gerenciador de sharding iria executar os consultas em todos
os shards e retornar os resultados combinados.
Instância da
aplicação
Sharding
Manager
Shard 1 Shard 2 Shard 3 Shard n
74. Realidade
● A aplicação tem que gerenciar as consultas distribuídas.
Para diminuir o impacto da mudança na aplicação, foi
desenvolvida uma extensão para fazer consultas
distribuídas, cuja interface é compatível com a atual
extensão usada para PostgreSQL.
Instância da aplicação
Extensão para
consultas
distribuídas
Shard 1 Shard 2 Shard 3 Shard n
75. A extensão está funcional, mas precisa ser
amplamente testada.
76. Compartilhamentos
● O sharding implementado pela aplicação, com banco global
e consultas distribuídas, não garante compartilhamento de
dados ENTRE SHARDS.
● Só é possível, a princípio compartilhar com usuários do
mesmo sharding.
● Os compartilhamentos deverão ser tratados como serviços,
e a visualização deles deve ocorrer somente por demanda.
● Para controlar os mapeamentos de compartilhamentos, será
necessário criar um banco de dados de metadados, que
pode inicialmente ser um banco PostgreSQL, mas sem
utilizar as características intrínsecas a bancos relacionais.
78. Compartilhamentos
● O banco de metadados armazena as conexões entre os
shards.
● Quando um usuário de um shard1 compartilhar o seu
calendário com o o usuário do shard2, será criado um
registro no banco de metadados, para associar a conexão
de banco do usuário do shard1 com o usuário do shard2.
Banco de metadados
Usuário1 → Login do Usuário 2
Usuário3 → Login do usuário 5
79. Compartilhamentos
● O usuário que recebeu o compartilhamento, só precisa
saber do login do usuário que forneceu o compartilhamento.
A partir do login, a implementação de shard sabe em qual
banco de dados o usuário se encontra.
Banco de metadados
Usuário1 → Login do Usuário 2
Usuário3 → Login do usuário 5
80. Compartilhamentos
● Em um resharding (redistribuição dos usuários entre os
bancos), os registros do banco de metadados não terão de
ser alterados, pois quem recebeu o compartilhamento
precisa apenas do login de quem compartilhou.
Banco de metadados
Usuário1 → Login do Usuário 2
Usuário3 → Login do usuário 5
81. Atualização distribuída
● Embora alguns dados sejam globais, algumas operações
tem de ser feitas em todos os shards.
● A instalação, atualização e remoção de módulos é uma
delas.
● A criação de filtros compartilhados é outra.
82. Fatos
● A aplicação ExpressoV3 não é um sistema gerenciador de
banco de dados. Ela USA um SGBD.
● Dotar o ExpressoV3 das funcionalidades um sistema
gerenciador de banco de dados implica em aumentar a sua
complexidade e manutenção.
● O sharding via aplicação é um passo intermediário para a
adoção de um banco de dados que faça auto-sharding e
não a solução definitiva.
83. Rumo à nuvem
ExpressoV3
Banco relacional com
única instância
ExpressoV3
Várias instâncias de
banco relacional,
distribuídas com
distribuição gerenciada
pela aplicação.
ExpressoV3
Banco de dados não
relacional, distribuído e
auto-gerenciado.
84. Rumo à nuvem
ExpressoV3
Banco relacional com
única instância
ExpressoV3
Banco de dados não
relacional, distribuído e
auto-gerenciado.
PASSAR DIRETO DE UM
CENÁRIO PARA OUTRO
COM AS
RESTRIÇÕES
EXISTENTES?
86. Fatos
● Repetindo: O sharding via aplicação é um passo
intermediário para a adoção de um banco de dados que
faça auto-sharding e não a solução definitiva.
● Foco em resultados: a aplicação precisa funcionar.
● Se um banco de dados pode apresentar falhas, n bancos
de dados também podem.
● Não se pode evitar falhas, podemos tolerá-las. O que se
precisa definir é o nível, a medida de tolerância.
88. Modus Operandi da atualização distribuída
Instância única do ExpressoV3
Tenta atualizar todos Reporta quais não foram
atualizados e gera script
Shard 1 Shard 2 Shard 3 Shard n
89. Modus Operandi da atualização distribuída
● Importante: a atualização é feita pelo Gerenciador de
Aplicações, que tem uma interface que mostra o que está
atualizado, desatualizado e se houve erros.
90. Monitoração
● O monitor (Zabbix) pode verificar se existem scripts de
atualização, notificando falhas de atualização, embora ela já
esteja sendo acompanhada por um administrador.
Zabbix
ExpressoV3
Cria
Scripts de atualização
Monitora
91. Fatos
● O sharding via aplicação encarrega a aplicação de se
preocupar de onde vem e para onde vão os dados.
● Se a aplicação tiver que exercer controle transacional entre
bancos de dados, ou fazer controle de versão de DDL entre
bancos, irá estar assumindo uma tarefa que não é dela.
● Estamos preparando o caminho para um banco de dados
que faça o que o PostgreSQL não faz hoje.
● Se tiver de ser criado um pseudo banco de dados, ele irá se
tornar um filho indesejado, mas que terá de ser criado e
mantido.
● Nesse caso, a solução adequada à nuvem nunca será
alcançada, a menos que se jogue tudo fora.
92. Fatos
● Não podemos jogar tudo
fora.
● Diante das restrições
apresentadas, as
mudanças tem de ser
graduais.
● A solução transitória é
para sobrevivência.
93. Abstração da camada de banco de dados
● A refatoração da abstração da camada de banco de dados
foi finalizada e entrou em processo de revisão.
● Essa revisão deverá passar por TODOS os
desenvolvedores, pois o impacto é bem grande.
● É necessário escrever adaptadores para NoSQL.
● É necessário ter ambiente para testar NoSQL.
● É necessário monitoração dos testes desde o início para
adequação aos requisitos de infraestrutura.
● É necessário testar vários bancos.
96. Refatoração de Tinebase_Backend
Tinebase
Tinebase_Backend_Database
Tinebase_Backend_Database_Nosql
Tinebase_Backend_Database_Sql
fabrica
usa
fabrica
usa
97. Refatoração de Tinebase_Backend
Antes
Módulo Backend SQL
Banco de
dados
SQL
Depois
Módulo
Backend
SQL
Banco de
dados
SQL
Backend Proxy
Backend
NoSQL
Banco de
dados
NoSQL
98. Adaptação para manutenção de comportamento
Antes
Módulo Backend SQL
Banco de
dados
SQL
Herança
Depois
Módulo
Backend
SQL
Banco de
dados
SQL
Backend Proxy
Herança
Backend
NoSQL
Banco de
dados
NoSQL
99. Resultados até agora
● Configuração de multidomínio disponível.
● Diminuição de uso do banco de dados relacional.
● Configuração para múltiplos bancos disponível. Um
novo ambiente com replicação síncrona de tabelas já
poderia utilizar o Expresso com sharding.
● Conhecimento mais profundo sobre a estrutura do
banco de dados e das tabelas. Sabemos o que é global e
o que é particular, o que é mais usado, o que é menos
usado, o que tem relacionamento e o que não tem.