O documento discute a evolução do Mercado Eletrônico de uma arquitetura SaaS para PaaS para atender melhor as necessidades de customização de grandes clientes corporativos. O documento descreve como o Mercado Eletrônico usa metadados e materialização dinâmica de código para permitir customizações flexíveis sem comprometer a escalabilidade.
5. Enterprise
• “enterprise software is often available as a
suite of customizable programs” (Wikipedia)
• Grande necessidade de customização
• Integração com ERPs também customizados
• Restrições “técnicas” (firewalls... browsers...)
• No Brasil adoramos customizar
6. SaaS: Software as a Service
• “Era só um website...”
• Single-instance
• Multi-tenant
+ Funcionalidade padrão
-Custo de operação e investimento inicial
• Similar: SalesForce (1999), Basecamp (2004)
12. Mais customizações / Limites
• Scripting
• Processadores de filas customizados
• OOP: class per client, interfaces
• Limitações
– Fluxos e entidades básicas tem de ser respeitados
– Disponibilidade de pessoal interno
– Audits / GMUDs
– Reuso
14. PaaS no Mercado Eletrônico
• Gerenciar customizações em todos os níveis
– Look and Feel
– Funcionalidades
– Modelos de dados
• Permitir compartilhamento de pacotes funcionais entre
clientes, ou top-down
• Agregar funcionalidade padrão comum (CRUD,
analytics, APIs – backend as a service)
• Desenvolvimento de customizações
por terceiros
15. Arquitetura a um KM de altura
Metadados
Pré-
definições
Dados
compartilhados
Código
Custom
Composição de Aplicações em
Tempo de Execução
Customizações
Dados
Metadados
20. Funcionalidades padrão
• Equivalente ao Scaffolding, mas em runtime
• CRUD
• Batch Load/Export
• Analytics
• API generation
– Criação dinâmica de uma Bus do Apache CXF
– REST (WADL) e SOAP (WSDL)
21. Customização
• Na materialização, capturar o bytecode gerado
• Entregar ao cliente um JAR com modelos e
interfaces geradas
• Receber outro JAR com suas extensões e
customizações
– Também dynamic languages da JVM
• Maven
• Edição online
22. Runtime
• Classloader
– Carregar bytecode gerado e customizações
– Manter múltiplas versões da mesma classe
• Security Manager
– Controlar acessos a rede, disco, dados
– Definir permissões dependendo do caller