Postagens

Mostrando postagens com o rótulo GAE

Autenticação em redes sociais em Python e GAE

Imagem
Recentemente precisei fazer uma POC utilizando GAE e autenticando no Facebook. Utilizei a biblioteca SimpleAuth, portada para Python: https://github.com/crhym3/simpleauth Funcionou muito bem, recomendo! Um ponto interessante: ela utiliza o modelo User Models do webapp2 . Desta forma, os dados do usuário são automaticamente armazenados em uma tabela (kind) dentro do datastore:

Datastore: [Parte 2] Queries and indexes

Queries  O conceito de queries no datastore não é diferente do que já estamos acostumados com bancos relacionais. O importante é entender as limitações.   Mas, conceitualmente, queries retornam "entidades" do datastore que atendam aos critérios especificados na consulta.   Uma query normalmente inclui:    Uma "kind" (equivalente a uma tabela de banco relacional) Um ou mais "filters": filtros baseados em valores das propriedades, chaves ou ancestrais. Uma ou mais opções de ordenação ("sort") Uma boa prática, com em qualquer banco de dados, é retornar o mínimo possível e necessário de informações, com o intuito de poupar recursos de memória e melhorar a performance. A função dos Índices Toda query do datastore utiliza um ou mais índices para ser processada. Atenção neste ponto. Esta é uma diferença fundamental, quando comparamos com bancos de dados relacionais, onde os índices tem a função primária de otimizar uma consulta ...

DataStore: [Parte 1] Introdução

Imagem
O que é o DataStore ? O datastore é a solução NoSql da plataforma de cloud do Google (Google Cloud Platform). De forma resumida, ele possui as seguintes características: Estrutura : banco de dados de objetos "schemaless" Consistência : oferece "Strong Consistency" (consistência forte), para consultas com as chaves completas (com ancestral). Consistência eventual para as demais consultas. Custo: oferece uma cota livre, com limites diários. Transações: são ACID. Como funciona internamente Internamente o DataStore foi construído sobre o BigTable e Megastore: MegaStore : traz a escalabilidade de um NoSql com as conveniências de um banco relacional. BigTable : oferece a infraestrutura escalável de armazenamento. Alguns termos básicos do DataStore Kinds: equivalem às tabelas do mundo relacional. Entities: equivale a uma linha no mundo relacional. No dataStore, uma "entity" é um objeto armazenado em uma kind. Keys: equivale à c...

GAE: Qual a causa mais comum de falhas de uma aplicação no GAE ?

Imagem
Por incrível que pareça, são problemas com cotas! Se uma aplicação excede a cota permitida, uma exceção será gerada. Por isso o assunto merece atenção: O que é cota ? Cota é um limite imposto pela plataforma para a utilização de determinado recurso. Existem cotas para tudo. Veja alguns exemplos: uso de "banda de rede" de entrada e saída armazenamento uso de API (prediction, etc) email logs uso de filas (queues) etc Tipos de cotas Existem 3 tipos: Free Quotas: como o nome diz, são cotas livres para a utilização de alguns recursos da plataforma. Billable Limits: limites pagos de utilização de recursos. Safety Limits: limites de segurança impostos dentro da plataforma, para que ninguém seja capaz de derrubá-la. Dentro dos "Safety Limits", temos 2 pontos: Cotas Diárias: limite diário, resetado todo dia à meia-noite (Pacific Time - PST) Cotas Por minuto: limita uma taxa máxima de uso por minuto. É resetado a cada minuto. Como ver...

GAE: Como fazer o troubleshooting?

Imagem
O que fazer se algo parar de funcionar ? Em um sistema tradicional "on premisse", normalmente faríamos o seguinte: "Logamos" no servidor Começamos a investigar o sistema operacional, a aplicação e os logs. E o que fazer no caso de um app rodando na nuvem, cuja instância pode estar sendo executada em qualquer servidor ? No caso do GAE, da plataforma do Google, a recomendação é a seguinte: Verifique o status do App Engine Antes de se "descabelar" e começar a procurar o problema na sua aplicação, verifique o status da plataforma App Engine, através da seguinte página: https://status.cloud.google.com/ Você pode assinar o RSS Feed no rodapé da página, para receber os status de forma automática. Verifique o Google Admin Console http://console.developers.google.com Na página inicial você também pode verificar o status geral de todos os serviços da plataforma. Além disso, verifique o status de suas instâncias do GAE, suas versões, tráf...

GAE: [Parte 4] Como funciona o scaling

Imagem
A configuração de scaling do GAE é feita através do arquivo de configuração da aplicação ".yaml " Normalmente uma aplicação irá ter um arquivo .yaml, porém esta configuração pode ser feita por "módulo" da aplicação, como na figura abaixo:   Cada arquivo .yaml define:   version: versão da aplicação tipo de scaling : manual, basic ou automatic (default) tipo de instância: URL mapping: mapeamento de URLs para pontos específicos da aplicação (ex: static files) Abaixo podemos ver um exemplo de configuração de cada tipo de scaling: Manual Scaling application: simple-sample application: simple-sample runtime: python27 api_version: 1 instance_class: B8 manual_scaling: instances: 5 instances: número de instância que serão criadas no start da aplicação. Basic Scaling  application: simple-sample version: uno runtime: python27 api_version: 1 instance_class: B8 basic_scaling:   max_instances: 11   idle_timeout: 10m ...

GAE: [Parte 3] Como funciona o scaling

Estes são os tipos de instâncias do GAE (instance class). Nota: não confunda com os tipos de instâncias do GCE (Google Cloud Compute), que são máquinas virtuais de fato. Instâncias do GAE são precificadas com base em uma taxa por hora, de acordo com a classe da instância. Classe Memória CPU Custo / Hora/ Instância B1 128 MB 600 Mhz $0.05 B2 256 MB 1.2 Ghz $0.10 B4 512 MB 2.4 Ghz $0.20 B4_1G 1024 MB 2.4 Ghz $0.30 B8 1024 MB 4.8 Ghz $0.40 F1 128 MB 600 Mhz $0.05 F2 256 MB 1.2 Ghz $0.10 F4 512 MB 2.4 Ghz $0.20 F4_1G 1024 MB 2.4 Ghz $0.30 A configuração da instância é feita através do arquivo de configuração .yaml (python), como no exemplo abaixo: application : simple - sample module : my - module version : uno runtime : python27 api_version : 1 instance_class : B8 manual_scaling :   instances : 5  

GAE: [Parte 2] Como funciona o scaling

  No post anterior falamos sobre os tipos de "scaling" do GAE, ou seja, quais as opções existentes para escalar uma aplicação dentro da plataforma. Dando continuidade, cada tipo de "scaling" permite configurar: A classe da instância (instance class) : capacidade de CPU/Memória da instância Comportamento de scaling (basic, manual e automatic) Estas configurações são feitas através do arquivo de configuração da aplicação (.yaml no caso de Python). Na lista abaixo podemos ver os mais alguns detalhes de cada tipo de scaling: Tipos de Scaling Feature Automatic Manual Basic Deadlines Requests podem levar até 60 segundos 10 minutos para tasks Requests podem rodar por tempo indeterminado Tasks podem rodar por até 24 horas Idem Manual. Background Threads Não permitido Permitido Permitido CPU/Memory Permite configurar a classe da instância, entre as opções: F1, F2, F4, ou F4_1G Permite configurar a classe da instância, entre as opções: B1, B2...

GAE: [Parte 1] Como funciona o auto scaling

Dentro do App Engine, existem 3 tipos de configuração de "scaling" que podem ser feitas. Os "requests" que a sua aplicação está recebendo serão direcionados para a instância em execução ou para uma nova instância dependendo da configuração de "scalling" que foi realizada para a mesma. Os tipos de scalling são: Manual um número fixo de instâncias é definido antes do request chegar. Permite que código "pesado" de start possa ser executado. Basic Nenhuma instância é criada,  até que chegue o primeiro request Você deve limitar o número máximo de instâncias (max_instances) Para o downscaling, ou seja, para diminuir o número de instâncias disponíveis, existe o parâmetro idle_timeout (default = 5 min). Se a instância ficar sem utilização por este período, ela será automaticamente desligada. Automatic Instâncias criadas e destruídas com base na demanda Gerenciado automaticamente por algoritmos da plataforma do Google. Po...

Google Cloud Platform: Visão Geral de PAAS

Imagem
Este site dá uma visão geral legal do PAAS do google, em português. O PAAS é a parte de "plataforma como serviço", ou seja, onde você de fato tem a possibilidade de montar soluções de arquitetura a partir de componentes (ou serviços) prontos. O site já deve estar desatualizado, mas é um bom ponto de partida: http://www.cloudmarket.com.br/blog/cloud-computing/google-app-engine-conheca-o-sistema-paas-da-google/

Google Cloud Platform: o que instalar na sua máquina para começar?

Imagem
Para utilizar o GAE com Python: Isto é o que você precisa para começar a "codar" na plataforma do Google (mínimo): 1) Instalar o Python na sua máquina Versão 2.7 https://www.python.org/downloads/Windows 2) Instalar o ambiente de desenvolvimento do Python: Existem vários. Um dos mais conhecidos: PyCharm https://www.jetbrains.com/pycharm/download/ 3) Instalar o Google Cloud SDK: https://cloud.google.com/sdk/ 4) Executar um "Hello World": veja um passo-a-passo de exemplo código-fonte Para mais detalhes https://cloud.google.com/appengine/docs

Google Cloud Platform: linguagens suportadas

Imagem
As seguintes linguagens são suportadas para o desenvolvimento na plataforma (PAAS) do Google: Isto significa que existem SDKs disponíveis nestas linguagens. Para consumir serviços (APIs), você pode utilizar qualquer linguagem que seja capaz de falar REST / JSON. No próximo post, colocarei o que é necessário para desenvolver em Python.