django: uso de frameworks ágeis para desenvolvimento web

Post on 05-Dec-2014

144 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

top related