Conheça o vencedor regional de Call for Code 2020 para a América Latina Blog post

Armazenamento com Cloud Object Storage

Servidores de armazenamento

De acordo com a projeção do IDC, 80% dos dados no mundo serão não-estruturados até 2025. Isso significa que dados como fotos, vídeos, áudios, textos (como um tweet ou um post no Facebook) e outros formatos, serão a grande maioria dos dados armazenados. Em uma organização que está em busca de se tornar o chamado Data-Driven (empresa orientada a dados), todo o tipo de dado é importante.

Quando entramos no contexto do nosso dia a dia, temos em grande abundância tipo de dados mais visuais, como fotos e vídeos. Neste caso vemos que um banco de dados tradicional não é capaz de armazenar esses tipo de dado. Para isso surgiram formas de armazenamento de objetos, como é o caso de um File Storage, Block Storage e Cloud Object Storage.

File Storage e Block Storage

Um File Storage — também conhecido como file-level ou file-based storage — é uma metodologia hierárquica de armazenamento, usado para organizar e armazenar dados no disco rígido do computador ou no dispositivo NAS (armazenamento conectado à rede).

Um Block Storage, ou block-level storage, é uma tecnologia que é usada para armazenar arquivos de dados no SAN (redes de área de armazenamento) ou em ambientes de armazenamento baseado em nuvem.

Resumidamente, vemos o uso de ambas opções quando trabalhamos com servidores locais ou na nuvem, para alocar recursos de armazenamento, como volume de disco, em VM (Virtual Machine) ou servidor Bare Metal, por exemplo.

Cloud Object Storage

O IBM Cloud Object Storage (ou também conhecido como COS) é o serviço de armazenamento de objetos na nuvem na qual o dado os dados armazenados são encriptados e distribuídos pelas múltiplas regiões geográficas e acessados por protocolos como HTTP usando RESTful API.

Para este serviço, é possível escolher entre três tipos de resiliências: Cross Region, Regional e Single Site.

  • Cross Regional distribui o dado entre três regiões, como é o caso de US.
  • Regional faz a distribuição do dado entre três datacenters numa mesma região.
  • Single Site faz a distribuição do dado entre três hosts físicos no mesmo datacenter.

Tecnologia IDA

IBM Cloud Object Storage utiliza uma tecnologia para armazenamento conhecida como IDAs, ou Information Dispersal Algorithms. A tecnologia transforma o dado em fatias usando equações para que um subconjunto das fatias possa ser usado para recriar os dados originais. Essas fatias são armazenadas em vários dispositivos (ou nós — que podem ser em host físico diferente no mesmo data center ou em data centers diferentes). As fatias são criadas usando uma combinação de codificação de apagamento, criptografia e algoritmos sofisticados de dispersão. Storage Class

Nem todos os dados estão em constante uso. É possível ter dados que necessitam permanecer intocáveis por um longo período de tempo. Para workloads menos ativos, você consegue criar Bucket com diferentes Storage Class.

Storage Class

Nem todos os dados estão em constante uso. É possível ter dados que necessitam permanecer intocáveis por um longo período de tempo. Para workloads menos ativos, você consegue criar Bucket com diferentes Storage Class.

  • Smart Tier: é usado em ambientes mais dinâmicos onde o padrão de acesso aos objectos são desconhecidos ou difícil de prever. Esta opção possui uma estrutura de custo simplificada e otimizada automaticamente pela classificação do dado em “hot”, “cool” e “cold”, baseado pelo padrão de uso mensal. Diferente dos demais, o custo é gerado apenas no final mês, por conta da classificação do dado nos modelos acima.
  • Standard: é um Storage Class tradicional, para o uso de recorrente dos objetos. Não há custo para os dados recuperados (além do custo de requests operacionais).
  • Vault: é usado para dados quando acessado menos de uma vez por mês — um custo extra é aplicado a cada vez que o dado é lido.
  • Cold Vault: é usado para dados quando acessados a cada 90 dias ou menos — um grande custo é aplicado a cada vez que o dado é lido.
  • Flex: foi substituído pelo Smart Tier para workloads dinâmicos. Usuários com Bucket no modelo Flex podem continuar gerenciando os dados com esta configuração. Entretanto, para novos Buckets a opção não está mais disponível.

https://cloud.ibm.com/docs/services/cloud-object-storage/iam?topic=cloud-object-storage-billing#billing-storage-classes

Política de Archive

O IBM Cloud Object Storage Archive é a opção com menor custo para armazenamento de dados quando é raramente acessado. Você pode armazenar dados a partir de qualquer outro Storage Class (Standard, Vault, Cold Vault e Smart Tier) para arquivos offline de longo prazo.

Para acessar um objeto arquivado, você deve restaurar o dado para o Bucket original. A restauração é feita a partir de uma cópia do objeto offline. Você pode especificar o número de dias em que esta cópia ficará disponível. No final desse período, a cópia desse objeto é deletada.

API e SDK

Como o serviço permite a manipulação dos objetos por API, para leitura e escrita. Ele usa o IAM da plataforma (Identity and Access Management) para autenticação e autorização, e suporta um subset da API do S3 para facilmente migrar aplicações para a IBM Cloud.

Você consegue provisionar uma instância gratuita do Cloud Object Storage na IBM Cloud para testar e experimentar a tecnologia — e a IBM está disponibilizando créditos para explorar volumes maiores de dados

A melhor referência é a documentação da API disponível no Github. Hoje estão disponíveis SDK para Python, Node.js, Java e Go. Abaixo está a lista dos repositórios na organização da IBM no Github.

https://github.com/IBM?q=ibm-cos-sdk

Como a integração do SDK no código é extremamente simples, basta importar a biblioteca (seja por um Package Manager como NPM, no caso do Node.js), colocar as credenciais e utilizar o objeto do COS, já autenticado, para executar comandos na sua instância.

Abaixo tem a lista de comandos no SDK do Node.js.

https://ibm.github.io/ibm-cos-sdk-js/AWS/S3.html

O código abaixo de exemplo, feito em Serverless com Node.js com Async/Await, que acessa o Bucket, lista o objeto e acessa o objeto em si.

Basta substituir as credenciais do COS e rodar em uma plataforma FaaS (Function-as-a-Service). Se estiver na IBM Cloud, você pode usar o IBM Cloud Functions no plano gratuito para testar o código abaixo.


// https://www.npmjs.com/package/dotenv

require('dotenv').config()

// https://www.npmjs.com/package/ibm-cos-sdk

const { S3 } = require('ibm-cos-sdk')

var cos = new S3({

endpoint: process.env.COS_ENDPOINT || '{endpoint}',

apiKeyId: process.env.COS_APIKEY || '{apiKeyId}',

ibmAuthEndpoint: 'https://iam.cloud.ibm.com/identity/token',

serviceInstanceId: process.env.COS_INSTANCEID || '{serviceInstanceId}',

})

const BUCKET_RECEIVER = process.env.COS_BUCKET_RECEIVER || '{bucketReceiver}'

const MAX_KEYS = 1

function main(args) {

const lo = await cos.listObjectsV2({ Bucket: BUCKET_RECEIVER, MaxKeys: MAX_KEYS }).promise()

if (lo.Contents.length === 0) {

// Empty Bucket, return a HTTP status code 204 'No Content'

return { status: 204, message: 'No new log file on COS Bucket' }

}

console.log(`DEBUG: log file = ${lo.Contents[0].Key}`)

const o = await cos.getObject({ Bucket: BUCKET_RECEIVER, Key: lo.Contents[0].Key }).promise()

return { status: 200, message: 'Found object on COS' }

}

Um outro exemplo de implementação da SDK, também em Node.js, do Cloud Object Storage é do projeto LogDNA-COS, disponível no Github da IBM. É um script, adaptado para ambiente de Serverless, para executar o download de pacotes de logs do serviço Cloud Internet Services, organizar em grupos de 20,000 logs e enviar para o LogDNA.

https://github.com/IBM/logdna-cos

Caso de uso — Watson Machine Learning + Cloud Object Storage

Um treinamento de modelo de reconhecimento de imagem é feito a partir de um conjunto de imagens ou fotografias, nas quais são usadas para a marcação. Esse tipo de tecnologia pode ser aplicada em uma indústria para identificação de falhas em algum processo automatizado ou para a identificação e contagem de pessoas que entram no supermercado, por exemplo.

Uma maneira rápida de treinar um modelo desse é através do uso do Cloud Annotations, uma ferramenta Open Source que usa o serviço de IBM Cloud Object Storage para armazenar os dados e o serviço de Watson Machine Learning para treinar um modelo, sem a necessidade de codificação.

Na documentação do projeto, existe um tutorial intuitivo que te ensina a treinar um modelo usando o serviço de Watson Machine Learning, em uma conta gratuita na IBM Cloud, usando um modelo.

https://cloud.annotations.ai/workshops/object-detection/index.html

Além da ferramenta permitir treinar modelos de maneira rápida e intuitiva, você consegue baixar o modelo e utilizar, por exemplo, em um aplicativo iOS nativo com o framework CoreML, para fazer reconhecimento de objetos offline. Outro exemplo é o Code Pattern, no link abaixo, no qual demonstra como utilizar um modelo de reconhecimento em um DJI Tello para reconhecimento em real-time.

https://developer.ibm.com/technologies/iot/patterns/automate-post-disaster-checks-and-foster-offline-communication

IBM Cloud e COVID-19

Durante o período de pandemia, a IBM disponibilizou crédito de $1,500 USD para 90 dias de uso de IBM Cloud Object Storage para armazenar diversos arquivos. Lembre-se de que existe uma versão gratuita e em alguns serviços, como o Watson Studio (citado acima) utiliza o plano gratuito para armazenar arquivos de dataset. https://www.ibm.com/cloud/blog/announcements/store-critical-data-in-the-cloud

Além desta oferta, veja abaixo a lista completa que inclui Virtual Server no VPC da IBM Cloud, por exemplo.

IBM e COVID-19

Referências