(2016) • Especialização em Ciência de Dados e Analytics na UPE (2018) • Trabalho na Vinta Software (www.vinta.com.br) • Trabalhando com Python e Django desde 2012 • github.com/arineto
maturidade de aplicações SaaS ◦ Por que isso importa? • Arquiteturas Correlatas ◦ Multi-Tenancy X Multi-User ◦ Multi-Tenancy X Multi-Instance • Características Chaves ◦ Compartilhamento de Hardware e Aplicação ◦ Compartilhamento do Banco de Dados ◦ Escolha da Abordagem ◦ Alto Nível de Configurabilidade • Vantagens e Desvantagens
permite servir múltiplos tenants (clientes) através de uma única instância da aplicação e do banco de dados. Além disso, é possível configurar essa aplicação para atender as necessidades de cada tenant (Bezemer e Zaidman, 2010).
porte tem algum tipo de aplicação em Cloud Computing. Fonte: Global Technology Adoption Index, 2014. SaaS cresceu em 2014 cinco vezes mais rápido que o mercado de software tradicional. Fonte: Worldwide SaaS and Cloud Software 2015-2019 Forecast and 2014 Vendor Shares.
X Baixo grau de configurabilidade; • SLA específico por tenant X SLA único do sistema. Multi-Tenancy X Multi-Instance • Instância única X Múltiplas instâncias; • Obs: É possível simular Multi-Tenancy numa aplicação Multi-Instance através de virtualização.
Melhor utilização dos recursos de hardware • Abordagens: ◦ Aplicação compartilhada, mas bancos de dados separados; ◦ Aplicação e banco compartilhados, mas tabelas separadas; ◦ Aplicação, banco e tabelas compartilhados. Compartilhamento de Hardware e Aplicação
de cada cliente fisicamente separado • Desvantagem: Necessidade de provisionar e conectar um novo banco para cada cliente Banco compartilhado com schemas separadas • Vantagem: Facilidade para manter e escalar, além de dados dos clientes isolados • Desvantagem: Backup lento para grande quantidade de schemas Banco compartilhado com tabelas compartilhadas • Vantagem: Facilidade de manutenção e consultas globais • Desvantagem: Cuidado com as queries para evitar vazamento de dados entre clientes
clientes • Manutenção simplificada • Redução dos custos de infra e manutenção • Maximiza utilização dos recursos Desvantagens: • Software mais complexo • Identificação de gargalos e fatores limitantes não trivial • Custo inicial para reestruturação de aplicação legada elevado
database multitenancy (Blog da Vinta) • Multitenancy: Juggling customer data in Django (Blog da Vinta) • Multitenant applications: how and why (Talk de Xima na PyCon Australia) Libs: • Django Multi Tenant (Lib da minha monografia) • Django Shared Schema Tenants (Lib de Bessa) • Django Tenant Schemas