Neste artigo, irei contar o que é cloud storage e quais são os cinco erros mais cometidos por organizações e pessoas desenvolvedoras na hora de utilizar algum serviço de storage em cloud.
Vale lembrar que elenquei esses erros com base nos inúmeros projetos que já tive contato, assim como nas documentações fornecidas pelos principais provedores desse tipo de serviço.
Primeiramente, precisamos entender o que é cloud storage, em quais cenários ele é utilizado e quais são as principais empresas que oferecem esse serviço.
O que é cloud storage?
Cloud storage é um serviço oferecido por provedores de cloud que permite o armazenamento de dados na nuvem em formato de objetos, como arquivos, imagens, vídeos e outros tipos de conteúdo.
O primeiro serviço de armazenamento em nuvem ou cloud storage surgiu em 2006, quando a Amazon Web Services (AWS) lançou o Amazon S3 (Simple Storage Service).
De lá para cá, esse tipo de serviço revolucionou a maneira com que as empresas armazenam e manipulam seus dados. Isso porque o armazenamento de objetos em nuvem é geralmente mais escalável, disponível e durável do que o armazenamento de dados tradicional, que até então era feito em servidores locais.
Tudo isso atrelado ao fato de que esses dados podem ser acessados de qualquer lugar e a qualquer momento (desde que haja uma conexão com a internet), fez com que os serviços de storage mudassem a maneira com que trabalhamos nossos dados.
Finalidades desse serviço
O serviço de armazenamento de objetos hoje em dia é utilizado em diversas finalidades, por exemplo:
- Backup e recuperação de desastres: por ser um armazenamento barato e com disponibilidade garantida pela maioria dos prestadores desse serviço. Por isso, o cloud storage é amplamente utilizado para backup de dados. Um detalhe legal nessa utilização é que muitas vezes empresas que utilizam arquitetura on-premise podem optar por manter seus backups em cloud.
- Hospedagem de sites: os serviços de armazenamento em nuvem podem ser usados para hospedar sites e aplicativos da web, permitindo que as pessoas desenvolvedoras construam e implantem aplicativos escaláveis e acessíveis.
- Armazenamento de dados de aplicativos: os serviços de armazenamento em nuvem podem ser usados para armazenar dados de aplicativos, como dados de vídeo para streaming, fotos e até dados transacionais, permitindo que devs criem aplicativos escaláveis e seguros.
- Análise de Big Data: esse aqui sem dúvidas é o meu favorito, através do serviço de storage surgiram as principais arquiteturas de plataforma de dados que temos hoje, como data lake e data mesh – um papo para outro artigo. Isso porque podemos armazenar grandes conjuntos de dados, como dados de clientes, transações e sensores IoT, para análise e insights de Big Data.
Principais serviços de cloud storage
Atualmente existem diversos serviços nesse sentido, mas irei mencionar os três que acredito serem os principais: AWS, GCP e Azure. Irei dar uma descrição muito breve aqui, então indico que leiam a documentação de cada um dos serviços.
- Amazon S3: já mencionado anteriormente, é o primeiro serviço que surgiu sendo oferecido pela Amazon Web Services (AWS), permite armazenar e recuperar quantidades ilimitadas de dados de qualquer lugar da web. Além disso, possui forte integração com outros serviços da AWS aumentando assim a sua entrega de valor.
- Microsoft Azure Blob Storage: é um serviço de armazenamento de objetos oferecido pela Microsoft Azure, que também permite armazenar e gerenciar grandes quantidades de dados não estruturados, incluindo imagens, vídeos e arquivos de áudio.
- Google Cloud Storage: é um serviço de armazenamento de objetos oferecido pelo Google Cloud, da mesma maneira que os demais, ele possibilita gerenciar grandes quantidades de dados. Assim como a AWS possui forte integração com outros serviços oferecidos pelo GCP, como por exemplo o BigQuery.
Erros mais comuns no uso de cloud storage
Agora que já mencionamos o que é cloud storage, em quais cenários o usamos e quais os principais provedores, finalmente chegou a hora de conhecer os principais erros na hora de utilizar esse serviço.
Sendo assim, depois que conhecer cada um, sugiro analisar se você ou a sua empresa cometeu algum desses erros, pois a solução deles pode gerar excelentes resultados.
1. Não escolher o tipo certo de armazenamento
Você se lembra quando comentamos que o armazenamento de objetos pode usado para diversas finalidades? Devido a isso, cada provedor de cloud oferece às pessoas usuárias diferentes maneiras de armazenar seus dados. Aliás, o uso incorreto desses tipos de armazenamento podem fazer com que a sua solução se torne extremamente cara e até inviável em longo prazo.
Apesar de cada provedor de cloud ofertar diferentes tipos de armazenamento, existem um padrão nesses serviços que se baseia em três pilares: frequência de acesso ao dado, disponibilidade e redundância de dados.
Frequência de acesso
É quantas vezes a pessoa usuária solicita o dado armazenado em um determinado período. Por exemplo, em uma solução onde se precisa armazenar dados para backup não faz sentido escolher um tipo de armazenamento que garanta acesso frequente, pois esse dado raramente será acessado.
Disponibilidade
Cada aplicação normalmente tem um requisito de tempo de resposta para a pessoa usuária, por exemplo, o indivíduo que usa um aplicativo dificilmente aceitaria uma consulta de dados demorar mais de um hora para executar.
Dessa forma, fornecedores de serviços de storage ofertam tipos de armazenamento com um alto tempo de resposta, obviamente por um preço maior.
Redundância de dados
Todos os três provedores de cloud que mencionamos acima possuem soluções que atendem o mundo todo.
Dessa forma, implementa-se a redundância na hora de salvar os seus dados, isso garante que mesmo que uma falta de energia afete os servidores de um determinado local, os seus dados continuam disponíveis, pois o tráfego é direcionado para outro servidor.
Sendo assim, abrir mão dessa redundância quando possível pode fazer com que você tenha um armazenamento mais barato.
2. Falta de gerenciamento de ciclo de vida dos objetos
O segundo erro mais comum que iremos comentar está diretamente relacionado ao primeiro (tipo adequado de armazenamento) e pode causar o aumento nos custos e inviabilizar soluções no longo prazo. Esse erro ocorre quando não se aplica uma excelente prática no armazenamento de objetos, o life cycle de arquivos.
Como o nome já diz, o termo life cycle (ciclo de vida) consiste em implementar mudanças no modelo de armazenamento dos objetos de maneira periódica. Dessa forma, o dado criado é colocado em um tipo de armazenamento de acesso frequente, em contrapartida dados com pouco acesso são movidos para o que chamamos de zona fria (tipo de armazenamento barato com dados de pouco uso).
Para exemplificar o conceito de ciclo de vida dos objetos, observe a imagem e o exemplo a seguir feitos com base na escala dos modelos de armazenamento oferecidos pela AWS.
Sendo assim, a ideia por trás do conceito de life cycle é criar uma política que atenda aos requisitos da sua aplicação e mova os dados entre classes de armazenamento. Por exemplo:
3. Formatos de arquivos inadequados
Vimos que o serviço de storage de objetos em cloud revolucionou o mercado por permitir o armazenamento dos mais diversos formatos de arquivos, como: csv, excel, txt, mp3, mp4 e diversos outros. Isso tudo é verdade, mas, aqui entre nós, não é porque o serviço permite que seja a melhor solução utilizar.
Assim como os tipos de armazenamento, o formato dos arquivos deve ser escolhido de acordo com o propósito da sua aplicação. Aliás, um erro clássico é a utilização planilhas do Excel(.xlsx) para armazenar dados transacionais de uma aplicação.
O Excel é uma ferramenta poderosa quando utilizada por users finais. Mas quando falamos de dados sendo manipulados por uma aplicação existem opções que permitem otimização de espaço e do tempo de escrita e leitura.
A seguir, temos os principais formatos de arquivo para manipulação de dados em storage e suas principais finalidades:
- Apache Parquet (.parquet): é um formato de armazenamento colunar de dados que é altamente eficiente em termos de armazenamento e processamento. Ele é o queridinho de aplicações de big data que utilizam hadoop e spark, também possui forte integração com bibliotecas como Pandas.
- Apache ORC (.orc): é outro formato de armazenamento colunar de dados otimizado para aplicações de big data. Ele possui uma compressão muito grande o que permite salvar uma enorme quantidade de dados em pouco espaço.
- Avro (.avro): é um formato de serialização de dados utilizado em diversas plataformas de big data. Ele se diferencia dos demais por oferecer uma modelagem mais versátil permitindo escrita com maior flexibilidade e suporte a dados semiestruturados.
- JSON (.json): é um formato de dados muito utilizado em aplicações web e em big data, principalmente para armazenamento e transferência de dados estruturados e semiestruturados.
4. Falta de observabilidade
O uso de storage de objetos é extremamente versátil, devido a isso, é muito comum organizações utilizarem esse serviço para diversas finalidades. Por exemplo, podemos ressaltar: construção de data lakes, backup de banco de dados, armazenamento para a aplicação e até compartilhamento de arquivos entre os times.
Toda essa versatilidade é excelente, mas use com cuidado. Não é incomum nos deparamos com contas gigantescas porque aquele backup automático manteve dados desnecessários ou alguém duplicou uma base para análise e esqueceu de apagar.
Todos esses problemas que comentei, podem e naturalmente vão ocorrer algum dia com o seu projeto, a questão aqui é identificar e solucionar cada um o mais rápido possível. Mas, para nossa sorte, os provedores de cloud fornecem diversas ferramentas de observabilidade que vamos explorar a seguir.
A observabilidade em cloud é a capacidade de monitorar, medir e obter insights sobre o desempenho, a disponibilidade e o estado dos sistemas e aplicativos em uma infraestrutura de nuvem. É um conceito extremamente importante, pois garante o controle total das aplicações quando bem implementada. a
A seguir, irei mencionar as principais ferramentas de observabilidade dos principais provedores de cloud.
AWS (Amazon Web Services)
- Amazon CloudWatch: é um serviço de monitoramento e observabilidade da AWS que coleta e rastreia métricas, logs e eventos. Ele oferece recursos para monitorar recursos, aplicativos e serviços da AWS.
GCP (Google Cloud Platform)
- Stackdriver Monitoring: é uma plataforma de monitoramento da GCP que fornece insights sobre o desempenho, a disponibilidade e a integridade dos recursos e serviços da nuvem. Ele coleta métricas, registros e rastreamentos para análise e solução de problemas.
Azure (Microsoft Azure)
- Azure Monitor: é uma solução de monitoramento e análise que coleta e analisa dados de várias fontes. Ele fornece insights sobre o desempenho e a disponibilidade de recursos e aplicativos no Azure.
5. Gestão inadequada de segurança de dados
Nos últimos anos, com o advento de novos algoritmos de IA, uso massivo de redes sociais e vários serviços sendo oferecidos através de plataformas digitais, criou-se o conceito de que dados é um ativo valioso para as organizações (e realmente é).
Dessa forma, fases como “dados são o novo petróleo” ou a minha favorita “dados é novo bacon” começaram a se espalhar pelo setor de tecnologia e muito além dele.
Como dados são um ativo valioso, precisamos proteger o nosso storage em cloud assim como como protegeríamos um banco de dados convencional. Assim, preste atenção em dois fatores, que são os modelos de responsabilidade compartilhada e boas práticas de segurança.
Modelos de responsabilidade
Quando utilizamos qualquer provedor de cloud, concordamos com um contrato preestabelecido que dita quais são as responsabilidades do provedor de serviço e quais são as responsabilidades da pessoa usuária. Principalmente no que diz respeito à segurança dos dados e aplicações.
Sendo assim, sugiro fortemente que leia o modelo de responsabilidade do seu provedor específico.
Boas práticas de segurança
Existem inúmeras boas práticas de segurança para o storage em cloud. Além disso, levamos em consideração o serviço utilizado (sugiro a leitura das documentações). Ainda assim, irei citar aqui algumas principais.
- Gerenciamento de acesso e autenticação:
- Implemente o princípio do menor privilégio, fornecendo apenas as permissões necessárias para users e serviços;
- Utilize políticas de acesso granulares para controlar quem pode acessar os objetos armazenados.
- Criptografia:
- Considere a criptografia de dados em repouso e em trânsito.
- Monitoramento e registros de auditoria:
- Habilite o monitoramento e registros de atividades em seu serviço de armazenamento de objetos para detectar e investigar quaisquer atividades suspeitas.
- Configurações de segurança:
- Siga as melhores práticas de configuração recomendadas pelo provedor de nuvem para o serviço de armazenamento de objetos.
- Restrinja o acesso público a seus objetos, configurando as permissões corretamente.
- Backup e recuperação:
- Implemente uma estratégia de backup adequada para garantir a disponibilidade e integridade dos dados armazenados.
StackSpot e Cloud
A StackSpot também possui o Cloud Services, que oferece serviços que podem otimizar o uso da nuvem, tornando-a mais eficiente, inteligente, segura e pronta para dar suporte ao crescimento dos negócios.
Por fim, conheça mais sobre a forma como vemos serviços de cloud! Assista ao vídeo.
Conclusão
Espero que esse artigo de alguma forma ajude você a aprender e solucionar problemas no seu projeto. Deixo aqui uma pergunta, você já se deparou com algum desses problemas antes? Seu projeto atual passa por algum desses casos? Compartilhe nos comentários!
Continue acompanhando mais novidades nas nossas newsletters, receba conteúdos direto na sua caixa de entrada, é só se inscrever!
Autor
Henrique Papa
Data Engineer na Zup Innovation