Este artigo aborda a forma de alojar um Website no Google Cloud. Google Cloud oferece uma plataforma robusta, flexível, fiável e escalável para publicar Websites. A Google foi criada Google Cloud com a mesma infraestrutura que a Google usa para publicar conteúdo de sites como Google.com, YouTube e Gmail. Pode alojar o conteúdo do seu Website usando o tipo e o design de infraestrutura que melhor se adequam às suas necessidades.
Pode considerar este artigo útil se:
- Ter conhecimentos sobre como criar um Website e ter implementado e executado alguma infraestrutura de alojamento Web anteriormente.
- Avaliar se e como migrar o seu site para o Google Cloud.
Se quiser criar um Website simples, considere usar o Google Sites, uma ferramenta estruturada de criação de páginas Web e wikis. Para mais informações, visite a Ajuda dos Sites.
Escolher uma opção
Se for a primeira vez que usa o Google Cloud, é uma abordagem razoável começar a usar o tipo de tecnologia com o qual já está familiarizado. Por exemplo, se usar atualmente servidores de hardware ou máquinas virtuais (VMs) para alojar o seu site, talvez com outro fornecedor de nuvem ou no seu próprio hardware, o Compute Engine oferece-lhe um paradigma familiar. Se preferir a computação sem servidor, então o Cloud Run é provavelmente uma boa opção para si. Se usar uma oferta de plataforma como serviço (PaaS), como o Heroku ou o Engine Yard, o App Engine pode ser o melhor ponto de partida.
Depois de se familiarizar com o Google Cloud, pode explorar a variedade de produtos e serviços que o Google Cloud oferece. Por exemplo, se começou a usar o Compute Engine, pode aumentar as capacidades do seu site usando o Google Kubernetes Engine (GKE) ou migrar algumas ou todas as funcionalidades para o App Engine e o Cloud Run.
A tabela seguinte resume as suas opções de alojamento no Google Cloud:
Opção | Produto | Armazenamento de dados | Balanceamento de carga | Escalabilidade | Registo e monitorização |
---|---|---|---|---|---|
Website estático | Cloud Storage Firebase Hosting |
Contentor do Cloud Storage | HTTP(S) opcional |
Automaticamente | |
Máquinas virtuais | Compute Engine | Cloud SQL, Cloud Storage, Firestore e Bigtable, ou pode usar outro fornecedor de armazenamento externo. Discos persistentes baseados em disco rígido, denominados discos persistentes padrão, e discos persistentes de estado sólido (SSD). |
HTTP(S) Proxy TCP Proxy SSL Terminação IPv6 Rede Entre regiões Internos |
Automaticamente com grupos de instâncias geridas | |
Contentores | GKE | Semelhante ao Compute Engine, mas interage com discos persistentes de forma diferente |
Rede HTTP(S) |
Redimensionador automático de clusters | |
Sem servidor | Cloud Run |
Google Cloud serviços como o Cloud SQL, o Firestore, o Cloud Storage e bases de dados de terceiros acessíveis | HTTP(S) Gerido pela Google |
Gerido pela Google | |
Plataforma gerida | App Engine |
Google Cloud serviços como o Cloud SQL, o Firestore, o Cloud Storage e bases de dados de terceiros acessíveis | HTTP(S) Gerido pela Google |
Gerido pela Google |
Este artigo pode ajudar a compreender as principais tecnologias que pode usar para alojamento Web no Google Cloud e dar-lhe uma ideia de como funcionam as tecnologias. O artigo fornece links para documentação completa, tutoriais e artigos de soluções que podem ajudar a desenvolver uma compreensão mais profunda quando estiver tudo pronto.
Compreender os custos
Uma vez que existem muitas variáveis e cada implementação é diferente, não é possível fornecer aconselhamento específico sobre os custos neste artigo. Para compreender os princípios da Google sobre o funcionamento dos preços no Google Cloud, consulte a página de preços. Para compreender os preços dos serviços individuais, consulte a secção de preços dos produtos. Também pode usar a calculadora de preços para estimar como pode ser a sua Google Cloud utilização. Pode fornecer detalhes sobre os serviços que quer usar e, em seguida, ver uma estimativa de preços.
Configurar serviços de nomes de domínios
Normalmente, é recomendável registar um nome do domínio para o seu site. Pode usar uma entidade de registo de nomes de domínios públicos para registar um nome exclusivo para o seu site. Se quiser ter controlo total do seu próprio Sistema de Nomes de Domínio (DNS), pode usar o Cloud DNS como fornecedor de DNS. A documentação do Cloud DNS inclui um início rápido para começar.
Se tiver um fornecedor DNS existente que queira usar, geralmente, tem de
criar alguns registos com esse fornecedor. Para um nome de domínio como example.com
, cria um registo A
com o seu fornecedor DNS. Para o subdomínio www.example.com
, cria um registo CNAME
para www
de modo a direcioná-lo para o domínio example.com
. O registo A
mapeia um nome de anfitrião para um endereço IP.
O registo CNAME
cria um alias para o registo A
.
Se a entidade de registo do seu nome de domínio também for o seu fornecedor de DNS, provavelmente não tem de fazer mais nada. Se usar fornecedores separados para o registo e o DNS, certifique-se de que a entidade de registo do seu nome de domínio tem os servidores de nomes corretos associados ao seu domínio.
Depois de fazer as alterações de DNS, as atualizações dos registos podem demorar algum tempo a propagar-se, consoante os valores de tempo de vida (TTL) na sua zona. Se for um novo nome do anfitrião, as alterações entram em vigor rapidamente porque os resolutores de DNS não têm valores anteriores em cache e podem contactar o fornecedor de DNS para obter as informações necessárias para encaminhar pedidos.
Alojamento de um Website estático
A forma mais simples de publicar conteúdo do Website através de HTTP(S) é alojar páginas Web estáticas. As páginas Web estáticas são apresentadas inalteradas, tal como foram escritas, normalmente através de HTML. A utilização de um Website estático é uma boa opção se as páginas do seu site raramente mudarem depois de serem publicadas, como publicações de blogues ou páginas que fazem parte de um Website de uma pequena empresa. Pode fazer muitas coisas com páginas Web estáticas, mas se precisar que o seu site tenha interações robustas com os utilizadores através de código do lado do servidor, deve considerar as outras opções abordadas neste artigo.
Alojamento de um Website estático com o Cloud Storage
Para alojar um site estático no Cloud Storage, tem de criar um contentor do Cloud Storage, carregar o conteúdo e testar o novo site. Pode
publicar os seus dados diretamente a partir de storage.googleapis.com
ou pode
validar a propriedade do seu domínio
e usar
o seu nome de domínio.
Pode criar as suas páginas Web estáticas da forma que quiser. Por exemplo, pode criar páginas manualmente através de HTML e CSS. Pode usar um gerador de sites estáticos, como o Jekyll, o Ghost ou o Hugo, para criar o conteúdo. Com os geradores de sites estáticos, cria um Website estático através da criação em markdown, e do fornecimento de modelos e ferramentas. Geralmente, os geradores de sites oferecem um servidor Web local que pode usar para pré-visualizar o seu conteúdo.
Depois de o site estático estar a funcionar, pode atualizar as páginas estáticas através de qualquer processo que pretender. Esse processo pode ser tão simples como copiar manualmente uma página atualizada para o contentor. Pode optar por usar uma abordagem mais automatizada, como armazenar o seu conteúdo no GitHub e, em seguida, usar um webhook para executar um script que atualiza o contentor. Um sistema ainda mais avançado pode usar uma ferramenta de integração contínua/entrega contínua (CI/CD), como o Jenkins, para atualizar o conteúdo no contentor. O Jenkins tem um plug-in do Cloud Storage que fornece um Google Cloud Storage Uploader
passo pós-compilação para publicar artefactos de compilação no Cloud Storage.
Se tiver uma app Web que precise de publicar conteúdo estático ou conteúdo multimédia estático carregado pelo utilizador, a utilização do Cloud Storage pode ser uma forma rentável e eficiente de alojar e publicar este conteúdo, ao mesmo tempo que reduz a quantidade de pedidos dinâmicos à sua app Web.
Além disso, o Cloud Storage pode aceitar diretamente conteúdo enviado pelos utilizadores. Esta funcionalidade permite que os utilizadores carreguem ficheiros multimédia grandes de forma direta e segura sem usar proxies através dos seus servidores.
Para conseguir o melhor desempenho do seu Website estático, consulte as práticas recomendadas para o Cloud Storage.
Para mais informações, consulte as seguintes páginas:
- Alojamento de um Website estático
- J é de Jenkins (publicação no blogue)
- Band Aid 30 on Google Cloud (publicação no blogue)
- Documentação do Cloud Storage
Alojamento de um Website estático com o Firebase Hosting
O Firebase Hosting oferece alojamento estático rápido e seguro para a sua app Web. Com o Firebase Hosting, pode implementar apps Web e conteúdo estático numa rede de fornecimento de conteúdos (CDN) global através de um único comando.
Seguem-se algumas vantagens que obtém quando usa o Firebase Hosting:
- O SSL de configuração zero está integrado no Firebase Hosting. Aprovisiona certificados SSL em domínios personalizados sem custo financeiro.
- Todo o seu conteúdo é publicado através de HTTPS.
- O seu conteúdo é fornecido aos utilizadores a partir de limites da RFC em todo o mundo.
- Com a Firebase CLI, pode pôr a sua app em funcionamento em segundos. Use ferramentas de linha de comandos para adicionar alvos de implementação ao seu processo de compilação.
- Tem acesso a funcionalidades de gestão de lançamentos, como a implementação atómica de novos recursos, a gestão de versões completa e as reversões com um clique.
- O alojamento oferece uma configuração útil para apps de página única e outros sites mais semelhantes a apps.
- O Hosting foi criado para ser usado de forma integrada com outras funcionalidades do Firebase.
Para mais informações, consulte as seguintes páginas:
Usar máquinas virtuais com o Compute Engine
Para exemplos de utilização de infraestrutura como serviço (IaaS), Google Cloud o Google Cloud fornece o Compute Engine. O Compute Engine oferece uma infraestrutura de computação robusta, mas tem de escolher e configurar os componentes da plataforma que quer usar. Com o Compute Engine, é da sua responsabilidade configurar, administrar e monitorizar os sistemas. A Google garante que os recursos estão disponíveis, são fiáveis e estão prontos para utilização, mas é da sua responsabilidade o aprovisionamento e a gestão dos mesmos. A vantagem, aqui, é que tem controlo total dos sistemas e flexibilidade ilimitada.
Use o Compute Engine para conceber e implementar praticamente qualquer sistema de alojamento de Websites que quiser. Pode usar VMs, denominadas instâncias, para criar a sua app, tal como faria se tivesse a sua própria infraestrutura de hardware. O Compute Engine oferece uma variedade de tipos de máquinas para personalizar a sua configuração de acordo com as suas necessidades e orçamento. Pode escolher os sistemas operativos, as stacks de desenvolvimento, os idiomas, as frameworks, os serviços e outras tecnologias de software que preferir.
Configuração automática com o Google Cloud Marketplace
A forma mais fácil de implementar uma pilha de alojamento Web completa é usar o Google Cloud Marketplace. Com apenas alguns cliques, pode implementar qualquer uma das mais de 100 soluções totalmente realizadas com o clicar para implementar da Google ou o Bitnami.
Por exemplo, pode configurar uma pilha LAMP ou o WordPress com o Cloud Marketplace. O sistema implementa uma pilha de software completa e funcional em apenas alguns minutos numa única instância. Antes da implementação, o Cloud Marketplace mostra-lhe estimativas de custos para a execução do site, dá-lhe informações claras sobre as versões dos componentes de software que instala por si e permite-lhe personalizar a sua configuração alterando os nomes das instâncias dos componentes, escolhendo o tipo de máquina e escolhendo um tamanho do disco. Após a implementação, tem controlo total sobre as instâncias do Compute Engine, as respetivas configurações e o software.
Configuração manual
Também pode criar a sua infraestrutura no Compute Engine manualmente, criando a configuração de raiz ou com base numa implementação do Google Cloud Marketplace. Por exemplo, pode querer usar uma versão de um componente de software não oferecido pelo Cloud Marketplace ou, talvez, prefira instalar e configurar tudo por si.
A disponibilização de uma estrutura completa e práticas recomendadas para configurar um Website está fora do âmbito deste artigo. No entanto, numa vista de alto nível, o lado técnico da configuração de uma infraestrutura de alojamento Web no Compute Engine requer que:
- Compreenda os requisitos. Se estiver a criar um novo Website, certifique-se de que compreende os componentes de que precisa, como instâncias, necessidades de armazenamento e infraestrutura de rede. Se estiver a migrar a sua app de uma solução existente, provavelmente já compreende estes requisitos, mas tem de pensar em como a sua configuração existente é mapeada para os serviços Google Cloud .
- Planeie o design. Pense na sua arquitetura e escreva o seu design. Seja o mais explícito possível.
- Crie os componentes. Os componentes que normalmente considera como recursos físicos, como computadores e comutadores de rede, são fornecidos através de serviços no Compute Engine. Por exemplo, se quiser um computador, tem de criar uma instância do Compute Engine. Se quiser um disco rígido persistente, também o cria. As ferramentas de infraestrutura como código, como o Terraform, tornam este processo fácil e repetível.
- Configure e personalize. Depois de ter os componentes pretendidos, tem de os configurar, instalar e configurar software, bem como escrever e implementar qualquer código de personalização necessário. Pode replicar a configuração executando scripts de shell, o que ajuda a acelerar as implementações futuras. O Terraform também ajuda neste caso, fornecendo modelos de configuração declarativos e flexíveis para a implementação automática de recursos. Também pode tirar partido de ferramentas de automatização de TI, como o Puppet e o Chef.
- Implemente os recursos. Presumivelmente, tem páginas Web e imagens.
- Teste. Verifique se tudo funciona como esperado.
- Implementar na produção. Abra o seu site para que o mundo o veja e use.
Armazenar dados com o Compute Engine
A maioria dos Websites precisa de algum tipo de armazenamento. Pode precisar de armazenamento por vários motivos, como guardar ficheiros que os utilizadores carregam e, naturalmente, os recursos que o seu site usa.
AGoogle Cloud oferece uma variedade de serviços de armazenamento geridos, incluindo:
- Uma base de dados SQL no Cloud SQL, que é um serviço de base de dados relacional totalmente gerido para MySQL, PostgreSQL e SQL Server.
- Duas opções para armazenamento de dados NoSQL: Firestore e Bigtable.
- O Memorystore, que é um serviço de armazenamento de dados na memória totalmente gerido para Redis e Memcached.
- Armazenamento de objetos consistente, escalável e de grande capacidade no Cloud Storage.
O armazenamento na nuvem está disponível em várias classes:
- O tipo Standard oferece a máxima disponibilidade.
- O Nearline oferece uma opção de baixo custo ideal para dados acedidos menos de uma vez por mês.
- O Coldline oferece uma opção de baixo custo ideal para dados acedidos menos de uma vez por trimestre.
- O arquivo oferece a opção de arquivo, cópia de segurança e recuperação de desastres de custo mais baixo.
- Discos persistentes no Compute Engine para utilização como armazenamento principal para as suas instâncias. O Compute Engine oferece discos persistentes baseados em discos rígidos, denominados discos persistentes padrão, e discos persistentes de estado sólido (SSD). Também pode optar por configurar a sua tecnologia de armazenamento preferida no Compute Engine através de discos persistentes. Por exemplo, pode configurar o PostgreSQL como a sua base de dados SQL ou o MongoDB como o seu armazenamento NoSQL. Para compreender a gama completa e as vantagens dos serviços de armazenamento no Google Cloud, consulte o artigo Escolher uma opção de armazenamento.
Balanceamento de carga com o Compute Engine
Para qualquer Website que opere em grande escala, a utilização de tecnologias de equilíbrio de carga para distribuir a carga de trabalho entre servidores é frequentemente um requisito. Tem várias opções quando cria a arquitetura dos seus servidores Web com equilíbrio de carga no Compute Engine, incluindo:
- Balanceamento de carga HTTP(S).
Explica os princípios básicos da utilização do Cloud Load Balancing.
- Balanceamento de carga com base no conteúdo. Demonstra como distribuir tráfego para diferentes instâncias com base no URL recebido.
- Balanceamento de carga entre regiões. Demonstra a configuração de instâncias de VM em diferentes regiões e a utilização do balanceamento de carga HTTP ou HTTPS para distribuir o tráfego pelas regiões.
- Balanceamento de carga do proxy TCP. Demonstra a configuração do balanceamento de carga do proxy TCP global para um serviço que existe em várias regiões.
- Balanceamento de carga do proxy SSL. Demonstra a configuração do equilíbrio de carga do proxy SSL global para um serviço que existe em várias regiões.
- Encerramento de IPv6 para balanceamento de carga HTTP(S), proxy SSL e proxy TCP. Explica a terminação do IPv6 e as opções para configurar equilibradores de carga para processar pedidos IPv6.
- Balanceamento de carga de rede. Mostra um cenário básico que configura uma configuração de balanceamento de carga da camada 3 para distribuir o tráfego HTTP por instâncias em bom estado.
- Balanceamento de carga entre regiões com back-ends do IIS da Microsoft. Mostra como usar o balanceador de carga do Compute Engine para distribuir o tráfego para servidores do Microsoft Internet Information Services (IIS).
- Configurar o equilíbrio de carga interno Pode configurar um equilibrador de carga que distribui o tráfego de rede numa rede privada que não está exposta à Internet. O equilíbrio de carga interno é útil não só para apps de intranet em que todo o tráfego permanece numa rede privada, mas também para apps Web complexas em que um front-end envia pedidos a servidores de back-end através de uma rede privada.
A implementação do equilíbrio de carga é flexível e pode usar o Compute Engine com as suas soluções existentes. Por exemplo, o balanceamento de carga de HTTP(S) com o Nginx é uma possível solução que pode usar em vez do balanceador de carga do Compute Engine.
Distribuição de conteúdo com o Compute Engine
Uma vez que o tempo de resposta é uma métrica fundamental para qualquer Website, a utilização de uma RFC para diminuir a latência e aumentar o desempenho é frequentemente um requisito, especialmente para um site com tráfego Web global.
O Cloud CDN usa os pontos de presença distribuídos globalmente da Google para fornecer conteúdo a partir de localizações de cache mais próximas dos utilizadores. O Cloud CDN funciona com o balanceamento de carga HTTP(S). Para publicar conteúdo a partir do Compute Engine, do Cloud Storage ou de ambos a partir de um único endereço IP, ative o Cloud CDN para um balanceador de carga de HTTP(S).
Escala automática com o Compute Engine
Pode configurar a sua arquitetura para adicionar e remover servidores à medida que a procura varia. Esta abordagem pode ajudar a garantir que o seu site tem um bom desempenho em períodos de pico de carga, ao mesmo tempo que mantém os custos sob controlo durante períodos de procura mais típicos. O Compute Engine fornece um escalador automático que pode usar para este fim.
O dimensionamento automático é uma funcionalidade dos grupos de instâncias geridas. Um grupo de instâncias geridas é um conjunto de instâncias de máquinas virtuais homogéneas, criadas a partir de um modelo de instância comum. Um escalador automático adiciona ou remove instâncias num grupo de instâncias gerido. Embora o Compute Engine tenha grupos de instâncias geridos e não geridos, só pode usar grupos de instâncias geridos com um escalador automático. Para mais informações, consulte o artigo Dimensionamento automático no Compute Engine.
Para uma análise detalhada do que é necessário para criar uma solução de app Web escalável e resiliente, consulte o artigo Criar apps Web escaláveis e resilientes.
Registo e monitorização com o Compute Engine
Google Cloud inclui funcionalidades que pode usar para manter-se a par do que está a acontecer com o seu Website.
O Cloud Logging recolhe e armazena registos de apps e serviços no Google Cloud. Pode ver ou exportar registos e integrar registos de terceiros através de um agente de registo.
O Cloud Monitoring fornece painéis de controlo e alertas para o seu site. Configura a monitorização com a Google Cloud consola. Pode rever as métricas de desempenho dos serviços na nuvem, das máquinas virtuais e dos servidores de código aberto comuns, como o MongoDB, o Apache, o Nginx e o Elasticsearch. Pode usar a API Cloud Monitoring para obter dados de monitorização e criar métricas personalizadas.
O Cloud Monitoring também oferece verificações de tempo de atividade, que enviam pedidos aos seus Websites para ver se respondem. Pode monitorizar a disponibilidade de um Website implementando uma política de alertas que cria um incidente se a verificação de tempo de atividade falhar.
Gerir DevOps com o Compute Engine
Para ver informações sobre a gestão de DevOps com o Compute Engine, consulte o artigo Testes de carga distribuídos com o Kubernetes.
Usar contentores com o GKE
Pode já estar a usar contentores, como os contentores do Docker. Para o alojamento Web, os contentores oferecem várias vantagens, incluindo:
- Componentização. Pode usar contentores para separar os vários componentes da sua app Web. Por exemplo, suponhamos que o seu site executa um servidor Web e uma base de dados. Pode executar estes componentes em contentores separados, modificando e atualizando um componente sem afetar o outro. À medida que o design da sua app se torna mais complexo, os contentores são adequados para uma arquitetura orientada para serviços, incluindo microsserviços. Este tipo de design suporta a escalabilidade, entre outros objetivos.
- Portabilidade. Um contentor tem tudo o que precisa para ser executado. A sua app e as respetivas dependências estão agrupadas. Pode executar os seus contentores numa variedade de plataformas, sem se preocupar com os detalhes do sistema subjacente.
- Implementação rápida. Quando chega a altura de implementar, o seu sistema é criado a partir de um conjunto de definições e imagens, para que as peças possam ser implementadas de forma rápida, fiável e automática. Normalmente, os contentores são pequenos e a implementação é muito mais rápida em comparação com, por exemplo, as máquinas virtuais.
A computação de contentores no Google Cloud oferece ainda mais vantagens para o alojamento Web, incluindo:
- Orquestração. O GKE é um serviço gerido criado com base no Kubernetes, o sistema de orquestração de contentores de código aberto introduzido pela Google. Com o GKE, o seu código é executado em contentores que fazem parte de um cluster composto por instâncias do Compute Engine. Em vez de administrar contentores individuais ou criar e encerrar cada contentor manualmente, pode gerir automaticamente o cluster através do GKE, que usa a configuração que definir.
- Registo de imagens. O Artifact Registry oferece armazenamento privado para imagens de Docker no Google Cloud. Pode aceder ao registo através de um ponto final HTTPS, pelo que pode extrair imagens de qualquer máquina, quer seja uma instância do Compute Engine ou o seu próprio hardware. O serviço de registo alojam as suas imagens personalizadas no Cloud Storage no seu Google Cloud projeto. Esta abordagem garante, por predefinição, que as suas imagens personalizadas só são acessíveis por responsáveis que tenham acesso ao seu projeto.
- Mobilidade. Isto significa que tem a flexibilidade de mover e combinar cargas de trabalho com outros fornecedores de nuvem ou misturar cargas de trabalho de computação na nuvem com implementações no local para criar uma solução híbrida.
Armazenar dados com o GKE
Uma vez que o GKE é executado em Google Cloud e usa instâncias do Compute Engine como nós, as suas opções de armazenamento têm muito em comum com o armazenamento no Compute Engine. Pode aceder ao Cloud SQL, ao Cloud Storage, ao Firestore e ao Bigtable através das respetivas APIs ou usar outro fornecedor de armazenamento externo, se quiser. No entanto, o GKE interage com os discos persistentes do Compute Engine de uma forma diferente da de uma instância normal do Compute Engine.
Uma instância do Compute Engine inclui um disco anexado. Quando usa o Compute Engine, enquanto a instância existir, o volume do disco permanece com a instância. Pode até desanexar o disco e usá-lo com uma instância diferente. No entanto, num contentor, os ficheiros no disco são efémeros. Quando um contentor é reiniciado, por exemplo, após uma falha, os ficheiros no disco são perdidos. O Kubernetes resolve este problema através das abstrações volume e classe de armazenamento. Um tipo de classe de armazenamento é
GCE PD
.
Isto significa que pode usar discos persistentes do Compute Engine com contentores para evitar a eliminação dos seus ficheiros de dados quando usa o GKE.
Para compreender as funcionalidades e as vantagens de um volume, deve primeiro compreender um pouco sobre os pods. Pode considerar um pod como um anfitrião lógico específico da app para um ou mais contentores. Um pod é executado numa instância de nó. Quando os contentores são membros de um pod, podem partilhar vários recursos, incluindo um conjunto de volumes de armazenamento partilhados. Estes volumes permitem que os dados sobrevivam aos reinícios dos contentores e sejam partilhados entre os contentores no pod. Claro que também pode usar um único contentor e volume num pod, mas o pod é uma abstração necessária para ligar logicamente estes recursos entre si.
Para ver um exemplo, consulte o tutorial Usar discos persistentes com o WordPress e o MySQL.
Balanceamento de carga com o GKE
Muitas arquiteturas de alojamento Web de grande dimensão precisam de ter vários servidores em execução que possam partilhar as exigências de tráfego. Uma vez que pode criar e gerir vários contentores, nós e pods com o GKE, é uma solução natural para um sistema de alojamento Web com equilíbrio de carga.
Usar o balanceamento de carga de rede
A forma mais fácil de criar um balanceador de carga no GKE é usar o balanceamento de carga de rede do Compute Engine. O equilíbrio de carga de rede pode equilibrar a carga dos seus sistemas com base nos dados do protocolo de Internet recebidos, como o endereço, a porta e o tipo de protocolo. O balanceamento de carga de rede usa regras de encaminhamento. Estas regras apontam para pools de destino que indicam que instâncias estão disponíveis para utilização no equilíbrio de carga.
Com o balanceamento de carga de rede, pode equilibrar a carga de protocolos adicionais baseados em TCP/UDP, como o tráfego SMTP, e a sua app pode inspecionar diretamente os pacotes.
Pode implementar o equilíbrio de carga de rede simplesmente adicionando o campo type: LoadBalancer
ao ficheiro de configuração do serviço.
Usar o balanceamento de carga HTTP(S)
Se precisar de funcionalidades de balanceamento de carga mais avançadas, como o balanceamento de carga HTTPS, o balanceamento de carga baseado em conteúdo ou o balanceamento de carga entre regiões, pode integrar o seu serviço do GKE com a funcionalidade de balanceamento de carga HTTP/HTTPS do Compute Engine. O Kubernetes fornece o recurso Ingress que encapsula uma coleção de regras para encaminhar tráfego externo para endpoints do Kubernetes. No GKE, um recurso Ingress processa o aprovisionamento e a configuração do balanceador de carga HTTP/HTTPS do Compute Engine.
Para mais informações sobre a utilização do balanceamento de carga HTTP/HTTPS no GKE, consulte o artigo Configurar o balanceamento de carga HTTP com a entrada.
Dimensionamento com o GKE
Para redimensionar automaticamente os clusters, pode usar o redimensionador automático de clusters. Esta funcionalidade verifica periodicamente se existem pods à espera de um nó com recursos livres, mas que não estão a ser agendados. Se existirem esses pods, o escalador automático redimensiona o conjunto de nós se o redimensionamento permitir que os pods em espera sejam agendados.
O redimensionador automático de clusters também monitoriza a utilização de todos os nós. Se um nó não for necessário durante um período prolongado e todos os respetivos pods puderem ser agendados noutro local, o nó é eliminado.
Para mais informações sobre o Cluster Autoscaler, as respetivas limitações e as práticas recomendadas, consulte a documentação do Cluster Autoscaler.
Registo e monitorização com o GKE
Tal como no Compute Engine, os serviços de registo e monitorização fornecem os seus serviços de registo e monitorização. O registo recolhe e armazena registos de apps e serviços. Pode ver ou exportar registos e integrar registos de terceiros através de um agente de registo.
A monitorização fornece painéis de controlo e alertas para o seu site. Configura a monitorização com a Google Cloud consola. Pode rever as métricas de desempenho dos serviços na nuvem, das máquinas virtuais e dos servidores de código aberto comuns, como o MongoDB, o Apache, o Nginx e o Elasticsearch. Pode usar a API Monitoring para obter dados de monitorização e criar métricas personalizadas.
Gerir o DevOps com o GKE
Quando usa o GKE, já está a usufruir de muitas das vantagens que a maioria das pessoas associa ao DevOps. Isto é especialmente verdade quando se trata da facilidade de criação de pacotes, implementação e gestão. Para as suas necessidades de fluxo de trabalho de CI/CD, pode tirar partido de ferramentas criadas para a nuvem, como o Cloud Build e o Cloud Deploy, ou ferramentas populares como o Jenkins. Para mais informações, consulte os seguintes artigos:
Criar numa plataforma sem servidor com o Cloud Run
A plataforma sem servidor doGoogle Cloudpermite-lhe escrever código à sua maneira sem se preocupar com a infraestrutura subjacente. Pode criar aplicações sem servidor de pilha completa com o armazenamento, as bases de dados, a aprendizagem automática e muito mais do Google Cloud.
Para os seus Websites em contentores, também pode implementá-los no Cloud Run, além de usar o GKE. O Cloud Run é uma plataforma sem servidor totalmente gerida que lhe permite executar aplicações contentorizadas altamente escaláveis no Google Cloud. Só paga pelo tempo de execução do seu código.
Ao usar contentores com o Cloud Run, pode tirar partido de tecnologias avançadas, como o Nginx, o Express.js e o Django, para criar os seus Websites, aceder à sua base de dados SQL no Cloud SQL e renderizar páginas HTML dinâmicas.
A documentação do Cloud Run inclui um início rápido para começar.
Armazenar dados com o Cloud Run
Os contentores do Cloud Run são efémeros e tem de compreender as respetivas quotas e limites para os seus exemplos de utilização. Os ficheiros podem ser armazenados temporariamente para processamento numa instância de contentor, mas este armazenamento é retirado da memória disponível para o serviço, conforme descrito no contrato de tempo de execução.
Para o armazenamento persistente, semelhante ao App Engine, pode escolher os serviços da Google Cloud, como o Cloud Storage, o Firestore ou o Cloud SQL. Em alternativa, também pode usar uma solução de armazenamento de terceiros.
Balanceamento de carga e escalabilidade automática com o Cloud Run
Por predefinição, quando cria no Cloud Run, este encaminha automaticamente os pedidos recebidos para os contentores de back-end adequados e faz o equilíbrio de carga por si. No entanto, se quiser tirar partido das capacidades de balanceamento de carga de HTTP(S) de nível empresarial com todas as funcionalidades do Google Cloud, pode usar grupos de pontos finais de rede sem servidor. Google Cloud
Com o balanceamento de carga de HTTP(S), pode ativar o Cloud CDN ou servir tráfego de várias regiões. Além disso, pode usar middleware, como o API Gateway, para melhorar o seu serviço.
Para o Cloud Run, Google Cloud gere o dimensionamento automático de instâncias de contentores por si. Cada revisão é automaticamente dimensionada para o número de instâncias de contentores necessárias para processar todos os pedidos recebidos. Quando uma revisão não recebe tráfego, por predefinição, é dimensionada para zero instâncias de contentores. No entanto, se quiser, pode alterar esta predefinição para especificar uma instância a manter inativa ou ativa através da definição minimum instances (instâncias mínimas).
Registo e monitorização com o Cloud Run
O Cloud Run tem dois tipos de registos que são enviados automaticamente para o Cloud Logging:
- Registos de pedidos: registos de pedidos enviados para serviços do Cloud Run. Estes registos são criados automaticamente.
- Registos de contentores: registos emitidos a partir das instâncias de contentores, normalmente do seu próprio código, escritos em localizações suportadas, conforme descrito no artigo Escrever registos de contentores.
Pode ver os registos do seu serviço de duas formas:
- Use a página do Cloud Run na Google Cloud consola.
- Use o Explorador de registos do Cloud Logging na Google Cloud consola.
Ambos os métodos de visualização examinam os mesmos registos armazenados no Cloud Logging, mas o Explorador de registos oferece mais detalhes e capacidades de filtragem.
O Cloud Monitoring oferece monitorização do desempenho do Cloud Run, métricas, e verificações de tempo de atividade, juntamente com alertas para enviar notificações quando determinados limites de métricas são excedidos. A preços do Google Cloud Observability aplicam-se, o que significa que não existe cobrança de métricas na versão totalmente gerida do Cloud Run. Tenha em atenção que também pode usar as métricas personalizadas do Cloud Monitoring.
O Cloud Run está integrado com o Cloud Monitoring sem necessidade de configuração. Isto significa que as métricas dos seus serviços do Cloud Run são capturadas automaticamente quando estão em execução.
Criar com base numa plataforma gerida com o App Engine
Na Google Cloud, a plataforma gerida como serviço (PaaS) chama-se App Engine. Quando cria o seu Website no App Engine, pode concentrar-se na programação das suas funcionalidades e deixar que a Google se preocupe com a gestão da infraestrutura de apoio. O App Engine oferece uma vasta gama de funcionalidades que tornam a escalabilidade, o equilíbrio de carga, o registo, a monitorização e a segurança muito mais fáceis do que se tivesse de os criar e gerir por si. O App Engine permite-lhe programar em várias linguagens de programação e pode usar vários outros Google Cloud serviços.
O App Engine oferece o ambiente padrão, que lhe permite executar apps num ambiente seguro e em sandbox. O ambiente padrão do App Engine distribui pedidos por vários servidores e dimensiona os servidores para satisfazer as exigências de tráfego. A sua app é executada no seu próprio ambiente seguro e fiável, independente do hardware, do sistema operativo ou da localização física do servidor.
Para lhe dar mais opções, o App Engine oferece o ambiente flexível. Quando usa o ambiente flexível, a sua app é executada em instâncias do Compute Engine configuráveis, mas o App Engine gere o ambiente de alojamento por si. Isto significa que pode usar tempos de execução adicionais, incluindo tempos de execução personalizados, para ter mais opções de linguagens de programação. Também pode tirar partido de alguma da flexibilidade que o Compute Engine oferece, como escolher entre várias opções de CPU e memória.
Linguagens de programação
O ambiente padrão do App Engine oferece tempos de execução predefinidos e escreve código fonte em versões específicas das linguagens de programação suportadas.
Com o ambiente flexível, escreve código fonte numa versão de qualquer uma das linguagens de programação suportadas. Pode personalizar estes tempos de execução ou fornecer o seu próprio tempo de execução com uma imagem Docker personalizada ou um Dockerfile.
Se a linguagem de programação que usa for uma preocupação principal, tem de decidir se os tempos de execução fornecidos pelo ambiente padrão do App Engine cumprem os seus requisitos. Se não for o caso, pondere usar o ambiente flexível.
Para determinar que ambiente satisfaz melhor as necessidades da sua app, consulte o artigo Escolher um ambiente do App Engine.
Tutoriais de introdução por idioma
Os seguintes tutoriais podem ajudar a começar a usar o ambiente padrão do App Engine:
- Olá, mundo em Python
- Olá, mundo em Java
- Olá, mundo em PHP
- Olá, mundo em Ruby
- Olá, mundo em Go
- Olá, mundo no Node.js
Os seguintes tutoriais podem ajudar a começar a usar o ambiente flexível:
- Começar a usar o Python
- Começar a usar o Java
- Começar a usar o PHP
- Começar a usar o Go
- Primeiros passos com o Node.js
- Introdução ao Ruby
- Começar a usar o .NET
Armazenar dados com o App Engine
O App Engine oferece-lhe opções para armazenar os seus dados:
Nome | Estrutura | Consistência |
---|---|---|
Firestore | Sem esquema | Muito consistente. |
Cloud SQL | Relacionais | Muito consistente. |
Cloud Storage | Ficheiros e respetivos metadados associados | Fortemente consistente, exceto quando realiza operações de lista que recebem uma lista de contentores ou objetos. |
Também pode usar várias bases de dados de terceiros com o ambiente padrão.
Para mais detalhes sobre o armazenamento no App Engine, consulte o artigo Escolher uma opção de armazenamento e, em seguida, selecione a sua linguagem de programação preferida.
Quando usa o ambiente flexível, pode usar todas as mesmas opções de armazenamento que pode usar com o ambiente padrão, bem como uma gama mais ampla de bases de dados de terceiros. Para mais informações sobre bases de dados de terceiros no ambiente flexível, consulte o artigo Usar bases de dados de terceiros.
Balanceamento de carga e escala automática com o App Engine
Por predefinição, o App Engine encaminha automaticamente os pedidos recebidos para as instâncias de back-end adequadas e faz o equilíbrio de carga por si. No entanto, se quiser tirar partido das capacidades de balanceamento de carga de HTTP(S) de nível empresarial com todas as funcionalidades do Google Cloud, pode usar grupos de pontos finais de rede sem servidor. Google Cloud
Para o escalamento, o App Engine pode criar e encerrar automaticamente instâncias à medida que o tráfego flutua, ou pode especificar um número de instâncias a executar independentemente da quantidade de tráfego.
Registo e monitorização com o App Engine
No App Engine, os pedidos são registados automaticamente e pode ver estes registos na Google Cloud consola. O App Engine também funciona com bibliotecas padrão específicas do idioma que oferecem funcionalidade de registo e encaminham as entradas de registo para os registos na Google Cloud consola. Por exemplo,
em Python
pode usar o módulo de registo padrão do Python e
em Java
pode integrar o appender logback ou java.util.logging
com o Cloud Logging. Esta abordagem permite usar todas as funcionalidades do Cloud Logging e requer apenas algumas linhas de código específicas do Google Cloud.
O Cloud Monitoring oferece funcionalidades para monitorizar as suas apps do App Engine. Através da Google Cloud consola, pode monitorizar incidentes, verificações de tempo de atividade e outros detalhes.
Criar sistemas de gestão de conteúdos
A alojamento de um Website significa gerir os recursos do seu Website. O Cloud Storage oferece um repositório global para estes recursos. Uma arquitetura comum implementa conteúdo estático no Cloud Storage e, em seguida, sincroniza com o Compute Engine para renderizar páginas dinâmicas. O Cloud Storage funciona com muitos sistemas de gestão de conteúdos de terceiros, como o WordPress, o Drupal e o Joomla. O Cloud Storage também oferece uma API compatível com o Amazon S3, pelo que qualquer sistema que funcione com o Amazon S3 pode funcionar com o Cloud Storage.
O diagrama abaixo é uma arquitetura de exemplo para um sistema de gestão de conteúdos.
O que se segue?
- Explore arquiteturas de referência, diagramas e práticas recomendadas sobre o Google Cloud. Consulte o nosso Centro de arquitetura na nuvem.