Controlando o acesso com o padrão de serviço do invólucro do banco de dados - AWS Orientação prescritiva

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Controlando o acesso com o padrão de serviço do invólucro do banco de dados

Um serviço de wrapper é uma camada de serviço que atua como uma fachada para o banco de dados. Essa abordagem é particularmente valiosa quando você precisa manter a funcionalidade existente enquanto se prepara para a futura decomposição. Esse padrão segue um princípio simples: quando algo está muito confuso, comece por conter a bagunça. O serviço de wrapper se torna a única forma autorizada de acessar o banco de dados, fornecendo uma interface controlada e ocultando a complexidade subjacente.

Use esse padrão quando a decomposição imediata do banco de dados não for viável devido a esquemas complexos ou quando vários serviços exigirem acesso contínuo aos dados. É particularmente valioso durante os períodos de transição porque fornece tempo para uma refatoração cuidadosa, mantendo a estabilidade do sistema. O padrão funciona bem ao consolidar a propriedade de dados para equipes específicas ou quando novos aplicativos precisam de visualizações agregadas em várias tabelas.

Por exemplo, aplique esse padrão quando:

  • A complexidade do esquema impede a separação imediata

  • Várias equipes precisam de acesso contínuo aos dados

  • A modernização gradual é preferida

  • A reestruturação da equipe exige uma propriedade clara dos dados

  • Novos aplicativos precisam de visualizações de dados consolidadas

Benefícios e limitações do padrão de serviço do wrapper de banco de dados

A seguir estão os benefícios do padrão de invólucro do banco de dados:

  • Crescimento controlado — O serviço de wrapper evita novas adições não controladas ao esquema do banco de dados.

  • Limites claros — O processo de implementação ajuda você a estabelecer limites claros de propriedade e responsabilidade.

  • Liberdade de refatoração — Um serviço de embalagem permite que você faça alterações internas sem afetar os consumidores.

  • Observabilidade aprimorada — Um serviço de empacotamento é um ponto único para monitoramento e registro.

  • Teste simplificado — Um serviço de wrapper facilita o consumo de serviços para criar versões simplificadas e simuladas para testes.

A seguir estão as limitações do padrão de invólucro do banco de dados.

  • Acoplamento de tecnologia — Um serviço de empacotamento funciona melhor quando usa a mesma pilha de tecnologia dos serviços consumidores.

  • Sobrecarga inicial — O serviço de empacotamento requer infraestrutura adicional que pode afetar o desempenho.

  • Esforço de migração — Para implementar o serviço de embalagem, você deve coordenar as equipes para sair do acesso direto.

  • Desempenho — se o serviço de embalagem apresentar alto tráfego, uso intenso ou acesso frequente, os serviços de consumo podem apresentar baixo desempenho. Além do banco de dados, o serviço de wrapper deve lidar com paginação, cursores e conexões de banco de dados. Dependendo do seu caso de uso, ele pode não ser bem dimensionado e pode ser inadequado para cargas de trabalho de extração, transformação e carregamento (ETL).

Implementando o padrão de serviço do wrapper de banco de dados

Há duas fases para implementar o padrão de serviço do wrapper de banco de dados. Primeiro, você cria o serviço de encapsulamento de banco de dados. Em seguida, você direciona todo o acesso por meio dele e documenta os padrões de acesso.

Fase 1: Criação do serviço de encapsulamento de banco de dados

Crie uma camada de serviço leve que atue como guardiã do seu banco de dados. Inicialmente, ele deve espelhar todas as funcionalidades existentes. Esse serviço de wrapper se torna o ponto de acesso obrigatório para todas as operações do banco de dados, o que converte dependências diretas do banco de dados em dependências de nível de serviço. Implemente registro e monitoramento detalhados nessa camada para rastrear padrões de uso, métricas de desempenho e frequências de acesso. Mantenha seus procedimentos armazenados existentes, mas certifique-se de que eles sejam acessados somente por meio dessa nova interface de serviço.

Fase 2: Implementação do controle de acesso

Redirecione sistematicamente todo o acesso ao banco de dados por meio do serviço wrapper e, em seguida, revogue as permissões diretas do banco de dados de sistemas externos que acessam o banco de dados diretamente. Documente cada padrão de acesso e dependência à medida que os serviços são migrados. Esse acesso controlado permite a refatoração interna dos componentes do banco de dados sem interromper os consumidores externos. Por exemplo, comece com operações de baixo risco e somente para leitura, em vez de fluxos de trabalho transacionais complexos.

Fase 3: Monitorar o desempenho do banco de dados

Use o serviço wrapper como um ponto de monitoramento centralizado para o desempenho do banco de dados. Acompanhe as principais métricas, incluindo tempos de resposta de consultas, padrões de uso, taxas de erro e utilização de recursos. Configure alertas para limites de desempenho e padrões incomuns. Por exemplo, monitore consultas de execução lenta, utilização do pool de conexões e taxa de transferência de transações para identificar proativamente possíveis problemas.

Use essa visualização consolidada para otimizar o desempenho do banco de dados por meio de ajustes de consultas, ajustes de alocação de recursos e análise de padrões de uso. A natureza centralizada do serviço de embalagem facilita a implementação de melhorias e a validação de seu impacto em todos os consumidores, mantendo padrões de desempenho consistentes.

Melhores práticas para implementar um serviço de encapsulamento de banco de dados

As práticas recomendadas a seguir podem ajudá-lo a implementar um serviço de encapsulamento de banco de dados:

  • Comece pequeno — comece com um invólucro mínimo que simplesmente serve como proxy para a funcionalidade existente

  • Mantenha a estabilidade — mantenha a interface de serviço estável enquanto faz melhorias internas

  • Monitore o uso — implemente um monitoramento abrangente para entender os padrões de acesso

  • Propriedade clara — designe uma equipe dedicada para manter o invólucro e o esquema subjacente

  • Incentive o armazenamento local — Motive as equipes a armazenar seus dados em seus próprios bancos de dados

Exemplo baseado em cenários

Esta seção descreve um exemplo de como uma empresa fictícia, chamada AnyCompany Books, poderia usar o padrão de invólucro de banco de dados para controlar o acesso ao seu sistema de banco de dados monolítico. Na AnyCompany Books, existem três serviços essenciais: despacho, finanças e processamento de pedidos. Esses serviços compartilham o acesso a um banco de dados central. Cada serviço é mantido por uma equipe diferente. Com o tempo, eles modificam de forma independente o esquema do banco de dados para atender às suas necessidades específicas. Isso levou a uma rede emaranhada de dependências e a uma estrutura de banco de dados cada vez mais complexa.

Três aplicativos que compartilham o acesso a um banco de dados central com vários esquemas modificados.

O arquiteto corporativo ou de aplicativos da empresa reconhece a necessidade de decompor esse banco de dados monolítico. O objetivo deles é fornecer a cada serviço seu próprio banco de dados dedicado para melhorar a capacidade de manutenção e reduzir as dependências entre equipes. No entanto, eles enfrentam um desafio significativo: é quase impossível decompor o banco de dados enquanto as três equipes continuam a modificá-lo ativamente para seus projetos em andamento. As constantes mudanças de esquema e a falta de coordenação entre as equipes tornam extremamente arriscado tentar qualquer reestruturação significativa.

O arquiteto usa o padrão de serviço do wrapper do banco de dados para começar a controlar o acesso ao banco de dados monolítico. Primeiro, eles configuraram o serviço de encapsulamento de banco de dados para um módulo específico, chamado serviço de pedidos. Em seguida, eles redirecionam o serviço de processamento de pedidos para acessar o serviço de embalagem em vez de acessar diretamente o banco de dados. A imagem a seguir mostra a infraestrutura modificada.

Acesso ao banco de dados após a implementação do serviço wrapper.