SlideShare uma empresa Scribd logo
O que move a web atualmente?
Fábio Leandro Janiszevski
Fabio Leandro?
● ~3 anos de desenvolvimento WEB na empresa “Ponto Gestor”;
● ~6 anos de experiência com servidores de alta disponibilidade;
● ~15 anos com experiência em Linux;
● Mantenedor do projeto OpenSource “SmartRouter PROJECT”;
● “fabiosammy”. Google it!
● Professor na UTFPR - Campus Guarapuava desde maio/2015;
O que veremos hoje?
● Padrões de projeto;
● Plataformas de desenvolvimento;
● Serviços X Servidores;
● CRUD;
● Frameworks;
● Exemplo prático;
● Monitoramento;
Desenvolvimento WEB
● Aprender conceitos “cliente-servidor”;
● Cuidar com a concorrência;
● Desenvolvimento Ágil! (The Agile Moviment);
● Muitas tecnologias, e muita evolução!
● Tecnologia específica, espere por problemas!
Padrões de Projeto
Plataforma é importante?
“Tudo o que faço no windows, faço no linux!” (vice-versa)
POSIX!
Plataforma é importante?
● Windows NÃO É POSIX! (Apesar de que o INTERIX é 100% compatível);
● Unix-Like SÃO POSIX;
● A maioria dos padrões da RFC, baseiam-se no POSIX (Quando se aplica);
● Escolha a plataforma para o seu caso; (Evite querer desenvolver .NET em
ambientes Linux, ou Ruby em ambientes Windows!)
CRUD
● Criar, Ler, Alterar e destruir;
● Navegadores interpretam(segundo a RFC do HTTP 1.1) GET e POST;
● Criar = POST;
● Ler = GET;
● Alterar = PATCH ou PUT;
● Destruir = DELETE;
● Formulários, formulários, formulários…
Serviços e Servidores
● Para o crud anterior, devemos criar um serviço que siga o padrão Rest para uma
coleção de “alunos”:
○ Criar um novo aluno? POST /alunos
○ Deletar um aluno? DELETE /alunos/1
○ Editar um aluno? PUT /alunos/1
○ Visualizar um aluno? GET /alunos/1
○ Visualizar TODOS os alunos? GET /alunos
○ Visualizar formulários de adicionar ou editar um aluno? GET /alunos/new | GET /alunos/1/edit
Serviços e Servidores
● Agora falamos em como devemos interpretar essas rotas(notem que em nenhum
momento foi apresentada a extensão dos arquivos);
● Um servidor de aplicações web vai ser o responsável por interpretar cada verbo
HTTP, e encaminhar a aplicação ou arquivo responsável;
● Apache e Nginx são os mais difundidos e discutidos para a maioria das aplicações
web, cada um com suas respectivas arquiteturas e aplicações;
Conclusões
● “Alunos” NÃO! Students!
● Além do Rest, podemos citar o SOAP;
● Muitas regras para cada caso;
● Serviço é como o meu cliente vai acessar o sistema, servidor é como eu vou
entregar o sistema;
Frameworks
● Facilitam o progresso de desenvolvimento, gerando produtividade;
● Deixe de pensar em como fazer, mas sim em vamos fazer;
● Pensem em um conjunto de classes que tem por objetivo trazer uma
funcionalidade genérica;
● - “Minha aplicação vai ter conexão ao banco de dados! Como vou conectar ao
banco? E se eu precisar mudar o banco de dados (mysql -> postgres)?”
Então eu devo criar esse
“framework”?
NÃO!
Mas… Como vou confiar em
algo que eu não desenvolvi?
Então porque esta utilizando
uma linguagem “de outros”?!
Dificilmente uma empresa local terá
capital intelectual, tempo e mão-de-obra o
suficiente para competir com uma
comunidade mundial.
People think that because something is
"technically superior" everybody else
should blindly adopt. But this is not how
the market works.
Exemplos de frameworks
● Para CSS: Bootstrap(Twitter), Foundation, Semantic UI…
● Para Java(WEB): Play(Scala), Click, Wicket, JSF(Oracle), Struts…
● Para JavaScript: React(Facebook), AngulaJS(Google), EmberJS…
● Para PHP: Zend, Laravel, Synfony…
● Para Ruby: Rails, Cuba, Sinatra, Hanami, Padrino …
Vamos a uma prática rápida
com o rails.
rails new myapp…
Perguntas que não
querem calar
● Onde esta o banco de dados?
● Como eu não programei?
● Cadê as queries?
● Como ficou as “rotas”?
● E se eu precisar validar?
Ótimo, então vamos todos parar
e utilizar rails!
Calma! Só porque um notebook novo foi lançado, não
vamos descartar os nossos atuais. O mesmo vale para
softwares;
Conclusão
Esqueçam de fazer “a minha maneira”, e sim escolher uma
linguagem, buscar e testar frameworks existentes, e optar pelo uso
de um.
Não esqueçam de monitorar a
aplicação!
WEB é um caos!
Soluções de
Monitoramento
● Newrelic
● Datadog
● PagerDuty
Alguns serviços disponíveis para
utilizar em sua app inicial.
O futuro…
● A evolução do hardware esta seguindo o paralelismo (GPU e CPU multi-core);
● Linguagens funcionais são “mais simples” para programar em paralelo, pois
diferente das linguagens imperativas e orientadas a objetos, não existe variável
mutável(Pensem como funções matemáticas);
● Fortran e COBOL!
● F# (.NET Funcional);
● R (Estatistíca);
● Scala (Java OO + Funcional);
● Elixir (WEB - Linguagem brasileira!);
● … e ainda nem falemos sobre http 2.0, realtime e websocket!
Perguntas?
Muito obrigado!
fabiosammy@gmail.com

Mais conteúdo relacionado

Mais procurados

JavaFX - Uma visão Geral
JavaFX - Uma visão GeralJavaFX - Uma visão Geral
JavaFX - Uma visão Geral
Eder Nogueira
 
Testes Automatizados
Testes AutomatizadosTestes Automatizados
Testes Automatizados
Rodrigo Branas
 
Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012
Rogerio Prado de Jesus
 
Frameworks: uma mão na roda para o desenvolvimento
Frameworks: uma mão na roda para o desenvolvimentoFrameworks: uma mão na roda para o desenvolvimento
Frameworks: uma mão na roda para o desenvolvimento
Iago Santos Leão
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
jesuinoPower
 
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuaisJavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
William Oliveira
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBJavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEB
jesuinoPower
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFX
jesuinoPower
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutosCriando aplicações java fx em minutos
Criando aplicações java fx em minutos
Bruno Oliveira
 
CodeIgniter 4 - Introdução
CodeIgniter 4 - IntroduçãoCodeIgniter 4 - Introdução
CodeIgniter 4 - Introdução
Rafael Pinheiro
 
Seja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoSeja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinho
Alexandre Andrade
 
JavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptor
Loiane Groner
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parece
jesuinoPower
 
Blazor #SnetTalks3
Blazor  #SnetTalks3Blazor  #SnetTalks3
Blazor #SnetTalks3
André Agostinho
 
Micro frontend
Micro frontendMicro frontend
Micro frontend
Thiago Martins
 
JavaScript Moderno
JavaScript ModernoJavaScript Moderno
JavaScript Moderno
Josino Rodrigues
 
Django - Muito além do básico
Django - Muito além do básicoDjango - Muito além do básico
Django - Muito além do básico
Christiano Anderson
 
Aplicações ricas com JavaFX 2
Aplicações ricas com JavaFX 2Aplicações ricas com JavaFX 2
Aplicações ricas com JavaFX 2
Claudiney Marques
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Better Developer
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPConectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SP
jesuinoPower
 

Mais procurados (20)

JavaFX - Uma visão Geral
JavaFX - Uma visão GeralJavaFX - Uma visão Geral
JavaFX - Uma visão Geral
 
Testes Automatizados
Testes AutomatizadosTestes Automatizados
Testes Automatizados
 
Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012
 
Frameworks: uma mão na roda para o desenvolvimento
Frameworks: uma mão na roda para o desenvolvimentoFrameworks: uma mão na roda para o desenvolvimento
Frameworks: uma mão na roda para o desenvolvimento
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
 
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuaisJavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
JavaScript e o perfil do desenvolvedor front end das atualidades mais atuais
 
JavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEBJavaFX: Desktop para desenvolvedores WEB
JavaFX: Desktop para desenvolvedores WEB
 
Desenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFXDesenvolvimento rápido de aplicações com JEE e JavaFX
Desenvolvimento rápido de aplicações com JEE e JavaFX
 
Criando aplicações java fx em minutos
Criando aplicações java fx em minutosCriando aplicações java fx em minutos
Criando aplicações java fx em minutos
 
CodeIgniter 4 - Introdução
CodeIgniter 4 - IntroduçãoCodeIgniter 4 - Introdução
CodeIgniter 4 - Introdução
 
Seja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinhoSeja um júnior não seja um sobrinho
Seja um júnior não seja um sobrinho
 
JavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptorJavaCE Conference 2012: ExtJS 4 + VRaptor
JavaCE Conference 2012: ExtJS 4 + VRaptor
 
Java não é tão difícil quanto parece
Java não é tão difícil quanto pareceJava não é tão difícil quanto parece
Java não é tão difícil quanto parece
 
Blazor #SnetTalks3
Blazor  #SnetTalks3Blazor  #SnetTalks3
Blazor #SnetTalks3
 
Micro frontend
Micro frontendMicro frontend
Micro frontend
 
JavaScript Moderno
JavaScript ModernoJavaScript Moderno
JavaScript Moderno
 
Django - Muito além do básico
Django - Muito além do básicoDjango - Muito além do básico
Django - Muito além do básico
 
Aplicações ricas com JavaFX 2
Aplicações ricas com JavaFX 2Aplicações ricas com JavaFX 2
Aplicações ricas com JavaFX 2
 
Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?Ir para cloud com arquitetura de microservices resolverá o meu problema?
Ir para cloud com arquitetura de microservices resolverá o meu problema?
 
Conectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SPConectando jBPM com o mundo - TDC 2014 SP
Conectando jBPM com o mundo - TDC 2014 SP
 

Destaque

Benchmarks bamboe picknicken
Benchmarks bamboe picknickenBenchmarks bamboe picknicken
Benchmarks bamboe picknicken
laurenztack
 
Mz ranc tahunan-1-lama
Mz ranc tahunan-1-lamaMz ranc tahunan-1-lama
Mz ranc tahunan-1-lama
Tengku Hisamuddin Tengku Mohamed
 
James marshall math blog
James marshall math blogJames marshall math blog
James marshall math blog
40475044
 
James marshall math blog
James marshall math blogJames marshall math blog
James marshall math blog
40475044
 
Tx2014 Feature and Highlights
Tx2014 Feature and Highlights Tx2014 Feature and Highlights
Tx2014 Feature and Highlights
Heath Turner
 
Lab2
Lab2Lab2
Lab2
Red Bull
 
What\'s New - RAPID 2011 Plenary Address
What\'s New - RAPID 2011 Plenary AddressWhat\'s New - RAPID 2011 Plenary Address
What\'s New - RAPID 2011 Plenary Address
ToddGrimm
 
Pigen og træet
Pigen og træetPigen og træet
Pigen og træet
Ove Christensen
 
CV_SantoshiSunandaGaddam
CV_SantoshiSunandaGaddamCV_SantoshiSunandaGaddam
CV_SantoshiSunandaGaddam
Santoshi Sunanda
 
Digital patientmappe slutkonference feb 2012
Digital patientmappe slutkonference feb 2012Digital patientmappe slutkonference feb 2012
Digital patientmappe slutkonference feb 2012
Ove Christensen
 
Solar collector system_blog
Solar collector system_blogSolar collector system_blog
Solar collector system_blog
laurenztack
 
James marshall math blog
James marshall math blogJames marshall math blog
James marshall math blog
40475044
 
Te dxfinal
Te dxfinalTe dxfinal
Te dxfinal
Katy Hutchison
 
Ibm cloud service
Ibm cloud serviceIbm cloud service
Ibm cloud service
jayyoon86
 
Class Management
Class ManagementClass Management
就労コンテスト発表用資料 20101026
就労コンテスト発表用資料 20101026就労コンテスト発表用資料 20101026
就労コンテスト発表用資料 20101026
heartbeat1209
 
Aplicações web realtime
Aplicações web realtimeAplicações web realtime
Aplicações web realtime
Fabio Janiszevski
 
Diapositivas karina freitas
Diapositivas karina freitasDiapositivas karina freitas
Diapositivas karina freitas
fkarina
 
Keynote address - AMUG 2011 - Miami, Florida
Keynote address - AMUG 2011 - Miami, FloridaKeynote address - AMUG 2011 - Miami, Florida
Keynote address - AMUG 2011 - Miami, Florida
ToddGrimm
 

Destaque (20)

Benchmarks bamboe picknicken
Benchmarks bamboe picknickenBenchmarks bamboe picknicken
Benchmarks bamboe picknicken
 
Mz ranc tahunan-1-lama
Mz ranc tahunan-1-lamaMz ranc tahunan-1-lama
Mz ranc tahunan-1-lama
 
James marshall math blog
James marshall math blogJames marshall math blog
James marshall math blog
 
James marshall math blog
James marshall math blogJames marshall math blog
James marshall math blog
 
Tx2014 Feature and Highlights
Tx2014 Feature and Highlights Tx2014 Feature and Highlights
Tx2014 Feature and Highlights
 
Lab2
Lab2Lab2
Lab2
 
What\'s New - RAPID 2011 Plenary Address
What\'s New - RAPID 2011 Plenary AddressWhat\'s New - RAPID 2011 Plenary Address
What\'s New - RAPID 2011 Plenary Address
 
Pigen og træet
Pigen og træetPigen og træet
Pigen og træet
 
CV_SantoshiSunandaGaddam
CV_SantoshiSunandaGaddamCV_SantoshiSunandaGaddam
CV_SantoshiSunandaGaddam
 
Digital patientmappe slutkonference feb 2012
Digital patientmappe slutkonference feb 2012Digital patientmappe slutkonference feb 2012
Digital patientmappe slutkonference feb 2012
 
Solar collector system_blog
Solar collector system_blogSolar collector system_blog
Solar collector system_blog
 
Coeliac2
Coeliac2Coeliac2
Coeliac2
 
James marshall math blog
James marshall math blogJames marshall math blog
James marshall math blog
 
Te dxfinal
Te dxfinalTe dxfinal
Te dxfinal
 
Ibm cloud service
Ibm cloud serviceIbm cloud service
Ibm cloud service
 
Class Management
Class ManagementClass Management
Class Management
 
就労コンテスト発表用資料 20101026
就労コンテスト発表用資料 20101026就労コンテスト発表用資料 20101026
就労コンテスト発表用資料 20101026
 
Aplicações web realtime
Aplicações web realtimeAplicações web realtime
Aplicações web realtime
 
Diapositivas karina freitas
Diapositivas karina freitasDiapositivas karina freitas
Diapositivas karina freitas
 
Keynote address - AMUG 2011 - Miami, Florida
Keynote address - AMUG 2011 - Miami, FloridaKeynote address - AMUG 2011 - Miami, Florida
Keynote address - AMUG 2011 - Miami, Florida
 

Semelhante a O que move a web atualmente?

PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
Evaldo Junior
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
michel adriano medeiros
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
André Luiz Forchesatto
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
Valmir Justo
 
Aula01-JavaScript
Aula01-JavaScriptAula01-JavaScript
Aula01-JavaScript
Jorge Ávila Miranda
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
Eduardo Bohrer
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
thiagolima
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Thiago Sinésio
 
Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013
George Mendonça
 
Gerenciando Projetos Com Ruby On Rails
Gerenciando Projetos Com Ruby On RailsGerenciando Projetos Com Ruby On Rails
Gerenciando Projetos Com Ruby On Rails
Rodrigo Urubatan
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do framework
Giuseppe Lopes
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
Bruno Oliveira
 
Spring boot
Spring bootSpring boot
Spring boot
John Godoi
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
Ruben Marcus Luz Paschoarelli
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Luís Cobucci
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
Ale Uehara
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
Alexandre Uehara
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
Alvaro Viebrantz
 
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreConhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Rodrigo Kono
 
Aula09 - Java Script
Aula09 - Java ScriptAula09 - Java Script
Aula09 - Java Script
Jorge Ávila Miranda
 

Semelhante a O que move a web atualmente? (20)

PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011PHP Turbinado com CodeIgniter - Conisli 2011
PHP Turbinado com CodeIgniter - Conisli 2011
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Aula01-JavaScript
Aula01-JavaScriptAula01-JavaScript
Aula01-JavaScript
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e ZendAnálise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
Análise sobre a utilização de frameworks em PHP: CakePHP, CodeIgniter e Zend
 
Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013Oficina de PHP - Software Freedom Day Luziânia 2013
Oficina de PHP - Software Freedom Day Luziânia 2013
 
Gerenciando Projetos Com Ruby On Rails
Gerenciando Projetos Com Ruby On RailsGerenciando Projetos Com Ruby On Rails
Gerenciando Projetos Com Ruby On Rails
 
Não deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do frameworkNão deixe seu projeto só nas mãos do framework
Não deixe seu projeto só nas mãos do framework
 
Desmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest FrameworkDesmitificando as aplicações RESTFul usando Django Rest Framework
Desmitificando as aplicações RESTFul usando Django Rest Framework
 
Spring boot
Spring bootSpring boot
Spring boot
 
Escalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLIDEscalando apps com React e Type Script e SOLID
Escalando apps com React e Type Script e SOLID
 
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Visao geralti netshoes03
Visao geralti netshoes03Visao geralti netshoes03
Visao geralti netshoes03
 
Carreira de Desenvolvimento
Carreira de DesenvolvimentoCarreira de Desenvolvimento
Carreira de Desenvolvimento
 
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net coreConhecimentos para tomar atitude e migrar sua aplicação para asp.net core
Conhecimentos para tomar atitude e migrar sua aplicação para asp.net core
 
Aula09 - Java Script
Aula09 - Java ScriptAula09 - Java Script
Aula09 - Java Script
 

O que move a web atualmente?

  • 1. O que move a web atualmente? Fábio Leandro Janiszevski
  • 2. Fabio Leandro? ● ~3 anos de desenvolvimento WEB na empresa “Ponto Gestor”; ● ~6 anos de experiência com servidores de alta disponibilidade; ● ~15 anos com experiência em Linux; ● Mantenedor do projeto OpenSource “SmartRouter PROJECT”; ● “fabiosammy”. Google it! ● Professor na UTFPR - Campus Guarapuava desde maio/2015;
  • 3. O que veremos hoje? ● Padrões de projeto; ● Plataformas de desenvolvimento; ● Serviços X Servidores; ● CRUD; ● Frameworks; ● Exemplo prático; ● Monitoramento;
  • 4. Desenvolvimento WEB ● Aprender conceitos “cliente-servidor”; ● Cuidar com a concorrência; ● Desenvolvimento Ágil! (The Agile Moviment); ● Muitas tecnologias, e muita evolução! ● Tecnologia específica, espere por problemas!
  • 6. Plataforma é importante? “Tudo o que faço no windows, faço no linux!” (vice-versa)
  • 8. Plataforma é importante? ● Windows NÃO É POSIX! (Apesar de que o INTERIX é 100% compatível); ● Unix-Like SÃO POSIX; ● A maioria dos padrões da RFC, baseiam-se no POSIX (Quando se aplica); ● Escolha a plataforma para o seu caso; (Evite querer desenvolver .NET em ambientes Linux, ou Ruby em ambientes Windows!)
  • 9. CRUD ● Criar, Ler, Alterar e destruir; ● Navegadores interpretam(segundo a RFC do HTTP 1.1) GET e POST; ● Criar = POST; ● Ler = GET; ● Alterar = PATCH ou PUT; ● Destruir = DELETE; ● Formulários, formulários, formulários…
  • 10. Serviços e Servidores ● Para o crud anterior, devemos criar um serviço que siga o padrão Rest para uma coleção de “alunos”: ○ Criar um novo aluno? POST /alunos ○ Deletar um aluno? DELETE /alunos/1 ○ Editar um aluno? PUT /alunos/1 ○ Visualizar um aluno? GET /alunos/1 ○ Visualizar TODOS os alunos? GET /alunos ○ Visualizar formulários de adicionar ou editar um aluno? GET /alunos/new | GET /alunos/1/edit
  • 11. Serviços e Servidores ● Agora falamos em como devemos interpretar essas rotas(notem que em nenhum momento foi apresentada a extensão dos arquivos); ● Um servidor de aplicações web vai ser o responsável por interpretar cada verbo HTTP, e encaminhar a aplicação ou arquivo responsável; ● Apache e Nginx são os mais difundidos e discutidos para a maioria das aplicações web, cada um com suas respectivas arquiteturas e aplicações;
  • 12. Conclusões ● “Alunos” NÃO! Students! ● Além do Rest, podemos citar o SOAP; ● Muitas regras para cada caso; ● Serviço é como o meu cliente vai acessar o sistema, servidor é como eu vou entregar o sistema;
  • 13. Frameworks ● Facilitam o progresso de desenvolvimento, gerando produtividade; ● Deixe de pensar em como fazer, mas sim em vamos fazer; ● Pensem em um conjunto de classes que tem por objetivo trazer uma funcionalidade genérica; ● - “Minha aplicação vai ter conexão ao banco de dados! Como vou conectar ao banco? E se eu precisar mudar o banco de dados (mysql -> postgres)?”
  • 14. Então eu devo criar esse “framework”? NÃO!
  • 15. Mas… Como vou confiar em algo que eu não desenvolvi? Então porque esta utilizando uma linguagem “de outros”?!
  • 16. Dificilmente uma empresa local terá capital intelectual, tempo e mão-de-obra o suficiente para competir com uma comunidade mundial.
  • 17. People think that because something is "technically superior" everybody else should blindly adopt. But this is not how the market works.
  • 18. Exemplos de frameworks ● Para CSS: Bootstrap(Twitter), Foundation, Semantic UI… ● Para Java(WEB): Play(Scala), Click, Wicket, JSF(Oracle), Struts… ● Para JavaScript: React(Facebook), AngulaJS(Google), EmberJS… ● Para PHP: Zend, Laravel, Synfony… ● Para Ruby: Rails, Cuba, Sinatra, Hanami, Padrino …
  • 19. Vamos a uma prática rápida com o rails. rails new myapp…
  • 20. Perguntas que não querem calar ● Onde esta o banco de dados? ● Como eu não programei? ● Cadê as queries? ● Como ficou as “rotas”? ● E se eu precisar validar?
  • 21. Ótimo, então vamos todos parar e utilizar rails! Calma! Só porque um notebook novo foi lançado, não vamos descartar os nossos atuais. O mesmo vale para softwares;
  • 22. Conclusão Esqueçam de fazer “a minha maneira”, e sim escolher uma linguagem, buscar e testar frameworks existentes, e optar pelo uso de um.
  • 23. Não esqueçam de monitorar a aplicação! WEB é um caos!
  • 24. Soluções de Monitoramento ● Newrelic ● Datadog ● PagerDuty Alguns serviços disponíveis para utilizar em sua app inicial.
  • 25. O futuro… ● A evolução do hardware esta seguindo o paralelismo (GPU e CPU multi-core); ● Linguagens funcionais são “mais simples” para programar em paralelo, pois diferente das linguagens imperativas e orientadas a objetos, não existe variável mutável(Pensem como funções matemáticas); ● Fortran e COBOL! ● F# (.NET Funcional); ● R (Estatistíca); ● Scala (Java OO + Funcional); ● Elixir (WEB - Linguagem brasileira!); ● … e ainda nem falemos sobre http 2.0, realtime e websocket!