Considerações sobre o design do sistema do Google Cloud

Nesta seção do framework de arquitetura, explicamos recursos e serviços específicos do Google Cloud que podem ser combinados de diferentes maneiras para otimizar sua implantação de acordo com as necessidades de negócios.

O framework é composto pela seguinte série de artigos:

Zonas geográficas e regiões

Regiões são áreas geográficas independentes que consistem em várias zonas. Uma zona é uma área de implantação de recursos do Google Cloud em uma região. As zonas precisam ser consideradas um domínio de falha único dentro de uma região. Os aplicativos tolerantes a falhas com alta disponibilidade precisam ser implantados em várias zonas (em uma ou em diversas regiões), para ajudar a proteger contra inatividade esperada e inesperada.

Os serviços e recursos do Google Cloud podem ser, regionais, por zona, gerenciados pelo Google em várias regiões ou globais:

Recursos por zona

Os recursos por zona funcionam apenas em uma zona. Se uma zona ficar indisponível, todos os recursos dela também ficarão até que o serviço seja restaurado. As máquinas virtuais (VMs) e os discos permanentes (DPs) locais são exemplos de recursos por zona.

Recursos regionais

Os recursos regionais são implantados de maneira redundante em todas as zonas de uma região. Isso proporciona maior disponibilidade do que os recursos por zona. O App Engine e os buckets regionais do Cloud Storage são exemplos de recursos regionais.

Recursos multirregionais

Os serviços do Google são redundantes e distribuídos entre regiões. Esses serviços otimizam a disponibilidade, o desempenho e a eficiência dos recursos. Como resultado, eles exigem compensações entre latência e consistência. Essas compensações são documentadas com base em um produto específico.

Recursos globais

Os serviços do Google são redundantes e distribuídos entre regiões. Esses serviços não estão vinculados a uma determinada região ou conjunto de regiões. Balanceadores de carga, Pub/Sub e conversão de voz em texto são exemplos de recursos globais.

Perguntas sobre o projeto

  • Em quais regiões geográficas estão os usuários dos seus aplicativos?
  • Quais regiões do Google Cloud são mais próximas dos seus usuários?
  • Você tem algum requisito regulamentar com base na região geográfica?
  • Você precisa de uma implantação global ou uma implantação regional atenderá aos seus requisitos?

Recomendações

  • Selecione uma região ou um conjunto de regiões mais próximas geograficamente de seus usuários finais para minimizar a latência ao veicular tráfego para usuários externos.
  • Selecione uma região específica ou um conjunto de regiões para atender aos requisitos geográficos
  • Use um balanceador de carga para fornecer apenas um IP que é roteado para o aplicativo quando você estiver veiculando a uma base de usuários global.
  • Conecte suas redes locais ou de colocation ao Google Cloud por meio do Cloud Interconnect para conexões de rede particulares de alta velocidade.

Recursos

Gerenciamento de recursos

O Google Cloud fornece contêineres de recursos, como organizações, pastas e projetos, que permitem agrupar e organizar hierarquicamente os recursos do Google Cloud. Essa organização hierárquica permite gerenciar aspectos comuns dos recursos, como controle de acesso, definições de configuração e políticas. O Resource Manager fornece acesso programático aos contêineres de recursos.

O diagrama a seguir ilustra a hierarquia de recursos do Google Cloud:

Hierarquia de recursos do Google Cloud

O objetivo da hierarquia de recursos do Google Cloud é duplo:

  • Fornecer uma hierarquia de propriedade, que vincula o ciclo de vida de um recurso ao pai imediato na hierarquia.
  • Fornecer pontos de anexos e herança para controle de acesso e políticas da organização.

A hierarquia de recursos do Google Cloud permite correlacionar sua estrutura organizacional ao Google Cloud. A hierarquia também fornece pontos de anexos lógicos para políticas de gerenciamento de identidade e acesso (IAM), que gerenciam o acesso a recursos, bem como políticas de organização. As políticas da organização e do IAM são herdadas por meio da hierarquia, e a política efetiva em cada nó da hierarquia é o resultado das políticas aplicadas no nó e daquelas herdadas dos ancestrais.

No nível mais baixo, os recursos são os componentes fundamentais de todos os serviços do Google Cloud. Exemplos de recursos incluem máquinas virtuais (VMs) do Compute Engine, tópicos do Pub/Sub, buckets do Cloud Storage e instâncias do App Engine. Todos esses recursos de nível inferior precisam existir em um projeto. Os projetos representam o primeiro nível de grupo da hierarquia de recursos do Google Cloud.

O nó da organização é o nó superior da hierarquia e não tem um pai. Todos os recursos que pertencem a uma organização são agrupados no nó da organização. O nó da organização fornece visibilidade central e controle sobre todos os recursos que pertencem a uma organização.

Um mecanismo de agrupamento extra, além dos projetos, são as pastas. Você precisa ter um recurso da organização antes de criar pastas.

Perguntas sobre o projeto

  • Quais papéis na sua organização exigem acesso à infraestrutura do Google Cloud?
  • Quais requisitos de acesso os membros de cada função têm para os recursos do Google Cloud?
  • Como sua estrutura organizacional será correlacionada à hierarquia de recursos do Google Cloud?
  • Você tem convenções de governança para rotulagem de recursos?

Recomendações

  • Crie um nó da organização no seu domínio.
  • Defina uma hierarquia de recursos correlacionada às suas necessidades de negócios no Google Cloud.
  • Defina a estrutura do projeto. Por exemplo:
    • Deixe as informações nos nomes dos projetos anônimas.
    • Siga um padrão de nomenclatura do projeto, como {company-initial-identifier}-{environment}-{app-name}, em que os marcadores são exclusivos, mas não revelam nomes de empresas ou aplicativos.
  • Automatize a criação de projetos, delegue o faturamento e configure a governança do IAM.
  • Evite a exclusão acidental aproveitando as garantias do projeto.
  • Identifique e planeje a implantação regional, multirregional e por zona para suas cargas de trabalho.

Recursos

Gerenciamento de identidade e acesso

O gerenciamento de identidade e acesso é um dos elementos principais da sua implantação do Google Cloud porque fornece os controles de autorização aos recursos do Google Cloud. Usando o IAM, você gerencia funcionários, clientes e outras identidades e as respectivas autorizações de acesso.

O Google Cloud oferece um conjunto de serviços de IAM empresariais para ajudar você a proteger o acesso aos seus dados, simplificar o gerenciamento por meio da inteligência e fazer a transição para a nuvem com confiança.

No IAM, você concede acesso aos membros. Os membros podem ser dos seguintes tipos:

Conta do Google

Uma Conta do Google representa um desenvolvedor, um administrador ou qualquer outra pessoa que interaja com o Google Cloud.

Conta de serviço

Uma conta de serviço pertence a um aplicativo em vez de um usuário final individual.

Grupo do Google

Um Grupo do Google é uma coleção nomeada de Contas do Google e de serviço.

Domínio do G Suite

Um domínio do G Suite representa um grupo virtual de todas as Contas do Google criadas na conta do G Suite de uma organização.

Domínio do Cloud Identity

Um domínio do Cloud Identity é semelhante ao do G Suite, porque representa um grupo virtual de todas as Contas do Google em uma organização.

Autorização

Quando um membro autenticado tenta acessar um recurso, o IAM verifica a política do recurso para determinar se a ação é permitida. As entidades e os conceitos envolvidos no processo de autorização estão descritos abaixo.

Recursos

É possível conceder acesso aos usuários para um recurso do Google Cloud. Alguns exemplos de recursos são projetos, instâncias do Compute Engine, buckets do Cloud Storage e assim por diante. Alguns serviços, como o Compute Engine e o Cloud Storage, são compatíveis com a concessão de permissões do IAM em uma granularidade superior ao nível do projeto.

Permissões

Com as permissões, você determina quais operações são permitidas em um recurso. No contexto do IAM, as permissões são representadas no formato service.resource.verb. Você não concede permissões aos usuários diretamente. Em vez disso, atribua um papel que contenha uma ou mais permissões.

Papéis

Um papel é um conjunto de permissões. Ao conceder um papel a um usuário, ele passa a ter todas as permissões contidas no papel. Há três tipos de papéis no IAM:

  • Papéis primários. Proprietário, editor e leitor.
  • Papéis predefinidos. São papéis de IAM que fornecem controle de acesso mais refinado do que papéis primários.
  • Papéis personalizados. Criados para adaptar as permissões às necessidades da organização, quando não são atendidas pelos papéis predefinidos.

Políticas do IAM

É possível conceder papéis aos usuários criando uma política do IAM, que é um conjunto de instruções que define quem tem qual tipo de acesso. Essa política é anexada a um recurso e, sempre que ele é acessado, o controle de acesso é aplicado. Uma política de IAM é representada pelo objeto de política de IAM.

Hierarquia de políticas

É possível definir uma política de IAM em qualquer nível na hierarquia de recursos: organização, pasta, projeto ou recurso. Os recursos herdam as políticas do recurso pai. Defina uma política no nível da organização para que ela seja herdada automaticamente por todas as pastas e projetos filhos. Defina uma política no nível do projeto para que ela seja herdada por todos os recursos filhos do projeto. A política efetiva para um recurso é a união do conjunto de políticas nele e a política herdada do recurso mais alto na hierarquia.

Perguntas sobre o projeto

  • Como você gerenciará identidades?
  • Você fará a federação com base em uma origem de identidade atual?
  • Como você planeja delegar acesso de administrador?
  • Você tem um processo de governança para criar, atualizar e auditar o controle de acesso?
  • Você agrupa usuários e aplica a autenticação multifator (MFA, na sigla em inglês) com base na confidencialidade do acesso?

Recomendações

  • Proteja o acesso do administrador da organização.
  • Faça a federação do provedor de identidade com o Google Cloud.
  • Use o Cloud Identity para a identidade da conta de usuário se você não tiver um provedor de identidade.
  • Use as Contas do Google e as políticas de IAM apropriadas para cada usuário.
  • Crie suas próprias contas de serviço personalizadas para limitar as permissões do IAM ao menor privilégio.
  • Migre contas não gerenciadas.
  • Proteja o acesso aos recursos por meio do menor privilégio.
  • Use grupos e contas de serviço.
  • Use uma convenção de nomenclatura de grupo.
  • Audite o fluxo de trabalho da solicitação de assinatura ao grupo.
  • Aplique a MFA sempre que possível, especialmente para usuários com alto privilégio de acesso.
  • Analise o acesso de superadministrador.
  • Aproveite a conta de serviço e o acesso de auditoria e como ela é usada.
  • Remova as políticas padrão da organização do IAM.
  • Faça a auditoria do gerenciamento de acesso regularmente.

Principais serviços

O Cloud Identity unifica o gerenciamento de identidade, aplicativos e dispositivos para maximizar a eficiência do usuário, proteger os dados da empresa e fazer a transição dela para um espaço de trabalho digital.

O Identity Platform adiciona a funcionalidade de gerenciamento de identidade e acesso aos seus aplicativos e serviços, e ajuda a proteger as contas de usuário.

O Serviço gerenciado para o Microsoft Active Directory (AD) gerencia suas cargas de trabalho dependentes do AD, automatiza a manutenção e a configuração de segurança do servidor do AD e conecta seu domínio do AD local à nuvem com um serviço do Google Cloud altamente disponível e protegido.

Recursos

Conceitos | Documentação do IAM
Como usar a hierarquia de recursos para controle de acesso | Documentação do IAM

Computação

A maioria das soluções usa recursos de computação de alguma forma, e a seleção de computação para as necessidades do aplicativo é fundamental. No Google Cloud, a computação é oferecida como Compute Engine, App Engine, Google Kubernetes Engine (GKE), Cloud Functions e Cloud Run. Avalie as demandas do aplicativo e escolha uma das seguintes ofertas de computação.

O Compute Engine fornece unidades de processamento gráfico (GPUs) que podem ser adicionadas às instâncias de máquina virtual. Use essas GPUs para acelerar cargas de trabalho específicas nas instâncias, como machine learning e processamento de dados.

Geralmente, o App Engine é um ótimo candidato para hospedar aplicativos de front-end, porque permite que você se concentre no desenvolvimento de aplicativos em vez de manter a operação de infraestrutura. O App Engine também é compatível com a implantação de contêineres, permitindo uma migração mais fácil e rápida. O App Engine é compatível com a hospedagem de arquiteturas de microsserviços com vários serviços.

Se precisar de mais controle administrativo, o Google Kubernetes Engine é a opção recomendada. O GKE é ótimo para arquiteturas complexas de microsserviços que precisam de serviços extras, como o Istio, para controle de malha de serviço.

Se o App Engine e o GKE não atenderem às suas necessidades, use o Compute Engine para implantar o aplicativo, porque é possível criar e executar qualquer imagem de VM personalizada.

O Cloud Functions permite criar um código de automação que dura pouco tempo e pode executar ações de maneira escalonável. É possível usar o Cloud Functions como uma junção para unir várias partes dos seus aplicativos sem se preocupar com o gerenciamento de infraestrutura.

Perguntas sobre o projeto

  • Como você planeja usar a computação?
  • Seus aplicativos estão em contêineres ou têm alguma dependência legada?
  • Seu aplicativo é com estado ou sem estado?
  • Você tem uma implantação complexa de serviço distribuído (alta rede entre nós)?
  • Como você gerencia o acesso às instâncias (incluindo chaves SSH)?

Recomendações

  • Escolha a região do Google Cloud mais próxima da sua base de usuários ou dependendo dos requisitos de conformidade.
  • Avalie os requisitos de latência para suas cargas de trabalho.
  • Determine os requisitos de latência do usuário final do aplicativo e escolha uma região ou estratégia de implantação multirregional.
  • Confira se as instâncias não estão configuradas para usar a conta de serviço padrão com acesso completo a todas as APIs do Cloud.
  • Verifique se o encaminhamento de IP não está ativado nas instâncias, a menos que seja necessário.
  • Garanta que as instâncias do Compute Engine não tenham endereços IP públicos quando isso não for necessário. Em vez disso, use o gateway NAT.

Principais serviços

O Compute Engine oferece máquinas virtuais que são executadas nos inovadores data centers e nas redes globais de fibra do Google. As ferramentas do Compute Engine permitem o escalonamento de instâncias únicas para uma infraestrutura global com balanceamento de carga. As VMs do Compute Engine são inicializadas rapidamente, vêm com opções de disco permanente e local de alto desempenho e oferecem desempenho consistente. Nossos servidores virtuais estão disponíveis em muitas configurações, incluindo tamanhos predefinidos, e incluem opções para criar tipos de máquinas personalizados otimizados para suas necessidades específicas. Os preços flexíveis e os descontos automáticos por uso prolongado tornam o Compute Engine flexível para atender aos requisitos de preço e desempenho.

O Google Kubernetes Engine fornece um gerenciador de clusters e um sistema de orquestração avançado para executar contêineres do Docker. O GKE programa seus contêineres no cluster, os mantém íntegros e os gerencia automaticamente com base nos requisitos definidos por você (como CPU e memória). O GKE é criado com base no Kubernetes, o sistema de orquestração de contêineres de código aberto. O uso de uma plataforma com base em código aberto oferece a flexibilidade de implantar seus contêineres no GKE, no local ou em outra infraestrutura de nuvem pública. O GKE fornece um plano de controle gerenciado do Kubernetes que ajuda você a se concentrar no desenvolvimento de aplicativos e facilita o gerenciamento de implantações do Kubernetes. O GKE ajuda você a implantar clusters por zona ou regionais, dependendo das suas necessidades, além de oferecer suporte ao cluster particular e ao Knative.

O App Engine é uma plataforma para criar aplicativos da Web escalonáveis e back-ends para dispositivos móveis e IoT. Com o App Engine, você tem acesso a serviços e APIs integrados, como armazenamentos de dados do NoSQL, memcache e uma API de autenticação do usuário, comuns para a maioria dos aplicativos. O App Engine pode escalonar seu aplicativo automaticamente em resposta à quantidade de tráfego que ele recebe. Assim, você paga apenas pelos recursos que usa. Basta fazer upload do seu código, e o Google gerencia a disponibilidade do seu app. Não é preciso provisionar nem manter um servidor.

O Cloud Functions é um ambiente de execução sem servidor para criar e conectar serviços em nuvem. Com ele, é possível escrever funções simples que têm apenas uma finalidade e que são vinculadas a eventos emitidos pela infraestrutura e pelos serviços em nuvem. A função é acionada quando um evento em análise é disparado. O código é executado em um ambiente totalmente gerenciado. Não é necessário provisionar infraestruturas ou se preocupar com gerenciamento de servidores.

O Cloud Run é uma plataforma de computação gerenciada que permite executar contêineres sem estado invocáveis por meio de solicitações da Web ou eventos do Pub/Sub. O Cloud Run não tem servidor. Ele cuida de todo o gerenciamento da infraestrutura para que seja possível se concentrar no que mais importa: criar aplicativos incríveis. Ele foi criado a partir do Knative, permitindo que você opte por executar seus contêineres totalmente gerenciados com o Cloud Run ou no cluster do GKE com o Cloud Run para Anthos no Google Cloud.

Recursos

Rede

A rede particular do Google conecta nossos locais regionais a mais de 100 pontos de presença da rede global. O Google Cloud usa redes definidas por software e tecnologias de sistemas distribuídos para hospedar e fornecer seus serviços em todo o mundo com o máximo de velocidade possível. A VPC global do Google usa uma rede mundial de alta velocidade para vincular seus aplicativos em regiões de modo particular e confiável. Cada milissegundo de latência é importante. Por isso, o Google garante que seu conteúdo seja apresentado com a maior capacidade possível, graças a inovações como a inteligência de controle de congestionamento BBR.

Quando realizado corretamente, o design de rede é outro componente essencial que ajuda você a otimizar o desempenho e proteger o modo como seu aplicativo se comunica com serviços internos e externos. Quando você escolhe os serviços de rede, é importante pensar em algumas etapas com relação às necessidades do aplicativo e como os aplicativos se comunicarão entre si. Alguns componentes exigem serviço global, enquanto outros podem precisar de localização geográfica para uma região específica. Escolha uma região de implantação próxima aos usuários para melhorar o desempenho.

Perguntas sobre o projeto

  • Qual é o nível de complexidade da implantação da conectividade do serviço de aplicativos?
  • Quais são alguns requisitos de rede para suas implantações entre aplicativos?
  • Se você tiver serviços externos, como se conectará à rede do Google Cloud?
  • Se você conectar a VPC e a rede local, quanta largura de banda será necessária?
  • Como segmentar e controlar o acesso à sua rede? Com base em aplicativos? Equipes?
  • Você tem um processo de governança para criar ou atualizar implantações de rede novas ou atuais? Com que frequência você audita?
  • Você tem uma rede separada para aplicativos confidenciais? Como você monitora e restringe o acesso?

Recomendações

  • Documente seu projeto de rede: projetos cruzados ou implantações híbridas. Use um gráfico de topologia de rede para verificar a conectividade.
  • Use convenções de nomenclatura claras e consistentes para serviços como contas de serviço, tags de rede e regras de firewall.
  • Conceda o papel de usuário da rede no nível da sub-rede.
  • Escolha um projeto apropriado:
    • Use um projeto de host se os recursos exigirem várias interfaces de rede.
    • Correlacione as cotas da VPC aos projetos criando uma para cada um deles.
    • Use vários projetos como hospedeiro se os requisitos dos recursos excederem a cota de um projeto.
    • Use vários projetos como hospedeiros se precisar de políticas de administração separadas em cada VPC.
  • Crie uma VPC para cada equipe autônoma, com serviços compartilhados em uma VPC comum.
  • Isole dados confidenciais na própria VPC ou projeto.
  • Ao usar o peering de rede VPC, avalie se você não excederá os limites de cota de peering de rede (regras de encaminhamento, regras de firewall, rotas etc.).
  • Use ferramentas virtuais multi-NIC para controlar o tráfego entre VPCs por meio de um dispositivo na nuvem.
  • Use a VPC para administrar vários grupos de trabalho.
  • Crie uma VPC de serviços compartilhados se várias VPCs precisarem acessar recursos comuns, mas não entre si.
  • Use o roteamento dinâmico sempre que possível.
  • Centralize o controle da rede.
  • Use zonas DNS particulares para a resolução de nomes sempre que possível.
  • Audite frequentemente as permissões e o controle de acesso à rede.
  • Verifique se o acesso SSH/RDP está restrito à Internet.
  • Ative os registros de fluxo de VPC para projetos importantes.

Principais serviços

A nuvem privada virtual (VPC) fornece funcionalidade de rede para instâncias de máquina virtual (VM) do Compute Engine, clusters do GKE e instâncias flexíveis do App Engine. A VPC fornece rede global, escalonável e flexível para os serviços e recursos baseados em nuvem. Uma rede VPC é um recurso global que consiste em uma lista de sub-redes virtuais regionais em data centers, conectadas por uma rede global de longa distância. As redes VPC são isoladas logicamente umas das outras no Google Cloud.

A VPC compartilhada permite que uma organização conecte recursos de vários projetos a uma rede VPC comum para que eles possam se comunicar de maneira segura e eficiente usando endereços IP internos dessa rede. Quando você usa a VPC compartilhada, é preciso designar um projeto como host e anexar um ou mais projetos de serviço. As redes VPC no host são chamadas de redes VPC compartilhadas.

O Cloud Load Balancing permite que você distribua recursos de computação com balanceamento de carga em uma ou várias regiões, para atender aos requisitos de alta disponibilidade, colocar seus recursos em um endereço IP Anycast e escalonar seus recursos com o escalonamento automático inteligente. O Cloud Load Balancing é totalmente integrado ao Cloud CDN para otimizar o envio de conteúdo. O Google Cloud oferece balanceadores de carga globais e regionais, bem como balanceadores internos para ajudar a otimizar a exibição do aplicativo.

O Cloud CDN, uma rede de fornecimento de conteúdo, usa os principais pontos de presença globais do Google para armazenar em cache o conteúdo com balanceamento de carga HTTP(S) próximo aos usuários. O armazenamento de conteúdo em cache nos perímetros da rede do Google proporciona aos usuários mais rapidez no fornecimento de conteúdo e custos de veiculação menores.

O Cloud DNS é um serviço de Sistema de Nome de Domínio (DNS, na sigla em inglês) gerenciado, escalonável, confiável e executado na mesma infraestrutura do Google. Ele tem baixa latência, alta disponibilidade e é um meio econômico de disponibilizar aplicativos e serviços para os usuários.

O Cloud Interconnect estende a rede local para a rede do Google por meio de uma conexão altamente disponível e de baixa latência. Use o Cloud Interconnect com Interconexão dedicada para se conectar diretamente ao Google ou o Cloud Interconnect com Interconexão por parceiro para se conectar ao Google por meio de um provedor de serviços compatível.

Recursos

Armazenamento

A maioria das implantações precisa de alguma forma de armazenamento para os dados. Os serviços do Google Cloud podem ser classificados em armazenamento de blob ou disco. Como o armazenamento está conectado a outros serviços pela rede, considere também os requisitos de IOPS ao selecionar o tipo de armazenamento. No Google Cloud, as IOPS são incluídas em pacotes com armazenamento e são escalonadas de acordo com o espaço provisionado. Alguns tipos de armazenamento, como discos permanentes, exigem replicação e backup manuais porque são regionais ou por zona. O Cloud Storage replica nativamente dados na região ou multirregião selecionada e tem alta disponibilidade.

Ao considerar as opções de armazenamento do Google Cloud, confira os blobs do Cloud Storage, o armazenamento em blocos do Persistent Disk e os arquivos compartilhados do Filestore. O Cloud Storage é um recurso regional ou multirregional. Todos os buckets do Cloud Storage têm redundância incorporada para proteger seus dados contra falhas em equipamentos, bem como garantir a disponibilidade deles durante eventos de manutenção de data center. As somas de verificação são calculadas para todas as operações do Cloud Storage para que o Google possa garantir que as leituras correspondam às gravações. O Persistent Disk é um recurso por zona ou regional. Portanto, você precisa seguir etapas extras para gerar snapshots, fazer backup ou replicar seus dados para redundância.

É uma prática recomendada determinar as necessidades de desempenho do aplicativo e os requisitos de dados enquanto você escolhe um tipo de armazenamento.

Perguntas sobre o projeto

  • Quanto e quais tipos de armazenamento você precisa?
  • Quais são os modos de acesso para seus requisitos?
  • Você precisa de armazenamento ativo ou de arquivamento?
  • Você quer hospedar objetos estáticos para hospedagem na Web? CDN?
  • Você armazena e processa dados confidenciais? Como você monitora e gerencia o acesso?
  • Você tem requisitos de processo e governança para criptografia?

Recomendações

  • Determine os requisitos de armazenamento do aplicativo e escolha as opções de armazenamento adequadas.
  • Torne cada nome de bucket exclusivo em todo o namespace do Cloud Storage. Não inclua informações confidenciais em um nome de bucket. Escolha nomes de buckets e objetos que são difíceis de adivinhar.
  • Faça uma estimativa do volume de tráfego que será enviado ao Cloud Storage para calcular o tempo de transferência.
  • Se você estiver hospedando conteúdo público, tente usar a CDN para minimizar o custo de saída.
  • Armazene seus dados em uma região mais próxima dos usuários do seu aplicativo.
  • Tenha em mente os requisitos de conformidade ao escolher um local para os dados do usuário.
  • Para dados que serão exibidos com taxas elevadas e alta disponibilidade, use a classe Multi-Regional Storage ou Regional Storage. Para dados que serão acessados com pouca frequência e podem tolerar disponibilidade um pouco menor, use a classe Nearline Storage ou Coldline Storage.
  • Verifique se o bucket do Cloud Storage não é acessível anonimamente ou publicamente.

Principais serviços

O Cloud Storage permite o armazenamento global e a recuperação de qualquer volume de dados a qualquer momento. É possível usar o Cloud Storage para uma variedade de cenários, incluindo veiculação de conteúdo do site, armazenamento de dados para arquivamento e recuperação de desastres ou distribuição de objetos de dados grandes por meio de download direto.

O Cloud Storage oferece quatro classes de armazenamento: Multi-Regional Storage, Regional Storage, Nearline Storage e Coldline Storage. Todas as classes de armazenamento oferecem baixa latência (o tempo para o primeiro byte normalmente é dezenas de milissegundos) e alta durabilidade. As classes diferem pela disponibilidade, duração mínima de armazenamento e preço de armazenamento e acesso.

O disco permanente é um armazenamento em blocos durável e de alto desempenho para o Google Cloud. O disco permanente fornece armazenamento SSD e HDD que pode ser anexado a instâncias em execução no Compute Engine ou no Google Kubernetes Engine. Os volumes de armazenamento podem ser redimensionados de modo transparente, ser gravados em backup rapidamente e oferecer suporte a leitores simultâneos.

Os discos permanentes regionais fornecem armazenamento durável e replicação de dados entre duas zonas na mesma região. Se você precisar de IOPS mais altas e baixa latência, o Google Cloud oferecerá SSDs locais. Eles são fisicamente anexados ao servidor que hospeda sua instância de máquina virtual. É possível usá-los como espaço em disco temporário.

O Filestore é um serviço de armazenamento de arquivos gerenciado para aplicativos que exige uma interface de sistema de arquivos e um sistema de arquivos compartilhado para dados. O Filestore oferece aos usuários uma experiência simples e nativa para manter o armazenamento conectado à rede (NAS, na sigla em inglês) gerenciado com as instâncias do Compute Engine e do Google Kubernetes Engine. A possibilidade de ajustar o desempenho e a capacidade do Filestore de modo independente gera um desempenho previsivelmente rápido para suas cargas de trabalho baseadas em arquivos.

Recursos

Banco de dados

A escolha de um banco de dados é outra etapa essencial da seleção de componentes para seu aplicativo. De modo geral, os bancos de dados são classificados como relacionais e não relacionais. É possível hospedar seu próprio banco de dados ou cluster de banco de dados usando máquinas virtuais (VMs) do Compute Engine, mas é uma boa ideia avaliar os serviços de banco de dados gerenciados do Google Cloud antes de instalar o seu. Gerenciar seu próprio banco de dados ou cluster de banco de dados implica em sobrecarga de manutenção com os patches e atualizações mais recentes, ao mesmo tempo que atende às atividades operacionais diárias, como monitoramento e backups. O Google Cloud oferece uma ampla variedade de serviços de banco de dados para você escolher, dependendo do seu caso de uso comercial. Os critérios de seleção são, por exemplo, acesso de baixa latência, processamento de dados de série temporal, recuperação de desastres ou sincronização de cliente móvel. O Cloud SQL é um serviço regional compatível com réplicas de leitura em regiões remotas, leituras de baixa latência e recuperação de desastres. O Cloud Spanner é uma oferta multirregional que oferece consistência externa, replicação global e SLA de 99,999%. Outros sistemas: Bigtable, Memorystore, Firebase e Firestore. Bancos de dados de código aberto, como MongoDB e MariaDB, também estão disponíveis.

Assim como no armazenamento, permita que os requisitos funcionais e não funcionais do aplicativo gerem a seleção do banco de dados. Defina os requisitos e selecione o banco de dados que melhor atende aos requisitos.

Quando você move cargas de trabalho para o Google Cloud, a tecnologia de migração de banco de dados se torna um componente importante para ativar e executar a migração sem inatividade. Isso é essencial para que os aplicativos continuem a atender aos usuários finais enquanto a migração do banco de dados estiver em andamento. Várias tecnologias de migração de banco de dados estão disponíveis para você.

Perguntas sobre o projeto

  • Quais bancos de dados você está executando? Como eles são usados?
  • Você tem requisitos específicos (latência, replicação, consistência)?
  • Você tem alguma dependência legada em determinados bancos de dados ou versões?
  • Quantos deles são estruturados ou não estruturados?
  • Como você controla o acesso ao seu banco de dados? No nível do aplicativo e para consumo interno?

Recomendações

  • Escolha o esquema certo para sua tabela.
  • Escolha o nome correto da chave para evitar o uso excessivo de pontos de acesso, especialmente para bancos de dados não relacionais.
  • Fragmente sua instância de banco de dados sempre que possível.
  • Use as práticas recomendadas de gerenciamento de conexão, como o pooling de conexões e a espera exponencial.
  • Evite transações muito grandes.
  • Projete e teste a resposta do seu aplicativo a atualizações de manutenção em bancos de dados.
  • Proteja e isole as conexões com seu banco de dados.

Recomendações específicas do Cloud SQL:

  • Use a rede IP particular (VPC).

    • Para reforçar a segurança, siga estas recomendações:
      • Use o Cloud SQL Proxy com redes particulares.
      • Restrinja o acesso de IP público (constraints/sql.restrictPublicIp).
  • Se você precisar de uma rede IP pública, siga estas recomendações:

    • Use o firewall integrado com uma lista de IP limitada/restritas e verifique se as instâncias do Cloud SQL exigem conexões de entrada para usar SSL.
    • Para reforçar a segurança, siga estas recomendações:
      • Não coloque nada na lista de permissões e use o Cloud SQL Proxy.
      • Restrinja redes autorizadas (constraints/sql.restrictAuthorizedNetworks).
  • Use o Cloud SQL Proxy sempre que possível.

  • Use privilégios limitados para usuários do banco de dados.

  • Verifique se a instância do banco de dados do Cloud SQL requer que todas as conexões de entrada usem SSL.

  • Verifique se as instâncias do banco de dados do Cloud SQL não estão abertas para o mundo.

  • Confira se a instância de banco de dados MySQL não permite que ninguém se conecte com privilégios de administrador.

Principais serviços

O Cloud SQL é um serviço de banco de dados totalmente gerenciado que facilita a configuração, a manutenção, o gerenciamento e a administração de bancos de dados relacionais PostgreSQL, MySQL e SQL Server na nuvem. O Cloud SQL oferece altos níveis de desempenho, escalonabilidade e conveniência. Hospedado no Google Cloud, o Cloud SQL fornece uma infraestrutura de banco de dados para aplicativos em execução em qualquer lugar.

Cloud Bigtable é uma tabela preenchida de maneira esparsa, que pode ser escalonada para bilhões de linhas e milhares de colunas e permitir o armazenamento de terabytes ou até mesmo petabytes de dados. Apenas um valor em cada linha é indexado. Esse valor é conhecido como a chave de linha. O Cloud Bigtable é ideal para armazenar grandes quantidades de dados de chave única com latência muito baixa. Ele conta com alta capacidade de operações de leitura e gravação em latência baixa, além de ser a fonte de dados ideal para operações de MapReduce.

O Cloud Spanner é o primeiro serviço de banco de dados escalonável, de nível corporativo, globalmente distribuído e de consistência forte criado para a nuvem, especificamente para combinar os benefícios da estrutura de banco de dados relacional com a escala horizontal não relacional. Essa combinação resulta em transações de alto desempenho e consistência forte entre linhas, regiões e continentes. Tudo isso com o melhor SLA do mercado, que oferece 99,999% de disponibilidade, segurança de nível empresarial e sem inatividade planejada.

O Memorystore para Redis é um serviço Redis totalmente gerenciado para o Google Cloud. Os aplicativos em execução no Google Cloud podem alcançar desempenho máximo aproveitando o serviço Redis altamente escalonável, disponível e seguro sem o trabalho de gerenciar implantações complexas do Redis.

O Firestore é um banco de dados de documentos NoSQL criado para fornecer escalonamento automático, alto desempenho e facilidade no desenvolvimento de aplicativos. A interface do Firestore apresenta muitos recursos semelhantes aos dos bancos de dados tradicionais. No entanto, por se tratar de um banco de dados NoSQL, é diferente na forma como descreve relações entre objetos de dados.

O Firebase Realtime Database é um banco de dados hospedado na nuvem. Os dados são armazenados como JSON e sincronizados em tempo real para cada cliente conectado. Quando você cria apps em plataformas cruzadas com nossos SDKs para iOS, Android e JavaScript, todos os clientes compartilham uma instância do Realtime Database e recebem automaticamente atualizações com os dados mais recentes.

Banco de dados de código aberto. Vários parceiros fornecem diferentes bancos de dados de código aberto, incluindo MongoDB, MariaDB, Redis e muitos outros.

Recursos

Análise

A maioria das empresas quer analisar os próprios dados e coletar insights deles. O Google Cloud oferece várias ferramentas gerenciadas que ajudam você a se concentrar na gravação do pipeline de ETL enquanto o Google gerencia a infraestrutura de base para você. Dependendo das necessidades da sua empresa e do que você quer alcançar, o Google Cloud oferece os seguintes serviços para ingestão, processamento, transformação, análise e visualização dos seus dados.

Escolher o serviço certo é complicado, mas se você determinar seu nível de experiência e conhecimento, a decisão de escolher ficará mais fácil. Por exemplo, o Dataflow permite escrever transformações complexas, mas você precisa ter familiaridade com scripts. O Dataprep permite visualizar seus dados e criar receitas personalizadas para transformar seus dados.

O BigQuery é ideal para um armazenamento de dados, porque é um serviço totalmente gerenciado e ajuda você a economizar em armazenamento de longo prazo. Se você tem uma tabela que não é editada por 90 dias consecutivos, o preço do armazenamento dessa tabela diminui automaticamente em 50%. Sempre particione seus dados e otimize sua consulta do BigQuery.

Perguntas sobre o projeto

  • Como você processa e analisa seus dados?
  • Você tem uma configuração de pipeline ETL atualmente? Como ele é?
  • Que tipo de dados você costuma analisar? Há algum formato de dados reservado?
  • Você tem uma estimativa dos seus dados e do crescimento esperado?
  • Você realiza operações com machine learning? Você planeja usar um serviço gerenciado ou não gerenciado?
  • Você tem SLAs para jobs ou fluxos de trabalho? Como você os monitora?

Recomendações

  • Determine se o aplicativo precisa de um pipeline de entrega "exatamente uma vez" ou "garantido uma vez".
  • Separe as funções ETL em partes menores usando o Pub/Sub como um buffer para tornar o pipeline escalonável.
  • Use a API Jobs para escalonar clusters do Dataproc, o que ajuda a reduzir custos executando jobs em clusters atuais.
  • Avalie o desempenho da consulta e particione os conjuntos de dados do BigQuery para minimizar o custo da consulta.

Principais serviços

O Pub/Sub é uma base simples, confiável e escalonável para análise de stream e sistemas de computação orientados a eventos. Envie e receba mensagens entre aplicativos independentes e distribua dados entre projetos e aplicativos executados na nuvem, no local ou em ambientes híbridos. É possível usar a flexibilidade do Pub/Sub para separar sistemas e componentes hospedados no Google Cloud ou em outro lugar na Internet. E o Pub/Sub foi projetado para fornecer entrega "pelo menos uma vez" com baixa latência e escalonamento sob demanda para dezenas de milhões de mensagens por segundo.

O Dataflow é um serviço totalmente gerenciado para transformar e enriquecer dados em modos de stream (tempo real) e lote (históricos) com a mesma confiabilidade e expressividade. A abordagem sem servidor do Dataflow libera você de tarefas operacionais, como planejamento de capacidade, gerenciamento de recursos e otimização de desempenho, enquanto você paga apenas pelo que usa. Além disso, o Dataflow não só funciona com produtos de ingestão, armazenamento de dados e machine learning do Google, mas também com ferramentas de terceiros, como Apache Spark e Apache Beam.

O Dataprep by Trifacta é um serviço de dados inteligente para explorar visualmente, limpar e preparar dados estruturados e não estruturados para análise. Como o Dataprep é sem servidor e funciona em qualquer escala, não há infraestrutura para implantar ou gerenciar. Sua próxima transformação ideal de dados é sugerida e prevista com cada entrada na IU, assim você não precisa escrever código. Além disso, com a detecção automática de esquemas, tipos de dados, possíveis mesclas e anomalias, você evita os processos demorados de criação e perfis e se concentra na análise dos dados.

O Datalab é uma ferramenta interativa avançada criada para explorar, analisar, transformar e visualizar dados, além de elaborar modelos de machine learning no Google Cloud. Ele é um notebook interativo baseado no Jupyter e integrado ao BigQuery e ao AutoML, para fornecer acesso fácil aos principais serviços de processamento de dados. Com o TensorFlow ou o AutoML, é fácil transformar dados em modelos de machine learning implantados prontos para previsão.

O Dataproc é um serviço de nuvem rápido, fácil de usar e totalmente gerenciado para executar clusters do Apache Spark e Apache Hadoop com mais simplicidade e economia. As operações que antes levavam horas ou dias agora levam segundos ou minutos. Além disso, com o faturamento por segundo, você paga apenas pelos recursos que usa. O Dataproc se integra a serviços de armazenamento, computação e monitoramento em todos os produtos do Google Cloud, oferecendo uma plataforma de processamento de dados eficiente e completa.

O Cloud Data Fusion é um serviço de integração de dados nativo da nuvem totalmente gerenciado que ajuda os usuários a criar e gerenciar pipelines de dados ETL/ELT com eficiência. Com uma interface gráfica e uma ampla biblioteca de código aberto de transformações e conectores pré-configurados, o Cloud Data Fusion muda o foco de uma organização do código e integração para insights e ação.

O BigQuery é o armazenamento de dados sem servidor totalmente gerenciado e econômico do Google, escalonado de acordo com suas necessidades de armazenamento e capacidade de computação. Com o BigQuery, você recebe um banco de dados ANSI SQL em colunas que pode analisar rapidamente de terabytes a petabytes de dados. Analise dados geoespaciais usando o SQL já conhecido com o BigQuery GIS. Crie e operacionalize rapidamente os modelos de ML em dados estruturados ou semiestruturados de grande escala usando SQL simples com o BigQuery ML, e ofereça compatibilidade com painéis interativos em tempo real com a latência de consultas abaixo de um segundo usando o BigQuery BI Engine. Além disso, o BigQuery oferece serviços de transferência de dados, ingestão flexível de dados e preços pagos por uso.

O Cloud Composer é um serviço de orquestração de fluxo de trabalho totalmente gerenciado que permite criar, programar e monitorar pipelines que abrangem nuvens e data centers locais. Criado no conhecido projeto de código aberto Apache Airflow e operado com a linguagem de programação Python, o Cloud Composer é fácil de usar e deixa você livre da dependência tecnológica. Além disso, com a integração completa para cargas de trabalho do Google Cloud, é possível orquestrar um pipeline completo com todos os produtos de Big Data do Google Cloud.

O Data Catalog é um serviço de gerenciamento de metadados totalmente gerenciado e escalonável que as organizações podem usar para descobrir, gerenciar e entender rapidamente todos os dados no Google Cloud. Ele oferece uma interface de pesquisa simples e fácil de usar para descoberta de dados, um sistema de catálogo flexível e poderoso para capturar metadados técnicos e comerciais e uma base sólida de segurança e conformidade com as integrações do Cloud Data Loss Prevention (DLP) e do Cloud Identity and Access Management.

O Google Data Studio é um serviço de análise visual totalmente gerenciado que ajuda qualquer pessoa na sua organização a receber insights de dados por meio de painéis interativos e fáceis de criar, que inspiram decisões de negócios mais inteligentes. Quando o Data Studio é combinado com o serviço de análise na memória BigQuery BI Engine, a exploração de dados e a interatividade visual atingem velocidades de milissegundos em grandes conjuntos de dados.

Recursos