Múltiplos inquilinos - Multitenancy

A multilocação de software é uma arquitetura de software na qual uma única instância do software é executada em um servidor e atende a vários locatários. Os sistemas projetados dessa maneira são "compartilhados" (em vez de "dedicados" ou "isolados"). Um locatário é um grupo de usuários que compartilham um acesso comum com privilégios específicos para a instância do software. Com uma arquitetura multitenant, um aplicativo de software é projetado para fornecer a cada locatário um compartilhamento dedicado da instância - incluindo seus dados, configuração, gerenciamento de usuário, funcionalidade individual do locatário e propriedades não funcionais . A multilocação contrasta com arquiteturas de várias instâncias, em que instâncias de software separadas operam em nome de diferentes locatários.

Alguns comentaristas consideram a multilocação um recurso importante da computação em nuvem .

Adoção

História de aplicativos multilocatários

Os aplicativos multilocatários evoluíram de - e combinam algumas características de - três tipos de serviços:

  1. Compartilhamento de tempo : a partir da década de 1960, as empresas alugavam espaço e capacidade de processamento em computadores mainframe ( compartilhamento de tempo ) para reduzir despesas de computação. Freqüentemente, eles também reutilizavam os aplicativos existentes, simplesmente com um campo de entrada separado na tela de logon para especificar um ID de conta do cliente. Com base nessa identificação, os contadores do mainframe poderiam cobrar dos clientes individuais pelo uso de CPU, memória e disco / fita realmente incorrido.
  2. Aplicativos hospedados : a partir da década de 1990, os provedores de serviços de aplicativos (ASPs) tradicionais aplicativos hospedados (então existentes) em nome de seus clientes. Dependendo da limitação do aplicativo subjacente, os ASPs eram forçados a hospedar aplicativos em máquinas separadas (se várias instâncias dos aplicativos não pudessem ser executadas na mesma máquina física) ou como processos separados . Os aplicativos multilocatários representam uma arquitetura mais madura que possibilita um serviço semelhante com menor custo operacional.
  3. Aplicativos da Web : aplicativos populares da Web voltados para o consumidor (como Hotmail ) desenvolvidos com uma única instância de aplicativo atendendo a todos os clientes. Os aplicativos multilocatários representam uma evolução natural desse modelo, oferecendo personalização adicional para grupos de usuários dentro (digamos) da mesma organização cliente.

Diferenciação de virtualização

Em um ambiente de multilocação, vários clientes compartilham o mesmo aplicativo, executado no mesmo sistema operacional, no mesmo hardware, com o mesmo mecanismo de armazenamento de dados. A distinção entre os clientes é alcançada durante o design do aplicativo, portanto, os clientes não compartilham ou veem os dados uns dos outros. Compare isso com a virtualização em que os componentes são transformados, permitindo que cada aplicativo do cliente pareça ser executado em uma máquina virtual separada.

Diferenciação competitiva

Algumas empresas promovem ativamente o princípio da multilocação e o utilizam como uma fonte de diferenciação competitiva. O uso de multilocação está aumentando dia a dia.

Economia da multilocação

Poupança de custos

A multilocação permite economia de custos além das economias básicas de escala alcançáveis ​​com a consolidação de recursos de TI em uma única operação. Uma instância de aplicativo geralmente incorre em uma certa quantidade de memória e sobrecarga de processamento que pode ser substancial quando multiplicada por muitos clientes, especialmente se os clientes forem pequenos. A multilocação reduz essa sobrecarga ao distribuí-la por muitos clientes. Outras economias de custo podem vir dos custos de licenciamento do software subjacente (como sistemas operacionais e sistemas de gerenciamento de banco de dados). Simplificando, se você pode executar tudo em uma única instância de software, você só precisa comprar uma licença de software . A economia de custos pode ser eclipsada pela dificuldade de dimensionar a única instância conforme a demanda aumenta - aumentar o desempenho da instância em um único servidor só pode ser feito com a compra de hardware mais rápido, como CPUs rápidas, mais memória e sistemas de disco mais rápidos, e normalmente esses custos crescem mais rápido do que se a carga fosse dividida entre vários servidores com aproximadamente a mesma capacidade agregada. Além disso, o desenvolvimento de sistemas multilocatários é mais complexo e os testes de segurança são mais rigorosos devido ao fato de que os dados de vários clientes estão sendo misturados.

Agregação de dados / mineração de dados

Um dos motivos mais convincentes para os fornecedores / ISVs utilizarem a multilocação é para os benefícios de agregação de dados inerentes . Em vez de coletar dados de várias fontes de dados, com esquemas de banco de dados potencialmente diferentes , todos os dados de todos os clientes são armazenados em um único esquema de banco de dados. Portanto, executar consultas em clientes, minerar dados e procurar tendências é muito mais simples. Esse motivo é provavelmente exagerado, visto que um dos principais requisitos de multilocação é a necessidade de impedir o acesso do provedor de serviços às informações do cliente (inquilino). Além disso, é comum separar o banco de dados operacional do banco de dados de mineração (geralmente por causa de características de carga de trabalho diferentes), enfraquecendo ainda mais o argumento.

Complexidade

Devido à complexidade adicional de customização e à necessidade de manter metadados por locatário , os aplicativos multilocatários requerem um esforço de desenvolvimento maior. Considerações como sequenciamento de dados baseado em vetor, infraestrutura de algoritmo criptografável e interfaces de controle virtualizadas devem ser levadas em consideração.

Gerenciamento de liberação

A multilocação simplifica o processo de gerenciamento de versões. Em um processo de gerenciamento de versão tradicional, os pacotes contendo alterações de código e banco de dados são distribuídos para desktops clientes e / ou máquinas de servidor; no caso de instância única, seria uma máquina servidor por cliente. Esses pacotes devem então ser instalados em cada máquina individual. Com o modelo multilocatário, o pacote normalmente só precisa ser instalado em um único servidor. Isso simplifica muito o processo de gerenciamento de liberação e a escala não depende mais do número de clientes.

Ao mesmo tempo, a multilocação aumenta os riscos e impactos inerentes à aplicação de uma nova versão de lançamento. Como há uma única instância de software atendendo a vários locatários, uma atualização nesta instância pode causar tempo de inatividade para todos os locatários, mesmo se a atualização for solicitada e útil para apenas um locatário. Além disso, alguns bugs e problemas resultantes da aplicação da nova versão podem se manifestar na visualização personalizada do aplicativo por outros locatários. Devido ao possível tempo de inatividade , o momento de aplicar a liberação pode ser restrito dependendo da programação de uso de tempo de mais de um locatário.

Requisitos

Costumização

Os aplicativos multilocatários normalmente são necessários para fornecer um alto grau de personalização para dar suporte às necessidades de cada organização de destino. A personalização normalmente inclui os seguintes aspectos:

  • Branding: permitindo que cada organização para personalizar o look-and-feel do aplicativo para coincidir com a sua marca corporativa (muitas vezes referido como um "distinto da pele ").
  • Fluxo de trabalho : acomodando diferenças no fluxo de trabalho a ser usado por uma ampla gama de clientes em potencial.
  • Extensões ao modelo de dados : suporte a um modelo de dados extensível para dar aos clientes a capacidade de personalizar os elementos de dados gerenciados pelo aplicativo para atender às suas necessidades específicas.
  • Controle de acesso : permite que cada organização cliente personalize de forma independente os direitos e restrições de acesso para cada usuário .

Qualidade de serviço

Espera-se que os aplicativos multilocatários forneçam isolamento adequado de segurança , robustez e desempenho entre vários locatários, o que é fornecido pelas camadas abaixo do aplicativo no caso de aplicativos multi-instância.

Virtualização

Os custos de reprojetar aplicativos para multilocação podem ser significativos, especialmente para fornecedores de software que continuam a oferecer uma versão de inquilino único local de seu produto. Eles acabam sendo forçados a suportar dois produtos distintos com todos os custos resultantes.

Uma rota alternativa cada vez mais viável para multilocação que elimina a necessidade de mudanças arquitetônicas significativas é usar a tecnologia de virtualização para hospedar várias instâncias isoladas de um aplicativo em um ou mais servidores. De fato, quando os aplicativos são reempacotados como dispositivos virtuais, a mesma imagem do dispositivo pode ser implantada em locais hospedados por ISVs, locais ou de terceiros confiáveis ​​e até mesmo migrada de um local de implantação para outro ao longo do tempo.

Veja também

Referências