django: uso de frameworks ágeis para desenvolvimento web

23
Aumentando a produtividade Uso de frameworks ágeis para desenvolvimento web Miguel Galves

Upload: miguel-galves

Post on 05-Dec-2014

144 views

Category:

Software


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Django: Uso de frameworks ágeis para desenvolvimento web

Aumentando a produtividade

Uso de frameworks ágeis para desenvolvimento web

Miguel Galves

Page 2: Django: Uso de frameworks ágeis para desenvolvimento web

48 horas entre início e instalação no cliente

Projeto Haiti

Haiti - Minustah

Page 3: Django: Uso de frameworks ágeis para desenvolvimento web

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

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

“THE WEB FRAMEWORK FOR PERFECTIONISTS WITH DEADLINES”

O que realmente interessa no Django...

Page 6: Django: Uso de frameworks ágeis para desenvolvimento web

Porque Django em vez de J2EE para desenvolvimento Web?

SIMPLICIDADE

Page 7: Django: Uso de frameworks ágeis para desenvolvimento web

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

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

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

Django foca em fornecer ferramentas que impactam diretamente na produtividade de desenvolvimento.

Page 11: Django: Uso de frameworks ágeis para desenvolvimento web

Confiabilidade? Robustez? Escalabilidade?

Page 12: Django: Uso de frameworks ágeis para desenvolvimento web

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

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

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

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

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

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

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

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

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

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

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

Dúvidas? Sugestões? Críticas?

Obrigado