GCP: qual abordagem de armazenamento devo usar?

Trabalhando em clientes que usam Google Cloud Platform (GCP), uma das perguntas mais frequentes que ouço e participo de discussões é: qual a melhor tecnologia de armazenamento para utilizar em determinada situação? A plataforma oferece várias e muitas vezes é complicado tomar essa decisão:

  1. Datastore
  2. GCS
  3. Firebase (realtime database e storage)
  4. Spanner
  5. BigQuery
  6. CloudSQL
  7. Big Table
  8. Qq coisa rodando no GCE
  9. Etc…

E aí? A Google essa semana fez um favor de dar um guia para isso que acho bastante útil. Ela publicou essa foto aqui.

Screen Shot 2017-06-05 at 5.11.39 PM

Não precisa ser levado a ferro e fogo, mas certamente dá uma direção para saber o que usar e – principalmente – o que não usar. Por exemplo: lendo o diagrama acima, vc acha uma boa idéia usar o BigQuery para workloads não-analiticos? Ou o Spanner para analíticos? Não é impossível, mas ao trilhar esse caminho saiba que vocês está nadando contra a maré, cuidado.

Abraços!

PaaS ou IaaS: Prefira ambientes híbridos

Estou super empolgado. O Google acabou de anunciar, dia 25 de março, as “Managed VMs” (http://goo.gl/yv1w6F), confirmando o que eu acredito e já digo há algum tempo: a PaaS não morreu e deve ser uma peça importante da sua estratégia de arquitetura. A consideração crucial deve ser que a plataforma *não* vai atender a todas as suas necessidades, mas em vez de descartá-la por causa disso, você tem que planejar uma solução híbrida na nuvem, usando tanto PaaS quanto IaaS.

Veja bem: não há nada de errado com PaaS

As diretrizes gerais para essa abordagem são:

1) Use PaaS o máximo que puder. Idealmente, ela deve controlar todos os HTTP requests dos usuários finais, mantendo o uso do IaaS para tarefas de backend. Lembre-se: você definitivamente deve tirar vantagem da escalabilidade facilitada pela plataforma.

2) Se possível, tente criar um MVP (mínimo produto viável) que possa ser entregue usando apenas os recursos disponibilizados pela plataforma. Fazendo isso, você terá um melhor time-to-market, diminuindo os riscos e custos.

3) Tenha em mente que você precisará usar a flexibilidade da infraestrutura em algum momento. Tudo bem! Projete um mecanismo que permita com que todos os seus servidores se comuniquem com a plataforma. Recomendo o uso de filas para isso (exemplo: Task Queues). Falando nisso, obrigado, Google, por resolver este problema para nós!

4) Comunique-se de maneira assíncrona sempre que possível.

5) Só mais uma coisa: quando precisar de algo que a plataforma não oferece, antes de correr para IaaS para resolver o problema, certifique-se de que não há outras companhias oferecendo esse recurso como um serviço / APIs. Por exemplo: você não tem que desenvolver um recurso de decodificação de vídeo em cima da sua distribuição do Linux só porque a plataforma não fornece esse serviço. Há ótimos serviços de codificação de vídeo disponíveis para uso.

Estou ansioso para testar essas Managed VMs, bem empolgado. Vida longa aos ambientes PaaS, IaaS e ambientes híbridos!