Django: Uso de frameworks ágeis para desenvolvimento web
-
Upload
miguel-galves -
Category
Software
-
view
144 -
download
1
description
Transcript of Django: Uso de frameworks ágeis para desenvolvimento web
Aumentando a produtividade
Uso de frameworks ágeis para desenvolvimento web
Miguel Galves
48 horas entre início e instalação no cliente
Projeto Haiti
Haiti - Minustah
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
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
“THE WEB FRAMEWORK FOR PERFECTIONISTS WITH DEADLINES”
O que realmente interessa no Django...
Porque Django em vez de J2EE para desenvolvimento Web?
SIMPLICIDADE
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)
J2EE foca em blocos estruturais grandes e complexos, tentando resolver problemas
que talvez não existam!
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
Django foca em fornecer ferramentas que impactam diretamente na produtividade de desenvolvimento.
Confiabilidade? Robustez? Escalabilidade?
Python é uma linguagem séria e confiável?
Yahoo! Google CERN NASA Atech
ILM Autodesk Frequentis ESRI
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
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
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.
Linguagens Dinâmicas vs Java
Python (Django)Ruby (Ruby On Rails)
Scala (Lift)Groovy (Grails)
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
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
Prós – Produtividade
Ciclo padrão de desenvolvimento Java
Ciclo padrão de desenvolvimento linguagens dinâmicas
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
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
Conclusão?
Cada tarefa requer ferramentas apropriadas.
Estamos refletindo sobre isso quando desenvolvemos nossos projetos?
Dúvidas? Sugestões? Críticas?
Obrigado