SlideShare una empresa de Scribd logo
1 de 47
Descargar para leer sin conexión
Líder em soluções de TI para governo
Escalabilidade via
Software no
Expresso V3
Palestrante: Flávio Gomes da Silva Lisboa
Quem sou eu?
Argentina e Uruguai
O que é o Tine 2.0?
É uma suíte de comunicação e colaboração e um CRM.
Possui módulos de Recursos Humanos, Inventário, Vendas, Cursos,
Projetos, Rastreabilidade de Tempo de Atendimento e VOIP.
Arquitetura do Software
Arquitetura do Software
Arquitetura do Software
Cooperação
Cassiano
Bruno
Funchal
RommelLagesMário
CarlosLavoisier
Antonio
Cooperação
Cooperação
Desafio Sustentar um milhão... de usuários
Quantidade de Usuários
Desafio Atender mais usuários sem degradar a performance
Restrição
Banco de dados relacional não escalável no ambiente considerado
Restrição
Não impedir mudanças de backend no futuro
Solução Filme de Terror
Mudanças de Arquitetura
1) Separar domínios
2) Dividir o banco de dados
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.
Configuration
Arquitetura de Multidomínio
Backend
Frontend
Single
Application
Domain 1
DB LDAP IMAP SMTP
Domain n
DB LDAP IMAP SMTP
Domain 2
DB LDAP IMAP SMTP
Mudança na Estrutura de Pastas
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.
Tamanho da Mudança
Depois do Multidomínio...
… vem o Sharding!
O que é Shard?
● Linhas de uma tabela distribuídas em
dois ou mais BDs;
● Tabelas ficam com menos registros;
● Distribuição da carga entre vários
SGBDs;
● Consultas paralelas;
● Consultas com JOINS entre BDs podem
ser ineficientes;
Sharding é Tetris, mas ao contrário
I HATE JOINS!
Premissas do Projeto:
a) Usar shard é opcional:
Ambientes pequenos não necessitam da complexidade do shard;
A ausência de shard será o caso particular de uso de um único shard.
Dados globais serão replicados para cada shard.
b) Serão utilizados virtual shards
Virtual shards usarão tabelas de mapeamento.
c) Granularidade a nível de usuário/domínio:
A chave do shard deve ser por usuário/domínio;
d) Domínio geograficamente distribuído:
A infraestrutura de um domínio pode estar distribuída em várias regiões
geográficas, interligadas via redes WAN;
Premissas do Projeto:
e) Implementar inicialmente shard apenas para BD:
f) Não criar obstáculos para mudanças de backends:
Deve ser abstrato para não gerar obstáculos que impeçam sua extensão
para operar com Sistemas de Arquivos, IMAP, LDAP, etc...
g) Minimizar o uso de JOINS entre shards:
Essa é uma operação que pode ser muito custosa. Deve ser evitada;
h) Não criar um fork da comunidade:
i) Os convidados de eventos de calendário são sempre tratados como
externos.
Admin
Addressbook
Setup
Tinebase
ActiveSync
Calendar
Não criar um fork da comunidade:
Expressomail Felamimail
Webconference
Messenger
Esquema – Visão Geral
Desafios:
● Direcionamento de usuário para seu frontend Web;
● Como implementar?
● Escolha da chave de shard;
● Quais campos usar?
● Estratégia de distribuição;
● Mapeamento de usuário x backends? Função matemática?
● Usar Virtual Shard?
● Gerenciamento de auto incremento;
● Implementar ou Remover?
● Queries distribuídas;
● Estender SQL? Implementações específicas do domínio da aplicação?
Estratégia de mapeamento: Como distribuir os
usuários/domínio de forma balanceada entre os shards.
● Virtual Shard
● Usuário/Domínio X Virtual Shard X BD;
● No de Shards >= No Máx de BDs;
● Objetivo é evitar ter que reorganizar um grande volume de informações
ao fazer um resharding.
● Estratégia de Mapeamento de usuário x backends
● Usando Virtual Shard:
● Mapear no LDAP usuário/domínio x Virtual Shard;
● Mapear Virtual Shard x BD;
● Sem usar Virtual Shard:
● Mapear no LDAP usuário/domínio x BD;
● Granularidade de resharding a nível de usuário/domínio;
● Problema de Gargalo de ponto central (LDAP);
Estratégia de mapeamento:
● Estratégia de Função matemática
● Usando Virtual Shard:
● Mod(Hash(CHAVE_SHARD)) → Virtual Shard;
● Mapear Virtual Shard x BD;
● Granularidade de resharding a nível de Virtual Shard;
● Mantém duas versões do Mapeamento durante o resharding;
● Sem usar Virtual Shard:
● Mod(Hash(CHAVE_SHARD)) →BD;
● O resharding se torna muito complexo;
● Vantagem de não precisar buscar informações de associação em
LDAP;
Queries distribuídas – Banco de Dados:
● Estender SQL
● WHERE determina roteamento de consultas para vários shards;
● JOINS
● Entre shards, executados localmente (baixo desempenho);
● Com tabelas replicadas, executados remotamente (custo de replicação);
● GROUP BY, Funções de Agregação e ORDER BY executados localmente;
● Gerenciamento de memória (Resultados grandes);
● Gerenciamento de timeout: LAN, WAN;
● Transporte de consultas em Web Services para requisições através de Rede
WAN;
● Vantagens:
● Evita/Minimiza alteração da implementação da aplicação Tine20;
● Desvantages:
● Específico para BD. Não suporta backends LDAP, IMAP, Arquivo;
● Implementação complexa;
● Menor desempenho e maior uso de rede por não reduzir, de forma
distribuída, as consultas (não usa Map/Reduce);
Queries distribuídas:
● Implementar consultas específicas:
● Criar Web Services para tratar consultas específicas do Tine20;
● Gerenciamento de Timeout: LAN, WAN;
● Agrupamento distribuído e local (Map/Reduce);
● Map/Reduce: Implementar ou usar solução de terceiro?
● Ordenação executada localmente;
● Gerenciamento de memória (Resultados grandes);
● Vantagens:
● Mais fácil de adaptar para outros backends (Arquivo, LDAP, IMAP);
● Mais simples de implementar que um parser SQL;
● Map/Reduce pode melhorar desempenho;
● Map/Reduce pode diminuir tráfego de rede;
● Web Service suporta nativamente consultas geograficamente distribuídas;
● Desvantages:
● Precisa alterar a implementação da aplicação Tine20;
● Para cada nova consulta, requer um novo esforço de implementação;
I HATE JOINS!
Integridade Referencial:
● Implementar na aplicação:
● Transferir para a aplicação Tine20 a responsabilidade por garantir a
Integridade Referencial entre shards;
● Vantagem:
● A aplicação não cria inconsistências no BD;
● Desvantagens:
● Necessidade de alterar o código fonte do Tine20;
● Processamento extra prejudica desempenho;
● Acessos diretos ao BD não garantem integridade;
● Remover do BD:
● Remover a verificação de Integridade Referencial entre shards;
● Vantagens:
● Maior desempenho;
● Não necessita nenhuma implementação;
● Desvantages:
● A Integridade não é garantida. Um erro pode levar o BD a inconsistência;
Resharding usando Virtual Shard :
● Adição de novo backend:
● Mover linhas (amarelas) da tabela para o novo BD e apontar o Virtual Shard
(amarelo) para o novo BD;
● Função Matemática Mod(Hash(Chave_Shard)) decide, de forma automática,
para qual Virtual Shard cada requisição da aplicação deve ser encaminhada;
Resharding usando Virtual Shard :
● Adição de novo backend:
● Mover linhas (amarelas) da tabela para o novo BD e apontar o Virtual Shard
(amarelo) para o novo BD;
● Atualizar, no LDAP, associação de Usuário/Domínio X Virtual Shard;
Resharding sem Virtual Shard:
● Adição de novo backend:
● Mover linhas (amarelas) para o novo BD e atualiza o LDAP para
apontar os dois usuários/domínio para o novo BD;
Replicação de Informações Globais:
● Replicar todas informações globais:
● Frequência de replicação de cada informação;
● Como implementar a replicação de informações globais que estão
atualmente em tabelas que também possuem informações de
shard?
Replicação de Informações Globais – Banco de Dados:
● Replicação de todas informações Globais em todos Shards:
● Aumenta necessidade de espaço de armazenamento;
● Minimiza JOINS entre Shards;
● Alto custo de replicação;
Replicação de Informações Globais – Banco de Dados:
● Replicação de informações Globais entre WANs (em cinza):
● Maior quantidade de JOINS entre Shards;
● Custo de replicação via WAN;
Alta Disponibilidade – Banco de Dados:
● Organizar os BDs em arquitetura de Cluster;
● Links de rede redundantes (LANs e WANs);
● Backup individual de cada shard;
Escopo do Projeto – Macro Atividades:
1) Permitir vários bancos de dados
2) Criar camada de abstração para banco de dados
3) Criar backend separado para ACL
4) Criar backend separado para containers
5) Modificar consultas para ambiente distribuído
6) Reduzir acesso ao banco de dados
7) Tratar conteúdo compartilhado
8) Direcionamento de usuário para seu frontend Web
9) Implementar script de resharding
10) Revisar arquitetura e implementação de sharding
ESCOPO DO PROJETO
Planejamento de execução e dependências entre tarefas
1
2
3
4
5
6
7
8
9
10
5 6 7 88 9 10 11
1
2
3 4
5
6
7
8
9
10
flavio.lisboa@serpro.gov.br
www.serpro.gov.br
http://comunidadeexpresso.serpro.gov.br
flavio.lisboa@serpro.gov.brflavio.lisboa@serpro.gov.br

Más contenido relacionado

Destacado

Autonomia de escola
Autonomia de escolaAutonomia de escola
Autonomia de escolacatherineee
 
Introduction to Social Media for Boggs Center
Introduction to Social Media for Boggs CenterIntroduction to Social Media for Boggs Center
Introduction to Social Media for Boggs CenterDiscoverAbility NJ
 
Social media: Should I friend my boss on Facebook
Social media: Should I friend my boss on FacebookSocial media: Should I friend my boss on Facebook
Social media: Should I friend my boss on FacebookCheryl Lawson
 
[1] Concurrent 2 29 April2009 Slides
[1] Concurrent 2 29 April2009 Slides[1] Concurrent 2 29 April2009 Slides
[1] Concurrent 2 29 April2009 Slidesenglishonecfl
 
Water, water, everywhere
Water, water, everywhereWater, water, everywhere
Water, water, everywhereArvin Alpuerto
 
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...drsprasadi
 
ORÇAMENTO PÚBLICO E PARTICIPAÇÃO POPULAR
ORÇAMENTO PÚBLICO E PARTICIPAÇÃO POPULARORÇAMENTO PÚBLICO E PARTICIPAÇÃO POPULAR
ORÇAMENTO PÚBLICO E PARTICIPAÇÃO POPULARProfessora Josete
 
Agile days2012 obukhova_scrum_productivity v0.1
Agile days2012 obukhova_scrum_productivity v0.1Agile days2012 obukhova_scrum_productivity v0.1
Agile days2012 obukhova_scrum_productivity v0.1Anna Obukhova
 
Cert Specialization Rooms Division Managment - Trend College
Cert Specialization Rooms Division Managment - Trend CollegeCert Specialization Rooms Division Managment - Trend College
Cert Specialization Rooms Division Managment - Trend CollegeDr. Peter AIDS Foundation
 
Wonen, Welzijn en Zorg - Eerste schop in de grond
Wonen, Welzijn en Zorg - Eerste schop in de grondWonen, Welzijn en Zorg - Eerste schop in de grond
Wonen, Welzijn en Zorg - Eerste schop in de grondStipo
 
Extending Operators in Perl with Operator::Util
Extending Operators in Perl with Operator::UtilExtending Operators in Perl with Operator::Util
Extending Operators in Perl with Operator::UtilNova Patch
 
ТЕМА 8. ТЕЛЕВИДЕНИЕ И РАДИО В СОВРЕМЕННЫХ КОММУНИКАЦИЯХ
ТЕМА 8. ТЕЛЕВИДЕНИЕ И РАДИО В СОВРЕМЕННЫХ КОММУНИКАЦИЯХТЕМА 8. ТЕЛЕВИДЕНИЕ И РАДИО В СОВРЕМЕННЫХ КОММУНИКАЦИЯХ
ТЕМА 8. ТЕЛЕВИДЕНИЕ И РАДИО В СОВРЕМЕННЫХ КОММУНИКАЦИЯХUsanov Aleksey
 
Savings Mobilization Expansion
Savings Mobilization ExpansionSavings Mobilization Expansion
Savings Mobilization ExpansionMABSIV
 
Эскизы студийных декораций программы "7дней"
Эскизы студийных декораций программы "7дней"Эскизы студийных декораций программы "7дней"
Эскизы студийных декораций программы "7дней"Usanov Aleksey
 
NRT 2011: Micro-deposit Initiatives: Cantilan Bank
NRT 2011: Micro-deposit Initiatives: Cantilan BankNRT 2011: Micro-deposit Initiatives: Cantilan Bank
NRT 2011: Micro-deposit Initiatives: Cantilan BankMABSIV
 
Интегрированные коммуникации - модуль 2
Интегрированные коммуникации - модуль 2Интегрированные коммуникации - модуль 2
Интегрированные коммуникации - модуль 2Usanov Aleksey
 

Destacado (20)

MEIO AMBIENTE
MEIO AMBIENTEMEIO AMBIENTE
MEIO AMBIENTE
 
Autonomia de escola
Autonomia de escolaAutonomia de escola
Autonomia de escola
 
Introduction to Social Media for Boggs Center
Introduction to Social Media for Boggs CenterIntroduction to Social Media for Boggs Center
Introduction to Social Media for Boggs Center
 
Social media: Should I friend my boss on Facebook
Social media: Should I friend my boss on FacebookSocial media: Should I friend my boss on Facebook
Social media: Should I friend my boss on Facebook
 
[1] Concurrent 2 29 April2009 Slides
[1] Concurrent 2 29 April2009 Slides[1] Concurrent 2 29 April2009 Slides
[1] Concurrent 2 29 April2009 Slides
 
Water, water, everywhere
Water, water, everywhereWater, water, everywhere
Water, water, everywhere
 
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
Arogyasmarana Marathi Bestseller On Superhealth Dr. Shriniwas Kashalikar & Dr...
 
ORÇAMENTO PÚBLICO E PARTICIPAÇÃO POPULAR
ORÇAMENTO PÚBLICO E PARTICIPAÇÃO POPULARORÇAMENTO PÚBLICO E PARTICIPAÇÃO POPULAR
ORÇAMENTO PÚBLICO E PARTICIPAÇÃO POPULAR
 
Agile days2012 obukhova_scrum_productivity v0.1
Agile days2012 obukhova_scrum_productivity v0.1Agile days2012 obukhova_scrum_productivity v0.1
Agile days2012 obukhova_scrum_productivity v0.1
 
Cert Specialization Rooms Division Managment - Trend College
Cert Specialization Rooms Division Managment - Trend CollegeCert Specialization Rooms Division Managment - Trend College
Cert Specialization Rooms Division Managment - Trend College
 
Wonen, Welzijn en Zorg - Eerste schop in de grond
Wonen, Welzijn en Zorg - Eerste schop in de grondWonen, Welzijn en Zorg - Eerste schop in de grond
Wonen, Welzijn en Zorg - Eerste schop in de grond
 
bySIM Mobile Payments
bySIM Mobile PaymentsbySIM Mobile Payments
bySIM Mobile Payments
 
Extending Operators in Perl with Operator::Util
Extending Operators in Perl with Operator::UtilExtending Operators in Perl with Operator::Util
Extending Operators in Perl with Operator::Util
 
ТЕМА 8. ТЕЛЕВИДЕНИЕ И РАДИО В СОВРЕМЕННЫХ КОММУНИКАЦИЯХ
ТЕМА 8. ТЕЛЕВИДЕНИЕ И РАДИО В СОВРЕМЕННЫХ КОММУНИКАЦИЯХТЕМА 8. ТЕЛЕВИДЕНИЕ И РАДИО В СОВРЕМЕННЫХ КОММУНИКАЦИЯХ
ТЕМА 8. ТЕЛЕВИДЕНИЕ И РАДИО В СОВРЕМЕННЫХ КОММУНИКАЦИЯХ
 
Savings Mobilization Expansion
Savings Mobilization ExpansionSavings Mobilization Expansion
Savings Mobilization Expansion
 
Эскизы студийных декораций программы "7дней"
Эскизы студийных декораций программы "7дней"Эскизы студийных декораций программы "7дней"
Эскизы студийных декораций программы "7дней"
 
NRT 2011: Micro-deposit Initiatives: Cantilan Bank
NRT 2011: Micro-deposit Initiatives: Cantilan BankNRT 2011: Micro-deposit Initiatives: Cantilan Bank
NRT 2011: Micro-deposit Initiatives: Cantilan Bank
 
Интегрированные коммуникации - модуль 2
Интегрированные коммуникации - модуль 2Интегрированные коммуникации - модуль 2
Интегрированные коммуникации - модуль 2
 
Test
TestTest
Test
 
Trading StocksSemanal08/02/2013
Trading StocksSemanal08/02/2013Trading StocksSemanal08/02/2013
Trading StocksSemanal08/02/2013
 

Similar a Escalabilidade via Software no Expressov3

Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Flávio Lisboa
 
Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”elliando dias
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2Maurício Linhares
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na WebMeritt - Cada Aluno é Único
 
Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3Flávio Lisboa
 
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)Caio Candido
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Marcelo Dieder
 
Introducao banco de dados
Introducao banco de dadosIntroducao banco de dados
Introducao banco de dadosvaniakenob
 
Modelos de computação distribuída no Hadoop
Modelos de computação distribuída no HadoopModelos de computação distribuída no Hadoop
Modelos de computação distribuída no HadoopBig Data Week São Paulo
 
[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de DadosDeep Tech Brasil
 
SMIT 2012 - Novas Tecnologias - Windows Server 2012
SMIT 2012 -  Novas Tecnologias - Windows Server 2012SMIT 2012 -  Novas Tecnologias - Windows Server 2012
SMIT 2012 - Novas Tecnologias - Windows Server 2012Tharsis Barros
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infosimples
 
ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)Flávio Lisboa
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Ambiente Livre
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpCampus Party Brasil
 

Similar a Escalabilidade via Software no Expressov3 (20)

Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3Escalabilidade via Software no ExpressoV3
Escalabilidade via Software no ExpressoV3
 
Webinar RHEV na IT Web
Webinar RHEV na IT WebWebinar RHEV na IT Web
Webinar RHEV na IT Web
 
Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”Bancos de Dados em “Clouds”
Bancos de Dados em “Clouds”
 
B Ds Clouds
B Ds CloudsB Ds Clouds
B Ds Clouds
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2
 
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
2º Meritt CC - NoSQL - E o Futuro dos Bancos de Dados na Web
 
Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3Tirando água da rocha: escalabilidade via software no ExpressoV3
Tirando água da rocha: escalabilidade via software no ExpressoV3
 
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
 
Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?Como criar infraestrutura de sites para receber milhões de usuários?
Como criar infraestrutura de sites para receber milhões de usuários?
 
Introducao banco de dados
Introducao banco de dadosIntroducao banco de dados
Introducao banco de dados
 
Modelos de computação distribuída no Hadoop
Modelos de computação distribuída no HadoopModelos de computação distribuída no Hadoop
Modelos de computação distribuída no Hadoop
 
Proposta de arquitetura Hadoop
Proposta de arquitetura HadoopProposta de arquitetura Hadoop
Proposta de arquitetura Hadoop
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados[DTC21] André Marques - Jornada do Engenheiro de Dados
[DTC21] André Marques - Jornada do Engenheiro de Dados
 
SMIT 2012 - Novas Tecnologias - Windows Server 2012
SMIT 2012 -  Novas Tecnologias - Windows Server 2012SMIT 2012 -  Novas Tecnologias - Windows Server 2012
SMIT 2012 - Novas Tecnologias - Windows Server 2012
 
Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)Infraestrutura em nuvem com Amazon Web Services (AWS)
Infraestrutura em nuvem com Amazon Web Services (AWS)
 
ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)ExpressoBR para Um Milhão (de Usuários)
ExpressoBR para Um Milhão (de Usuários)
 
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
 
ClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs PhpClusterizaçãO De AplicaçõEs Php
ClusterizaçãO De AplicaçõEs Php
 
Clusterização de Aplicações PHP
Clusterização de Aplicações PHPClusterização de Aplicações PHP
Clusterização de Aplicações PHP
 

Más de Flávio Lisboa

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPFlávio Lisboa
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaFlávio Lisboa
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasFlávio Lisboa
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoFlávio Lisboa
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHPFlávio Lisboa
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework LaminasFlávio Lisboa
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?Flávio Lisboa
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Flávio Lisboa
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHPFlávio Lisboa
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoFlávio Lisboa
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPFlávio Lisboa
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamFlávio Lisboa
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosFlávio Lisboa
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosFlávio Lisboa
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosFlávio Lisboa
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasFlávio Lisboa
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadoresFlávio Lisboa
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)Flávio Lisboa
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Flávio Lisboa
 

Más de Flávio Lisboa (20)

Criando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHPCriando testes integrados de APIs com PHP
Criando testes integrados de APIs com PHP
 
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e ArgentinaCooperativas de Software Livre: Uma comparação entre Brasil e Argentina
Cooperativas de Software Livre: Uma comparação entre Brasil e Argentina
 
Aprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com LaminasAprenda a afiar suas garras com Laminas
Aprenda a afiar suas garras com Laminas
 
Ciência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com métodoCiência e software livre: desenvolvendo com método
Ciência e software livre: desenvolvendo com método
 
Turbinando microsserviços em PHP
Turbinando microsserviços em PHPTurbinando microsserviços em PHP
Turbinando microsserviços em PHP
 
O que esperar do framework Laminas
O que esperar do framework LaminasO que esperar do framework Laminas
O que esperar do framework Laminas
 
PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?PHP Conference Brazil - What can we expect about framework Laminas?
PHP Conference Brazil - What can we expect about framework Laminas?
 
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
Algoritmos Genéticos em PHP - PHP Conference Brasil 2019
 
Criando microsserviços em PHP
Criando microsserviços em PHPCriando microsserviços em PHP
Criando microsserviços em PHP
 
Como se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundoComo se tornar o pior programador PHP do mundo
Como se tornar o pior programador PHP do mundo
 
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHPA demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
A demanda da santa entrega Batman: bugs e gargalos em aplicações PHP
 
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperamComunicação e padrões em código aberto: quando convergente e divergente cooperam
Comunicação e padrões em código aberto: quando convergente e divergente cooperam
 
Criação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dadosCriação de robôs em PHP para raspagem de dados
Criação de robôs em PHP para raspagem de dados
 
Amanhecer esmeralda
Amanhecer esmeraldaAmanhecer esmeralda
Amanhecer esmeralda
 
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de DadosEstudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
Estudo de Caso: Utilização de PHP no Serviço Federal de Processamento de Dados
 
Arquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviçosArquitetura PHP para um mundo orientado a microsserviços
Arquitetura PHP para um mundo orientado a microsserviços
 
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoasSemeando Liberdade: Como (e onde) o software livre inclui as pessoas
Semeando Liberdade: Como (e onde) o software livre inclui as pessoas
 
O que é programação de computadores
O que é programação de computadoresO que é programação de computadores
O que é programação de computadores
 
Economia em rede (comunidade)
Economia em rede (comunidade)Economia em rede (comunidade)
Economia em rede (comunidade)
 
Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)Aplicações Corporativas em PHP (CRM e ERP)
Aplicações Corporativas em PHP (CRM e ERP)
 

Escalabilidade via Software no Expressov3

  • 1. Líder em soluções de TI para governo Escalabilidade via Software no Expresso V3 Palestrante: Flávio Gomes da Silva Lisboa
  • 4. O que é o Tine 2.0? É uma suíte de comunicação e colaboração e um CRM. Possui módulos de Recursos Humanos, Inventário, Vendas, Cursos, Projetos, Rastreabilidade de Tempo de Atendimento e VOIP.
  • 11. Desafio Sustentar um milhão... de usuários
  • 13. Desafio Atender mais usuários sem degradar a performance
  • 14. Restrição Banco de dados relacional não escalável no ambiente considerado
  • 15. Restrição Não impedir mudanças de backend no futuro
  • 17. Mudanças de Arquitetura 1) Separar domínios 2) Dividir o banco de dados
  • 18. 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.
  • 19. Configuration Arquitetura de Multidomínio Backend Frontend Single Application Domain 1 DB LDAP IMAP SMTP Domain n DB LDAP IMAP SMTP Domain 2 DB LDAP IMAP SMTP
  • 21. 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.
  • 24. O que é Shard? ● Linhas de uma tabela distribuídas em dois ou mais BDs; ● Tabelas ficam com menos registros; ● Distribuição da carga entre vários SGBDs; ● Consultas paralelas; ● Consultas com JOINS entre BDs podem ser ineficientes;
  • 25. Sharding é Tetris, mas ao contrário
  • 27. Premissas do Projeto: a) Usar shard é opcional: Ambientes pequenos não necessitam da complexidade do shard; A ausência de shard será o caso particular de uso de um único shard. Dados globais serão replicados para cada shard. b) Serão utilizados virtual shards Virtual shards usarão tabelas de mapeamento. c) Granularidade a nível de usuário/domínio: A chave do shard deve ser por usuário/domínio; d) Domínio geograficamente distribuído: A infraestrutura de um domínio pode estar distribuída em várias regiões geográficas, interligadas via redes WAN;
  • 28. Premissas do Projeto: e) Implementar inicialmente shard apenas para BD: f) Não criar obstáculos para mudanças de backends: Deve ser abstrato para não gerar obstáculos que impeçam sua extensão para operar com Sistemas de Arquivos, IMAP, LDAP, etc... g) Minimizar o uso de JOINS entre shards: Essa é uma operação que pode ser muito custosa. Deve ser evitada; h) Não criar um fork da comunidade: i) Os convidados de eventos de calendário são sempre tratados como externos.
  • 29. Admin Addressbook Setup Tinebase ActiveSync Calendar Não criar um fork da comunidade: Expressomail Felamimail Webconference Messenger
  • 31. Desafios: ● Direcionamento de usuário para seu frontend Web; ● Como implementar? ● Escolha da chave de shard; ● Quais campos usar? ● Estratégia de distribuição; ● Mapeamento de usuário x backends? Função matemática? ● Usar Virtual Shard? ● Gerenciamento de auto incremento; ● Implementar ou Remover? ● Queries distribuídas; ● Estender SQL? Implementações específicas do domínio da aplicação?
  • 32. Estratégia de mapeamento: Como distribuir os usuários/domínio de forma balanceada entre os shards. ● Virtual Shard ● Usuário/Domínio X Virtual Shard X BD; ● No de Shards >= No Máx de BDs; ● Objetivo é evitar ter que reorganizar um grande volume de informações ao fazer um resharding. ● Estratégia de Mapeamento de usuário x backends ● Usando Virtual Shard: ● Mapear no LDAP usuário/domínio x Virtual Shard; ● Mapear Virtual Shard x BD; ● Sem usar Virtual Shard: ● Mapear no LDAP usuário/domínio x BD; ● Granularidade de resharding a nível de usuário/domínio; ● Problema de Gargalo de ponto central (LDAP);
  • 33. Estratégia de mapeamento: ● Estratégia de Função matemática ● Usando Virtual Shard: ● Mod(Hash(CHAVE_SHARD)) → Virtual Shard; ● Mapear Virtual Shard x BD; ● Granularidade de resharding a nível de Virtual Shard; ● Mantém duas versões do Mapeamento durante o resharding; ● Sem usar Virtual Shard: ● Mod(Hash(CHAVE_SHARD)) →BD; ● O resharding se torna muito complexo; ● Vantagem de não precisar buscar informações de associação em LDAP;
  • 34. Queries distribuídas – Banco de Dados: ● Estender SQL ● WHERE determina roteamento de consultas para vários shards; ● JOINS ● Entre shards, executados localmente (baixo desempenho); ● Com tabelas replicadas, executados remotamente (custo de replicação); ● GROUP BY, Funções de Agregação e ORDER BY executados localmente; ● Gerenciamento de memória (Resultados grandes); ● Gerenciamento de timeout: LAN, WAN; ● Transporte de consultas em Web Services para requisições através de Rede WAN; ● Vantagens: ● Evita/Minimiza alteração da implementação da aplicação Tine20; ● Desvantages: ● Específico para BD. Não suporta backends LDAP, IMAP, Arquivo; ● Implementação complexa; ● Menor desempenho e maior uso de rede por não reduzir, de forma distribuída, as consultas (não usa Map/Reduce);
  • 35. Queries distribuídas: ● Implementar consultas específicas: ● Criar Web Services para tratar consultas específicas do Tine20; ● Gerenciamento de Timeout: LAN, WAN; ● Agrupamento distribuído e local (Map/Reduce); ● Map/Reduce: Implementar ou usar solução de terceiro? ● Ordenação executada localmente; ● Gerenciamento de memória (Resultados grandes); ● Vantagens: ● Mais fácil de adaptar para outros backends (Arquivo, LDAP, IMAP); ● Mais simples de implementar que um parser SQL; ● Map/Reduce pode melhorar desempenho; ● Map/Reduce pode diminuir tráfego de rede; ● Web Service suporta nativamente consultas geograficamente distribuídas; ● Desvantages: ● Precisa alterar a implementação da aplicação Tine20; ● Para cada nova consulta, requer um novo esforço de implementação;
  • 37. Integridade Referencial: ● Implementar na aplicação: ● Transferir para a aplicação Tine20 a responsabilidade por garantir a Integridade Referencial entre shards; ● Vantagem: ● A aplicação não cria inconsistências no BD; ● Desvantagens: ● Necessidade de alterar o código fonte do Tine20; ● Processamento extra prejudica desempenho; ● Acessos diretos ao BD não garantem integridade; ● Remover do BD: ● Remover a verificação de Integridade Referencial entre shards; ● Vantagens: ● Maior desempenho; ● Não necessita nenhuma implementação; ● Desvantages: ● A Integridade não é garantida. Um erro pode levar o BD a inconsistência;
  • 38. Resharding usando Virtual Shard : ● Adição de novo backend: ● Mover linhas (amarelas) da tabela para o novo BD e apontar o Virtual Shard (amarelo) para o novo BD; ● Função Matemática Mod(Hash(Chave_Shard)) decide, de forma automática, para qual Virtual Shard cada requisição da aplicação deve ser encaminhada;
  • 39. Resharding usando Virtual Shard : ● Adição de novo backend: ● Mover linhas (amarelas) da tabela para o novo BD e apontar o Virtual Shard (amarelo) para o novo BD; ● Atualizar, no LDAP, associação de Usuário/Domínio X Virtual Shard;
  • 40. Resharding sem Virtual Shard: ● Adição de novo backend: ● Mover linhas (amarelas) para o novo BD e atualiza o LDAP para apontar os dois usuários/domínio para o novo BD;
  • 41. Replicação de Informações Globais: ● Replicar todas informações globais: ● Frequência de replicação de cada informação; ● Como implementar a replicação de informações globais que estão atualmente em tabelas que também possuem informações de shard?
  • 42. Replicação de Informações Globais – Banco de Dados: ● Replicação de todas informações Globais em todos Shards: ● Aumenta necessidade de espaço de armazenamento; ● Minimiza JOINS entre Shards; ● Alto custo de replicação;
  • 43. Replicação de Informações Globais – Banco de Dados: ● Replicação de informações Globais entre WANs (em cinza): ● Maior quantidade de JOINS entre Shards; ● Custo de replicação via WAN;
  • 44. Alta Disponibilidade – Banco de Dados: ● Organizar os BDs em arquitetura de Cluster; ● Links de rede redundantes (LANs e WANs); ● Backup individual de cada shard;
  • 45. Escopo do Projeto – Macro Atividades: 1) Permitir vários bancos de dados 2) Criar camada de abstração para banco de dados 3) Criar backend separado para ACL 4) Criar backend separado para containers 5) Modificar consultas para ambiente distribuído 6) Reduzir acesso ao banco de dados 7) Tratar conteúdo compartilhado 8) Direcionamento de usuário para seu frontend Web 9) Implementar script de resharding 10) Revisar arquitetura e implementação de sharding
  • 46. ESCOPO DO PROJETO Planejamento de execução e dependências entre tarefas 1 2 3 4 5 6 7 8 9 10 5 6 7 88 9 10 11 1 2 3 4 5 6 7 8 9 10