Neste artigo, discutimos como hospedar um site no Google Cloud. O Google Cloud oferece uma plataforma robusta, flexível, confiável e escalonável para a exibição de sites. O Google criou o Google Cloud usando a mesma infraestrutura usada pelo Google para exibir conteúdo de sites como Google.com, YouTube e Gmail. É possível hospedar o conteúdo do seu site usando o tipo e o design da infraestrutura que melhor atende às suas necessidades.
Este artigo será útil se você:
- souber como criar um site e já tiver implantado e usado alguma infraestrutura de hospedagem na Web anteriormente;
- estiver avaliando a possibilidade de migrar seu site para o Google Cloud e os meios para fazer isso.
Caso você queira criar um site simples, considere o uso do Google Sites, uma ferramenta estruturada de criação de páginas da Web e wikis. Para mais informações, acesse a Ajuda do Sites.
Como escolher uma opção
Se você não tem familiaridade com o Google Cloud, uma abordagem razoável seria começar usando um tipo de tecnologia que você já conheça. Por exemplo, se atualmente você usa servidores de hardware ou máquinas virtuais (VMs) para hospedar seu site com outro provedor de nuvem ou no seu próprio hardware, o Compute Engine disponibiliza um paradigma que você conhece. Se você já usa uma plataforma como serviço (PaaS) como o Heroku ou o Engine Yard, é provável que o App Engine seja o melhor lugar para começar. Se preferir a computação sem servidor, o Cloud Run provavelmente é uma boa opção para você.
Depois de se familiarizar com o Google Cloud, explore a variedade de produtos e serviços que ele oferece. Por exemplo, se você começou usando o Compute Engine, é possível aumentar os recursos do site usando o Google Kubernetes Engine (GKE) ou migrar parte ou toda a funcionalidade para o App Engine e o Cloud Run.
A tabela a seguir resume suas opções de hospedagem no Google Cloud:
Opção | Produto | Armazenamento de dados | Balanceamento de carga | Escalonabilidade | Registro e monitoramento |
---|---|---|---|---|---|
Site estático | Cloud Storage Firebase Hosting |
Bucket do Cloud Storage | HTTP(S) opcional |
Automaticamente | |
Máquinas virtuais | Compute Engine | Cloud SQL, Cloud Storage, Firestore e Bigtable ou é possível usar outro provedor de armazenamento externo. Discos permanentes baseados em disco rígido, chamados discos permanentes padrão e discos permanentes de estado sólido (SSD). |
HTTP(S) Proxy TCP Proxy SSL Terminação IPv6 Rede Entre regiões Interno |
Automaticamente, com grupos de instâncias gerenciadas | |
Contêineres | GKE | Semelhante ao Compute Engine, mas interage de maneira diferente com os discos permanentes |
Rede HTTP(S) |
Escalonador automático de clusters | |
Plataforma gerenciada | App Engine |
Serviços do Google Cloud, como Cloud SQL, Firestore, Cloud Storage e bancos de dados de terceiros acessíveis | HTTP(S) Gerenciado pelo Google |
Gerenciado pelo Google | |
Sem servidor | Cloud Run |
Serviços do Google Cloud, como Cloud SQL, Firestore, Cloud Storage e bancos de dados de terceiros acessíveis | HTTP(S) Gerenciado pelo Google |
Gerenciado pelo Google |
Neste artigo, você entenderá as principais tecnologias de hospedagem na Web no Google Cloud e terá uma ideia de como elas funcionam. Você encontrará links para documentação completa, tutoriais e artigos de soluções que o ajudarão a entender conceitos avançados, quando estiver pronto.
Como entender os custos
Como há muitas variáveis e cada implementação é diferente, está fora do escopo deste artigo fornecer recomendações específicas sobre custos. Para entender os princípios do Google sobre como funcionam os preços do Google Cloud, consulte a página de preços. Para entender os preços de serviços individuais, consulte a seção de preços dos produtos. Também é possível usar a calculadora de preços para estimar o uso do Google Cloud. Forneça os detalhes sobre os serviços que você quer usar e veja uma estimativa do preço.
Como configurar serviços de nome de domínio
Geralmente, você precisa registrar um nome do domínio para seu site. É possível usar um registrador de domínio público para registrar um nome exclusivo para seu site. Para ter o controle completo do Sistema de Nome de Domínio (DNS), use o Cloud DNS como provedor de DNS. Na documentação do Cloud DNS, você encontra um guia de início rápido para fazer isso.
Ao usar um provedor de DNS atual, geralmente você precisa criar alguns registros nesse provedor. Para um nome de domínio, como example.com
, crie um registro A
com seu provedor de DNS. Para o subdomínio www.example.com
, crie um registro CNAME
para www
a fim de apontá-lo para o domínio example.com
. O registro A
atribui um nome de host a um endereço IP.
O registro CNAME
cria um alias para o registro A
.
Se o registrador de domínios também é um provedor de DNS, provavelmente você não precisa de mais nada. Agora, se você usa provedores diferentes para registro e DNS, verifique se os servidores de nomes associados ao domínio estão corretos no registrador.
Depois que as alterações de DNS são feitas, dependendo dos valores de time to live (TTL) da zona, as atualizações de registro levam algum tempo para serem propagadas. Se esse for um novo nome do host, as alterações entram em vigor rapidamente porque os resolvedores do DNS não têm valores anteriores armazenados em cache e podem entrar em contato com o provedor de DNS para solicitar as informações necessárias.
Como hospedar um site estático
A maneira mais simples de exibir o conteúdo de um site por HTTP(S) é hospedar páginas da Web estáticas. Elas são exibidas sem alterações, exatamente como foram desenvolvidas, geralmente em HTML. Um site estático é uma boa opção se as páginas raramente são alteradas após a publicação, por exemplo, postagens de um blog ou páginas que fazem parte do site de uma pequena empresa. Muita coisa pode ser feita com páginas estáticas, mas se você precisa que o site tenha muitas interações com os usuários por meio de código no servidor, considere as outras opções discutidas neste artigo.
Como hospedar um site estático no Cloud Storage
Para hospedar um site estático no Cloud Storage, crie um bucket do Cloud Storage, faça upload do conteúdo e teste o novo site. É possível
exibir seus dados diretamente de storage.googleapis.com
ou
confirmar que é o proprietário do domínio
e usar
seu nome de domínio.
As páginas da Web estáticas podem ser criadas como você quiser. Por exemplo, é possível criar páginas manualmente usando HTML e CSS. Também é possível usar um gerador de site estático, como Jekyll, Ghost ou Hugo, para criar o conteúdo. Com os geradores de sites estáticos, você produz um site estático por meio da criação em markdown e da utilização de modelos e ferramentas. Nesses geradores, geralmente, um servidor da Web local é fornecido para que você visualize o conteúdo.
Depois que o site estático estiver funcionando, use o método que quiser para atualizar as páginas. Esse processo pode ser tão simples quanto copiar manualmente uma página atualizada para o bucket. Também é possível usar uma abordagem mais automatizada, por exemplo,
armazenar o conteúdo no GitHub e usar um
webhook
para executar um
script que atualize o bucket. Um sistema ainda mais avançado consiste em usar uma ferramenta de integração/entrega contínuas (CI/CD) como o Jenkins para atualizar o conteúdo nesse bucket. O Jenkins tem um plug-in do Cloud Storage
que fornece uma etapa pós-compilação do Google Cloud Storage Uploader
para publicar artefatos
de compilação no Cloud Storage.
Se você tem um aplicativo da Web que precisa exibir conteúdo ou mídia estática de upload do usuário, o uso do Cloud Storage pode ser uma maneira econômica e eficiente de hospedar e exibir esse conteúdo e, ao mesmo tempo, reduzir o volume de solicitações dinâmicas para o aplicativo.
Além disso, o Cloud Storage aceita diretamente o conteúdo enviado pelo usuário. Esse recurso permite que os usuários façam upload de arquivos de mídia grandes diretamente e com segurança, sem proxy, pelos servidores.
Para conseguir o desempenho ideal do site estático, consulte Práticas recomendadas do Cloud Storage.
Para mais informações, consulte as seguintes páginas:
- Como hospedar um site estático
- J de Jenkins (postagem do blog)
- Band Aid 30 no Google Cloud (postagem do blog)
- Documentação do Cloud Storage
Como hospedar um site estático com o Firebase Hosting
O Firebase Hosting oferece hospedagem estática rápida e segura para seu app da Web. Com ele, é possível implantar apps da Web e conteúdo estático em uma rede de fornecimento de conteúdo (CDN, na sigla em inglês) global, usando um único comando.
Estas são algumas das vantagens do Firebase Hosting:
- O SSL sem configuração é incorporado ao Firebase Hosting. Os certificados SSL são provisionados nos domínios personalizados sem custos.
- Todo o conteúdo é exibido por HTTPS.
- O conteúdo é disponibilizado rapidamente para os usuários a partir de bordas da CDN no mundo todo.
- Com a Firebase CLI, o aplicativo é executado em segundos. Use ferramentas de linha de comando para adicionar destinos de implantação ao processo de criação.
- Você tem recursos de gerenciamento de versões como implantação atômica de novos recursos, controle de versões completo e reversões com um clique.
- No Hosting, você tem uma configuração prática para aplicativos de página única e outros sites parecidos com aplicativos.
- O Hosting foi desenvolvido para ter total compatibilidade com outros recursos do Firebase.
Para mais informações, consulte as seguintes páginas:
Como usar máquinas virtuais com o Compute Engine
Para casos de uso de infraestrutura como serviço (IaaS, na sigla em inglês), o Google Cloud fornece o Compute Engine. O Compute Engine disponibiliza uma infraestrutura de computação robusta, mas você precisa escolher e configurar os componentes da plataforma que quer usar. É sua responsabilidade configurar, administrar e monitorar os sistemas. O Google garante que os recursos estejam disponíveis, sejam confiáveis e estejam prontos para uso, mas você precisa provisioná-los e gerenciá-los. A vantagem, nesse caso, é que você tem controle completo dos sistemas e flexibilidade ilimitada.
Use o Compute Engine para desenvolver e implantar praticamente qualquer sistema de hospedagem de sites que quiser. É possível usar VMs, denominadas instâncias, para criar o aplicativo como se estivesse usando sua própria infraestrutura de hardware. No Compute Engine, você tem vários tipos de máquina disponíveis para personalizar a configuração, de modo que ela atenda às necessidades e ao orçamento. Escolha o sistema operacional, as pilhas de desenvolvimento, linguagens, bibliotecas, serviços e outras tecnologias de software que preferir.
Como configurar automaticamente com o Google Cloud Marketplace
A maneira mais fácil de implantar uma pilha completa de hospedagem na Web é usar o Google Cloud Marketplace. Com apenas alguns cliques, você implanta qualquer uma das mais de cem soluções completas com o Bitnami ou o click-to-deploy do Google.
Por exemplo, é possível configurar uma pilha LAMP ou WordPress com o Cloud Marketplace. Em poucos minutos, o sistema implanta uma pilha de software completa e funcionando em uma única instância. Antes da implantação, o Cloud Marketplace mostra uma estimativa de custo para exibir o site, fornece informações claras sobre quais versões dos componentes de software serão instaladas e permite que você personalize a configuração alterando nomes de instâncias de componentes, escolhendo o tipo de máquina e um tamanho de disco. Depois da implantação, você tem controle completo sobre todas as instâncias do Compute Engine, as configurações e o software.
Como configurar manualmente
Também é possível criar manualmente sua infraestrutura no Compute Engine, seja partindo de uma implantação do Google Cloud Marketplace, seja criando a configuração do zero. Por exemplo, é possível usar a versão de um componente de software não oferecida pelo Cloud Marketplace ou instalar e configurar tudo por conta própria.
O fornecimento de um framework completo e práticas recomendadas para configurar um site estão fora do escopo deste artigo. Entretanto, para configurar uma infraestrutura de hospedagem na Web no Compute Engine, do ponto de vista geral técnico, os seguintes itens são necessários:
- Compreender os requisitos: caso você esteja criando um novo site, verifique se já sabe quais componentes serão necessários, por exemplo, instâncias, requisitos de armazenamento e infraestrutura de rede. Se estiver migrando seu aplicativo de uma solução atual, provavelmente já conhecerá esses requisitos, mas será necessário pensar em como sua configuração atual será mapeada nos serviços do Google Cloud.
- Planejar o projeto: pense na arquitetura e elabore o projeto. Seja o mais claro possível.
- Criar os componentes: os componentes, que geralmente são vistos como recursos físicos, por exemplo, computadores e chaves de rede, são fornecidos pelos serviços do Compute Engine. Por exemplo, para ter um computador, será preciso criar uma instância do Compute Engine. Se quiser um disco rígido permanente, será necessário criá-lo também. A infraestrutura como ferramentas de código, como o Terraform, torna esse processo fácil e reproduzível.
- Configurar e personalizar: depois de escolher os componentes, será preciso configurá-los, instalar e configurar o software e, por fim, gravar e implantar o código de qualquer personalização necessária. Para replicar a configuração, execute scripts de shell. Isso ajudará a acelerar as futuras implantações. O Terraform também fornece modelos de configuração declarativos e flexíveis para implantação automática de recursos. Também é possível usar ferramentas de automatização de TI, como o Puppet e o Chef.
- Implantar os recursos: isso se refere a páginas da Web e imagens.
- Testar: verifique se tudo funciona conforme o esperado.
- Implantar para a produção: disponibilize seu site para o mundo ver e usar.
Como armazenar dados com o Compute Engine
A maioria dos sites precisa de algum tipo de armazenamento. Isso pode ser necessário por vários motivos, por exemplo, para salvar os arquivos de upload dos usuários e, claro, os recursos do site.
Com o Google Cloud, você conta com uma variedade de serviços de armazenamento gerenciado, incluindo:
- Um banco de dados SQL no Cloud SQL, que é um serviço de banco de dados relacional totalmente gerenciado para MySQL, PostgreSQL e SQL Server.
- Duas opções para o armazenamento de dados NoSQL: Firestore e Bigtable.
- Memorystore, que é um serviço de repositório de dados na memória totalmente gerenciado para o Redis e o Memcached.
- armazenamento de objetos consistente, escalonável e de grande capacidade no Cloud Storage.
Ele tem várias classes:
- O padrão oferece disponibilidade máxima.
- O nearline é a escolha de baixo custo ideal para os dados que são acessados com frequência menor do que uma vez por mês.
- O Coldline é a escolha de baixo custo ideal para os dados que são acessados menos de uma vez por trimestre.
- O recurso de arquivamento oferece a opção de menor custo para arquivamento, backup e recuperação de desastres.
- Discos permanentes no Compute Engine para uso como armazenamento principal das instâncias. O Compute Engine oferece tanto discos permanentes com base em disco rígido, chamados discos permanentes padrão, como discos permanentes em estado sólido (SSD, na sigla em inglês); Também é possível optar por configurar a tecnologia de armazenamento preferida no Compute Engine usando discos permanentes. Por exemplo, é possível configurar o PostgreSQL como banco de dados SQL ou o MongoDBcomo armazenamento NoSQL. Para entender toda a variedade e os benefícios desses serviços no Google Cloud, consulte Como escolher uma opção de armazenamento.
Balanceamento de carga com o Compute Engine
Para qualquer site que opere em escala, o uso das tecnologias de balanceamento de carga para distribuir a carga de trabalho entre os servidores geralmente é um requisito. Há várias opções disponíveis para elaborar a arquitetura dos servidores da Web com carga balanceada no Compute Engine:
- Balanceamento de carga HTTP(S):
explica os conceitos básicos sobre o uso do Cloud Load Balancing.
- Balanceamento de carga com base no conteúdo: demonstra como distribuir o tráfego entre instâncias diferentes com base no URL recebido.
- Balanceamento de carga entre regiões: demonstra a configuração de instâncias de VM em regiões diferentes usando o balanceamento de carga HTTP ou HTTPS para distribuir o tráfego entre as 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 balanceamento de carga do Proxy SSL global para um serviço que existe em várias regiões.
- Terminação IPv6 para balanceamento de carga HTTP(S), proxy SSL e proxy TCP: explica a terminação IPv6 e as opções de configuração de balanceadores de carga para processar solicitações IPv6.
- Balanceamento de carga de rede: mostra um cenário básico de uma configuração de balanceamento de carga de camada 3 para distribuir o tráfego HTTP entre as instâncias íntegras.
- Balanceamento de carga entre regiões usando back-ends do Microsoft IIS: Mostra como usar o balanceador de carga do Compute Engine para distribuir o tráfego entre os servidores do Microsoft Internet Information Services (IIS, na sigla em inglês).
- Como configurar o balanceamento de carga interno: é possível configurar um balanceador de carga que distribua o tráfego de rede em uma rede particular que não esteja exposta à Internet. O balanceamento de carga interno é útil não somente para os aplicativos da intranet com tráfego que ocorre totalmente em uma rede particular, mas também para os aplicativos complexos da Web em que um front-end envia solicitações para servidores de back-end usando essa rede.
A implantação do balanceamento de carga é flexível. Além disso, é possível usar o Compute Engine com as soluções atuais. Por exemplo, o balanceamento de carga HTTP(S) usando o Nginx é uma solução possível que poderia ser usada no lugar do balanceador de carga do Compute Engine.
Distribuição de conteúdo com o Compute Engine
Como o tempo de resposta é uma métrica fundamental para qualquer site, o uso de uma CDN para reduzir a latência e aumentar o desempenho geralmente é um requisito, especialmente para um site com tráfego global da Web.
O Cloud CDN usa os pontos de presença perimétricos do Google distribuídos globalmente para fornecer conteúdo de locais de cache mais próximos aos usuários. O Cloud CDN funciona com o balanceamento de carga HTTP(S). Para exibir conteúdo fora do Compute Engine, do Cloud Storage ou dos dois a partir de um único endereço IP, é só ativar o Cloud CDN para um balanceador de carga HTTP(S).
Como fazer o escalonamento automático com o Compute Engine
A arquitetura para adicionar e remover servidores pode ser configurada conforme a variação da demanda. Com essa abordagem, você garante o bom desempenho do site mesmo sob carga de pico e, ao mesmo tempo, mantém os custos sob controle durante os períodos de demanda normal. Com o Compute Engine, você tem um autoescalador que pode ser usado para esse propósito.
O escalonamento automático é um recurso de grupos de instâncias gerenciadas. Um grupo de instâncias gerenciadas é um pool homogêneo de instâncias de máquinas virtuais, criado a partir de um modelo de instância comum. Um autoescalador adiciona ou remove instâncias nesse grupo. Embora o Compute Engine tenha grupos de instâncias gerenciadas e não gerenciadas, só é possível usar grupos de instâncias gerenciadas com um autoescalador. Para mais informações, consulte Escalonamento automático no Compute Engine.
Para ter uma visão mais aprofundada sobre o que é necessário para criar uma solução de aplicativo da Web escalonável e resiliente, consulte Como criar aplicativos da Web escalonáveis e resilientes.
Como gerar registros e monitorar com o Compute Engine
O Google Cloud inclui recursos para acompanhar o que está acontecendo com seu site.
O Cloud Logging coleta e armazena registros de aplicativos e serviços no Google Cloud. Para ver ou expor esses registros, e integrá-los com registros de terceiros, use um agente de geração de registros.
O Cloud Monitoring fornece painéis e alertas para seu site. Configure o Monitoring com o Console do Google Cloud. É possível analisar as métricas de desempenho de serviços na nuvem, máquinas virtuais e servidores comuns de código aberto como MongoDB, Apache, Nginx e Elasticsearch. É possível usar a API Cloud Monitoring para recuperar dados de monitoramento e criar métricas personalizadas.
O Cloud Monitoring também fornece verificações de tempo de atividade, que enviam solicitações aos sites para ver se eles respondem. É possível monitorar a disponibilidade de um site implantando uma política de alertas que cria um incidente se a verificação de tempo de atividade falhar.
Como gerenciar DevOps com o Compute Engine
Para informações sobre como gerenciar DevOps com o Compute Engine, consulte Teste de carga distribuída usando o Kubernetes.
Como usar contêineres com o GKE
Talvez você já esteja usando contêineres como os contêineres do Docker. Para a hospedagem na Web, o uso de contêineres traz muitas vantagens, incluindo:
- Componentização: é possível usar contêineres para separar os vários componentes do seu app da Web. Por exemplo, suponha que seu site execute um servidor da Web e um banco de dados. Eles podem ficar em contêineres separados, e a modificação e atualização de um deles não afeta o outro. À medida que a concepção do seu aplicativo fica mais complexa, os contêineres são uma boa opção para uma arquitetura orientada a serviços, incluindo os microsserviços (em inglês). Esse tipo de concepção oferece escalonabilidade e outros benefícios.
- Portabilidade: um contêiner tem tudo o que é preciso para a execução. O aplicativo e as dependências dele são incluídas no mesmo pacote. Você consegue executar os contêineres em várias plataformas, sem se preocupar com os detalhes inerentes ao sistema.
- Implantação rápida: na hora da implantação, como o sistema foi criado a partir de um conjunto de definições e imagens, as partes podem ser implantadas de modo rápido, confiável e automático. Geralmente, os contêineres são pequenos e podem ser implantados com muita rapidez, se comparados, por exemplo, com as máquinas virtuais.
A computação em contêineres no Google Cloud oferece ainda mais vantagens para a hospedagem na Web, incluindo:
- Orquestração: O GKE é um serviço gerenciado criado no Kubernetes, o sistema de orquestração de contêineres de código aberto introduzido pelo Google. Com ele, o código é executado nos contêineres que são parte de um cluster composto de instâncias do Compute Engine. Em vez de administrar contêineres individuais ou criar e encerrar cada contêiner manualmente, é possível gerenciar o cluster automaticamente por meio do GKE, que usa a configuração definida por você.
- Registro de imagem: O Container Registry ou o Artifact Registry fornece armazenamento particular para imagens do Docker no Google Cloud. Você pode acessar o registro por meio de um endpoint HTTPS para extrair imagens de qualquer máquina, seja uma instância do Compute Engine ou seu próprio hardware. O serviço de registro hospeda as imagens personalizadas no Cloud Storage no projeto do Google Cloud. Essa abordagem garante, por padrão, que as imagens personalizadas sejam acessíveis somente pelos participantes que têm acesso ao projeto.
- Mobilidade: significa que você tem a flexibilidade para mover e combinar as cargas de trabalho com outros provedores de nuvem ou misturar as cargas de trabalho de computação na nuvem com implementações locais para criar uma solução híbrida.
Como armazenar dados com o GKE
O GKE é executado no Google Cloud e usa instâncias do Compute Engine como nós. Sendo assim, suas opções de armazenamento têm muito em comum com o armazenamento no Compute Engine. Acesse o Cloud SQL, o Cloud Storage, o Firestore e o Bigtable por meio das APIs deles ou usar outro provedor de armazenamento externo, se preferir. Entretanto, as interações do GKE com os discos permanentes e com uma instância normal do Compute Engine são diferentes.
Uma instância do Compute Engine inclui um disco anexado. Ao usar o Compute Engine, desde que a instância ainda exista, o volume permanecerá disponível para ela. É possível até mesmo desanexar o disco e usá-lo em uma instância diferente. Por outro lado, em um contêiner, os arquivos em disco são temporários. Quando ele é reiniciado, por exemplo, após uma falha, os arquivos em disco são perdidos. O Kubernetes resolve
esse problema usando
abstrações de
volume
e de classe de armazenamento. Um tipo de classe de armazenamento é
GCE PD
.
Isso significa que é possível usar os discos permanentes do Compute Engine com contêineres para impedir que os arquivos de dados sejam excluídos quando você usar o GKE.
Para compreender os recursos e benefícios de um volume, primeiro é preciso entender um pouco sobre os pods. Pense no pod como um host lógico específico do aplicativo para um ou mais contêineres que é executado em uma instância do nó. Quando os contêineres são membros de um pod, é possível compartilhar vários recursos, incluindo um conjunto de volumes de armazenamento compartilhados. Com esses volumes, os dados são mantidos quando o contêiner é reiniciado e podem ser compartilhados com os contêineres desse pod. É claro que também é possível ter somente um contêiner e volume em um pod, mas ele é uma abstração obrigatória para conectar esses recursos de maneira lógica.
Veja um exemplo no tutorial Como usar discos permanentes com WordPress e MySQL.
Como fazer o balanceamento de carga com o GKE
Várias arquiteturas grandes de hospedagem na Web requerem múltiplos servidores para compartilhar as demandas do tráfego. Como é possível criar e gerenciar vários contêineres, nós e pods com o GKE, ele é uma escolha natural para um sistema de hospedagem na Web com balanceamento de carga.
Como usar o balanceamento de carga de rede
A maneira mais fácil de criar um balanceador de carga no GKE é usar o balanceamento de carga de rede do Compute Engine. Com ele, você faz o balanceamento dos sistemas com base nos dados recebidos de protocolos de Internet como endereço, porta e tipo de protocolo. O balanceamento de carga de rede usa as regras de encaminhamento. Elas apontam para pools de destino que listam quais instâncias estão disponíveis para serem usadas no balanceamento de carga.
Com o balanceamento de carga de rede, é possível fazer o balanceamento adicional com protocolos baseados em TCP/UDP, por exemplo, o tráfego SMTP, e o aplicativo pode inspecionar os pacotes diretamente.
Para implantar o balanceamento de carga de rede, basta adicionar o campo type: LoadBalancer
ao arquivo de configuração do serviço.
Como usar o balanceamento de carga HTTP(S)
Caso precise de recursos mais avançados de gerenciamento de carga, por exemplo, o balanceamento de carga HTTPS, baseado em conteúdo ou entre regiões, é possível integrar o serviço do GKE com o recurso de balanceamento HTTP/HTTPS do Compute Engine. No Kubernetes, você tem o recurso Entrada, que encapsula uma coleção de regras de roteamento do tráfego externo para os endpoints do Kubernetes. No GKE, um recurso Entrada processa o provisionamento e a configuração do balanceador de carga HTTP/HTTPS do Compute Engine.
Para mais informações sobre o uso do balanceamento de carga HTTP/HTTPS no GKE, consulte como configurar o balanceamento de carga HTTP com a Entrada.
Como escalonar com o GKE
Para o redimensionamento automático dos clusters, use o autoescalador de cluster. Essa funcionalidade verifica periodicamente se há pods aguardando um nó com recursos gratuitos, mas que ainda não foram programados. Se esse é o caso, o pool de nós é redimensionado no autoescalador, caso esse redimensionamento permita que os pods em espera sejam programados.
O autoescalador de cluster também monitora o uso de todos os nós. Se um nó não for necessário por um longo período de tempo e todos os pods dele puderem ser facilmente programados em outro local, esse nó será excluído.
Para mais informações sobre o autoescalador de cluster, as limitações e as práticas recomendadas, consulte a documentação do autoescalador de cluster.
Como gerar registros e fazer o monitoramento com o GKE
Assim como o Compute Engine, o Logging e o Monitoring fornecem serviços de geração de registros e monitoramento. O Logging coleta e armazena registros de aplicativos e serviços. Para ver ou expor esses registros, e integrá-los com registros de terceiros, use um agente de geração de registros.
O Monitoring fornece painéis e alertas para seu site. Configure o Monitoring com o Console do Google Cloud. É possível analisar as métricas de desempenho de serviços na nuvem, máquinas virtuais e servidores comuns de código aberto como MongoDB, Apache, Nginx e Elasticsearch. Use a API Stackdriver Monitoring para recuperar dados de monitoramento e criar métricas personalizadas.
Como gerenciar DevOps com o GKE
Quando você usa o GKE, já recebe muitos dos benefícios que a maioria das pessoas imagina quando pensa em DevOps, especialmente quando se trata de facilitar o empacotamento, a implantação e o gerenciamento. Para suas necessidades de fluxo de trabalho de CI/CD, aproveite as ferramentas criadas para a nuvem, como Cloud Build e Cloud Deploy ou ferramentas conhecidas, como o Jenkins. Para obter mais informações, consulte os seguintes artigos:
Como criar em uma plataforma gerenciada com o App Engine
No Google Cloud, a plataforma gerenciada como serviço (PaaS, na sigla em inglês) é chamada de App Engine. Ao criar o site no App Engine, você só precisa se concentrar na programação dos recursos, e o Google cuida do gerenciamento da infraestrutura de suporte. O App Engine conta com uma grande variedade de recursos que facilitam bastante a escalonabilidade, o balanceamento de carga, a geração de registros, o monitoramento e a segurança, o que não aconteceria se você criasse e gerenciasse tudo por conta própria. O App Engine permite a programação em várias linguagens e o uso de diferentes serviços do Google Cloud.
O App Engine fornece o ambiente padrão, que permite executar aplicativos em um ambiente seguro no sandbox. Nesse ambiente, as solicitações são distribuídas entre vários servidores, e o escalonamento é feito neles para atender às demandas de tráfego. O aplicativo é executado no próprio ambiente seguro e confiável que é independente do hardware, sistema operacional ou local físico do servidor.
Como mais uma das opções, você tem acesso ao ambiente flexível no App Engine. Quando você usa o ambiente flexível, o aplicativo é executado nas instâncias configuráveis do Compute Engine, mas o App Engine gerencia o ambiente de hospedagem para você. Isso significa que é possível usar outros ambientes de execução, incluindo os personalizados, para ter mais opções de linguagens de programação. Essa flexibilidade também traz outras vantagens no Compute Engine, como a escolha de várias opções de CPU e memória.
Linguagens de programação
O ambiente padrão do App Engine fornece os ambientes de execução padrão, e você escreve o código-fonte em versões específicas das linguagens de programação compatíveis.
Com o ambiente flexível, você escreve o código-fonte em uma versão de qualquer uma das linguagens de programação compatíveis. Personalize esses ambientes de execução ou forneça seu próprio ambiente de execução com uma imagem do Docker personalizada ou um Dockerfile.
Se a linguagem de programação usada for a principal preocupação, será preciso decidir se os ambientes de execução fornecidos pelo ambiente padrão do App Engine atendem aos seus requisitos. Se esse não for o caso, use o ambiente flexível.
Para determinar qual ambiente atende melhor às necessidades do seu aplicativo, consulte Como escolher um ambiente do App Engine.
Tutoriais de primeiros passos por linguagem
Você dará os primeiros passos no ambiente padrão do App Engine com os seguintes tutoriais:
- Hello World em Python
- Hello World em Java
- Hello World em PHP
- Hello World em Ruby
- Hello World em Go
- Hello World no Node.js
Você dará os primeiros passos no ambiente flexível do App Engine com os seguintes tutoriais:
- Primeiros passos com Python
- Primeiros passos com Java
- Primeiros passos com PHP
- Primeiros passos com Go
- Primeiros passos com Node.js
- Primeiros passos com Ruby
- Primeiros passos com .NET
Como armazenar dados com o App Engine
No App Engine, você tem estas opções para armazenar os dados:
Nome | Estrutura | Consistência |
---|---|---|
Firestore | Sem esquemas | Bastante consistente. |
Cloud SQL | Relacional | Bastante consistente. |
Cloud Storage | Arquivos e metadados associados | Bastante consistente, exceto para executar operações de listagem de buckets ou objetos. |
Também é possível usar vários bancos de dados de terceiros com o ambiente padrão.
Para saber mais detalhes sobre armazenamento no App Engine, consulte Como escolher uma opção de armazenamento e, em seguida, selecione sua linguagem de programação preferida.
No ambiente flexível, todas as opções de armazenamento do ambiente padrão podem ser usadas, assim como uma grande variedade de bancos de dados de terceiros. Para mais informações sobre esses bancos de dados no ambiente flexível, consulte Como usar bancos de dados de terceiros.
Balanceamento de carga e escalonamento automático com o App Engine
Por padrão, o App Engine roteia automaticamente as solicitações recebidas para as instâncias de back-end adequadas e faz o balanceamento de carga para você. No entanto, se você quiser aproveitar todos os recursos de balanceamento de carga HTTP(S) de nível empresarial do Google Cloud, poderá usar grupos de endpoints de rede sem servidor.
Para escalonar, o App Engine pode criar e encerrar instâncias automaticamente à medida que o tráfego oscila. Também é possível especificar um número de instâncias para executar, independentemente da quantidade de tráfego.
Como gerar registros e fazer o monitoramento com o App Engine
No App Engine, as solicitações são registradas automaticamente e você tem acesso a esses registros no Console do Google Cloud. O App Engine também funciona com bibliotecas padrão de linguagens específicas que fornecem a funcionalidade de geração registros, e encaminha as entradas delas para os registros no Console do Google Cloud. Por exemplo,
em Python,
use o módulo padrão de geração de registros Python padrão e,
em Java,
integre o Logback appender ou java.util.logging
ao Cloud Logging. Essa abordagem ativa todos os recursos do Cloud Logging
e requer apenas algumas linhas de código específico do Google Cloud.
O Cloud Monitoring fornece recursos de monitoramento dos aplicativos do App Engine. No Console do Google Cloud, é possível monitorar incidentes, verificações de tempo de atividade e outros detalhes.
Como criar em uma plataforma sem servidor com o Cloud Run
Com a plataforma sem servidor do Google Cloud, você escreve o código do seu jeito sem se preocupar com a infraestrutura fundamental. Crie aplicativos de pilha completa sem servidor com o armazenamento, os bancos de dados, o aprendizado de máquina do Google Cloud e muito mais.
Para os sites em contêiner, também é possível implantá-los no Cloud Run, além de usar o GKE. O Cloud Run é uma plataforma sem servidor totalmente gerenciada que permite executar aplicativos em contêineres altamente escalonáveis no Google Cloud. Você paga apenas pelo tempo que o código é executado.
Usando contêineres com o Cloud Run, é possível aproveitar tecnologias consolidadas, como Nginx, Express.js e Django para criar sites, acessar seu banco de dados SQL no Cloud SQL e renderizar páginas HTML dinâmicas.
Na documentação do Cloud Run, você encontra um guia de início rápido para fazer isso.
Como armazenar dados com o Cloud Run
Os contêineres do Cloud Run são efêmeros e você precisa entender as cotas e limites dos casos de uso. Os arquivos podem ser armazenados temporariamente para processamento em uma instância de contêiner, mas esse armazenamento sai da memória disponível para o serviço, conforme descrito no contrato de ambiente de execução.
Para armazenamento permanente, semelhante ao App Engine, escolha os serviços do Google Cloud, como o Cloud Storage, Firestore ou Cloud SQL. Como alternativa, você também pode usar uma solução de armazenamento de terceiros.
Balanceamento de carga e escalonamento automático com o Cloud Run
Por padrão, quando você cria no Cloud Run, ele encaminha automaticamente as solicitações recebidas para os contêineres de back-end adequados e faz o balanceamento de carga para você. No entanto, se você quiser aproveitar todos os recursos de balanceamento de carga HTTP(S) de nível empresarial do Google Cloud, poderá usar grupos de endpoints de rede sem servidor.
Com o balanceamento de carga HTTP(S), é possível ativar o Cloud CDN ou exibir o tráfego de várias regiões. Além disso, é possível usar middleware, como o Gateway de API, para melhorar seu serviço.
Para o Cloud Run, o Google Cloud gerencia o escalonamento automático de instâncias de contêiner para você. Cada revisão é escalonada automaticamente para o número de instâncias de contêiner necessárias para processar todas as solicitações recebidas. Quando uma revisão não recebe nenhum tráfego, ela é escalonada a zero instâncias de contêiner por padrão. No entanto, é possível alterar esse padrão para especificar que uma instância seja mantida inativa ou "morna" usando a configuração de instâncias mínimas.
Como gerar registros e monitorar com o Cloud Run
O Cloud Run tem dois tipos de registros, que são enviados automaticamente para o Cloud Logging:
- Registros de solicitações: registros de solicitações enviados aos serviços do Cloud Run. Esses registros são criados automaticamente.
- Registros de contêiner: registros emitidos das instâncias de contêiner, normalmente de seu próprio código, gravados em locais compatíveis, conforme descrito em Como gravar registros de contêiner.
É possível ver os registros do seu serviço de duas maneiras:
- Use a página do Cloud Run no Console do Google Cloud.
- Usar o Explorador de registros do Cloud Logging no Console do Google Cloud
Esses dois métodos de visualização examinam os mesmos registros armazenados no Cloud Logging, mas o Explorador de registros fornece mais detalhes e mais recursos de filtragem.
O Cloud Monitoring fornece monitoramento de desempenho do Cloud Run, métricas e verificações de tempo de atividade, além de alertas para enviar notificações quando determinados limites de métrica são excedidos. Os preços do Google Cloud Observability são aplicáveis, o que significa que não há custo financeiro pelas métricas na versão totalmente gerenciada do Cloud Run. Também é possível usar as métricas personalizadas do Cloud Monitoring.
O Cloud Run é integrado ao Cloud Monitoring, sem necessidade de configuração. Isso significa que as métricas dos serviços do Cloud Run são capturadas automaticamente quando estão em execução.
Como criar sistemas de gerenciamento de conteúdo
Hospedar um site significa gerenciar os recursos dele. O Cloud Storage fornece um repositório global para esses recursos. Em uma arquitetura comum, o conteúdo estático é implantado no Cloud Storage e sincronizado com o Compute Engine para que as páginas dinâmicas sejam renderizadas. O Cloud Storage funciona com muitos sistemas de gerenciamento de conteúdo de terceiros, como WordPress, Drupal e Joomla (links em inglês). Uma API compatível com Amazon S3 também é fornecida, ou seja, qualquer sistema compatível com Amazon S3 também funciona com o Cloud Storage.
O diagrama abaixo é um exemplo de arquitetura para um sistema de gerenciamento de conteúdo.
A seguir
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.