Veja neste tutorial como gerenciar sessões no App Engine.
Muitos aplicativos precisam gerenciar sessões de autenticação e preferências do usuário.
O pacote sessions
do kit de ferramentas da Web do Gorilla
vem com uma implementação baseada no sistema de arquivos para executar essa
função. No entanto, essa implementação não é adequada para um aplicativo que pode ser veiculado
de várias instâncias, porque a sessão gravada em uma instância
pode ser diferente nas outras. O
gorilla/sessions
também vem com uma implementação baseada em cookies. No entanto, essa implementação
exige a criptografia de cookies e o armazenamento de toda a sessão no cliente, em vez de
apenas um ID da sessão, que pode ser muito grande para alguns aplicativos.
Objetivos
- Gravar o aplicativo.
- Executar o aplicativo localmente.
- Implantar o aplicativo no App Engine.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
Para gerar uma estimativa de custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Firestore API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
Atualize os componentes
gcloud
:gcloud components update
- Prepare seu ambiente para desenvolvedores.
Como configurar o projeto
Na janela de terminal, clone o repositório do app de amostra em sua máquina local:
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Acesse o diretório que contém o código de amostra:
cd golang-samples/getting-started/sessions
Como entender o app da Web
Esse aplicativo exibe saudações em idiomas diferentes para cada usuário. Os usuários retornantes são sempre recebidos no mesmo idioma.
Para que o app possa armazenar as preferências de um usuário, você precisa de uma maneira de armazenar informações sobre o usuário atual em uma sessão. Este aplicativo de amostra usa o Firestore para armazenar dados da sessão.
Você pode usar firestoregorilla
,
um armazenamento de sessões compatível com gorilla/sessions
.
O aplicativo inicia importando dependências, definindo um tipo
app
para conter umsessions.Store
e um modelo HTML e definindo a lista de saudações.Em seguida, o aplicativo define uma função
main
, que cria uma nova instânciaapp
, registra o gerenciador de índice e inicia o servidor HTTP. A funçãonewApp
cria a instânciaapp
inicializando umsessions.Store
com a funçãofirestoregorilla.New
.O gerenciador de índice obtém a sessão do usuário, criando uma, se necessário. As novas sessões recebem um idioma aleatório e uma contagem de visualização de zero. Em seguida, a contagem de visualizações é aumentada em um, a sessão é salva e o modelo HTML grava a resposta.
Veja no diagrama a seguir como o Firestore gerencia as sessões do aplicativo do App Engine.
Como excluir sessões
firestoregorilla
não exclui sessões antigas ou expiradas. É possível
excluir dados da sessão
no Console do Google Cloud
ou implementar uma estratégia de exclusão automática. Se você usar soluções de armazenamento para sessões como Memcache ou Redis, as sessões expiradas serão excluídas automaticamente.
Como executar no local
Na sua janela de terminal, crie o
sessions
binário:go build
Inicie o servidor HTTP:
./sessions
Veja seu app no navegador da Web:
Cloud Shell
Na barra de ferramentas do Cloud Shell, clique em Visualização da Web e selecione Visualizar na porta 8080.
Máquina local
No seu navegador, acesse
http://localhost:8080
Você verá uma das cinco saudações: "Hello World"," "Hallo Welt", "Hola mundo", "Salut le Monde" ou "Ciao Mondo". O idioma será alterado se você abrir a página em um navegador diferente ou no modo de navegação anônima. Confira e edite os dados da sessão no console do Google Cloud.
Para interromper o servidor HTTP, pressione
Control+C
na janela do terminal.
Como implantar e executar no App Engine
Use o ambiente padrão do App Engine para criar e implantar um aplicativo que seja executado de forma confiável sob carga pesada e com grandes quantidades de dados.
Neste tutorial, o ambiente padrão do App Engine é usado para implantar o servidor.
O arquivo app.yaml
contém a configuração do ambiente padrão do
App Engine:
Implante o aplicativo no App Engine:
gcloud app deploy
No navegador, digite o seguinte URL:
https://PROJECT_ID.REGION_ID.r.appspot.com
Substitua:
PROJECT_ID
: é o ID do projeto do Google Cloud.REGION_ID
: um código que o App Engine atribui ao seu app
A saudação agora é entregue por um servidor da Web em execução em uma instância do App Engine.
Como depurar o aplicativo
Se você não conseguir se conectar ao aplicativo do App Engine, verifique o seguinte:
- Verifique se os comandos de implantação
gcloud
foram concluídos com êxito e não geraram erros. Se houver erros (por exemplo,message=Build failed
), corrija-os e tente implantar o aplicativo do App Engine novamente. No console do Google Cloud, acesse a página do Explorador de registros.
Acessar a página "Análise de registros"
Na lista suspensa Recursos selecionados recentemente, clique em Aplicativo App Engine e, em seguida, clique em Todos os module_id. Você verá uma lista de solicitações de quando visitou seu aplicativo. Caso contrário, verifique se você selecionou Todos os module_id na lista suspensa. Se você vir mensagens de erro impressas no console do Google Cloud, verifique se o código do app corresponde ao código na seção sobre como gravar o app da Web.
Verifique se a API do Cloud Firestore está ativada.
Limpar
Exclua o projeto
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
Excluir a instância do App Engine
- In the Google Cloud console, go to the Versions page for App Engine.
- Select the checkbox for the non-default app version that you want to delete.
- Para excluir a versão do app, clique em Excluir.
A seguir
- Veja os tutoriais de funções do Cloud Run.
- Saiba mais sobre o App Engine.
- Teste o Cloud Run, que permite executar contêineres sem estado em um ambiente totalmente gerenciado ou em seu próprio cluster do Google Kubernetes Engine.