Ruby on Rails: um estudo de viabilidade em ambientes empresariais

44
Ruby on Rails: Um estudo de viabilidade em ambientes empresariais Trabalho de Conclusão de Curso Aluno: Rodrigo de Jesus Recio Professor Orientador: Rodrigo Assira@ Dias Fundação Armando Alvares Penteado FAAP Faculdade de Computação e Informá@ca

description

Apresentação de pesquisa onde é feita uma revisão bibliográfica sobre a linguagem de programação Ruby e o arcabouço Ruby on Rails, os quais são utilizados para o desenvolvimento ágil de aplicações para plataforma web. Nesta são analisados diversos requisitos necessários para o desenvolvimento de aplicações eficientes e de forma produtiva.

Transcript of Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Page 1: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ruby  on  Rails:  Um  estudo  de  viabilidade  em  ambientes  empresariais  

Trabalho  de  Conclusão  de  Curso  

Aluno:  Rodrigo  de  Jesus  Recio  Professor  Orientador:  Rodrigo  Assira@  Dias  

Fundação  Armando  Alvares  Penteado  -­‐  FAAP  Faculdade  de  Computação  e  Informá@ca  

Page 2: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Problema  

•  O  arcabouço  Ruby  on  Rails  é  maduro  para  a  u@lização  no  desenvolvimento  de  aplicações  corpora@vas?  

•  Quais  suas  vantagens  em  comparação  a  seus  concorrentes?  

Page 3: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Obje@vo  

•  Ajudar  na  escolha  de  um  arcabouço  para  desenvolvimento  de  aplicações  web  

•  Comparar  a  linguagem  e  o  arcabouço  com  seus  principais  concorrentes  no  mercado  

•  Analisar  aspectos  como  produ@vidade,  confiabilidade  e  desempenho      

Page 4: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Agenda  

•  A  linguagem  Ruby  

•  O  arcabouço  Ruby  on  Rails  – Arquitetura  – Convenções  

Page 5: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

A  Linguagem  Ruby  

•  Uma  linguagem  de  programação  interpretada  

•  Idealizada  em  1993  por  Yukihiro  Matsumoto  

•  Baseada  no  Python  e  Perl  •  Suporta  múl@plos  paradigmas  de  programação:  funcional,  orientado  a  objetos,  impera@vo  e  reflexivo  

•  Possui  sistema  de  @pos  dinâmico  

Page 6: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ruby  on  Rails  

•  Arcabouço  que  permite  desenvolver  aplicações  web  apoiadas  por  banco  de  dados  

•  Suporta  proto@pação  de  componentes  através  de  geradores  de  código  

•  Favorece  convenção  no  lugar  de  configuração  

Page 7: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ruby  on  Rails  

•  Possui  mecanismo  de  persistência  e  mapeamento  objeto-­‐relacional  

•  Possui  sistema  de  gerenciamento  de  versões  de  bancos  de  dados  

•  É  baseado  na  arquitetura  Modelo-­‐Visão-­‐Controlador  (MVC)  

Page 8: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Componentes  

•  Ac@ve  Record  (Modelo)  

•  Ac@on  Pack  – Ac@on  Controller  (Controlador)  – Ac@on  View  (Visão)  

•  Ac@on  Mailer  

•  Ac@ve  Support  (estende  bibliotecas  da  linguagem  Ruby)  

Page 9: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Arquitetura  MVC  

Rails  e  MVC  

Page 10: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Convenções  Nomeação  de  Modelo  

Tabela   produtos  

Arquivo   app/models/produto.rb  

Classe   Produto  

Nomeação  de  Controlador  

URL   hfp://endereco.com/loja/listar  

Arquivo   app/controllers/loja_controller.rb  

Classe   LojaController  

Método  (ação)   listar  

Nomeação  de  Visão  

URL   hfp://endereco.com/loja/listar  

Arquivo   app/views/loja/listar.html.erb  

Page 11: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Agenda  

•  Ac@ve  Record  •  Ac@on  Pack  •  Migra@ons  

•  Segurança  

Page 12: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ac@ve  Record  

•  Componente  usado  na  camada  de  Modelo  (MVC)  

•  Mecanismo  de  persistência  e  mapeamento  objeto-­‐relacional  

•  Alterna@va  ao  modelo  de  programação  centrada  de  banco  de  dados  

Page 13: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Exemplo  de  programação  centrada  de  BD  

Page 14: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Exemplo  de  classe  modelo  referente  a  tabela  com  as  colunas  nome  e  id  

Exemplo  de  u@lização  

Page 15: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ac@on  Pack  

•  Gerencia  recepção  de  solicitações  (ação  a  ser  executada)  do  navegador  e  a  resposta  (página  a  ser  visualizada)  correspondente  

•  Componente  usado  nas  camadas  Controlador  e  Visão  

•  Controlador  é  implementado  através  de  subclasse  de  Ac#onController::Base  

•  Visão  implementada  através  de  Embedded  Ruby  (ERB)  

Page 16: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Exemplo:  Controlador  e  Visão  

URL:  hfp://exemplo.com/blog/index  

Page 17: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Migra@ons  

•  Mecanismo  de  versão  de  banco  de  dados  •  Uma  subclasse  de  Ac#veRecord::Migra#on  define  como  fazer  e  desfazer  alterações  em  um  schema  de  banco  de  dados  

•  Cada  versão  do  banco  tem  um  migra@on  correspondente  

•  É  possível  alternar  entre  versões  de  banco  usando  o  comando  rake  db:migrate  VERSION=XXXX    

Page 18: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Segurança  

Possíveis  Vulnerabilidades  e  Melhores  Prá@cas  

Page 19: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Segurança:  Sessão  

•  Chave  de  sessão  é  armazenada  em  um  cookie  no  navegador  

•  Cifrada  usando  HMAC  a  par@r  de  uma  chave  secreta  e  os  dados  armazenados  na  sessão  

•  Recomendado  chave  secreta  grande,  Rails  u@liza  30  caracteres  

Page 20: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Segurança:  Sessão  

•  Não  é  indicado  armazenar  dados  importantes  na  sessão  

•  É  indicado  u@lizar  a  chave  da  sessão  do  usuário  para  iden@ficação  e  armazenar  os  dados  no  lado  do  servidor  

•  É  recomendado  reiniciar  sessão  após  usuário  efetuar  logout  

Page 21: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Possível  vulnerabilidade:    Cross-­‐Site  Scrip@ng  (XSS)  

•  Inserção  de  código  HTML  ou  JavaScript  por  usuários  maliciosos  em  páginas  vistas  por  outros  usuários  

Page 22: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

XSS  -­‐  Prevenção  

•  No  caso  onde  o  usuário  não  pode  inserir  nenhum  código  HTML,  usar  o  método  “h(string)”  para  filtrar  cada  entrada  do  usuário  e  remover  código  HTML  

Page 23: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

XSS  -­‐  Prevenção  

•  No  caso  onde  HTML  é  permi@do  como  entrada,  mas  não  JavaScript,  u@lizar  o  método  “sani@ze(string)”:  

•  Filtra  códigos  maliciosos  em  unicode,  ascii  e  hexadecimal  

Page 24: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Agenda  -­‐  Desenvolvimento  

•  Ruby  versus  Outras  Linguagens  •  Ac@ve  Record  versus  Hibernate  •  Ac@on  Pack  versus  JavaServer  Faces  •  Conclusão  

Page 25: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ruby  vs  outras  linguagens  

Page 26: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ruby  versus    Outras  Linguagens  

•  Baseado  no  estudo  An  Empirical  Comparison  of  C,  C++,  Java,  Perl,  Python,  Rexx  and  Tcl  de  Lutz  Prechelt  que  dividiu  as  linguagens  nos  grupos  script  e  não  script  e  o  ar@go  C++,  Java,  Python  versus  Ruby  de  David  Howard  

Page 27: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Resultado  

•  Linguagens  interpretadas  tendem  a  ter  um  ciclo  de  desenvolvimento  mais  rápido  

•  Java  é  bem  mais  rápido  que  Ruby  

•  Sistema  de  @pos  dinâmico  de  Ruby  proporciona  maior  produ@vidade  porém  aumenta  o  risco  de  ocorrer  uma  exceção  em  tempo  de  execução  

Page 28: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Resultados  

•  O  sistema  de  @pos  está@co  de  Java  proporciona  um  código  mais  confiável  porém  diminui  a  produ@vidade  

•  Ruby  tem  um  consumo  de  memória  bem  menor  que  Java  

Page 29: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ac@ve  Record    versus  

Hibernate  

Page 30: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ac@ve  Record  vs.  Hibernate  

•  Gerador  de  código  do  Rails  permite  proto@pação  do  modelo  e  de  um  Migra#on  referente  a  este  modelo  

Page 31: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Modelo  e  migra@on  gerados  

Page 32: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Modelo  equivalente  em  Java  •  Devem  ser  implementados  manualmente  a  classe  

Modelo  e  arquivo  XML  de  mapeamento  com  o  banco  

Page 33: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Mapeamento  XML  do  Hibernate  

Page 34: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Armazenando  dados  

Ac8ve  Record   Hibernate  

Page 35: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Resultado  

Vantagens  

•  O  gerador  de  código  do  Rails  permite  um  desenvolvimento  mais  veloz  

•  Não  é  necessário  escrever  códigos  que  representam  os  atributos  na  classe  Modelo  

Desvantagens  

•  Não  ter  uma  representação  do  modelo  relacional  na  classe  Modelo  pode  tornar-­‐se  uma  dificuldade  em  projetos  mais  complexos,  onde  existam  algumas  centenas  de  tabelas  e  colunas  no  banco  de  dados  

Page 36: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ac@on  Pack  versus  

JavaServer  Faces  

Page 37: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

JavaServer  Faces  (Controlador)  

•  Ações  e  condições  de  acionamento  devem  ser  especificadas  manualmente  no  arquivo  faces-­‐config.xml:    

Page 38: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ac@on  Pack:  Ac@on  Controller  (Controlador)  

•  Ações  são  definidas  no  arquivo  config/routes.rb  de  forma  mais  abrangente  (convenção  no  lugar  de  configuração):  

Page 39: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ac@on  Pack:  Ac@on  View  (Visão)  

•  Camada  de  visão  implementada  em  Embedded  Ruby  (ERB),  exemplo:  

Page 40: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

JavaServer  Faces  

•  U@liza  elementos  de  marcação  está@ca  similar  ao  HTML:  

Page 41: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Resultado  Vantagens  

•  Configuração  das  ações  do  Rails  pode  ser  feita  de  forma  mais  fácil  e  flexível  

Desvantagens  

•  Não  possui  uma  sintaxe  de  marcação  está@ca  similar  ao  HTML  

Page 42: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Conclusão  

•  Ruby  acelera  o  desenvolvimento  e  aumenta  a  produ@vidade  

•  Ac@ve  Record  é  mais  produ@vo  em  projetos  simples  mas  pode  tornar-­‐se  mais  trabalhoso  em  projetos  mais  complexos  

•  O  Rails  permite  gerenciar  de  forma  controlada  as  alterações  de  banco  de  dados  proporcionando  mais  organização  e  flexibilidade  ao  desenvolvimento  

Page 43: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Conclusão  

•  JavaServer  Faces  possui  uma  sintaxe  mais  clara  e  fácil  de  manter  na  camada  de  Visão  do  que  o  Rails  que  mescla  código  Ruby  com  HTML  

•  O  Rails  não  é  a  prova  de  falhas,  porém  é  possível  prevenir  contra  possíveis  vulnerabilidades  de  segurança  

Page 44: Ruby on Rails: um estudo de viabilidade em ambientes empresariais

Ruby  on  Rails:  Um  estudo  de  viabilidade  em  ambientes  empresariais  

Trabalho  de  Conclusão  de  Curso  

Aluno:  Rodrigo  de  Jesus  Recio  Professor  Orientador:  Rodrigo  Assira@  Dias  

Fundação  Armando  Alvares  Penteado  -­‐  FAAP  Faculdade  de  Computação  e  Informá@ca