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ção
Python/Ruby: sem tipagem estática
 Ferramentas de refactoring menos eficientes
 Leitura de código as vezes mais complicada
Mão de obra menos abundante
Envolvem 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

Django: Uso de frameworks ágeis para desenvolvimento web

  • 1.
    Aumentando a produtividade Usode frameworks ágeis para desenvolvimento web Miguel Galves
  • 2.
    48 horas entreinício e instalação no cliente Projeto Haiti Haiti - Minustah
  • 3.
    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
  • 4.
    Django  Criado em2003 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
  • 5.
    “THE WEB FRAMEWORKFOR PERFECTIONISTS WITH DEADLINES” O que realmente interessa no Django...
  • 6.
    Porque Django emvez de J2EE para desenvolvimento Web? SIMPLICIDADE
  • 7.
    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)
  • 8.
    J2EE foca emblocos estruturais grandes e complexos, tentando resolver problemas que talvez não existam!
  • 9.
    Django: DRY (Don'tRepeat 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
  • 10.
    Django foca emfornecer ferramentas que impactam diretamente na produtividade de desenvolvimento.
  • 11.
  • 12.
    Python é umalinguagem séria e confiável?  Yahoo!  Google  CERN  NASA  Atech  ILM  Autodesk  Frequentis  ESRI
  • 13.
    Django é confiávele 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
  • 14.
    Escalabilidade  O frameworksozinho 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
  • 15.
    Exemplo de Setupde 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.
  • 16.
    Linguagens Dinâmicas vsJava Python (Django) Ruby (Ruby On Rails) Scala (Lift) Groovy (Grails)
  • 17.
    Contras Performance de execução Python/Ruby:sem tipagem estática  Ferramentas de refactoring menos eficientes  Leitura de código as vezes mais complicada Mão de obra menos abundante Envolvem paradigmas e conceitos avançados
  • 18.
    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
  • 19.
    Prós – Produtividade Ciclopadrão de desenvolvimento Java Ciclo padrão de desenvolvimento linguagens dinâmicas
  • 20.
    Integrando o melhordos mundos  Plataforma Java  Máquina virtual extremamente eficiente  JIT  API Extensa  Oracle/Sun abriu as portas para linguagens de script para JVM
  • 21.
    Integrando o melhordos mundos Jython, JRuby  Interpretadores que rodam na JVM, permitindo acesso direto à APIs Java Scala, Groovy  Linguagens desenvolvidas para serem executadas na JVM
  • 22.
    Conclusão? Cada tarefa requerferramentas apropriadas. Estamos refletindo sobre isso quando desenvolvemos nossos projetos?
  • 23.

Notas do Editor

  • #4 Falar da minha experiencia com Python
  • #5 Falar da minha experiencia com Django
  • #13 Google usa Python como uma das suas linguagens internas de programação Esri: ArgGIS usa como linguagem de script NASA WAS (Workflow Automation System) Gestao de fluxo de informacoes para desenvolvimento de missoes do Onibus espacial Frequentis Tower and Airport Tools = Controle de luzes de pista e condicoes meteorologicas ILM usa Python para controlar o workflow de processamento gráfico e como linguagem de script