Introdução
Cloud Computing para Engenharia de Dados
Nas aulas anteriores, exploramos o ciclo de vida da engenharia de dados (ingestão, transformação e disponibilização), a importância de sistemas desacoplados usando filas de mensagens, e as diferenças fundamentais entre OLTP e OLAP.
Hoje vamos dar um passo importante: entender onde e como implementar nossa infraestrutura de dados.
Info
Esta aula é introdutória e focada na formação de conceitos fundamentais sobre computação em nuvem para engenharia de dados.
O Contexto: Onde Executar Nossa Infraestrutura?
Imagine que você foi contratado como engenheiro de dados em uma empresa que está crescendo rapidamente.
Os dados estão aumentando exponencialmente, e a infraestrutura atual já mostra sinais de sobrecarga. A diretoria questiona:
Diretoria
Devemos investir em mais servidores próprios ou migrar para a nuvem?
Esta é uma decisão que pode ter significado existencial para organizações modernas:
-
Mover-se muito devagar pode significar ficar para trás da concorrência mais ágil.
-
Por outro lado, uma migração mal planejada pode levar a falhas tecnológicas e custos catastróficos.
Exercise
Answer
As empresas hoje têm múltiplas opções: on-premises (servidores próprios), cloud (nuvem), híbrido (combinação de ambos) ou multicloud (múltiplos provedores de nuvem).
Dentre os fatores importantes, podemos citar custo, escalabilidade, segurança, controle, compliance e agilidade para inovação.
Vamos explorar as principais opções de localização (location) para executar nossa infraestrutura de dados.
On-Premises: O Modelo Tradicional
Embora novas startups nasçam cada vez mais na nuvem, os sistemas on-premises ainda são o padrão para empresas estabelecidas.
Definição: On-Premises
No modelo on-premises, as empresas possuem seu próprio hardware, que pode estar localizado em data centers próprios ou em espaços de colocation alugados.
As empresas são operacionalmente responsáveis por seu hardware e pelo software que roda nele.
Colocation
Colocation (infraestrutura) é um modelo de hospedagem em que uma empresa aluga espaço físico em um data center de terceiros para instalar seus próprios servidores, equipamentos de rede e armazenamento.
Principais recursos e serviços compartilhados:
-
Espaço físico: pode ser apenas um rack unit (U), racks inteiros ou até áreas dedicadas no data center.
-
Energia elétrica: fornecida com redundância (geradores e no-breaks).
-
Climatização: controle de temperatura e umidade para manter os equipamentos estáveis.
-
Conectividade: acesso a diversos provedores de internet (carrier-neutral), possibilitando links redundantes e de alta velocidade.
-
Segurança física: controle de acesso, monitoramento 24/7, câmeras, vigilância.
Exemplos de provedores de colocation em São Paulo: ODATA e Ascenty
Exercise
Answer
Construir e gerenciar a infraestrutura de TI internamente pode ser caro e demorado:
- Será que a distribuidora de energia elétrica irá nos fornecer a energia necessária para suportar a demanda?
- Quais serão as alterações necessárias na infraestrutura do prédio (climatização, elétrica, rede, etc.)?
- Temos espaço físico suficiente para instalar novos servidores?
- Temos equipe interna capacitada para gerenciar a infraestrutura?
O colocation permite que as empresas se beneficiem de infraestrutura de data center de alta qualidade sem os custos e responsabilidades de gerenciar fisicamente o hardware.
Características do On-Premises
Responsabilidades Operacionais
- Manutenção de hardware: Se o hardware falha, a empresa precisa reparar ou substituir
- Ciclos de atualização: Gestão de upgrades a cada poucos anos
- Capacidade de pico: Necessidade de hospedar capacidade suficiente para picos de demanda
Exemplo Prático
Para um varejista online, isso significa ter capacidade suficiente para lidar com os picos de carga da Black Friday.
Para engenheiros de dados, significa comprar sistemas grandes o suficiente para permitir boa performance em cargas de pico sem gastar excessivamente.
Vantagens do On-Premises
- Práticas estabelecidas: Empresas estabelecidas têm práticas operacionais que funcionam bem
- Controle total: Controle completo sobre hardware, software e dados
- Compliance: Pode ser necessário para certas regulamentações
- Custos previsíveis: Investimento inicial alto, mas custos operacionais mais previsíveis
Desafios do On-Premises
- Falta de agilidade: Tempo longo para provisionar novos recursos
- Subutilização: Hardware parado durante períodos de baixa demanda
- Expertise técnica: Necessidade de equipe especializada em infraestrutura
- Escalabilidade limitada: Difícil escalar rapidamente para demandas imprevistas
Question
Answer
O principal desafio seria o tempo.
Comprar, instalar e configurar novos servidores pode levar semanas ou meses, tornando impossível atender à demanda da Black Friday a tempo.
Cloud: A Revolução!
A computação em nuvem inverte completamente o modelo on-premises.
Definição: Cloud Computing
Na computação em nuvem, ao invés de comprar hardware, você simplesmente aluga hardware e serviços gerenciados de um provedor de nuvem (como AWS, Azure ou Google Cloud).
Esses recursos podem ser reservados em bases extremamente curtas: VMs são criadas em menos de um minuto, e o uso subsequente é cobrado em incrementos (por tempo de uso).
Por Que a Nuvem é Revolucionária?
Escalabilidade Dinâmica
A nuvem permite aos usuários escalar dinamicamente recursos que eram inconcebíveis com servidores on-premises.
Exemplo de Escalabilidade
Um pipeline de dados que processa 100GB por dia durante a semana pode precisar processar 1TB no final do mês. Na nuvem, você pode:
- Executar com 2 máquinas durante a semana
- Automaticamente escalar para 20 máquinas no final do mês
- Retornar para 2 máquinas depois do processamento
- Pagar apenas pelos recursos utilizados
Agilidade para Experimentação
Engenheiros podem rapidamente lançar projetos e experimentar sem se preocupar com planejamento de hardware de longo prazo. Podem começar a rodar servidores assim que seu código está pronto para deploy.
Exercise
Answer
Na nuvem, você pode instantaneamente criar o ambiente de teste completo (bancos de dados, processamento, storage), testar sua arquitetura, e depois deletar tudo pagando apenas pelas horas utilizadas.
No modelo on-premises isso poderia levar semanas apenas para conseguir hardware disponível para teste.
Evolução dos Serviços em Nuvem
A era inicial da nuvem era dominada por ofertas de Infrastructure as a Service (IaaS). No modelo IaaS, a provedora fornece produtos como VMs e discos virtuais, que são essencialmente fatias alugadas de hardware.
Três Modelos de Serviço
Infrastructure as a Service (IaaS)
- O que é: Recursos básicos de computação (VMs, storage, rede)
- Responsabilidade: Você gerencia o sistema operacional e aplicações
- Exemplos: Amazon EC2, Google Compute Engine, Azure Virtual Machines
Platform as a Service (PaaS)
- O que é: Inclui IaaS + serviços gerenciados mais sofisticados
- Responsabilidade: Provedor gerencia infraestrutura e plataforma
- Exemplos para Dados:
- Bancos gerenciados: Amazon RDS, Google Cloud SQL
- Streaming: Amazon Kinesis, Azure Event Hubs
- Containers: Google Kubernetes Engine (GKE), Azure Kubernetes Service (AKS)
Software as a Service (SaaS)
- O que é: Plataforma de software empresarial totalmente funcional
- Responsabilidade: Provedor gerencia tudo, você apenas usa
- Exemplos: Salesforce, Google Workspace, Fivetran (para engenharia de dados)
Serverless: O Futuro?
Serverless está se tornando cada vez mais importante em ofertas PaaS e SaaS.
Produtos serverless geralmente oferecem escalonamento automatizado de zero a taxas de uso extremamente altas, são cobrados por uso, e permitem que engenheiros operem sem conhecimento operacional dos servidores subjacentes.
Question
Answer
PaaS seria o modelo ideal.
Serviços como Amazon RDS, Google Cloud SQL ou Azure Database fornecem PostgreSQL totalmente gerenciado, onde o provedor cuida de backups, patches de segurança, monitoramento e manutenção.
Por Que Cloud é Importante para Engenharia de Dados?
A nuvem oferece uma série de vantagens que a tornam importante para engenharia de dados:
1. Natureza dos Workloads de Dados
Os workloads de engenharia de dados têm características únicas:
- Variabilidade: Processamento batch pode precisar de 10x mais recursos durante execução
- Experimentação: Necessidade constante de testar novas arquiteturas e ferramentas
- Sazonalidade: E-commerce tem picos na Black Friday, varejo tem sazonalidade
- Crescimento imprevisível: Volume de dados pode crescer exponencialmente
COVID-19
A ocorrência do COVID-19 em 2020 foi um grande driver da adoção de nuvem.
Empresas reconheceram o valor de rapidamente escalar processos de dados para obter insights em um clima de negócios altamente incerto.
Também tiveram que lidar com carga substancialmente aumentada devido ao pico de compras online e trabalho remoto.
2. Diversidade de Ferramentas
Engenharia de dados moderna requer uma ampla gama de ferramentas especializadas:
- Armazenamento: Data lakes, data warehouses, object storage
- Processamento: Batch processing, stream processing, ETL/ELT
- Orquestração: Workflow management, job scheduling
- Monitoramento: Observability, data quality, lineage
Managed Services
Provedores de nuvem oferecem versões gerenciadas dessas ferramentas, permitindo que engenheiros ignorem detalhes operacionais de gerenciar máquinas individuais e implantar frameworks em sistemas distribuídos.
3. Modelo de Pricing Flexível
Problemas do Modelo Traditional
- Overprovisioning: Comprar para pico de capacidade
- Underutilization: Hardware parado maior parte do tempo
- Capex vs Opex: Grande investimento inicial vs custos operacionais flexíveis
Vantagens do Modelo Cloud
- Pay-as-you-go: Pague apenas pelos recursos utilizados
- Spot instances: Instâncias com desconto para workloads tolerantes a falhas
- Reserved instances: Descontos para comprometimentos de longo prazo
Exercise
Answer
On-premises: Precisa manter 100 servidores 24/7, pagando por 720 horas por mês mesmo usando apenas 8 horas (mesmo que sejam desligados, foi necessário comprá-los).
Cloud: Paga apenas pelas 8 horas × 100 servidores = 800 server-hours por mês. Potencial economia de custos de infraestrutura, energia, refrigeração, espaço físico e pessoal operacional.
Não se engane!
A nuvem não é uma solução mágica e a praticidade tem seu custo!
Decisões erradas podem levar a gastos inesperados.
4. Escalabilidade e Performance
Limitações Físicas
Estamos chegando aos limites físicos de quão rápido uma única CPU pode ser. Para escalar para mais dados, você deve ser capaz de paralelizar sua computação.
Horizontal vs Vertical Scaling
- Vertical scaling: Comprar uma máquina melhor (limitado fisicamente)
- Horizontal scaling: Adicionar mais máquinas (virtualmente ilimitado)
Algoritmos Paralelos
Isso levou ao surgimento de algoritmos paralelos shared-nothing e seus sistemas correspondentes, como MapReduce. A nuvem facilita enormemente esse tipo de processamento distribuído.
Question
Answer
Horizontal scaling seria mais eficaz.
Distribuir entre 100 máquinas permite paralelização massiva, completando o job muito mais rápido que uma única máquina, independentemente de quão poderosa seja.
Impacto na Engenharia de Dados Moderna
Transformação dos Data Warehouses e Data Lakes
Três fatores transformaram completamente a paisagem de analytics e data warehousing nos últimos 10 anos:
- Facilidade de construção: Deploy de pipelines, data lakes, warehouses e processamento analítico na nuvem sem larga dependência de departamentos de TI
- Queda contínua nos custos: Armazenamento em nuvem ficou extremamente barato (pelo menos inicialmente!)
- Databases colunares escaláveis: Amazon Redshift, Snowflake, Google BigQuery
Relembrando definições Importantes
Data Warehouse: Database onde dados de diferentes sistemas são armazenados e modelados para suportar análise. Dados estruturados e otimizados para queries de relatório.
Data Lake: Onde dados são armazenados sem a estrutura ou otimização de query de um data warehouse. Alto volume e variedade de tipos de dados.
Novas Arquiteturas
A nuvem permite arquiteturas que eram impraticáveis on-premises:
- Serverless data processing: Processamento em escala, sob demanda, sem necessidade de gerenciar servidores ou infraestrutura
- Multi-region deployments: Replicação global com baixa latência
- Event-driven architectures: Processamento reativo baseado em eventos
- Elastic clusters: Clusters que crescem e encolhem baseado na demanda
Exercise
Answer
Data Warehouse é como uma biblioteca organizada: dados limpos, catalogados e otimizados para consultas específicas. Ideal para relatórios regulares e análises de BI.
Data Lake é como um depósito: armazena todos os tipos de dados (estruturados e não estruturados) sem organização prévia. Ideal para exploração de dados, machine learning e quando você não sabe ainda que análises precisará fazer.
Considerações e Desafios
Mudança de Mentalidade
Migrar para a nuvem requer uma mudança dramática na forma de pensar, especialmente sobre pricing. Empresas frequentemente cometem erros graves de deployment por não adaptar adequadamente suas práticas ao modelo de pricing da nuvem.
FinOps: Financial Operations
FinOps
FinOps é uma prática cultural e disciplina operacional que une equipes de tecnologia, negócios e finanças para acelerar a criação de valor de negócio através de tomada de decisão informada sobre dados financeiros na nuvem.
Principais práticas de FinOps para engenharia de dados:
- Tagging e categorização de recursos
- Monitoring de custos em tempo real
- Right-sizing de instâncias
- Scheduling de recursos não-críticos
- Reserved instances para workloads previsíveis
Desafios Comuns
- Vendor lock-in: Dependência de serviços específicos de um provedor
- Complexidade de pricing: Centenas de serviços com modelos diferentes
- Segurança e compliance: Novos desafios em ambiente compartilhado
- Skills gap: Necessidade de novas competências técnicas
Question
Answer
A primeira ação deve ser implementar práticas de FinOps.
Muitas vezes os custos altos são resultado de recursos mal dimensionados, não tagueados ou executando desnecessariamente.
Monitoramento e otimização são fundamentais antes de considerar mudanças drásticas.
Conclusão
A computação em nuvem não é apenas uma questão de onde executar sua infraestrutura, é uma mudança fundamental em como pensamos sobre recursos computacionais, escalabilidade e operações.
Para engenheiros de dados, a nuvem oferece:
- Agilidade para experimentar e inovar rapidamente
- Escalabilidade para lidar com volumes crescentes de dados
- Diversidade de ferramentas especializadas e gerenciadas
- Flexibilidade financeira com modelos pay-as-you-go
Próximos Passos
Nas próximas aulas, exploraremos na prática como utilizar serviços de nuvem da AWS para implementar pipelines de dados.
Exercise
Answer
On-premises pode ser adequado para:
- Empresas com regulamentações rígidas de dados
- Workloads extremamente previsíveis e estáveis
- Organizações com expertise técnica profunda
- Casos onde a economia de escala justifica o investimento
Cloud é geralmente preferível para:
- Startups e empresas em crescimento
- Workloads variáveis ou experimentais
- Necessidade de agilidade e inovação
- Falta de expertise em infraestrutura
- Requisitos de escalabilidade global
A decisão deve considerar: custo total de propriedade, requisitos de compliance, expertise disponível, velocidade de inovação necessária e características dos workloads.
Leituras interessantes
Leitura opcional sobre empresas deixando a nuvem: