SlideShare uma empresa Scribd logo
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

Mais conteúdo relacionado

PPS
Web Tools Pt B R
PDF
Integração contínua com Jenkins
PPTX
Introdução ao desenvolvimento de aplicações web
PDF
Gerenciando o Zabbix com o SaltStack
PDF
Jenkins
PDF
Zabbix, Grafana e os conteineres Docker
PDF
Desenvolvimento web com groovy e grails.
PDF
Jenkins - livre-se da parte chata do Java
Web Tools Pt B R
Integração contínua com Jenkins
Introdução ao desenvolvimento de aplicações web
Gerenciando o Zabbix com o SaltStack
Jenkins
Zabbix, Grafana e os conteineres Docker
Desenvolvimento web com groovy e grails.
Jenkins - livre-se da parte chata do Java

Mais procurados (20)

PPTX
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
PDF
RubyConf 17 - Colocando sua aplicação vue nos trilhos
PDF
Introdução ao LiveOak
PPTX
Behavior-Driven Development (BDD) - DevOps Summit 2016
PDF
JavaFX: A nova biblioteca gráfica da plataforma Java
PPTX
Testes de interfaces Web com Selenium
PDF
Usando Git na Unity - Gaming For All 2021
ODP
Desenvolvimento web simples com Python e DJango
PPTX
Mocking Test - ThinkUp! - Abril/2017
PDF
Conectando jBPM com o mundo - TDC 2014 SP
PDF
Comparando as Hypes - React & Vue
PDF
Blazor #SnetTalks3
PPT
Pyjamas: Uma Ferramenta Pythônica para Web
PPTX
Dev ops integração contínua com jenkins
PPTX
Behavior-Driven Development (BDD) - Abril/2017
PDF
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
PDF
Integração Continua - Jenkins
PPTX
Chega de lendas! JavaFX em Android
PDF
Integração contínua em PHP com Jenkins
PPSX
Bugs, DVCS e tools
Novidades do Visual Studio 2017 - .NET São Paulo - Maio/2017
RubyConf 17 - Colocando sua aplicação vue nos trilhos
Introdução ao LiveOak
Behavior-Driven Development (BDD) - DevOps Summit 2016
JavaFX: A nova biblioteca gráfica da plataforma Java
Testes de interfaces Web com Selenium
Usando Git na Unity - Gaming For All 2021
Desenvolvimento web simples com Python e DJango
Mocking Test - ThinkUp! - Abril/2017
Conectando jBPM com o mundo - TDC 2014 SP
Comparando as Hypes - React & Vue
Blazor #SnetTalks3
Pyjamas: Uma Ferramenta Pythônica para Web
Dev ops integração contínua com jenkins
Behavior-Driven Development (BDD) - Abril/2017
Java 9 – Produtividade, Performance e Competitividade, mais do que uma nova v...
Integração Continua - Jenkins
Chega de lendas! JavaFX em Android
Integração contínua em PHP com Jenkins
Bugs, DVCS e tools
Anúncio

Destaque (20)

PDF
Django: desenvolvendo aplicações web de maneira simples e rápida!
PDF
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
PPT
Mini-curso RoR - Apresentação
ODP
Introducao ao Ruby On Rails
PDF
Esta começando a programar para a web? Então começe com Rails
PDF
Caelum ruby-on-rails-rr71
ODP
Introdução ao Desenvolvimento WEB com Ruby on Rails
PPTX
Segurança em Rails
PDF
SEA Rails na pratica
PDF
Palestra Ruby on Rails SETA 2008/01
PPT
Mini-curso RoR - Aula 01
PDF
Introdução ao Ruby On Rails
KEY
Desenvolvimento Ágil com Rails GURUSC 2011
PDF
Apresentação ruby + rails 2014
PDF
Rails na pratica
PPSX
Conhecendo o Django
PDF
Desenvolvimento ágil de software com Ruby on Rails
PDF
Introdução a Linguagem de Programação Ruby
PPTX
Curso de Ruby on Rails
PDF
Ruby Beyond Rails
Django: desenvolvendo aplicações web de maneira simples e rápida!
[PDF] Repensando o Desenvolvimento Web com Ruby on Rails
Mini-curso RoR - Apresentação
Introducao ao Ruby On Rails
Esta começando a programar para a web? Então começe com Rails
Caelum ruby-on-rails-rr71
Introdução ao Desenvolvimento WEB com Ruby on Rails
Segurança em Rails
SEA Rails na pratica
Palestra Ruby on Rails SETA 2008/01
Mini-curso RoR - Aula 01
Introdução ao Ruby On Rails
Desenvolvimento Ágil com Rails GURUSC 2011
Apresentação ruby + rails 2014
Rails na pratica
Conhecendo o Django
Desenvolvimento ágil de software com Ruby on Rails
Introdução a Linguagem de Programação Ruby
Curso de Ruby on Rails
Ruby Beyond Rails
Anúncio

Semelhante a Django: Uso de frameworks ágeis para desenvolvimento web (20)

PDF
Desenvolvimento Ágil de Aplicações Web com Python e Django
PDF
Com vocês, Django!
PDF
ODP
Django - Lightning Talk - We Web Conf
PPT
F R A M E W O R K D J A N G O
ZIP
Python e Django na Globo.com
PDF
Desenvolvimento web com python e django
PDF
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
PDF
Desenvolvimento Web com Django
PDF
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
PDF
Web open source
KEY
Django - Desenvolvimento web ágil com Python
PDF
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
PDF
Python mudando o modo de desenvolver para a internet
PDF
Desenvolvimento web produtivo
PDF
Tutorial Django + Python
PDF
Frameworks de Desenvolvimento Web com PHP
PDF
Desenvolvimento web com software livre
Desenvolvimento Ágil de Aplicações Web com Python e Django
Com vocês, Django!
Django - Lightning Talk - We Web Conf
F R A M E W O R K D J A N G O
Python e Django na Globo.com
Desenvolvimento web com python e django
Django Módulo Básico Parte I - Desenvolvimento de uma aplicação Web
Desenvolvimento Web com Django
Frameworks Opensource: ferramentas para desenvolvimento rápido de aplicações Web
Web open source
Django - Desenvolvimento web ágil com Python
Python mudando o modo de desenvolver para a web - Marcos Daniel Petry
Python mudando o modo de desenvolver para a internet
Desenvolvimento web produtivo
Tutorial Django + Python
Frameworks de Desenvolvimento Web com PHP
Desenvolvimento web com software livre

Mais de Miguel Galves (9)

PDF
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
PDF
Redis para iniciantes - TDC 2014
PPT
New Strategy to detect SNPs
PPT
Comparison of Genomic DNA to cDNA Alignment Methods
PPT
Qualificação de Mestrado
PDF
Uma abordagem computacional para a determinação de polimorfismos de base única
PPT
GIS em 3 horas
PDF
PPTX
Data Mining em redes sociais
Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014
Redis para iniciantes - TDC 2014
New Strategy to detect SNPs
Comparison of Genomic DNA to cDNA Alignment Methods
Qualificação de Mestrado
Uma abordagem computacional para a determinação de polimorfismos de base única
GIS em 3 horas
Data Mining em redes sociais

Último (7)

PDF
apresentacao introducao computacao ead.pdf
PDF
Dos requisitos ao código: como criar código rastreável em PHP
PPTX
Mapeamento de Objeto para Tabela Relacional
PPTX
Curso de Windows 11 resumido na prática.pptx
DOC
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
PDF
Evolução em código: algoritmos genéticos com PHP
DOC
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO
apresentacao introducao computacao ead.pdf
Dos requisitos ao código: como criar código rastreável em PHP
Mapeamento de Objeto para Tabela Relacional
Curso de Windows 11 resumido na prática.pptx
COMO AUTOMATIZR JOGOS SUPER NINTENDO ATRAVES DA PROGRAMAÇÃO
Evolução em código: algoritmos genéticos com PHP
CODIGO PARA AUTOMATIZAR A JOGABILIDADE SUPER MARIO

Django: Uso de frameworks ágeis para desenvolvimento web

  • 1. Aumentando a produtividade Uso de frameworks ágeis para desenvolvimento web Miguel Galves
  • 2. 48 horas entre iní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 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
  • 5. “THE WEB FRAMEWORK FOR PERFECTIONISTS WITH DEADLINES” O que realmente interessa no Django...
  • 6. Porque Django em vez 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 em blocos estruturais grandes e complexos, tentando resolver problemas que talvez não existam!
  • 9. 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
  • 10. Django foca em fornecer ferramentas que impactam diretamente na produtividade de desenvolvimento.
  • 12. Python é uma linguagem séria e confiável?  Yahoo!  Google  CERN  NASA  Atech  ILM  Autodesk  Frequentis  ESRI
  • 13. 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
  • 14. 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
  • 15. 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.
  • 16. Linguagens Dinâmicas vs Java 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 Ciclo padrão de desenvolvimento Java Ciclo padrão de desenvolvimento linguagens dinâmicas
  • 20. 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
  • 21. 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
  • 22. Conclusão? Cada tarefa requer ferramentas apropriadas. Estamos refletindo sobre isso quando desenvolvemos nossos projetos?

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