Boas práticas de programação com Object Calisthenics
Desafio de crescer
1. Os desafios de crescer:
um estudo de caso da plataforma de
educação a distância redu
Guilherme Cavalcanti
Líder Técnico da plafaforma de aplicativos
2. Apresentações
• Guilherme Cavalcanti
• Desenvolvedor Web desde 2007
• Granduando, CIn-UFPE
• Co-fundador do Redu
• Líder técnico do time da
plataforma de aplicativos @ Redu
• Twitter/Delicious/Github:
• /guiocavalcanti
3. Histórico do Redu
• Plataforma de educação a
distância construída numa
estrtura de rede social
2010 @ Porto Digital
2009 @ CIn
4. Equipe
• 15 pessoas
• Designers
• Desenvolvedores
• Pesquisadores
• Negócio
Estamos contratando!
jobs@redu.com.br
12. Overview da arquitetura
Main server
Database
Job queue management system
Asynchronous e-mail delivering
system
Analytics server
Database
Analytics aplication
Private REST API
Models
Main application
Web front-end
Public REST API
Models
Controllers
Resource conversion
server
Document engine
Video engine
Static files server
Static files
Websocket server
PubSub
Engine
18. Problema 1: Velocidade
Main application
Web front-end
Public REST API
Models
Controllers
• Excessivamente
acoplado
• Problemas de deploy
• Complexo de
modificar
• Reuso pobre
19. Problema 2:
Plataforma de aplicativos
• Tudo deve ser uma plataforma para
novos aplicativos
• Disponibilizar API pública
21. Composição de serviços
• Isolamento de funcionalidades em
termos de serviços
• Comunicação através da rede
22. Serviço
For us service orientation means
encapsulating the data with the business
logic that operates on the data, with the
only access through a published service
interaface.
Werner Vogels, Amazon
23. Resultados esperados
• Times podem ser menores
• Usar as tecnologias que mais se adequam ao
problema
• Zero downtime deployment
• Complexidade dividida entre serviços
• Redução dos caminhos de comunicação
• Todas as funcionalidades já seriam plataform-
enabled
32. Exemplo:
activity stream
• Aplicação
• Logica de UI
• Chama o serviço
propriamente dito
• Serviço
• Regras de negócio e
comunicação
Server
Activity Stream application
Server
Activity Stream service
Databases server
Document
database
Authorization service
Message bus
33. Base de código isolada
• Times pequenos e
isolados
• Liberdade de escolha de
SGBD
• Decisões de projeto mais
descentralizadas
• Menos caminhos de
comunicação