![Page 1: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/1.jpg)
Aumentando a produtividade
Uso de frameworks ágeis para desenvolvimento web
Miguel Galves
![Page 2: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/2.jpg)
48 horas entre início e instalação no cliente
Projeto Haiti
Haiti - Minustah
![Page 3: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/3.jpg)
Python
Linguagem script, criada no final dos anos 80 Multiplataforma Multiparadigma (OO, Funcional, Procedural) Sintaxe limpa e concisa Binding para diversas linguagens Extensível em C
![Page 4: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/4.jpg)
Django
Criado em 2003 como projeto interno do Lawrence Journal
Objetivo: permitir a criação de novas funcionalidades em curtos espaços de tempo
Open Source desde 2005
Comunidade Ativa
http://www.djangoproject.com
![Page 5: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/5.jpg)
“THE WEB FRAMEWORK FOR PERFECTIONISTS WITH DEADLINES”
O que realmente interessa no Django...
![Page 6: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/6.jpg)
Porque Django em vez de J2EE para desenvolvimento Web?
SIMPLICIDADE
![Page 7: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/7.jpg)
J2EE
Enterprise JavaBeans Specification (EJB), Java Persistence API (JPA), JavaServer Pages Specification (JSP), Java Servlet Specification, JavaServer Faces (JSF), JavaServer Pages Standard Tag Library (JSTL), JDBC API, Java Naming and Directory Interface
Specification (JNDI), Java Message Service (JMS), Java Transaction API (JTA), Java Transaction Service (JTS), JavaMail API Specification, JavaBeans Activation Framework Specification
(JAF), J2EE Connector Architecture,
Java API for XML Processing (JAXP), Java Authentication and Authorization Service (JAAS),
Version 1.0 Java Authorization Service Provider Contract for
Containers(JACC) Web Services for Java EE Java API for XML-based RPC (JAX-RPC) Java API for XML Registries (JAXR) Java Management Extensions Java Platform, Enterprise Edition Management
Specification Java Platform, Enterprise Edition Deployment Specification Java API for XML-based Web Services (JAX-WS) Java Architecture for XML Binding (JAXB) SOAP with Attachments API for Java (SAAJ) Web Services Metadata for the Java Platform Streaming API for XML (StAX)
![Page 8: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/8.jpg)
J2EE foca em blocos estruturais grandes e complexos, tentando resolver problemas
que talvez não existam!
![Page 9: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/9.jpg)
Django:
DRY (Don't
Repeat
Yourself)
Foco na automação de tarefas Arquivos de configuração em … Python Criação automática de interfaces de Administração ORM Templates Mecanismo de autenticação / perfil de usuários Hot deploy (que realmente funciona) Ambiente de testes integrado Plugins: paginação, sitemaps, email, visualização de
dados, RSS, i18n, l10n, redirecionamento, serialização, cache
![Page 10: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/10.jpg)
Django foca em fornecer ferramentas que impactam diretamente na produtividade de desenvolvimento.
![Page 11: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/11.jpg)
Confiabilidade? Robustez? Escalabilidade?
![Page 12: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/12.jpg)
Python é uma linguagem séria e confiável?
Yahoo! Google CERN NASA Atech
ILM Autodesk Frequentis ESRI
![Page 13: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/13.jpg)
Django é confiável e robusto?
Servidor de aplicações por trás do Google Apps Engine Versão gratuita permite até 5M de pageviews
por mês....
Washington Post 8.5M pageviews por mês
![Page 14: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/14.jpg)
Escalabilidade
O framework sozinho não resolve Projeto hardware e arquitetura de SW
Django oferece ferramentas que ajudam a escrever aplicações escaláveis Cache, suporte a múltiplas bases de dados
Django permite integração de diversas ferramentas externas comprovadas, que podem ser adicionadas conforme a necessidade. Não impacta o dia a dia de desenvolvimento
![Page 15: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/15.jpg)
Exemplo de Setup de Produção
Cache em memória: Memcache
Facebook, Flickr, Twitter, Youtube, LiveJournal, Wikipedia
HTTP: Apache
Market Share: 54% (NetCraft)
Balanceamento de carga
Arquivos estático: Nginx
Utilizado por 4% dos sites mais acessados em 2010.
![Page 16: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/16.jpg)
Linguagens Dinâmicas vs Java
Python (Django)Ruby (Ruby On Rails)
Scala (Lift)Groovy (Grails)
![Page 17: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/17.jpg)
Contras
Performance de execuçãoPython/Ruby: sem tipagem estática
Ferramentas de refactoring menos eficientes Leitura de código as vezes mais complicada
Mão de obra menos abundanteEnvolvem paradigmas e conceitos
avançados
![Page 18: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/18.jpg)
Prós
Mais concisas, mais expressivas Mesmas funcionalidades, menos código Menos código => maior facilidade de
manutenção Menos código => maior produtividade (5x)
Mais poderosas Introspecção Metaprogramação
![Page 19: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/19.jpg)
Prós – Produtividade
Ciclo padrão de desenvolvimento Java
Ciclo padrão de desenvolvimento linguagens dinâmicas
![Page 20: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/20.jpg)
Integrando o melhor dos mundos
Plataforma Java Máquina virtual extremamente eficiente JIT API Extensa
Oracle/Sun abriu as portas para linguagens de script para JVM
![Page 21: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/21.jpg)
Integrando o melhor dos mundos
Jython, JRuby Interpretadores que rodam na JVM,
permitindo acesso direto à APIs Java
Scala, Groovy Linguagens desenvolvidas para serem
executadas na JVM
![Page 22: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/22.jpg)
Conclusão?
Cada tarefa requer ferramentas apropriadas.
Estamos refletindo sobre isso quando desenvolvemos nossos projetos?
![Page 23: Django: Uso de frameworks ágeis para desenvolvimento web](https://reader033.vdocuments.site/reader033/viewer/2022061207/5484fd3cb47959dd0c8b4d93/html5/thumbnails/23.jpg)
Dúvidas? Sugestões? Críticas?
Obrigado