0% acharam este documento útil (0 voto)
11 visualizações25 páginas

Modulo 8

O documento aborda a otimização de infraestrutura de TI, destacando a virtualização, containers e nuvem computacional. Ele explora as vantagens e desafios associados a cada tecnologia, bem como melhores práticas para alocação de recursos, monitoramento e otimização de I/O. Além disso, discute a importância da escolha adequada de serviços em nuvem e a implementação de caching distribuído para melhorar o desempenho.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
11 visualizações25 páginas

Modulo 8

O documento aborda a otimização de infraestrutura de TI, destacando a virtualização, containers e nuvem computacional. Ele explora as vantagens e desafios associados a cada tecnologia, bem como melhores práticas para alocação de recursos, monitoramento e otimização de I/O. Além disso, discute a importância da escolha adequada de serviços em nuvem e a implementação de caching distribuído para melhorar o desempenho.
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Otimização de

Banco de Dados

Otimização de Infraestrutura
Módulo 8
Otimização de Infraestrutura
Otimização de Infraestrutura
Virtualização
Introdução à Infraestrutura Moderna

A infraestrutura de TI evoluiu
significativamente nas últimas décadas:

De servidores físicos dedicados para


ambientes virtualizados

De aplicações monolíticas para


containers e microserviços

De data centers próprios para


nuvem computacional

Foco em otimização de recursos e


desempenho
Otimização de Infraestrutura
Virtualização

Virtualização
Tecnologia que permite criar versões
virtuais de recursos de computação,
como servidores, sistemas
operacionais, dispositivos de
armazenamento ou recursos de rede.

Permite executar múltiplos sistemas


operacionais em um único hardware físico

Gerenciada por um hipervisor (VMM


- Virtual Machine Monitor)

Cada VM possui seu próprio sistema


operacional convidado e aplicações
Otimização de Infraestrutura
Virtualização
Vantagens da Virtualização para Bancos de Dados
Consolidação de Hardware: Múltiplos bancos
de dados menores podem compartilhar
um único servidor físico potente, reduzindo
custos de hardware e energia.
Flexibilidade e Provisionamento Rápido:
VMs podem ser criadas, clonadas e movidas
rapidamente, facilitando o desenvolvimento,
testes e recuperação de desastres.
Isolamento: Cada VM é isolada das outras,
garantindo que problemas em uma não
afetem as demais.
Mobilidade: VMs podem ser migradas
(vMotion, Live Migration) entre hosts físicos
sem tempo de inatividade.
Otimização de Infraestrutura
Virtualização
Desafios de Desempenho - Virtualização
Overhead do Hipervisor: Consome parte dos recursos do hardware físico,
introduzindo latência adicional.

Concorrência de Recursos (Resource Contention):Múltiplas VMs competindo


pelos mesmos recursos físicos podem degradar o desempenho.

I/O de Disco: Gargalo mais comum. A camada de virtualização adiciona


complexidade ao caminho do I/O.

Alocação de Recursos (CPU Ready/CPU Wait):VMs aguardando ciclos de CPU


ficam em "CPU Ready", impactando o desempenho.

Fragmentação de Memória: Alocação de memória para VMs pode não ser tão
eficiente quanto em hardware dedicado.
Otimização de Infraestrutura
Virtualização

Alocação de Recursos - CPU e Memória


CPU: Alocar vCPUs suficientes, mas
não excessivas

Memória: Reservar RAM para evitar


swapping no host

Evitar oversubscription que causa


CPU Ready

Utilizar reservas e limites de recursos

Exemplo:
Servidor físico: 64 GB RAM, 16 núcleos VM
de banco de dados: 32 GB RAM, 8 vCPUs
Reserva: 100% da RAM para garantir disponibilidade
Otimização de Infraestrutura
Virtualização
Otimização de I/O de Disco
Discos Virtuais Dedicados: Separar
dados, logs e arquivos temporários
Raw Device Mappings (RDM):
Acesso direto aos discos físicos
Controladores SCSI Virtuais:
Utilizar controladores de alto
desempenho
Armazenamento de Alta
Performance: SANs, NAS ou SSDs
Exemplo:
Configurar um RDM para o volume de dados do
PostgreSQL em uma VM VMware, permitindo que a
VM acesse o SAN diretamente, melhorando
significativamente o desempenho de I/O.
Otimização de Infraestrutura
Virtualização

Monitoramento em Ambientes Virtualizados


Além das métricas tradicionais do
banco de dados, é essencial monitorar:
CPU Ready Time: Tempo que a VM
aguarda por ciclos de CPU
Latência de I/O: Tempo para
operações de leitura/escrita
Uso de memória do host:
Ballooning e swapping

Exemplo:
Usar o vCenter para VMware ou ferramentas do
KVM/Proxmox para verificar o tempo de "CPU Ready" da VM.
Se estiver consistentemente acima de 5-10%, indica
necessidade de mais vCPUs ou menos oversubscription.
Otimização de Infraestrutura
Containers

O que são os Containers


Tecnologia de virtualização de sistema operacional
que permite empacotar uma aplicação e todas as
suas dependências em uma unidade
autocontida e isolada.
Compartilham o kernel do sistema
operacional do host
Mais leves e rápidos para iniciar que
VMs
Mais eficientes em termos de
recursos
Ideais para aplicações stateless, mas
desafiadores para bancos de dados
(stateful)

Arquitetura de Containers Docker


Otimização de Infraestrutura
Containers
Containers vs Máquinas Virtuais

Compartilhamento do Kernel:
Containers compartilham o kernel
do host, enquanto VMs têm seu
próprio sistema operacional completo.
Eficiência de Recursos: Containers
são mais leves e iniciam em
segundos, consumindo menos RAM e CPU.
Isolamento: VMs oferecem
isolamento mais forte, enquanto
containers têm isolamento mais leve.
Portabilidade: Containers são mais
portáteis e consistentes entre ambientes.

Comparação entre arquitetura de Containers e Máquinas Virtuais


Otimização de Infraestrutura
Containers
Vantagens dos Containers para Bancos de Dados

Portabilidade: Execução consistente em


qualquer ambiente compatível.
Início Rápido: Containers iniciam em
segundos, ideal para desenvolvimento.
Isolamento Leve: Bom isolamento sem o
overhead de uma VM completa.
Eficiência de Recursos: Menor consumo de
RAM e CPU pelo compartilhamento do kernel.
Automação e Orquestração: Facilita
deployment e gerenciamento de clusters.
Otimização de Infraestrutura
Containers
Desafios dos Containers em Produção
Persistência de Dados (Statefulness):
Bancos de dados precisam que seus dados
persistam mesmo se o container for destruído,
exigindo volumes persistentes.
I/O de Disco: O caminho do I/O através do
sistema de arquivos do host, do motor do
container e dos volumes pode introduzir latência.
Compartilhamento de Kernel: Embora
eficiente, pode ter implicações de segurança
e isolamento para dados sensíveis.
Monitoramento: Monitorar o banco de
dados dentro de um container exige
ferramentas e abordagens específicas.
Networking: A rede entre containers e para
o exterior pode exigir otimização.
Otimização de Infraestrutura
Containers
Volumes Persistentes em Containers
Volumes Dedicados: Não armazenar
dados no sistema de arquivos do
container (efêmero)
Armazenamento de Blocos Direto:
Volumes de bloco com alta
performance (SSDs, NVMe)
Otimização de I/O: Configurar
driver de armazenamento para alto
desempenho

# Exemplo Docker PostgreSQL


docker volume create pgdata
docker run -d --name meu_pg_container \
-v pgdata:/var/lib/postgresql/data \
-p 5432:5432 postgres:16
Otimização de Infraestrutura
Containers
Orquestração com Kubernetes
Kubernetes é uma plataforma de
orquestração de containers que
automatiza:
StatefulSets: Recurso para
gerenciar aplicações stateful como
bancos de dados.
Operadores de Banco de Dados:
Automatizam deployment, alta
disponibilidade e backups.

Exemplo:
Um operador PostgreSQL no Kubernetes
automatiza a criação de clusters com Master e
réplicas, gerenciando failover e recuperação.
Otimização de Infraestrutura
Nuvem Computacional
Nuvem Computacional
Serviços de computação (servidores,
armazenamento, bancos de dados,
rede) pela internet, geralmente em
um modelo de pagamento por uso
(pay-as-you-go).
Recursos sob demanda, escaláveis
conforme necessidade
Acesso remoto a recursos
computacionais
Redução de custos com
infraestrutura própria
Diversos modelos de serviço: IaaS,
PaaS, SaaS Infraestrutura de Nuvem Computacional
Otimização de Infraestrutura
Nuvem Computacional
Modelos de Serviços em Nuvem
IaaS (Infrastructure as a Service):
Provisiona VMs na nuvem e
instala/gerencia o banco de dados nelas.
Exemplo: EC2 (AWS) com Ubuntu e PostgreSQL.
PaaS (Platform as a Service): O
provedor gerencia a infraestrutura e
o SGBD. Você gerencia os dados e a
configuração.
Exemplo: Amazon RDS, Azure SQL
Database, Google Cloud SQL.
SaaS (Software as a Service): O
provedor gerencia tudo, incluindo o
software da aplicação e os dados.
Exemplo: Salesforce, serviços NoSQL
gerenciados.
Otimização de Infraestrutura
Nuvem Computacional
Vantagens da Nuvem para Bancos de Dados
Escalabilidade Elástica: Capacidade
de aumentar ou diminuir recursos
sob demanda.
Alta Disponibilidade: Replicação
multi-AZ, failover automático e
backups gerenciados.
Redução de Custos: Menos recursos
gastos em gerenciamento de
infraestrutura.
Segurança: Provedores investem
pesadamente em segurança física e
lógica.
Otimização de Infraestrutura
Nuvem Computacional
Desafios da Nuvem
Custo: Modelo pay-as-you-go flexível,
mas custo total pode ser alto se não
monitorado.
Latência de Rede: Maior latência se
aplicação e banco não estiverem na
mesma região.
Gerenciamento Limitado: Menos
controle sobre configurações de baixo
nível do SGBD.
Egress Costs: Transferência de dados
para fora da nuvem pode ter custos
significativos.
Otimização de Infraestrutura
Nuvem Computacional
Dimensionamento Correto em Nuvem
Escolha do Serviço Adequado:
Dimensionar corretamente a
instância (CPU, RAM, IOPS) para a
carga de trabalho.
Monitoramento para Scaling:
Acompanhar métricas para escalar
up ou down conforme necessidade.
Burst Capacity e Auto Scaling:
Utilizar recursos que permitem lidar
com picos de tráfego.
Exemplo:
Para uma aplicação web com picos de tráfego, usar
uma instância RDS com "Burst Capacity" ou "Auto
Scaling" de IOPS para lidar com variações de carga.
Otimização de Infraestrutura
Nuvem Computacional
Otimização de I/O em Nuvem
Tipos de Armazenamento:
Selecionar o tipo com o perfil de
IOPS adequado (ex: gp3 vs. io2 no
AWS EBS)
Tamanho do Volume:Aumentar o
tamanho do volume pode aumentar
os IOPS disponíveis
Monitoramento: Acompanhar
métricas como DiskReadOps ou
DiskWriteOps
Exemplo: Se as métricas de I/O
estão consistentemente altas,
aumentar a capacidade de IOPS
Otimização de Infraestrutura
Nuvem Computacional
Rede e Localidade em Nuvem
A localidade dos recursos é crucial para o desempenho:
Mesma Região/Zona: Manter a
aplicação e o banco de dados na
mesma região e, idealmente, na
mesma Zona de Disponibilidade para
minimizar a latência.
Réplicas de Leitura: Utilizar
endpoints de réplica de leitura para
balancear leituras e reduzir a carga
no Master.
Minimização de Latência: Escolher
regiões próximas aos usuários finais A latência de rede pode ser o maior gargalo de desempenho em
para reduzir o tempo de resposta. ambientes de nuvem.
Otimização de Infraestrutura
Nuvem Computacional
Caching Distribuído
Implementar camadas de cache entre a
aplicação e o banco de dados:
Redis e Memcached: Sistemas de
cache em memória de alta
performance.
Redução de Carga: Diminui
consultas repetitivas ao banco de dados
Consultas Frequentes: Ideal para
dados acessados frequentemente e
pouco voláteis.
Exemplo:
Armazenar resultados de consultas frequentes como
catálogos de produtos ou dados de configuração em um
cache Redis, reduzindo a carga no banco de dados principal.
Referências
Date, C. J. An Introduction to Database Systems. 8th ed. Addison-Wesley, 2003.
Ramakrishnan, Raghu; Gehrke, Johannes. Database Management Systems. 3rd ed. McGraw-Hill
Education, 2002.
Garcia-Molina, Hector; Ullman, Jeffrey D.; Widom, Jennifer. Database Systems: The Complete Book.
2nd ed. Pearson Prentice Hall, 2009.
Celko, Joe. Joe Celko's SQL Performance Tuning. 4th ed. Morgan Kaufmann, 2010.
Shasha, Dennis. Database Tuning: Principles, Experiments, and Best Practices. Morgan Kaufmann,
2002.
Saraswathi, S. Database Management Systems: Concepts, Techniques & Applications. PHI Learning,
2018.
Kyte, Tom; Harrison, Darl. Expert Oracle Database Architecture: Oracle Database 11g Internals and
Performance Tuning. 2nd ed. Apress, 2010.
Fim da Aula

Você também pode gostar