PHP no Google AppEngine

98
PHP no Google AppEngine

description

Palestra ministrada na Campus Party Brasil 2014. Com a evolução do PHP no mercado coorporativo o Google não poderia deixar essa linguagem de fora de seu famoso serviço infraestrutura em nuvem, o Google AppEngine. Nesta palestra vamos mostrar o que é possível fazer utilizando PHP e os poderes do AppEngine. Link para a palestra: https://www.youtube.com/watch?v=LvDnC93xWaI

Transcript of PHP no Google AppEngine

Page 1: PHP no Google AppEngine

PHP no Google AppEngine

Page 2: PHP no Google AppEngine

Hussani Oliveira

Page 3: PHP no Google AppEngine

Quem é Hussani Oliveira?

Page 4: PHP no Google AppEngine

Google AppEngine

Page 5: PHP no Google AppEngine

O que é?

Page 6: PHP no Google AppEngine

O que é?

Hospedagem de aplicações web em cloud

Page 7: PHP no Google AppEngine

O que é?

Hospedagem de aplicações web em cloud

Criado inicialmente para escalar aplicações Google

Page 8: PHP no Google AppEngine

O que é?

Hospedagem de aplicações web em cloud

Criado inicialmente para escalar aplicações Google

Serviço PaaS

Page 9: PHP no Google AppEngine

Tipos de serviço Cloud

Page 10: PHP no Google AppEngine

Tipos de serviço Cloud

Infrastructure as a service

Page 11: PHP no Google AppEngine

Tipos de serviço Cloud

Infrastructure as a service

Platform as a service

Page 12: PHP no Google AppEngine

Tipos de serviço Cloud

Infrastructure as a service

Platform as a service

Software as a service

Page 13: PHP no Google AppEngine

Tipos de serviço Cloud

Infrastructure as a service (IaaS)

Platform as a service (PaaS)

Software as a service (SaaS)

Page 14: PHP no Google AppEngine

Abstração em nuvem

Aplicação

Base da aplicação

Armazenamento

Sistema Operacional

Hardware

Rede

Page 15: PHP no Google AppEngine

Iaas

Aplicação

Base da aplicação

Armazenamento

Sistema Operacional

Hardware

Rede

Page 16: PHP no Google AppEngine

SaaS

Aplicação

Base da aplicação

Armazenamento

Sistema Operacional

Hardware

Rede

Page 17: PHP no Google AppEngine

SaaS

Aplicação

Base da aplicação

Armazenamento

Sistema Operacional

Hardware

Rede

Tudo em nuvem!

Page 18: PHP no Google AppEngine

PaaS

Aplicação

Base da aplicação

Armazenamento

Sistema Operacional

Hardware

Rede

Page 19: PHP no Google AppEngine

PaaS no GAE

Aplicação

Base da aplicação

Armazenamento

Sistema Operacional

Hardware

Rede

?

Page 20: PHP no Google AppEngine

PaaS no GAE

Aplicação

Base da aplicação

Armazenamento

Sistema Operacional

Hardware

Rede

Cloud SQL, Cloud Storage, Cloud Datastore, BigQuery

Page 21: PHP no Google AppEngine

PaaS no GAE

Aplicação

Base da aplicação

Armazenamento

Sistema Operacional

Hardware

Rede

Python, Java, Go, PHP

Page 22: PHP no Google AppEngine

Disponibilidade pública

Lançado em abril de 2008

Page 23: PHP no Google AppEngine

Disponibilidade pública

Lançado em abril de 2008

Primeira versão estável em setembro de 2011

Page 24: PHP no Google AppEngine

Linguagens

Python

Page 25: PHP no Google AppEngine

Linguagens

Python

Java

Page 26: PHP no Google AppEngine

Linguagens

Python

Java

Go

Page 27: PHP no Google AppEngine

Linguagens

Python

Java

Go

PHP

Page 28: PHP no Google AppEngine

Linguagens

Python

Java

Go (experimental)

PHP (preview)

Page 29: PHP no Google AppEngine

Por que AppEngine?

Page 30: PHP no Google AppEngine

Vantagens de PaaS

Page 31: PHP no Google AppEngine

Vantagens de PaaS

Poucas configurações

Page 32: PHP no Google AppEngine

Vantagens de PaaS

Poucas configurações

Balanço de carga

Page 33: PHP no Google AppEngine

Vantagens de PaaS

Poucas configurações

Balanço de carga

Replicação

Page 34: PHP no Google AppEngine

Vantagens de PaaS

Poucas configurações

Balanço de carga

Replicação

Infraestrutura

Page 35: PHP no Google AppEngine

Vantagens do AppEngine

Page 36: PHP no Google AppEngine

Vantagens do AppEngine

Diversos serviços do ecossistema Google

Page 37: PHP no Google AppEngine

Vantagens do AppEngine

Diversos serviços do ecossistema Google

Fácil desenvolvimento

Page 38: PHP no Google AppEngine

Vantagens do AppEngine

Diversos serviços do ecossistema Google

Fácil desenvolvimento

Fácil deploy

Page 39: PHP no Google AppEngine

Vantagens do AppEngine

Diversos serviços do ecossistema Google

Fácil desenvolvimento

Fácil deploy

Infraestrutura Google

Page 40: PHP no Google AppEngine

Serviços disponíveis

Page 41: PHP no Google AppEngine

Serviços disponíveis

Application Identity

Page 42: PHP no Google AppEngine

Serviços disponíveis

Application Identity

Logs

Page 43: PHP no Google AppEngine

Serviços disponíveis

Application Identity

Logs

Mail

Page 44: PHP no Google AppEngine

Serviços disponíveis

Application Identity

Logs

Mail

Memcache

Page 45: PHP no Google AppEngine

Serviços disponíveis

Application Identity

Logs

Mail

Memcache

Sockets

Page 46: PHP no Google AppEngine

Serviços disponíveis

Application Identity

Logs

Mail

Memcache

Sockets

URL Fecth

Page 47: PHP no Google AppEngine

Serviços disponíveis

Application Identity

Logs

Mail

Memcache

Sockets

URL Fecth

Users

Page 48: PHP no Google AppEngine

Serviços disponíveis

Application Identity

Logs

Mail

Memcache

Sockets

URL Fecth

Users

Tasks Queue

Page 49: PHP no Google AppEngine

Kickstart

Page 50: PHP no Google AppEngine

O SDK

Page 51: PHP no Google AppEngine

Dependências

Python 2.7

PHP 5.4+

MySQL 5.5

Page 52: PHP no Google AppEngine

Instalando

$ wget http://googleappengine.googlecode.com/files/google_appengine_1.8.9.zip

$ unzip google_appengine_1.8.9.zip

Page 53: PHP no Google AppEngine

Configurando pastas

Criar uma pasta chamada “helloworld”

Page 54: PHP no Google AppEngine

helloworld.php

<?php

echo “Hello, World!”;

Page 55: PHP no Google AppEngine

app.yamlapplication: helloworld

version: 1

runtime: php

api_version: 1

handlers:

- url: /.*

script: helloworld.php

Page 56: PHP no Google AppEngine

Iniciando o servidor local

$ google_appengine/dev_appserver.py helloworld/ --php_executable_path <php-cgi>

Page 57: PHP no Google AppEngine

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

Page 58: PHP no Google AppEngine

Publicando na web

Page 59: PHP no Google AppEngine

Cadastrando a app

https://cloud.google.com

Page 60: PHP no Google AppEngine

Cadastrando a app

Page 61: PHP no Google AppEngine

Cadastrando a app

Mesmo nome que está no app.yaml

Page 62: PHP no Google AppEngine

Realizando o upload

$ ./google_appengine/appcfg.py update helloworld

Page 63: PHP no Google AppEngine

Realizando o upload

$ ./google_appengine/appcfg.py update helloworld

Exemplo: https://asciinema.org/a/7444

Page 64: PHP no Google AppEngine

Criando uma aplicação robusta

Page 65: PHP no Google AppEngine

O projeto

Page 66: PHP no Google AppEngine

O projeto

Catálogo de cervejas

Page 67: PHP no Google AppEngine

O projeto

Catálogo de cervejas

Utilizando frameworks PHP

Page 68: PHP no Google AppEngine

O projeto

Catálogo de cervejas

Utilizando frameworks PHP

Código fonte em: https://github.com/hussani/beer-api

Page 69: PHP no Google AppEngine

Composer{

"autoload": {

"psr-0": {

"BeerApi": "src\/"

}

},

"require": {

"respect/rest": "dev-master",

"respect/config": "dev-master",

"respect/relational": "dev-master"

}

}

Page 70: PHP no Google AppEngine

Banco de dados

Page 71: PHP no Google AppEngine

Cloud SQL

Page 72: PHP no Google AppEngine

Cloud SQL

MySQL 5.5

Page 73: PHP no Google AppEngine

Cloud SQL

MySQL 5.5

Auto Replicável

Page 74: PHP no Google AppEngine

Criando uma instancia

https://cloud.google.com

Selecione o projeto

Cloud SQL

PAGO!

Page 75: PHP no Google AppEngine

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';

Page 76: PHP no Google AppEngine

Importando banco de dados

https://cloud.google.com

Selecione o projeto

Cloud Storage

Crie um bucket

Faça upload do banco de dados

Page 77: PHP no Google AppEngine

Importando banco de dados

Cloud SQL

Selecione a instância

Importar

gs://<nome do bucket>/arquivo.sql

Page 78: PHP no Google AppEngine

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>

Page 79: PHP no Google AppEngine

Definindo ambientes

if (isset($_SERVER['SERVER_SOFTWARE']) && (substr_count( $_SERVER['SERVER_SOFTWARE'], 'Google App Engine') > 0) ) { return 'appengine';} else { return 'dev';}

Page 80: PHP no Google AppEngine

Deploy com Git

Page 81: PHP no Google AppEngine

Deploy com Git

Cloud Console

Cloud Development

Push-to-Deploy

Create new repo

Page 82: PHP no Google AppEngine

Deploy com Git

Page 83: PHP no Google AppEngine

Criar um repositório

Page 84: PHP no Google AppEngine

Resgatar a senha

Page 85: PHP no Google AppEngine

Resgatar a senha

Senha no e-mail!

Page 86: PHP no Google AppEngine

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

Page 87: PHP no Google AppEngine

Adicionando o remote e enviado arquivos

Na pasta contendo o arquivo app.yaml executar:

$ git remote add appengine <repo-url>

$ git push appengine master

Page 88: PHP no Google AppEngine

Revisão

Page 89: PHP no Google AppEngine

Revisão

Google AppEngine é uma hospedagem PaaS

Page 90: PHP no Google AppEngine

Revisão

Google AppEngine é uma hospedagem PaaS

Provê diversos serviços de sua infra

Page 91: PHP no Google AppEngine

Revisão

Google AppEngine é uma hospedagem PaaS

Provê diversos serviços de sua infra

Por enquanto é grátis com PHP

Page 92: PHP no Google AppEngine

Revisão

Google AppEngine é uma hospedagem PaaS

Provê diversos serviços de sua infra

Por enquanto é grátis com PHP

Possui serviços pagos

Page 93: PHP no Google AppEngine

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

Page 94: PHP no Google AppEngine

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

Page 95: PHP no Google AppEngine

Perguntas

?

Page 96: PHP no Google AppEngine

Referências

https://developers.google.com/appengine

https://cloud.google.com/

https://github.com/hussani/beer-api

Page 97: PHP no Google AppEngine

Contato

@hussanii

slideshare.com/hussan1

github.com/hussani

Page 98: PHP no Google AppEngine

Obrigado