Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHP no Google AppEngine

PHP no Google AppEngine

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.

Palestra ministrada na Campus Party Brasil 2014 e no GDG-SP Abril/2014

https://www.youtube.com/watch?v=LvDnC93xWaI

C1d23f296b6d845b95a7ca2c5fe9de4a?s=128

Hussani Oliveira

January 31, 2014
Tweet

More Decks by Hussani Oliveira

Other Decks in Programming

Transcript

  1. PHP no Google AppEngine

  2. Hussani Oliveira

  3. Quem é Hussani Oliveira?

  4. Google AppEngine

  5. O que é?

  6. O que é? Hospedagem de aplicações web em cloud

  7. O que é? Hospedagem de aplicações web em cloud Criado

    inicialmente para escalar aplicações Google
  8. O que é? Hospedagem de aplicações web em cloud Criado

    inicialmente para escalar aplicações Google Serviço PaaS
  9. Tipos de serviço Cloud

  10. Tipos de serviço Cloud Infrastructure as a service

  11. Tipos de serviço Cloud Infrastructure as a service Platform as

    a service
  12. Tipos de serviço Cloud Infrastructure as a service Platform as

    a service Software as a service
  13. Tipos de serviço Cloud Infrastructure as a service (IaaS) Platform

    as a service (PaaS) Software as a service (SaaS)
  14. Abstração em nuvem Aplicação Base da aplicação Armazenamento Sistema Operacional

    Hardware Rede
  15. Iaas Aplicação Base da aplicação Armazenamento Sistema Operacional Hardware Rede

  16. SaaS Aplicação Base da aplicação Armazenamento Sistema Operacional Hardware Rede

  17. SaaS Aplicação Base da aplicação Armazenamento Sistema Operacional Hardware Rede

    Tudo em nuvem!
  18. PaaS Aplicação Base da aplicação Armazenamento Sistema Operacional Hardware Rede

  19. PaaS no GAE Aplicação Base da aplicação Armazenamento Sistema Operacional

    Hardware Rede ?
  20. PaaS no GAE Aplicação Base da aplicação Armazenamento Sistema Operacional

    Hardware Rede Cloud SQL, Cloud Storage, Cloud Datastore, BigQuery
  21. PaaS no GAE Aplicação Base da aplicação Armazenamento Sistema Operacional

    Hardware Rede Python, Java, Go, PHP
  22. Disponibilidade pública Lançado em abril de 2008

  23. Disponibilidade pública Lançado em abril de 2008 Primeira versão estável

    em setembro de 2011
  24. Linguagens Python

  25. Linguagens Python Java

  26. Linguagens Python Java Go

  27. Linguagens Python Java Go PHP

  28. Linguagens Python Java Go (experimental) PHP (preview)

  29. Por que AppEngine?

  30. Vantagens de PaaS

  31. Vantagens de PaaS Poucas configurações

  32. Vantagens de PaaS Poucas configurações Balanço de carga

  33. Vantagens de PaaS Poucas configurações Balanço de carga Replicação

  34. Vantagens de PaaS Poucas configurações Balanço de carga Replicação Infraestrutura

  35. Vantagens do AppEngine

  36. Vantagens do AppEngine Diversos serviços do ecossistema Google

  37. Vantagens do AppEngine Diversos serviços do ecossistema Google Fácil desenvolvimento

  38. Vantagens do AppEngine Diversos serviços do ecossistema Google Fácil desenvolvimento

    Fácil deploy
  39. Vantagens do AppEngine Diversos serviços do ecossistema Google Fácil desenvolvimento

    Fácil deploy Infraestrutura Google
  40. Serviços disponíveis

  41. Serviços disponíveis Application Identity

  42. Serviços disponíveis Application Identity Logs

  43. Serviços disponíveis Application Identity Logs Mail

  44. Serviços disponíveis Application Identity Logs Mail Memcache

  45. Serviços disponíveis Application Identity Logs Mail Memcache Sockets

  46. Serviços disponíveis Application Identity Logs Mail Memcache Sockets URL Fecth

  47. Serviços disponíveis Application Identity Logs Mail Memcache Sockets URL Fecth

    Users
  48. Serviços disponíveis Application Identity Logs Mail Memcache Sockets URL Fecth

    Users Tasks Queue
  49. Kickstart

  50. O SDK

  51. Dependências Python 2.7 PHP 5.4+ MySQL 5.5

  52. Instalando $ wget http://googleappengine.googlecode.com/files/google_a ppengine_1.8.9.zip $ unzip google_appengine_1.8.9.zip

  53. Configurando pastas Criar uma pasta chamada “helloworld”

  54. helloworld.php <?php echo “Hello, World!”;

  55. app.yaml application: helloworld version: 1 runtime: php api_version: 1 handlers:

    - url: /.* script: helloworld.php
  56. Iniciando o servidor local $ google_appengine/dev_appserver.py helloworld/ --php_executable_path <php-cgi>

  57. 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
  58. Publicando na web

  59. Cadastrando a app https://cloud.google.com

  60. Cadastrando a app

  61. Cadastrando a app Mesmo nome que está no app.yaml

  62. Realizando o upload $ ./google_appengine/appcfg.py update helloworld

  63. Realizando o upload $ ./google_appengine/appcfg.py update helloworld Exemplo: https://asciinema.org/a/7444

  64. Criando uma aplicação robusta

  65. O projeto

  66. O projeto Catálogo de cervejas

  67. O projeto Catálogo de cervejas Utilizando frameworks PHP

  68. O projeto Catálogo de cervejas Utilizando frameworks PHP Código fonte

    em: https://github.com/hussani/beer-api
  69. Composer { "autoload": { "psr-0": { "BeerApi": "src\/" } },

    "require": { "respect/rest": "dev-master", "respect/config": "dev-master", "respect/relational": "dev-master" } }
  70. Banco de dados

  71. Cloud SQL

  72. Cloud SQL MySQL 5.5

  73. Cloud SQL MySQL 5.5 Auto Replicável

  74. Criando uma instancia https://cloud.google.com Selecione o projeto Cloud SQL PAGO!

  75. 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';
  76. Importando banco de dados https://cloud.google.com Selecione o projeto Cloud Storage

    Crie um bucket Faça upload do banco de dados
  77. Importando banco de dados Cloud SQL Selecione a instância Importar

    gs://<nome do bucket>/arquivo.sql
  78. Conectar no banco de dados PDO dsn = mysql:unix_socket=/cloudsql/ <nome

    da app>:<user>;dbname=<nome do banco> user = <usuario do banco> pass = <senha do banco>
  79. Definindo ambientes if (isset($_SERVER['SERVER_SOFTWARE']) && (substr_count( $_SERVER['SERVER_SOFTWARE'], 'Google App Engine')

    > 0) ) { return 'appengine'; } else { return 'dev'; }
  80. Deploy com Git

  81. Deploy com Git Cloud Console Cloud Development Push-to-Deploy Create new

    repo
  82. Deploy com Git

  83. Criar um repositório

  84. Resgatar a senha

  85. Resgatar a senha Senha no e-mail!

  86. Configurar login Criar 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
  87. Adicionando o remote e enviado arquivos Na pasta contendo o

    arquivo app.yaml executar: $ git remote add appengine <repo-url> $ git push appengine master
  88. Revisão

  89. Revisão Google AppEngine é uma hospedagem PaaS

  90. Revisão Google AppEngine é uma hospedagem PaaS Provê diversos serviços

    de sua infra
  91. Revisão Google AppEngine é uma hospedagem PaaS Provê diversos serviços

    de sua infra Por enquanto é grátis com PHP
  92. Revisão Google AppEngine é uma hospedagem PaaS Provê diversos serviços

    de sua infra Por enquanto é grátis com PHP Possui serviços pagos
  93. 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
  94. 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
  95. Perguntas ?

  96. Referências https://developers.google.com/appengine https://cloud.google.com/ https://github.com/hussani/beer-api

  97. Contato @hussanii slideshare.com/hussan1 github.com/hussani

  98. Obrigado