Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PUG-PE Multi Tenancy

PUG-PE Multi Tenancy

Talk about Multi-Tenancy at the PUG-PE

Arimatea Neto

May 12, 2018
Tweet

More Decks by Arimatea Neto

Other Decks in Technology

Transcript

  1. Sobre • Arimatea Neto • Ciência da Computação na UFPE

    (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
  2. Agenda • Introdução a Multi-Tenancy ◦ Definição ◦ Níveis de

    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
  3. Definição Multi-Tenancy é um modelo organizacional de aplicações SaaS que

    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).
  4. Por que isso importa? 90% da empresas brasileiras de médio

    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.
  5. Arquiteturas Correlatas Multi-Tenancy X Multi-User • Alto grau de configurabilidade

    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.
  6. • Servidor e aplicação compartilhados para todos os tenants •

    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
  7. Escolha da Abordagem Bancos de dados separados • Vantagem: Dados

    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
  8. Alto Nível de Configurabilidade • Configuração e customização da aplicação

    • Opções integradas ao design do produto • Configuração através de metadados • Código único, sem alterações específicas para clientes
  9. Vantagens X Desvantagens Vantagens: • Facilidade para entrada de novos

    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
  10. Materiais e Libs Materiais: • Minha monografia :D • Understanding

    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