Você está na página 1de 27

GCP Fundamentals:

Core Infrastructure
Aplicativos na nuvem
Tópicos
Google App Engine

Ambiente padrão do Google


App Engine

Ambiente flexível do Google


App Engine

Google Cloud Endpoints


e Apigee Edge

Teste e laboratório
O App Engine é um PaaS para criar aplicativos escalonáveis

● O App Engine facilita a implantação,


a manutenção e a escalonabilidade
para que você possa se concentrar
na inovação.
● Desenvolvido especialmente para
criar aplicativos da Web e
back-ends para dispositivos móveis
escalonáveis.

O App Engine é uma plataforma para criar aplicativos da Web e back-ends para
dispositivos móveis escalonáveis. Ele permite que você se concentre na inovação
dos seus aplicativos, já que gerencia a infraestrutura deles para você. Por exemplo, o
App Engine gerencia o hardware e a infraestrutura de rede necessários para
executar seu código.

O App Engine oferece serviços e APIs integrados, como armazenamento de dados


NoSQL, memcache, balanceamento de carga, verificações de integridade, registro
de aplicativos e uma API de autenticação de usuário, comum na maioria dos
aplicativos.

O App Engine escalonará seu aplicativo automaticamente em resposta à quantidade


de tráfego recebida para que você só pague pelos recursos que usar. Basta carregar
seu código, e o Google gerenciará a disponibilidade do seu aplicativo. Não há
servidores para você provisionar ou manter.

O Security Scanner verifica e detecta vulnerabilidades comuns em aplicativos da


Web. Ele permite a identificação precoce de ameaças e oferece taxas muito baixas
de falso positivo. Você pode configurar, executar, programar e gerenciar facilmente
as verificações de segurança do Console do Cloud Platform.
O App Engine funciona com ferramentas conhecidas de desenvolvimento, como
Eclipse, IntelliJ, Maven, Git, Jenkins e PyCharm. Você pode desenvolver seus
aplicativos com ferramentas que já usa sem mudar seu fluxo de trabalho.
Tópicos
Google App Engine

Ambiente padrão do Google


App Engine

Ambiente flexível do Google


App Engine

Google Cloud Endpoints


e Apigee Edge

Teste e laboratório
Ambiente padrão do App Engine

● Implante seus aplicativos facilmente.


● Dimensione automaticamente
cargas de trabalho para atender
à demanda.
● Econômico
○ Cota diária gratuita
○ Preços por uso
● SDKs para desenvolvimento,
testes e implantação

O ambiente padrão do App Engine é baseado em instâncias de contêiner em


execução na infraestrutura do Google. Os contêineres são pré-configurados com
um dos diversos ambientes de execução disponíveis (Java 7, Python 2.7, Go e PHP).
Cada ambiente de execução inclui bibliotecas que permitem o uso de APIs padrão
do App Engine. Para muitos aplicativos, os ambientes padrão e as bibliotecas serão
suficientes.

O ambiente padrão do App Engine facilita a criação e a implantação de um aplicativo


executado de maneira confiável até mesmo com carga pesada e com grandes
quantidades de dados. Ele inclui os seguintes recursos:
Armazenamento persistente com consultas, classificação e transações
Escalonamento automático e balanceamento de carga
Filas de tarefas assíncronas para realizar trabalho fora do escopo de uma solicitação
Tarefas agendadas para disparar eventos em horários especificados ou intervalos
regulares
Integração com outros serviços de nuvem e APIs do Google
Ambiente padrão do App Engine: requisitos

● Versões específicas de Java,


Python, PHP e Go são compatíveis.
● Seu aplicativo deve estar em
conformidade com as restrições
do sandbox:
○ Sem opção de gravação
no sistema local de arquivos.
○ Todas as solicitações atingem
o tempo limite depois
de 60 segundos.
○ Instalações de software
de terceiros limitadas.

Software Development Kits (SDKs) para App Engine estão disponíveis em todas as
linguagens compatíveis. Cada SDK inclui:
● Todas as APIs e bibliotecas disponíveis no App Engine
● Um ambiente simulado e seguro de sandbox que emula todos os serviços do
App Engine em seu computador local
● Ferramentas de implantação que permitem carregar seu aplicativo na nuvem
e gerenciar diferentes versões do aplicativo

O SDK gerencia o aplicativo localmente, e o Console do Google Cloud Platform


gerencia o aplicativo em produção. O Console do Google Cloud Platform usa uma
interface baseada na Web para criar novos aplicativos, configurar nomes de
domínio, mudar a versão em que seu aplicativo está, examinar registros de acesso e
de erros e muito mais.

Os aplicativos são executados em um ambiente seguro e em sandbox, permitindo


que o ambiente padrão do App Engine distribua solicitações em vários servidores e
escalone servidores para atender às demandas de tráfego. Seu aplicativo é
executado em seu próprio ambiente confiável e seguro que é independente do
hardware, do sistema operacional ou do local físico do servidor.
Exemplos de fluxo de trabalho do ambiente padrão
do App Engine: Aplicativos da Web
O App Engine dimensiona
O App Engine consegue
automaticamente e atende
3 acessar uma série
seu aplicativo da Web
Desenvolvimento e teste locais de serviços usando
1 de maneira confiável
do aplicativo da Web APIs dedicadas

Projeto
Memcache
App Engine
Servidores Filas
de aplicativos de tarefas
Use o SDK para implantar Instâncias
2 do aplicativo Tarefas
no App Engine programadas
Instâncias
do aplicativo Pesquisa
Instâncias
do aplicativo Registros

Neste diagrama, vemos o ambiente padrão do App Engine na prática. Você


desenvolverá seu aplicativo e executará uma versão de teste dele usando
localmente o SDK do App Engine. Depois, quando estiver tudo pronto, você usará o
SDK para implantá-lo.

Cada aplicativo do App Engine é executado em um projeto do GCP. O App Engine


provisiona automaticamente instâncias de servidor, escalona e faz o balanceamento
das cargas entre elas. Enquanto isso, o aplicativo pode fazer chamadas a diversos
serviços usando APIs dedicadas. Por exemplo, um armazenamento de dados NoSQL
para tornar os dados persistentes, armazenamento em cache desses dados usando
memcache, pesquisa, registro, login de usuário e capacidade de iniciar ações não
acionadas por solicitações diretas do usuário, como filas de tarefas e um agendador
de tarefas.
Tópicos
Google App Engine

Ambiente padrão do Google


App Engine

Ambiente flexível do Google


App Engine

Google Cloud Endpoints


e Apigee Edge

Teste e laboratório
Ambiente flexível do App Engine

● Crie e implante aplicativos


em contêiner com um clique.
● Sem limitações de sandbox.
● Consegue acessar recursos
do App Engine.
● Ambientes de execução padrão:
Python, Java, Go, Node.js.
● Suporte personalizado a ambiente
de execução: qualquer linguagem
que aceite solicitações HTTP.
● Empacote seu ambiente de
execução como um Dockerfile.

Se as restrições do modelo de sandbox do ambiente padrão do App Engine não


funcionarem para você, mas você ainda quiser aproveitar os benefícios do App
Engine (como escalonamento horizontal e vertical), considere o ambiente flexível do
App Engine. Em vez do sandbox, o ambiente flexível do App Engine permite que
você especifique o contêiner em que seu aplicativo será executado.

Seu aplicativo é executado dentro de contêineres do Docker em máquinas virtuais


(VMs) do Google Compute Engine. O App Engine gerencia essas máquinas virtuais
do Compute Engine para você. Elas têm a integridade verificada e são corrigidas se
necessário. Além disso, você pode escolher a região geográfica em que serão
executadas. Atualizações críticas compatíveis com versões anteriores dos sistemas
operacionais serão aplicadas automaticamente. Tudo isso para que você possa se
concentrar apenas no código.

Microsserviços, autorização, bancos de dados SQL e noSQL, divisão de tráfego,


registro, pesquisa, controle de versão, verificação de segurança, memcache e redes
de distribuição de conteúdo têm compatibilidade nativa. Além disso, o ambiente
flexível do App Engine permite personalizar seu ambiente de execução e até mesmo
o sistema operacional da sua máquina virtual usando Dockerfiles.
● Ambientes de execução: o ambiente flexível é compatível com Java 8/Servlet
3.1/Jetty 9, Python 2.7 e Python 3.4, Node.js e Go. Os desenvolvedores podem
● personalizar esses ambientes de execução ou disponibilizar o próprio
ambiente de execução, como Ruby ou PHP, por uma imagem do Docker
personalizada ou por um Dockerfile da comunidade de código aberto.
● Personalização da infraestrutura: como as instâncias de VM no ambiente
flexível são máquinas virtuais do Compute Engine, é possível usar SSH para se
conectar a cada VM e contêiner do Docker para depuração e personalização
adicional.
● Desempenho: use várias configurações de CPU e memória. É possível
especificar quanta CPU e memória cada instância do seu aplicativo precisa, e
o ambiente flexível provisionará a infraestrutura necessária para você.

O App Engine gerencia suas máquinas virtuais, garantindo que:


● as instâncias tenham a integridade verificada, sejam corrigidas conforme
necessário e estejam localizadas com outras instâncias de módulo no
projeto;
● atualizações críticas compatíveis com versões anteriores sejam aplicadas
automaticamente nos sistemas operacionais subjacentes;
● as instâncias de VM sejam localizadas automaticamente por região
geográfica de acordo com as configurações no seu projeto. Os serviços de
gerenciamento do Google garantem que todas as instâncias de VM de um
projeto estejam localizadas de maneira a garantir o desempenho ideal;
● as instâncias de VM sejam reiniciadas a cada semana. Durante as
reinicializações, os serviços de gerenciamento do Google aplicarão todas as
atualizações necessárias do sistema operacional e de segurança.

Os aplicativos do ambiente flexível do App Engine que usam ambientes de execução


padrão podem acessar serviços do App Engine: armazenamento de dados,
memcache, filas de tarefas, registro, usuários e assim por diante.
Comparação dos ambientes do App Engine

Ambiente padrão Ambiente flexível

Inicialização da instância Milésimos de segundo Minutos

Acesso SSH Não Sim (embora não por padrão)

Gravação no disco local Não Sim (mas as gravações são efêmeras)

Suporte a binários Não Sim


de terceiros
Acesso à rede Por meio de serviços do App Engine Sim

Modelo de preços Depois do uso diário gratuito, Pague por alocação de recurso por hora,
pague por classe de instância, sem desligamento automático
com desligamento automático

Veja uma comparação lado a lado do ambiente flexível e do ambiente padrão.


Observe que o ambiente padrão inicializa instâncias do seu aplicativo com mais
rapidez, mas você recebe menos acesso à infraestrutura em que o aplicativo é
executado. Por exemplo, o ambiente flexível permite que você entre nas máquinas
virtuais em que seu aplicativo é executado. Ele permite o uso do disco local como
espaço temporário. Além disso, permite que você instale software de terceiros e que
seu aplicativo faça chamadas para a rede sem passar pelo App Engine. Por outro
lado, o faturamento do ambiente padrão pode chegar a zero no caso de um
aplicativo completamente ocioso.
Implantação de apps: Kubernetes Engine x App Engine

Kubernetes Engine Ambiente flexível Ambiente padrão


do App Engine do App Engine
Suporte Qualquer uma Qualquer uma Java, Python, Go, PHP
a linguagens

Modelo Híbrido PaaS PaaS


de serviços
Caso de uso Cargas de trabalho baseadas Cargas de trabalho Aplicativos para dispositivos
principal em contêiner de aplicativos para móveis e da Web
dispositivos móveis
e da Web baseadas
em contêiner

Para uma infraestrutura Para uma infraestrutura


gerenciada dinâmica

Mencionamos o uso de contêineres do Docker pelo App Engine, por isso, talvez você
esteja se perguntando como o App Engine se compara ao Kubernetes Engine. Veja
uma comparação lado a lado do App Engine com o Kubernetes Engine. O ambiente
padrão do App Engine é destinado a usuários que querem que o serviço assuma o
máximo de controle da implantação e do escalonamento do aplicativo. O
Kubernetes Engine oferece ao proprietário do aplicativo toda a flexibilidade do
Kubernetes. A edição flexível do App Engine é um meio termo.

Além disso, o ambiente do App Engine trata os contêineres como um meio para
alcançar um fim. Mas, para o Kubernetes Engine, os contêineres são um princípio
essencial para a organização.
Tópicos
Google App Engine

Ambiente padrão do Google


App Engine

Ambiente flexível do Google


App Engine

Google Cloud Endpoints


e Apigee Edge

Teste e laboratório
Interfaces de programação do aplicativo ocultam detalhes
e aplicam contratos
Consumidores
Usuários

API

Implementação complexa Interface simples


e que pode ser alterada com controle de versões

Vamos descrever com precisão o que é uma API. A implementação de um serviço de


software pode ser complexa e variável. Se outros serviços de software precisassem
ser codificados explicitamente nesse nível de detalhes para usar esse serviço, o
resultado seria frágil e propenso a erros. Em vez disso, os desenvolvedores de
aplicativos estruturam o software para que ele apresente uma interface clara e bem
definida que elimina detalhes desnecessários e, depois, documentam essa interface.
Isso é uma interface de programação do aplicativo. A implementação subjacente
pode mudar, desde que a interface continue a mesma, e isso não altera ou influencia
outros softwares que usam a API.

Às vezes, é preciso mudar uma API, como para adicionar ou remover um recurso.
Para fazer esse tipo de mudança na API corretamente, os desenvolvedores fazem
versões das APIs. A versão 2 de uma API talvez contenha chamadas que a versão 1
não tem. Os programas que consomem a API podem especificar a versão da API que
querem usar nas chamadas.

Dar suporte a uma API é uma tarefa muito importante, e o Google Cloud Platform
oferece duas ferramentas de gerenciamento de API. Elas abordam problemas
relacionados de um jeito diferente, e cada uma tem um ponto forte específico.
O Cloud Endpoints ajuda a criar e manter APIs

● Gerenciamento de APIs distribuídas


por meio de um console de API.
● Exponha sua API usando uma
interface RESTful.
● Controle o acesso e valide
chamadas com os tokens da Web
JSON e chaves de API do Google.
○ Identifique usuários da Web
e de dispositivos móveis
com Auth0 e Firebase
Authentication.
● Gere bibliotecas de cliente.

O Cloud Endpoints é um sistema distribuído de gerenciamento de APIs. Ele oferece


um console de API, hospedagem, registro, monitoramento e outros recursos para
ajudá-lo a criar, compartilhar, manter e proteger suas APIs. Você também pode usar
o Cloud Endpoints com qualquer API que permita a especificação OpenAPI,
anteriormente conhecida como especificação Swagger.

O Cloud Endpoints usa o Extensible Service Proxy distribuído para oferecer baixa
latência e alto desempenho para atender até as APIs mais exigentes. O Extensible
Service Proxy é um proxy de serviço baseado em NGINX. É executado em seu
próprio contêiner do Docker para oferecer isolamento e escalonabilidade melhores.
O proxy é armazenado em contêineres e distribuído no registro do Container
Registry e do Docker. Pode ser usado com App Engine, Kubernetes Engine, Compute
Engine ou Kubernetes.

Recursos do Cloud Endpoints


Autenticação de usuário
● Validação por JSON Web Token e uma experiência simplificada para o
desenvolvedor para Firebase Auth, Google Auth e Auth0.
Implantação automatizada
● Com o App Engine, o proxy é implantado automaticamente com seu
aplicativo. No Kubernetes Engine ou no Compute Engine, use o ESP em
● contêiner do Google para uma implantação simples.
Registros e monitoramento
● Monitore o tráfego, taxas de erro e latência e analise os registros no Cloud
Logging. Use o Cloud Trace para analisar melhor o desempenho e o BigQuery
para análise.
Chaves de API
● Gere chaves de API no Console do Google Cloud Platform e valide todas as
chamadas de API. Compartilhe sua API com outros desenvolvedores para
permitir que eles gerem as próprias chaves.
Integração fácil
● Comece rapidamente usando um dos frameworks do Cloud Endpoints do
Google ou apenas adicionando uma especificação Open API à sua
implantação.
Objetivos do laboratório
● Visualizar um aplicativo do App Engine
usando o Cloud Shell.

● Lançar um aplicativo do App Engine.

● Desativar um aplicativo do App Engine.


Cloud Endpoints: plataformas compatíveis

Ambiente de execução Clientes

Ambiente flexível do App Engine Android

Kubernetes Engine iOS

Compute Engine Javascript

O Cloud Endpoints é compatível com os aplicativos em execução nas plataformas de


computação do GCP, nas suas linguagens preferidas e nas tecnologias do cliente
que você escolher.
O Apigee Edge ajuda a proteger e monetizar APIs

● É uma plataforma para disponibilizar


APIs aos seus clientes e parceiros.
● Contém análise, monetização
e um portal para desenvolvedor.

A Apigee Edge também é uma plataforma para desenvolver e gerenciar proxies de


API. No entanto, ela tem uma orientação diferente: seu foco está em problemas de
negócios como limitação de taxas, cotas e análises. Vários usuários da Apigee Edge
disponibilizam serviços de software para outras empresas, e esses recursos são
úteis. Como os serviços de back-end da Apigee Edge não precisam estar no GCP, os
engenheiros também costumam usá-la para desmembrar um aplicativo legado. Em
vez de substituir um aplicativo monolítico, o que é arriscado, eles podem usar a
Apigee Edge para remover um serviço de cada vez com os microsserviços, que
permitem uma implantação gradativa até que seja possível desativar o app legado.
Tópicos
Google App Engine

Ambiente padrão do Google


App Engine

Ambiente flexível do Google


App Engine

Google Cloud Endpoints


e Apigee Edge

Teste e laboratório
Pergunta nº 1
Descreva três vantagens do uso do ambiente flexível
do App Engine sobre o ambiente padrão.
Pergunta nº 1
Descreva três vantagens do uso do ambiente flexível
do App Engine sobre o ambiente padrão.

O ambiente flexível permite acesso SSH, gravações em disco e binários de terceiros


(também permite personalização de pilha e processos em segundo plano).
Pergunta nº 2
Qual é a diferença entre o Cloud Endpoints
e o Apigee Edge?
Pergunta nº 2
Qual é a diferença entre o Cloud Endpoints
e o Apigee Edge?

O Cloud Endpoints ajuda a criar e manter APIs. O Apigee Edge ajuda a proteger
e monetizar APIs.
Laboratório
Neste laboratório,
você criará um aplicativo
simples do App Engine
usando o ambiente de
desenvolvimento local
do Cloud Shell e o implantará
no App Engine.
Mais recursos
Google App Engine https://cloud.google.com/appengine/docs/
Ambiente flexível do App Engine https://cloud.google.com/appengine/docs/flexible/
Ambiente padrão do App Engine
https://cloud.google.com/appengine/docs/standard/
Google Cloud Endpoints https://cloud.google.com/endpoints/docs/
Apigee Edge http://docs.apigee.com/api-services/content/what-apigee-edge

Você também pode gostar