SlideShare uma empresa Scribd logo
1 de 44
Os pecados mortais de escalabilidade em
Drupal e seus efeitos nos negócios
Mayara Campos
CIO
Kickante
Handrus Nogueira
Diretor Comercial
Taller
Handrus
Floripa! -SC / BR
Business Developer / Consultant @ Taller
Web & Open-Source & Agile
~12 anos de estrada
Drupaleiro a ~8 anos
Dev with Passion!
Somos um ateliê de negócios digitais que
transforma
ideias em projetos inovadores.
55 modulos
2 temas
710 commits em módulos
3 commits no Drupal 8 Core e 1 commit no Drupal 6 core.
http://oqueedrupal.org http://drupaldeelite.com.br
http://blog.taller.net.br
As vezes esse símbolo remete a lágrimas...
Como vamos analisar os problemas?
Descrição
O problema encontrado
Custo
1 dia de desenvolvimento
1 dia de consultoria = 2 dias de desenvolvimento
Causa Raiz
Aonde começou o problema e como evita-lo.
Solução proposta
Resolução do problema de vez.
Revisions
Descrição
O sistema de revisions do drupal adiciona um peso enorme ao banco
de dados e não é flexível.
1. Tudo ou nada - Todos os campos de uma entidade têm
revisões… ou nenhum deles tem revisões
2. Não existe uma forma simples de remover revisões antigas ou
criar regras para dizer que estão obsoletas
3. Crescimento linear do número de tabelas
Banco de dados lento, sistema lento, instancia de DB crescendo sem
parar!
Revisions
Custo
Mapear entidades que não necessitavam de revisions
Implementação de módulo, deploy, execução de scripts de deleção
em lote (de madrugada), pesquisa de solução
Infra-estrutura - Instancia de RDS acima do necessário (últimos 6
meses)
Revisions
Causa Raíz
Drupal é despreparado para escalar revisões que necessitam permanecer
armazenadas por longo período de tempo.
Revisions
Solução Proposta
Curto prazo: Field SQL No Revisions, script para deleção manual de
revisions.
Definitiva: Fields deveria ter a opção de permitir ou não revisions.
Implementar uma solução para deletar revisions integrada com
rules (deletar após x tempo, após alteração de status, definir
quantidade máxima de revisões no sistema etc)
Diff
Descrição
Não há um log listando usuário, data e alterações feitas que seja
amigável para buscas. Mudanças em field collections e entidades
relacionadas não são exibidas
1. Procurar alterações (para termos legais por exemplo) é difícil e
as vezes requer buscas diretamente em banco.
2. Logs nada amigáveis e interface dificil de usar
3. Impossível fazer um dump ou gerar evidências textuais (arquivo
.diff seria muito a pedir?)
Diff
Custo
Descobrir o problema e arrumar as pressas
Só que isso aconteceu 16 vezes!
Diff
Causa Raíz
Interface de diff nada amigável!
Log é mais do que uma lista de usuário e data de alteração!
Busca? Hein?
Diff
Solução Proposta
Curto prazo: Chorar?!
Definitiva: Armazenar “snapshots” das alterações em formato .diff.
Gerar um log mais extenso (autor de cada modificação por campo,
data, histórico por field) e repensar toda a interface! Blame seria um
ótimo começo!
Arquivar revisions e gerar diff em ferramentas especializadas.
Metamodelagem de banco e escalabilidade
Descrição
One size does not fit all!.
Só temos uma opção de metamodelagem padrão. Caso você queira
assumir o controle disse você deve declarar storage, tratar
persistência… para cada entidade, sem reaproveitamento!
Banco de dados lento, sistema lento, instancia de DB crescendo sem
parar!
Metamodelagem de banco e escalabilidade
Custo
Tunar mysql para *muitas* tabelas, joins, adicionar indíces.
Impossibilidade de gerar relatórios com ferramentas externas
otimizadas para isso
Combinar relatórios diferentes em ferrametas externas
294x
160x
Metamodelagem de banco e escalabilidade
Custo
460
dias
Metamodelagem de banco e escalabilidade
Causa Raíz
Muuuuuuitas tabelas, dados dificeis de mapear, estouro de memória pela
quantidade de joins.
PS.: Não estamos falando de exibir informações… estamos falando de BI
Metamodelagem de banco e escalabilidade
Solução Proposta
Curto prazo: Hook em entity save salvando dados em um DB
noSQL?
Definitiva: Deveria ser mais fácil declarar entidades com diferentes
storages, e estratégias de modelagem. Idealmente criariamos uma
interface extensível. A mesma classe implementando a interface
poderia ser reaproveitada em quantas entidades fossem
necessárias. (Hard Core! MUITO hard core!)
Falhas de desenvolvimento…
(não de desenvolvedor!)
Dependencia de variáveis de ambiente
Descrição
Verificações feitas em cima de strings que definem URL, arrays de
domínios, vset sem formulário administrativo etc
1. Subir um ambiente de dev, stage...
2. Criar uma solução whitelabel...
3. Alterar servidor, domínio, URL, senha, chave de integração etc.
Dependencia de variáveis de ambiente
Custo
Pesquisar alterações, gerar relatórios, encontrar evidências
diretamente em Banco…
Imprevisibilidade - furos em estimativas, custo de oportunidade!
Dependencia de variáveis de ambiente
Causa Raíz
Pressão para entregas rápidas.
Falta de documentação e gerenciamento de débitos técnicos.
Dependencia de variáveis de ambiente
Solução Proposta
Curto prazo: Arrumar às pressas. Documentar os débitos técnicos.
Definitiva: Negociar tempo para resolução de débitos técnicos.
Investir tempo e dinheiro nas resoluções.
Aumentar risco do projeto (X% a mais em estimativas).
Más práticas
Descrição/Custo
Duplicação de módulos
Diferenciação de módulos duplicados
Updates parciais de módulos (aplicar patches de diferentes versões,
ao invés de fazer o update)
Más práticas
Causa Raíz
Pressão por entregas.
Codificar de madrugada.
Falta de documentação e gerenciamento de débitos técnicos.
Más práticas
Solução Proposta
Definitiva: Remover módulos duplicados, atualizar módulos,
verificação com módulo “Hacked!”. Muito trabalho. Retestar toda a
aplicação.
Agenda
a. Necessidade de escaladas verticais
i. ⅓ do seu hardware (EC2 front e back) - 61
ii. Máquina cron - 10,20
iii. Instancia maior de RDS - 3 dias
b. Impossibilidade de escalar
i. Onde a kickante estaria se conseguisse manter o crescimento? - 209
1. Conclusão
Acúmulo de problemas
Descrição
O time de desenvolvimento fica com medo de estimar.
O comercial fica com medo de passar um prazo.
O cliente precisa reservar budget… logo ele precisa de uma
estimativa e um prazo...
Acúmulo de problemas
Custo
Conversas e reuniões com discussões intermináveis sobre prazo.
Reuniões e relatórios explicando atrasos.
Vendas perdidas (pelo cliente)
35x
Acúmulo de problemas
Causa Raíz
Pressão por resultados em cima de um sistema instável e desconhecido.
EXTREMA INCERTEZA
Acúmulo de problemas
Solução Proposta
Compartilhar prejuízos.
Vamos arrumar os problemas causados
pelo Drupal?
Porque??
Compensa ter tanto trabalho?
Conclusão
Quantos sites enfrentam problemas
assim?
365.039 sites feitos em Drupal 7.
576.399 sites feitos em Drupal.
604 entre os 10k maiores sites do mundo.
Conclusão
Quantos sites enfrentam problemas
assim?
Vamos assumir que… menos de 0,1% dos sites enfrentem
problemas parecidos, causados pelo Drupal (vamos deixar erros de
customização/extensão do Drupal).
58 sites!
Conclusão
Quantos se gasta com problemas assim?
Vamos assumir que… esses sites tenham tido somente metade dos
custos que tivemos.
(794 dias de Dev/2) * 58...
Conclusão
Quantos sites enfrentam problemas
assim?
23.026
dias de desenvolvimento!!
Conclusão
15,22 anos
De um time de 6 pessoas (sem gerentes).
Conclusão
Mas… e o Drupal 8?
1. Mesmo modelo de revisions
2. Mesma forma de usar diff
3. Mesma meta modelagem
4. Alto acomplamento (por enquanto)
= Mesmos problemas!
Conclusão
Vamos fazer algo a respeito?
Conclusão
Vamos fazer algo a respeito?
1. Sua empresa investiria?
2. Você investiria (tempo ou dinheiro)?
3. Vamos organizar hackathons, grupos, mentorias…?
4. Vem pra Kickante! Vem pra Taller! Vem pras iniciativas
virtuais!
5. Crowdfunding??
Conclusão
Perguntas?
Obrigado!
Handrus Nogueira
Diretor Comercial
Taller
@handrus
handrus at taller.net.br
https://br.linkedin.com/in/handrus
https://branded.me/handrus

Mais conteúdo relacionado

Mais procurados

Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2André Dias
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsLeonardo Comelli
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develJose Augusto Carvalho
 
DevOps - A Origem
DevOps - A OrigemDevOps - A Origem
DevOps - A OrigemAndré Dias
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)André Dias
 
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariDrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariTaller Negócio Digitais
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIAlefe Variani
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webRodrigo Branas
 
DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?Thiago Ganzarolli
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develJose Augusto Carvalho
 
Scrum Na Globo.Com - Estudo de caso
Scrum Na Globo.Com - Estudo de casoScrum Na Globo.Com - Estudo de caso
Scrum Na Globo.Com - Estudo de casoDanilo Bardusco
 
O que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBMO que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBMFelipe Freire
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funcionaRodrigo Serradura
 
DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014Rodrigo Campos
 
React e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer CirclesReact e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer CirclesJosé Barbosa
 
Enterprise Scrum - Recife Summer School
Enterprise Scrum - Recife Summer SchoolEnterprise Scrum - Recife Summer School
Enterprise Scrum - Recife Summer SchoolDanilo Bardusco
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Better Developer
 
Scrum na Globo.com - Derrubando mitos - UPDATED
Scrum na Globo.com - Derrubando mitos - UPDATEDScrum na Globo.com - Derrubando mitos - UPDATED
Scrum na Globo.com - Derrubando mitos - UPDATEDDanilo Bardusco
 

Mais procurados (20)

Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
Tudo o que você precisa saber sobre Scrum e Visual Studio ALM – Parte 1/2
 
IFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOpsIFSP 2015 - Cultura DevOps
IFSP 2015 - Cultura DevOps
 
Cultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e develCultura DevOps - Integração entre infra e devel
Cultura DevOps - Integração entre infra e devel
 
DevOps - A Origem
DevOps - A OrigemDevOps - A Origem
DevOps - A Origem
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
 
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian FerrariDrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
DrupalCamp SP 2015 - DevOps, por onde começar? Por Sebastian Ferrari
 
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia IIDevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
DevOps II - Ambientes padronizados e Monitoramento da Aplicação | Monografia II
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Introdução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações webIntrodução ao desenvolvimento de aplicações web
Introdução ao desenvolvimento de aplicações web
 
DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?DevOps, NoOps...afinal que raios é isso?
DevOps, NoOps...afinal que raios é isso?
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e devel
 
Scrum Na Globo.Com - Estudo de caso
Scrum Na Globo.Com - Estudo de casoScrum Na Globo.Com - Estudo de caso
Scrum Na Globo.Com - Estudo de caso
 
O que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBMO que é DevOps? Introdução à abordagem pela IBM
O que é DevOps? Introdução à abordagem pela IBM
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funciona
 
DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014DevOps no mundo real - QCON 2014
DevOps no mundo real - QCON 2014
 
React e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer CirclesReact e reactividade Meetup Facebook Developer Circles
React e reactividade Meetup Facebook Developer Circles
 
Enterprise Scrum - Recife Summer School
Enterprise Scrum - Recife Summer SchoolEnterprise Scrum - Recife Summer School
Enterprise Scrum - Recife Summer School
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?
 
Scrum na Globo.com - Derrubando mitos - UPDATED
Scrum na Globo.com - Derrubando mitos - UPDATEDScrum na Globo.com - Derrubando mitos - UPDATED
Scrum na Globo.com - Derrubando mitos - UPDATED
 

Destaque

Núcleo de Criação - Agilidade Além da TI
Núcleo de Criação - Agilidade Além da TINúcleo de Criação - Agilidade Além da TI
Núcleo de Criação - Agilidade Além da TITaller Negócio Digitais
 
Case Campanha de Vacinação FIESC/SESI SC
Case Campanha de Vacinação FIESC/SESI SCCase Campanha de Vacinação FIESC/SESI SC
Case Campanha de Vacinação FIESC/SESI SCTaller Negócio Digitais
 
A arte do começo- DrupalCamp Campinas 2016
A arte do começo-  DrupalCamp Campinas 2016A arte do começo-  DrupalCamp Campinas 2016
A arte do começo- DrupalCamp Campinas 2016Taller Negócio Digitais
 
Superando o GitFlow - DrupalCamp Campinas 2016
Superando o GitFlow - DrupalCamp Campinas 2016 Superando o GitFlow - DrupalCamp Campinas 2016
Superando o GitFlow - DrupalCamp Campinas 2016 Taller Negócio Digitais
 
11 maneiras de compartilhar conhecimento - Agile Trends 2016
11 maneiras de compartilhar conhecimento - Agile Trends 201611 maneiras de compartilhar conhecimento - Agile Trends 2016
11 maneiras de compartilhar conhecimento - Agile Trends 2016Taller Negócio Digitais
 
A importância da Transparência na cultura ágil
A importância da Transparência na cultura ágilA importância da Transparência na cultura ágil
A importância da Transparência na cultura ágilTaller Negócio Digitais
 
Kanban no fluxo único de portfolio de projetos
Kanban no fluxo único de portfolio de projetosKanban no fluxo único de portfolio de projetos
Kanban no fluxo único de portfolio de projetosTaller Negócio Digitais
 
Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?Taller Negócio Digitais
 
A importância da transparência na cultura ágil - 2º Agile Floripa
A importância da transparência na cultura ágil - 2º Agile FloripaA importância da transparência na cultura ágil - 2º Agile Floripa
A importância da transparência na cultura ágil - 2º Agile FloripaTaller Negócio Digitais
 
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016Taller Negócio Digitais
 
Implementando o Desenvolvimento Lean de Software - Do conceito ao dinheiro
Implementando o Desenvolvimento Lean de Software - Do conceito ao dinheiroImplementando o Desenvolvimento Lean de Software - Do conceito ao dinheiro
Implementando o Desenvolvimento Lean de Software - Do conceito ao dinheiroTaller Negócio Digitais
 
Kanban no Fluxo Único - sessão Show me your board, Agile Trends 2016
Kanban no Fluxo Único - sessão Show me your board, Agile Trends 2016Kanban no Fluxo Único - sessão Show me your board, Agile Trends 2016
Kanban no Fluxo Único - sessão Show me your board, Agile Trends 2016Taller Negócio Digitais
 

Destaque (14)

Núcleo de Criação - Agilidade Além da TI
Núcleo de Criação - Agilidade Além da TINúcleo de Criação - Agilidade Além da TI
Núcleo de Criação - Agilidade Além da TI
 
Case Campanha de Vacinação FIESC/SESI SC
Case Campanha de Vacinação FIESC/SESI SCCase Campanha de Vacinação FIESC/SESI SC
Case Campanha de Vacinação FIESC/SESI SC
 
A arte do começo- DrupalCamp Campinas 2016
A arte do começo-  DrupalCamp Campinas 2016A arte do começo-  DrupalCamp Campinas 2016
A arte do começo- DrupalCamp Campinas 2016
 
Superando o GitFlow - DrupalCamp Campinas 2016
Superando o GitFlow - DrupalCamp Campinas 2016 Superando o GitFlow - DrupalCamp Campinas 2016
Superando o GitFlow - DrupalCamp Campinas 2016
 
11 maneiras de compartilhar conhecimento - Agile Trends 2016
11 maneiras de compartilhar conhecimento - Agile Trends 201611 maneiras de compartilhar conhecimento - Agile Trends 2016
11 maneiras de compartilhar conhecimento - Agile Trends 2016
 
Taller talk - Site/blog 2.0
Taller talk - Site/blog 2.0Taller talk - Site/blog 2.0
Taller talk - Site/blog 2.0
 
A importância da Transparência na cultura ágil
A importância da Transparência na cultura ágilA importância da Transparência na cultura ágil
A importância da Transparência na cultura ágil
 
Kanban no fluxo único de portfolio de projetos
Kanban no fluxo único de portfolio de projetosKanban no fluxo único de portfolio de projetos
Kanban no fluxo único de portfolio de projetos
 
Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?Trabalhando a cultura do feedback. Por onde começar?
Trabalhando a cultura do feedback. Por onde começar?
 
A importância da transparência na cultura ágil - 2º Agile Floripa
A importância da transparência na cultura ágil - 2º Agile FloripaA importância da transparência na cultura ágil - 2º Agile Floripa
A importância da transparência na cultura ágil - 2º Agile Floripa
 
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
Kanban no Fluxo Unificado de Portfolio de Projetos - Agile Brazil 2016
 
Implementando o Desenvolvimento Lean de Software - Do conceito ao dinheiro
Implementando o Desenvolvimento Lean de Software - Do conceito ao dinheiroImplementando o Desenvolvimento Lean de Software - Do conceito ao dinheiro
Implementando o Desenvolvimento Lean de Software - Do conceito ao dinheiro
 
Kanban no Fluxo Único - sessão Show me your board, Agile Trends 2016
Kanban no Fluxo Único - sessão Show me your board, Agile Trends 2016Kanban no Fluxo Único - sessão Show me your board, Agile Trends 2016
Kanban no Fluxo Único - sessão Show me your board, Agile Trends 2016
 
Lean Branding
Lean BrandingLean Branding
Lean Branding
 

Semelhante a Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios

Programando com prazer com DDD
Programando com prazer com DDDProgramando com prazer com DDD
Programando com prazer com DDDGiovanni Bassi
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservicestdc-globalcode
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
Banco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e RefatoraçãoBanco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e Refatoraçãoelliando dias
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceCarolina Karklis
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisrafaelberlanda
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsHerval Freire
 
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaTdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaDextra Sistemas / Etec Itu
 
QCon 2011
QCon 2011QCon 2011
QCon 2011Ismael
 
Gerenciando Portais Liferay com Soluções de Performance Digital
Gerenciando Portais Liferay com Soluções de Performance DigitalGerenciando Portais Liferay com Soluções de Performance Digital
Gerenciando Portais Liferay com Soluções de Performance DigitalDynatrace Latin America
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven DesignAndré Borgonovo
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaJosé Roberto Araújo
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineFrederico Maia Arantes
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à práticaMario Guedes
 
Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Diego Pacheco
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosEiti Kimura
 

Semelhante a Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios (20)

Programando com prazer com DDD
Programando com prazer com DDDProgramando com prazer com DDD
Programando com prazer com DDD
 
TDC2016SP - Trilha Microservices
TDC2016SP - Trilha MicroservicesTDC2016SP - Trilha Microservices
TDC2016SP - Trilha Microservices
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
Banco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e RefatoraçãoBanco de Dados Ágeis e Refatoração
Banco de Dados Ágeis e Refatoração
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
 
Joomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portaisJoomla Day Brasil 2010: Customizações para grandes portais
Joomla Day Brasil 2010: Customizações para grandes portais
 
Padrões De Projeto e Anti Patterns
Padrões De Projeto e Anti PatternsPadrões De Projeto e Anti Patterns
Padrões De Projeto e Anti Patterns
 
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério NizzolaTdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
Tdc Future 2021 - simples soluções grandes resultados - Márcio Rogério Nizzola
 
Servico ad
Servico adServico ad
Servico ad
 
QCon 2011
QCon 2011QCon 2011
QCon 2011
 
Gerenciando Portais Liferay com Soluções de Performance Digital
Gerenciando Portais Liferay com Soluções de Performance DigitalGerenciando Portais Liferay com Soluções de Performance Digital
Gerenciando Portais Liferay com Soluções de Performance Digital
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Matando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejistaMatando web forms e modernizando um grande varejista
Matando web forms e modernizando um grande varejista
 
Design Patterns
Design PatternsDesign Patterns
Design Patterns
 
PHPZEIRO: Adote um framework
PHPZEIRO: Adote um frameworkPHPZEIRO: Adote um framework
PHPZEIRO: Adote um framework
 
Cloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App EngineCloud Computing - Java no Google App Engine
Cloud Computing - Java no Google App Engine
 
Big data da teoria à prática
Big data  da teoria à práticaBig data  da teoria à prática
Big data da teoria à prática
 
Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0Vivenciando dev ops para além da automação de infraestrutura 2.0
Vivenciando dev ops para além da automação de infraestrutura 2.0
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
 

Mais de Taller Negócio Digitais

Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Taller Negócio Digitais
 
De um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQLDe um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQLTaller Negócio Digitais
 
Alinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream KanbanAlinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream KanbanTaller Negócio Digitais
 
Como a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetivaComo a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetivaTaller Negócio Digitais
 
Práticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiançaPráticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiançaTaller Negócio Digitais
 
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017Taller Negócio Digitais
 
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLVacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLTaller Negócio Digitais
 
Taller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de softwareTaller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de softwareTaller Negócio Digitais
 
Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017Taller Negócio Digitais
 
Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017Taller Negócio Digitais
 
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento  - TDC Florianópolis 201711 maneiras de compartilhar conhecimento  - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017Taller Negócio Digitais
 

Mais de Taller Negócio Digitais (18)

Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
Indo além do técnico para desenvolver sistemas que evoluem na velocidade do...
 
Discovery kanban
Discovery kanbanDiscovery kanban
Discovery kanban
 
Taller Negócios Digitais
Taller Negócios DigitaisTaller Negócios Digitais
Taller Negócios Digitais
 
De um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQLDe um sistema legado para micro serviços com GraphQL
De um sistema legado para micro serviços com GraphQL
 
Next.js with drupal, the good parts
Next.js with drupal, the good partsNext.js with drupal, the good parts
Next.js with drupal, the good parts
 
Gestão Ágil com Fluxo Unificado
Gestão Ágil com Fluxo UnificadoGestão Ágil com Fluxo Unificado
Gestão Ágil com Fluxo Unificado
 
Alinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream KanbanAlinhando Discovery com Delivery usando Upstream Kanban
Alinhando Discovery com Delivery usando Upstream Kanban
 
Lições Aprendidas com Fluxo Unificado
Lições Aprendidas com Fluxo UnificadoLições Aprendidas com Fluxo Unificado
Lições Aprendidas com Fluxo Unificado
 
Como a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetivaComo a liderança descentralizada tornou a Taller mais efetiva
Como a liderança descentralizada tornou a Taller mais efetiva
 
Métricas no Fluxo Unificado
Métricas no Fluxo UnificadoMétricas no Fluxo Unificado
Métricas no Fluxo Unificado
 
Práticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiançaPráticas e ferramentas de feedback: potencializando a cultura da confiança
Práticas e ferramentas de feedback: potencializando a cultura da confiança
 
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
Como preparar seu time para receber feedback - Scrum Gathering Rio 2017
 
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQLVacinando mais de 200 mil pessoas com ReactJS e GraphQL
Vacinando mais de 200 mil pessoas com ReactJS e GraphQL
 
Taller – Treinamentos e consultorias
Taller – Treinamentos e consultoriasTaller – Treinamentos e consultorias
Taller – Treinamentos e consultorias
 
Taller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de softwareTaller - Ateliê de desenvolvimento de software
Taller - Ateliê de desenvolvimento de software
 
Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017Introdução ao Fluxo Unificado - TDC Florianópolis 2017
Introdução ao Fluxo Unificado - TDC Florianópolis 2017
 
Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017Javascript Funcional - TDC Florianópolis 2017
Javascript Funcional - TDC Florianópolis 2017
 
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento  - TDC Florianópolis 201711 maneiras de compartilhar conhecimento  - TDC Florianópolis 2017
11 maneiras de compartilhar conhecimento - TDC Florianópolis 2017
 

Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios

  • 1. Os pecados mortais de escalabilidade em Drupal e seus efeitos nos negócios Mayara Campos CIO Kickante Handrus Nogueira Diretor Comercial Taller
  • 2. Handrus Floripa! -SC / BR Business Developer / Consultant @ Taller Web & Open-Source & Agile ~12 anos de estrada Drupaleiro a ~8 anos Dev with Passion!
  • 3. Somos um ateliê de negócios digitais que transforma ideias em projetos inovadores. 55 modulos 2 temas 710 commits em módulos 3 commits no Drupal 8 Core e 1 commit no Drupal 6 core. http://oqueedrupal.org http://drupaldeelite.com.br http://blog.taller.net.br
  • 4. As vezes esse símbolo remete a lágrimas...
  • 5. Como vamos analisar os problemas? Descrição O problema encontrado Custo 1 dia de desenvolvimento 1 dia de consultoria = 2 dias de desenvolvimento Causa Raiz Aonde começou o problema e como evita-lo. Solução proposta Resolução do problema de vez.
  • 6. Revisions Descrição O sistema de revisions do drupal adiciona um peso enorme ao banco de dados e não é flexível. 1. Tudo ou nada - Todos os campos de uma entidade têm revisões… ou nenhum deles tem revisões 2. Não existe uma forma simples de remover revisões antigas ou criar regras para dizer que estão obsoletas 3. Crescimento linear do número de tabelas Banco de dados lento, sistema lento, instancia de DB crescendo sem parar!
  • 7. Revisions Custo Mapear entidades que não necessitavam de revisions Implementação de módulo, deploy, execução de scripts de deleção em lote (de madrugada), pesquisa de solução Infra-estrutura - Instancia de RDS acima do necessário (últimos 6 meses)
  • 8. Revisions Causa Raíz Drupal é despreparado para escalar revisões que necessitam permanecer armazenadas por longo período de tempo.
  • 9. Revisions Solução Proposta Curto prazo: Field SQL No Revisions, script para deleção manual de revisions. Definitiva: Fields deveria ter a opção de permitir ou não revisions. Implementar uma solução para deletar revisions integrada com rules (deletar após x tempo, após alteração de status, definir quantidade máxima de revisões no sistema etc)
  • 10. Diff Descrição Não há um log listando usuário, data e alterações feitas que seja amigável para buscas. Mudanças em field collections e entidades relacionadas não são exibidas 1. Procurar alterações (para termos legais por exemplo) é difícil e as vezes requer buscas diretamente em banco. 2. Logs nada amigáveis e interface dificil de usar 3. Impossível fazer um dump ou gerar evidências textuais (arquivo .diff seria muito a pedir?)
  • 11. Diff Custo Descobrir o problema e arrumar as pressas Só que isso aconteceu 16 vezes!
  • 12. Diff Causa Raíz Interface de diff nada amigável! Log é mais do que uma lista de usuário e data de alteração! Busca? Hein?
  • 13. Diff Solução Proposta Curto prazo: Chorar?! Definitiva: Armazenar “snapshots” das alterações em formato .diff. Gerar um log mais extenso (autor de cada modificação por campo, data, histórico por field) e repensar toda a interface! Blame seria um ótimo começo! Arquivar revisions e gerar diff em ferramentas especializadas.
  • 14. Metamodelagem de banco e escalabilidade Descrição One size does not fit all!. Só temos uma opção de metamodelagem padrão. Caso você queira assumir o controle disse você deve declarar storage, tratar persistência… para cada entidade, sem reaproveitamento! Banco de dados lento, sistema lento, instancia de DB crescendo sem parar!
  • 15. Metamodelagem de banco e escalabilidade Custo Tunar mysql para *muitas* tabelas, joins, adicionar indíces. Impossibilidade de gerar relatórios com ferramentas externas otimizadas para isso Combinar relatórios diferentes em ferrametas externas 294x 160x
  • 16. Metamodelagem de banco e escalabilidade Custo 460 dias
  • 17. Metamodelagem de banco e escalabilidade Causa Raíz Muuuuuuitas tabelas, dados dificeis de mapear, estouro de memória pela quantidade de joins. PS.: Não estamos falando de exibir informações… estamos falando de BI
  • 18. Metamodelagem de banco e escalabilidade Solução Proposta Curto prazo: Hook em entity save salvando dados em um DB noSQL? Definitiva: Deveria ser mais fácil declarar entidades com diferentes storages, e estratégias de modelagem. Idealmente criariamos uma interface extensível. A mesma classe implementando a interface poderia ser reaproveitada em quantas entidades fossem necessárias. (Hard Core! MUITO hard core!)
  • 20. Dependencia de variáveis de ambiente Descrição Verificações feitas em cima de strings que definem URL, arrays de domínios, vset sem formulário administrativo etc 1. Subir um ambiente de dev, stage... 2. Criar uma solução whitelabel... 3. Alterar servidor, domínio, URL, senha, chave de integração etc.
  • 21. Dependencia de variáveis de ambiente Custo Pesquisar alterações, gerar relatórios, encontrar evidências diretamente em Banco… Imprevisibilidade - furos em estimativas, custo de oportunidade!
  • 22. Dependencia de variáveis de ambiente Causa Raíz Pressão para entregas rápidas. Falta de documentação e gerenciamento de débitos técnicos.
  • 23. Dependencia de variáveis de ambiente Solução Proposta Curto prazo: Arrumar às pressas. Documentar os débitos técnicos. Definitiva: Negociar tempo para resolução de débitos técnicos. Investir tempo e dinheiro nas resoluções. Aumentar risco do projeto (X% a mais em estimativas).
  • 24. Más práticas Descrição/Custo Duplicação de módulos Diferenciação de módulos duplicados Updates parciais de módulos (aplicar patches de diferentes versões, ao invés de fazer o update)
  • 25. Más práticas Causa Raíz Pressão por entregas. Codificar de madrugada. Falta de documentação e gerenciamento de débitos técnicos.
  • 26. Más práticas Solução Proposta Definitiva: Remover módulos duplicados, atualizar módulos, verificação com módulo “Hacked!”. Muito trabalho. Retestar toda a aplicação.
  • 27.
  • 28. Agenda a. Necessidade de escaladas verticais i. ⅓ do seu hardware (EC2 front e back) - 61 ii. Máquina cron - 10,20 iii. Instancia maior de RDS - 3 dias b. Impossibilidade de escalar i. Onde a kickante estaria se conseguisse manter o crescimento? - 209 1. Conclusão
  • 29. Acúmulo de problemas Descrição O time de desenvolvimento fica com medo de estimar. O comercial fica com medo de passar um prazo. O cliente precisa reservar budget… logo ele precisa de uma estimativa e um prazo...
  • 30. Acúmulo de problemas Custo Conversas e reuniões com discussões intermináveis sobre prazo. Reuniões e relatórios explicando atrasos. Vendas perdidas (pelo cliente) 35x
  • 31. Acúmulo de problemas Causa Raíz Pressão por resultados em cima de um sistema instável e desconhecido. EXTREMA INCERTEZA
  • 32. Acúmulo de problemas Solução Proposta Compartilhar prejuízos.
  • 33. Vamos arrumar os problemas causados pelo Drupal?
  • 35. Conclusão Quantos sites enfrentam problemas assim? 365.039 sites feitos em Drupal 7. 576.399 sites feitos em Drupal. 604 entre os 10k maiores sites do mundo.
  • 36. Conclusão Quantos sites enfrentam problemas assim? Vamos assumir que… menos de 0,1% dos sites enfrentem problemas parecidos, causados pelo Drupal (vamos deixar erros de customização/extensão do Drupal). 58 sites!
  • 37. Conclusão Quantos se gasta com problemas assim? Vamos assumir que… esses sites tenham tido somente metade dos custos que tivemos. (794 dias de Dev/2) * 58...
  • 38. Conclusão Quantos sites enfrentam problemas assim? 23.026 dias de desenvolvimento!!
  • 39. Conclusão 15,22 anos De um time de 6 pessoas (sem gerentes).
  • 40. Conclusão Mas… e o Drupal 8? 1. Mesmo modelo de revisions 2. Mesma forma de usar diff 3. Mesma meta modelagem 4. Alto acomplamento (por enquanto) = Mesmos problemas!
  • 42. Conclusão Vamos fazer algo a respeito? 1. Sua empresa investiria? 2. Você investiria (tempo ou dinheiro)? 3. Vamos organizar hackathons, grupos, mentorias…? 4. Vem pra Kickante! Vem pra Taller! Vem pras iniciativas virtuais! 5. Crowdfunding??
  • 44. Perguntas? Obrigado! Handrus Nogueira Diretor Comercial Taller @handrus handrus at taller.net.br https://br.linkedin.com/in/handrus https://branded.me/handrus

Notas do Editor

  1. Total 11
  2. Total 11
  3. Total 11
  4. Total 11
  5. Total 11
  6. Total 11