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

O que move a web atualmente?

  • 1.
    O que movea web atualmente? Fábio Leandro Janiszevski
  • 2.
    Fabio Leandro? ● ~3anos 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 veremoshoje? ● Padrões de projeto; ● Plataformas de desenvolvimento; ● Serviços X Servidores; ● CRUD; ● Frameworks; ● Exemplo prático; ● Monitoramento;
  • 4.
    Desenvolvimento WEB ● Aprenderconceitos “cliente-servidor”; ● Cuidar com a concorrência; ● Desenvolvimento Ágil! (The Agile Moviment); ● Muitas tecnologias, e muita evolução! ● Tecnologia específica, espere por problemas!
  • 5.
  • 6.
    Plataforma é importante? “Tudoo que faço no windows, faço no linux!” (vice-versa)
  • 7.
  • 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 oprogresso 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 devocriar esse “framework”? NÃO!
  • 15.
    Mas… Como vouconfiar em algo que eu não desenvolvi? Então porque esta utilizando uma linguagem “de outros”?!
  • 16.
    Dificilmente uma empresalocal terá capital intelectual, tempo e mão-de-obra o suficiente para competir com uma comunidade mundial.
  • 17.
    People think thatbecause 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 umaprática rápida com o rails. rails new myapp…
  • 20.
    Perguntas que não queremcalar ● 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 vamostodos 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 demonitorar 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… ● Aevoluçã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!
  • 26.