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:
- Curta a fan page;
- Divulgue o livro entre seus amigos;
- Envie sua opinião após a leitura, permitindo sua divulgação;
- 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:
- Ambiente de Desenvolvimento: como montar o ambiente local de desenvolvimento;
- Webapp2: apresentação do framework web Webapp2;
- Tekton: apresentação do framework web Tekton;
- Frontend: linguagem de template e arquivos estáticos;
- Usuários e Segurança: Login de usuários, segurança e controle de permissões;
- Banco de Dados: persistência de dados utilizando o Big Table;
- Arquitetura de Apps: arquitetura para camada de negócios com GaeBusiness;
- AJAX com AngularJS: chamadas AJAX com uso do framework AngularJS;
- Agendamento, Fila de Tarefas e Email: fila e agendamentos de tarefas para processamento e envio email;
- Serviços Remotos: acesso a serviços de outros sites (web services);
- Upload e Download: upload e download de arquivos;
- 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!