PHP no Google AppEngine
Hussani Oliveira
Quem é Hussani Oliveira?
Google AppEngine
O que é?
O que é?
Hospedagem de aplicações web em cloud
O que é?
Hospedagem de aplicações web em cloud
Criado inicialmente para escalar aplicações Google
O que é?
Hospedagem de aplicações web em cloud
Criado inicialmente para escalar aplicações Google
Serviço PaaS
Tipos de serviço Cloud
Tipos de serviço Cloud
Infrastructure as a service
Tipos de serviço Cloud
Infrastructure as a service
Platform as a service
Tipos de serviço Cloud
Infrastructure as a service
Platform as a service
Software as a service
Tipos de serviço Cloud
Infrastructure as a service (IaaS)
Platform as a service (PaaS)
Software as a service (SaaS)
Abstração em nuvem
Aplicação
Base da aplicação
Armazenamento
Sistema Operacional
Hardware
Rede
Iaas
Aplicação
Base da aplicação
Armazenamento
Sistema Operacional
Hardware
Rede
SaaS
Aplicação
Base da aplicação
Armazenamento
Sistema Operacional
Hardware
Rede
SaaS
Aplicação
Base da aplicação
Armazenamento
Sistema Operacional
Hardware
Rede
Tudo em nuvem!
PaaS
Aplicação
Base da aplicação
Armazenamento
Sistema Operacional
Hardware
Rede
PaaS no GAE
Aplicação
Base da aplicação
Armazenamento
Sistema Operacional
Hardware
Rede
?
PaaS no GAE
Aplicação
Base da aplicação
Armazenamento
Sistema Operacional
Hardware
Rede
Cloud SQL, Cloud Storage, Cloud Datastore, BigQuery
PaaS no GAE
Aplicação
Base da aplicação
Armazenamento
Sistema Operacional
Hardware
Rede
Python, Java, Go, PHP
Disponibilidade pública
Lançado em abril de 2008
Disponibilidade pública
Lançado em abril de 2008
Primeira versão estável em setembro de 2011
Linguagens
Python
Linguagens
Python
Java
Linguagens
Python
Java
Go
Linguagens
Python
Java
Go
PHP
Linguagens
Python
Java
Go (experimental)
PHP (preview)
Por que AppEngine?
Vantagens de PaaS
Vantagens de PaaS
Poucas configurações
Vantagens de PaaS
Poucas configurações
Balanço de carga
Vantagens de PaaS
Poucas configurações
Balanço de carga
Replicação
Vantagens de PaaS
Poucas configurações
Balanço de carga
Replicação
Infraestrutura
Vantagens do AppEngine
Vantagens do AppEngine
Diversos serviços do ecossistema Google
Vantagens do AppEngine
Diversos serviços do ecossistema Google
Fácil desenvolvimento
Vantagens do AppEngine
Diversos serviços do ecossistema Google
Fácil desenvolvimento
Fácil deploy
Vantagens do AppEngine
Diversos serviços do ecossistema Google
Fácil desenvolvimento
Fácil deploy
Infraestrutura Google
Serviços disponíveis
Serviços disponíveis
Application Identity
Serviços disponíveis
Application Identity
Logs
Serviços disponíveis
Application Identity
Logs
Serviços disponíveis
Application Identity
Logs
Memcache
Serviços disponíveis
Application Identity
Logs
Memcache
Sockets
Serviços disponíveis
Application Identity
Logs
Memcache
Sockets
URL Fecth
Serviços disponíveis
Application Identity
Logs
Memcache
Sockets
URL Fecth
Users
Serviços disponíveis
Application Identity
Logs
Memcache
Sockets
URL Fecth
Users
Tasks Queue
Kickstart
O SDK
Dependências
Python 2.7
PHP 5.4+
MySQL 5.5
Instalando
$ wget http://googleappengine.googlecode.com/files/google_appengine_1.8.9.zip
$ unzip google_appengine_1.8.9.zip
Configurando pastas
Criar uma pasta chamada “helloworld”
helloworld.php
<?php
echo “Hello, World!”;
app.yamlapplication: helloworld
version: 1
runtime: php
api_version: 1
handlers:
- url: /.*
script: helloworld.php
Iniciando o servidor local
$ google_appengine/dev_appserver.py helloworld/ --php_executable_path <php-cgi>
Iniciando o servidor local
$ google_appengine/dev_appserver.py helloworld/ --php_executable_path <php-cgi>
Server rodando em http://localhost:8080
Console Server em http://localhost:8000
Publicando na web
Cadastrando a app
Cadastrando a app
Mesmo nome que está no app.yaml
Realizando o upload
$ ./google_appengine/appcfg.py update helloworld
Realizando o upload
$ ./google_appengine/appcfg.py update helloworld
Exemplo: https://asciinema.org/a/7444
Criando uma aplicação robusta
O projeto
O projeto
Catálogo de cervejas
O projeto
Catálogo de cervejas
Utilizando frameworks PHP
O projeto
Catálogo de cervejas
Utilizando frameworks PHP
Código fonte em: https://github.com/hussani/beer-api
Composer{
"autoload": {
"psr-0": {
"BeerApi": "src\/"
}
},
"require": {
"respect/rest": "dev-master",
"respect/config": "dev-master",
"respect/relational": "dev-master"
}
}
Banco de dados
Cloud SQL
Cloud SQL
MySQL 5.5
Cloud SQL
MySQL 5.5
Auto Replicável
Criando uma instancia
https://cloud.google.com
Selecione o projeto
Cloud SQL
PAGO!
Criando o banco de dados
Conecte como root e execute:
CREATE DATABASE IF NOT EXISTS openbeer_db;
CREATE USER 'openbeer_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON openbeer_db.* TO 'openbeer_user'@'localhost';
Importando banco de dados
https://cloud.google.com
Selecione o projeto
Cloud Storage
Crie um bucket
Faça upload do banco de dados
Importando banco de dados
Cloud SQL
Selecione a instância
Importar
gs://<nome do bucket>/arquivo.sql
Conectar no banco de dados
PDOdsn = mysql:unix_socket=/cloudsql/<nome da app>:<user>;dbname=<nome do banco>
user = <usuario do banco>
pass = <senha do banco>
Definindo ambientes
if (isset($_SERVER['SERVER_SOFTWARE']) && (substr_count( $_SERVER['SERVER_SOFTWARE'], 'Google App Engine') > 0) ) { return 'appengine';} else { return 'dev';}
Deploy com Git
Deploy com Git
Cloud Console
Cloud Development
Push-to-Deploy
Create new repo
Deploy com Git
Criar um repositório
Resgatar a senha
Resgatar a senha
Senha no e-mail!
Configurar loginCriar um arquivo .netrc na pasta home (~/)
Inserir dentro do arquivo:
machine code.google.com login <email-address> password <password>
Obs.: o campo <password> é a senha resgatada no passo anterior
Adicionando o remote e enviado arquivos
Na pasta contendo o arquivo app.yaml executar:
$ git remote add appengine <repo-url>
$ git push appengine master
Revisão
Revisão
Google AppEngine é uma hospedagem PaaS
Revisão
Google AppEngine é uma hospedagem PaaS
Provê diversos serviços de sua infra
Revisão
Google AppEngine é uma hospedagem PaaS
Provê diversos serviços de sua infra
Por enquanto é grátis com PHP
Revisão
Google AppEngine é uma hospedagem PaaS
Provê diversos serviços de sua infra
Por enquanto é grátis com PHP
Possui serviços pagos
Revisão
Google AppEngine é uma hospedagem PaaS
Provê diversos serviços de sua infra
Por enquanto é grátis com PHP
Possui serviços pagos
Permite deployment com Git
Revisão
Google AppEngine é uma hospedagem PaaS
Provê diversos serviços de sua infra
Por enquanto é grátis com PHP
Possui serviços pagos
Permite deployment com Git
Perguntas
?
Referências
https://developers.google.com/appengine
https://cloud.google.com/
https://github.com/hussani/beer-api
Contato
@hussanii
slideshare.com/hussan1
github.com/hussani
Obrigado
Top Related