O que move a web atualmente?

Post on 13-Apr-2017

106 views 1 download

Transcript of O que move a web atualmente?

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ãoEsqueç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