PHP no Google AppEngine

Post on 22-May-2015

697 views 0 download

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

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

Mail

Serviços disponíveis

Application Identity

Logs

Mail

Memcache

Serviços disponíveis

Application Identity

Logs

Mail

Memcache

Sockets

Serviços disponíveis

Application Identity

Logs

Mail

Memcache

Sockets

URL Fecth

Serviços disponíveis

Application Identity

Logs

Mail

Memcache

Sockets

URL Fecth

Users

Serviços disponíveis

Application Identity

Logs

Mail

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

https://cloud.google.com

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