Prefácio

“A educação é a arma mais poderosa que você pode usar para mudar o mundo.”
- Nelson Mandela


Relação de Confiança

Durante minha vida passei por algumas situações e precisei de ajuda. E por isso fui salvo pela educação. Se você não pode pagar, envie um email para renzo.n@gmail.com para poder adquirir o livro gratuitamente de forma legal.

Em contrapartida peço o seguinte, na base da confiança:

  1. Curta a fan page;
  2. Divulgue o livro entre seus amigos;
  3. Envie sua opinião após a leitura, permitindo sua divulgação;
  4. Compre uma cópia quando estiver em condições.

Por que Google App Engine (GAE)?

No início de 2010 topei o desafio de desenvolver um site destinado ao tráfego de fotos. Eu já desenvolvia software, mas não tinha conhecimento profundo sobre todo o processo. Em particular, não conhecia nada sobre servidores e linux.

Então comecei a procurar um host. Montei meu ambiente de desenvolvimento. Contudo, achava que a estrutura escolhida não suportaria o volume esperado de fotos. Era época da explosão dos sites de compras coletivas e meus clientes pretendiam fazer promoções neles.

Foi então que num almoço meu amigo Reginaldo me apresentou a solução: Google App Engine (GAE). Para me convencer, fez um “Hello World” em 5 minutos, incluindo o deploy. Aliado à simplicidade, vinha a promessa de que o site escalaria automaticamente.

Depois de 3 meses de desenvolvimento em minhas horas livres, estava pronto o Revelação Virtual, precursor do Pic Pro. Após 2 meses de testes, veio a prova de fogo: foi executada uma promoção no Groupon. A promessa foi cumprida e o GAE aguentou todos picos de transferência de arquivos. Até hoje o sistema é utilizado e já trafegou mais de 2 milhões de fotos.

Mas nem tudo foi fácil. Apesar da simplicidade, a plataforma exigiu de mim uma mudança de paradigma. E como toda mudança, levou certo tempo para me acostumar.

Mas apesar das diferenças, as vantagens se mostraram maiores que os problemas. E é isso que mostrarei. Abordarei não só conceitos e exemplos simples, mas apresentarei soluções para problemas reais e recorrentes no mundo das aplicações web.

Por que Python?

À época do projeto supracitado eu era fluente apenas em Java. Por conta disso, iniciei o projeto nessa linguagem. Contudo o GAE era muito diferente do que estava acostumado. Não permitia o uso de vários frameworks consagrados, como o Hibernate.

Resolvi então testar a linguagem Python, a primeira suportada pela plataforma. Mais do que resolver o problema de desenvolvimento, me apaixonei pela linguagem e por sua comunidade. Ela me permitiu ser mais expressivo, exigindo a escrita de muito menos código. Portei o Pic Pro para Python em 1 semana. A quantidade de código diminuiu 65%.

Desde então trabalho sempre com Python, tanto para desenvolvimento de aplicações comerciais como para ensinar. Ela é excelente para iniciantes que desejam aprender programação de uma maneira prática, simples e expressiva.

Público

Este livro foi escrito para quem deseja aprender a fazer uma aplicação completa para internet. Mais do que isso, ele é ideal para quem quer transformar uma ideia em um produto web rapidamente, sem ter que aprender a complexa arte de escalar servidores.

A documentação do GAE é excelente, objetiva e centralizada. Contudo, muitas vezes apresenta ferramentas superficialmente. Sendo assim, esse livro é uma excelente fonte para você ir além do básico, desenvolvendo soluções profissionais e robustas.

Conhecimento Prévio

É recomendável o conhecimento básico sobre protocolo HTTP, HTML, Javascript e CSS. Se você não possui algum deles, pesquise cada assunto somente quando necessário para entender os exemplos.

Código Fonte e Vídeo Aulas

Todo código fonte contido no livro é livre e pode ser encontrado em https://github.com/renzon/appengineepython. Além disso vídeos aulas gratuitas podem ser encontradas em https://www.youtube.com/playlist?list=PLA05yVJtRWYRGIeBxag8uT-3ftcMVT5oF

Organização do Conteúdo

O conteúdo está organizado nos seguintes capítulos:

  1. Ambiente de Desenvolvimento: como montar o ambiente local de desenvolvimento;
  2. Webapp2: apresentação do framework web Webapp2;
  3. Tekton: apresentação do framework web Tekton;
  4. Frontend: linguagem de template e arquivos estáticos;
  5. Usuários e Segurança: Login de usuários, segurança e controle de permissões;
  6. Banco de Dados: persistência de dados utilizando o Big Table;
  7. Arquitetura de Apps: arquitetura para camada de negócios com GaeBusiness;
  8. AJAX com AngularJS: chamadas AJAX com uso do framework AngularJS;
  9. Agendamento, Fila de Tarefas e Email: fila e agendamentos de tarefas para processamento e envio email;
  10. Serviços Remotos: acesso a serviços de outros sites (web services);
  11. Upload e Download: upload e download de arquivos;
  12. Testes Automatizados: como testar automaticamente uma aplicação.

Todos capítulos contém questões e respectivas respostas em seu final para fixação do conhecimento.

O material aqui produzido é resultado de muito estudo, prática e dedicação. Divirta-se!