Introdução ao desenvolvimento web - 2<br />Maurício Linhares – mauricio.linhares@gmail.com<br />
Vendendo o seu colega - Dinâmica<br />Juntem-se em pares;<br />Aprenda sobre o seu par (10 minutos);<br />Forme uma estrat...
Os protocolos da Internet<br />IP<br />TCP<br />UDP<br />DNS<br />POP/SMTP/IMAP<br />HTTP<br />
IP - Internet Protocol - Rede<br />Protocolo baseado em datagramas;<br />Entrega não garantida (besteffortdelivery);<br />...
TCP – TransmissionControlProtocol - Transporte<br />Baseado em conexão;<br />Entrega garantida de dados;<br />Ordenação do...
UDP – UserDatagramProtocol - Transporte<br />Sem conexão;<br />Pacotes podem chegar na ordem incorreta;<br />Pacotes podem...
DNS – DomainName System - Aplicação<br />Transforma nomes (hosts) em endereços IPs (e vice-versa);<br />Simplifica a lembr...
POP/SMTP/IMAP<br />Protocolos de troca de emails;<br />Ainda o serviço mais utilizado da internet;<br />Possível fonte de ...
HTTP – HyperTextTransferProtocol<br />Protocolo base para transmissão de dados na internet;<br />Tudo é transferido em for...
Tecnologias quentes no desenvolvimento web<br />Java?<br />ASP.NET?<br />PHP?<br />Django (Python)?<br />RubyonRails (Ruby...
Características Importantes<br />Minimalismo;<br />Pouca burocracia;<br />Resultados rápidos;<br />Turnaround rápido;<br /...
O que está em queda<br />Configurações extensas;<br />Início lento ou com vários artefatos antes do início do código;<br /...
Um blog utilizando RubyonRails<br />Cuidado pra não se maravilhar demais<br />
Tecnologias RIA – Rich Internet Applications<br />Volta dos fatclients;<br />Aplicações web que emulam aplicações desktop;...
Grooveshark - Flex<br />
Problemas?<br />Versões de runtimes diferentes == problemas diferentes pra debugar;<br />Ocupam um pouco mais de memória e...
HTML 5 – RIA sem os plugins<br />Suporte nativo a áudio e vídeo (royalties?)<br />Engines melhores para JavaScript<br />V8...
Problemas?<br />Quando vai ficar pronto?<br />O IE vai implementar tudo certinho?<br />Quando todos os outros IEs vão morr...
Tendências e linguagens de programação<br />Programação funcional;<br />Programação concorrente;<br />Linguagens híbridas;...
Concorrência e o futuro<br />O clock dos processadores não consegue mais evoluir na mesma velocidade;<br />Máquinas com mú...
Problemas de concorrência?<br />Linguagens OO não são boas para programas concorrentes porque costumam direcionar as pesso...
Quando tudo o que você tem é um martelo, todos os problemas vão parecer pregos<br />Profissionais poliglotas e projetos he...
Infraestrutura<br />Bancos de dados?<br />Servidores web?<br />Hosdedagem?<br />Sistemas operacionais?<br />Ambientes de e...
Bancos de dados<br />Bancos relacionais começando a dar sinais de velhice;<br />Movimento NoSQL crescendo e aparecendo em ...
Problemas?<br />Milhões de usuários produzindo bilhões de dados;<br />Os mesmos usuários estão:<br />Buscando;<br />Altera...
Bancos de dados relacionais não são escaláveis<br />Repositório central de infomações;<br />Modelos arcaicos de replicação...
Bancos de dados do movimento NoSQL<br />Nascidos na era da internet com um problema definido para resolver;<br />Schema-le...
Opções?<br />Cassandra<br />Facebook<br />Twitter<br />AmazonSimpleDB<br />Precisa dizer? <br />MongoDB<br />TheNew York ...
Servidores web<br />Apache 2<br />Panela velha é quem faz comida boa né...<br />Lighttpd<br />Leve, seguro e bem comum na ...
Cadê os outros?<br />Tomcat?<br />JBoss?<br />IIS?<br />Jetty?<br />
Hospedagem<br />Compartilhada (piedade senhor, piedade)<br />VPS - Virtual PrivateServers<br />Cloud real<br />AmazonElast...
Compartilhada<br />O ambiente já está pronto;<br />Você compartilha tudo com várias outras pessoas;<br />Segurança? Acredi...
VPS – Virtual Private Server<br />Você escolhe o que vai ser instalado;<br />Você configura o ambiente;<br />Você cria con...
Cloud real - 1<br />O mundo é efêmero, você configura uma imagem inicial do servidor e sobe ele para executar um trabalho;...
Cloud real - 2<br />Perfeito para serviços “fireandforget”:<br />Cálculos matemáticos longos;<br />Processamento de algori...
Cloud VPS<br />É um serviço de cloud que funciona como VPS;<br />Você contrata uma instância em uma VPS e pode aumentar a ...
Sistemas operacionais<br />Windows;<br />Linux:<br />RedHat<br />OpenSUSE<br />Madriva<br />Ubuntu<br />Unix-based<br />So...
Ambientes de execução<br />CLR – Máquina Virtual do .Net<br />Mono – Máquina Virtual do .Net multiplataforma<br />Java Vir...
CLR – CommonLanguageRuntime<br />Ambiente de execução Microsoft para o ambiente .Net;<br />Disponível apenas no Windows;<b...
Projeto Mono - .Net Multiplataforma<br />Leva o runtime do .Net para outras plataformas que não Windows;<br />Costuma esta...
JVM – Java Virtual Machine<br />Ambiente de execução comumente relacionado a linguagem de programação Java;<br />Já tem um...
Tendências em negócios<br />Aplicações sociais;<br />Aplicações dentro de redes sociais;<br />Jogos em navegadores;<br />S...
O mundo social ainda não morreu<br />Aplicações sociais continuam surgindo, conseguindo público e ganhando dinheiro:<br />...
Aplicações dentro de redes sociais<br />Orkut<br />BuddyPoke;<br />Colheita Feliz;<br />MiniFazenda;<br />JogaCraque;<br /...
Jogos em navegadores<br />Travian;<br />La Brute;<br />BiteFight;<br />Continua eternamente...<br />
Software as a Service - 1<br />Modelo de negócio para começar a produzir e vender software;<br />Uso do software fica semp...
Software as a service - 2<br />Aplicações com pouca customização, normalmente são produtos de prateleira que são vendidos ...
Exercício – 30 minutos<br />Juntar-se em grupos;<br />Pensar em um produto SAAS;<br />Definir:<br />Público;<br />Funciona...
Upcoming SlideShare
Loading in …5
×

IntroduçãO Ao Desenvolvimento Web 2

916 views
859 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
916
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
31
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

IntroduçãO Ao Desenvolvimento Web 2

  1. 1. Introdução ao desenvolvimento web - 2<br />Maurício Linhares – mauricio.linhares@gmail.com<br />
  2. 2. Vendendo o seu colega - Dinâmica<br />Juntem-se em pares;<br />Aprenda sobre o seu par (10 minutos);<br />Forme uma estratégia para apresentá-lo em uma entrevista de emprego:<br />Apresente-o;<br />Determine suas capacidades;<br />Demonstre porque ele é uma boa contratação;<br />
  3. 3. Os protocolos da Internet<br />IP<br />TCP<br />UDP<br />DNS<br />POP/SMTP/IMAP<br />HTTP<br />
  4. 4. IP - Internet Protocol - Rede<br />Protocolo baseado em datagramas;<br />Entrega não garantida (besteffortdelivery);<br />Pacotes podem chegar em ordem incorreta;<br />Não é necessário haver conexão entre a origem e o destino;<br />
  5. 5. TCP – TransmissionControlProtocol - Transporte<br />Baseado em conexão;<br />Entrega garantida de dados;<br />Ordenação dos dados entregues;<br />Controle de fluxo;<br />Controle de congestionamento;<br />
  6. 6. UDP – UserDatagramProtocol - Transporte<br />Sem conexão;<br />Pacotes podem chegar na ordem incorreta;<br />Pacotes podem não chegar do outro lado;<br />O controle deve ser feito pela aplicação;<br />
  7. 7. DNS – DomainName System - Aplicação<br />Transforma nomes (hosts) em endereços IPs (e vice-versa);<br />Simplifica a lembrança de endereços em redes (como a internet);<br />Pode ser usado como uma forma de balancear a carga entre vários servidores;<br />Servidores DNS raízes são a fonte oficial dos hosts, sem eles a internet pára;<br />
  8. 8. POP/SMTP/IMAP<br />Protocolos de troca de emails;<br />Ainda o serviço mais utilizado da internet;<br />Possível fonte de dados para aplicações web;<br />Provavelmente o meio de comunicação mais eficiente da atualidade;<br />
  9. 9. HTTP – HyperTextTransferProtocol<br />Protocolo base para transmissão de dados na internet;<br />Tudo é transferido em forma de texto (pouco eficiente para dados binários);<br />Tudo é transferido em forma de documentos ou recursos;<br />É a forma mais simples de transferir dados pela internet;<br />
  10. 10. Tecnologias quentes no desenvolvimento web<br />Java?<br />ASP.NET?<br />PHP?<br />Django (Python)?<br />RubyonRails (Ruby)?<br />
  11. 11. Características Importantes<br />Minimalismo;<br />Pouca burocracia;<br />Resultados rápidos;<br />Turnaround rápido;<br />Integração com tecnologias RIA;<br />
  12. 12. O que está em queda<br />Configurações extensas;<br />Início lento ou com vários artefatos antes do início do código;<br />Poucas opções de componentes/plugins de terceiros;<br />Código fechado;<br />
  13. 13. Um blog utilizando RubyonRails<br />Cuidado pra não se maravilhar demais<br />
  14. 14. Tecnologias RIA – Rich Internet Applications<br />Volta dos fatclients;<br />Aplicações web que emulam aplicações desktop;<br />É possível gravar dados do lado do cliente;<br />Runtimes normalmente se atualizam automaticamente nos navegadores;<br />
  15. 15. Grooveshark - Flex<br />
  16. 16. Problemas?<br />Versões de runtimes diferentes == problemas diferentes pra debugar;<br />Ocupam um pouco mais de memória e processador nas máquinas clientes;<br />Nem sempre estão instalados e atualizados nas máquinas clientes;<br />Novas linguagens, IDEs e ferramentas pra integrar ao processo;<br />
  17. 17. HTML 5 – RIA sem os plugins<br />Suporte nativo a áudio e vídeo (royalties?)<br />Engines melhores para JavaScript<br />V8 – Chrome<br />Spidermonkey – Firefox<br />IE9<br />CSS 3;<br />Suporte nativo a SVG para desenhos vetoriais no browser;<br />
  18. 18. Problemas?<br />Quando vai ficar pronto?<br />O IE vai implementar tudo certinho?<br />Quando todos os outros IEs vão morrer?<br />E os royalties do H.256?<br />Quando tudo vai funcionar igual em todos os browsers? (Youtube ainda quebra no Chrome)<br />
  19. 19. Tendências e linguagens de programação<br />Programação funcional;<br />Programação concorrente;<br />Linguagens híbridas;<br />Profissionais poliglotas;<br />Projetos heterogêneos;<br />
  20. 20. Concorrência e o futuro<br />O clock dos processadores não consegue mais evoluir na mesma velocidade;<br />Máquinas com múltiplos cores já fazem parte do dia a dia do usuário final (chips com 6 cores para computadores comuns saem esse ano pela Intel);<br />Aplicações não concorrentes não vão conseguir fazer uso disso e vão continuar eternamente lentas;<br />
  21. 21. Problemas de concorrência?<br />Linguagens OO não são boas para programas concorrentes porque costumam direcionar as pessoas a utilizar memórias compartilhadas;<br />Em linguagens puramente funcionais, não existe memória compartilhada;<br />Linguagens que juntam ambos paradigmas são as mais cotadas para o futuro próximo:<br />Scala;<br />Closure;<br />
  22. 22. Quando tudo o que você tem é um martelo, todos os problemas vão parecer pregos<br />Profissionais poliglotas e projetos heterogêneos<br />
  23. 23. Infraestrutura<br />Bancos de dados?<br />Servidores web?<br />Hosdedagem?<br />Sistemas operacionais?<br />Ambientes de execução?<br />
  24. 24. Bancos de dados<br />Bancos relacionais começando a dar sinais de velhice;<br />Movimento NoSQL crescendo e aparecendo em grandes empresas;<br />Várias opções de bancos de dados não-relacionais para resolver problemas do mundo da internet; <br />
  25. 25. Problemas?<br />Milhões de usuários produzindo bilhões de dados;<br />Os mesmos usuários estão:<br />Buscando;<br />Alterando;<br />Reajustando;<br />E produzindo;<br />...ainda mais informação;<br />
  26. 26. Bancos de dados relacionais não são escaláveis<br />Repositório central de infomações;<br />Modelos arcaicos de replicação;<br />Modelos arcaicos de conexão e extração de dados;<br />Pouco flexíveis quanto a alteração da estrutura das informações (criar uma nova coluna naquela tabela com milhões de linhas? FUUUUUUU!);<br />
  27. 27. Bancos de dados do movimento NoSQL<br />Nascidos na era da internet com um problema definido para resolver;<br />Schema-less ou bem mais flexíveis quanto a alterações nos modelos;<br />Replicação é funcionalidade padrão;<br />Múltiplos servidores, sharding e particionamento/balanceamento são necessidades básicas;<br />
  28. 28. Opções?<br />Cassandra<br />Facebook<br />Twitter<br />AmazonSimpleDB<br />Precisa dizer? <br />MongoDB<br />TheNew York Times<br />Justin.tv<br />CouchDB<br />
  29. 29. Servidores web<br />Apache 2<br />Panela velha é quem faz comida boa né...<br />Lighttpd<br />Leve, seguro e bem comum na web<br />Nginx<br />Direto do gelo da Rússia para o mundo<br />Proxies<br />Pound<br />Varnish<br />HAProxy<br />
  30. 30. Cadê os outros?<br />Tomcat?<br />JBoss?<br />IIS?<br />Jetty?<br />
  31. 31. Hospedagem<br />Compartilhada (piedade senhor, piedade)<br />VPS - Virtual PrivateServers<br />Cloud real<br />AmazonElastic Compute Cloud<br />Cloud VPS<br />Rackspace<br />
  32. 32. Compartilhada<br />O ambiente já está pronto;<br />Você compartilha tudo com várias outras pessoas;<br />Segurança? Acredite em Papai Noel também;<br />Se você precisa de alguma coisa que foge do padrão...<br />
  33. 33. VPS – Virtual Private Server<br />Você escolhe o que vai ser instalado;<br />Você configura o ambiente;<br />Você cria contas e instala o que é necessário;<br />Você faz tudo, mas o ambiente não é controlado externamente;<br />Limites em consumo de memória, transferência e uso de processador;<br />
  34. 34. Cloud real - 1<br />O mundo é efêmero, você configura uma imagem inicial do servidor e sobe ele para executar um trabalho;<br />A instância não tem armazenamento estático, o que estiver gravado nela se perde se ela for “desligada” ou sair do ar;<br />É necessário “plugar” serviços de armazenamento as instâncias para manter dados entre a execução delas;<br />
  35. 35. Cloud real - 2<br />Perfeito para serviços “fireandforget”:<br />Cálculos matemáticos longos;<br />Processamento de algoritmos complexos;<br />Quaisquer serviços que vão demorar um tempo razoável mas costumam ter “prazo” para terminar e que dependam de muito poder computacional para serem executados;<br />Hospedagem em um serviço desses não é para os fracos de coração;<br />
  36. 36. Cloud VPS<br />É um serviço de cloud que funciona como VPS;<br />Você contrata uma instância em uma VPS e pode aumentar a instância ou crias novas conforme a sua necessidade;<br />Normalmente disponibilizam APIs para acesso e criação de “fazendas de servidores” quando é necessário;<br />Mais fácil de trabalhar quando o interesse é hospedagem;<br />
  37. 37. Sistemas operacionais<br />Windows;<br />Linux:<br />RedHat<br />OpenSUSE<br />Madriva<br />Ubuntu<br />Unix-based<br />Solaris<br />HP-UX<br />
  38. 38. Ambientes de execução<br />CLR – Máquina Virtual do .Net<br />Mono – Máquina Virtual do .Net multiplataforma<br />Java Virtual Machine – Máquina Virtual Java<br />
  39. 39. CLR – CommonLanguageRuntime<br />Ambiente de execução Microsoft para o ambiente .Net;<br />Disponível apenas no Windows;<br />Integração forte com APIs disponíveis do Windows e forma preferida para desenvolvimento de aplicações nessa plataforma;<br />
  40. 40. Projeto Mono - .Net Multiplataforma<br />Leva o runtime do .Net para outras plataformas que não Windows;<br />Costuma estar atrasado quando comparado com o CLR da Microsoft;<br />Não implementa alguns pedaços do .Net Framework por questões jurídicas da Microsoft;<br />Nem sempre apresenta o mesmo comportamento do CLR no Windows;<br />
  41. 41. JVM – Java Virtual Machine<br />Ambiente de execução comumente relacionado a linguagem de programação Java;<br />Já tem um conjunto longo de linguagens executáveis:<br />Ruby;<br />PHP;<br />Scala;<br />Closure;<br />Python (Jython);<br />
  42. 42. Tendências em negócios<br />Aplicações sociais;<br />Aplicações dentro de redes sociais;<br />Jogos em navegadores;<br />SAAS – Software as a Service;<br />
  43. 43. O mundo social ainda não morreu<br />Aplicações sociais continuam surgindo, conseguindo público e ganhando dinheiro:<br />http://foursquare.com/<br />http://justin.tv/<br />http://twitter.com/<br />http://shellfari.com/<br />Novas aplicações focam em nichos específicos;<br />Redes sociais “genéricas” não vão mais chamar a atenção;<br />
  44. 44. Aplicações dentro de redes sociais<br />Orkut<br />BuddyPoke;<br />Colheita Feliz;<br />MiniFazenda;<br />JogaCraque;<br />Facebook:<br />MafiaWars;<br />FarmVille;<br />
  45. 45. Jogos em navegadores<br />Travian;<br />La Brute;<br />BiteFight;<br />Continua eternamente...<br />
  46. 46. Software as a Service - 1<br />Modelo de negócio para começar a produzir e vender software;<br />Uso do software fica sempre atrelado ao pagamento de uma assinatura mensal ou taxa de uso;<br />O fluxo de caixa se mantém constante enquanto os clientes estão usando/pagando;<br />Economia de escala barateia os preços de assinatura;<br />
  47. 47. Software as a service - 2<br />Aplicações com pouca customização, normalmente são produtos de prateleira que são vendidos de forma diferente;<br />Normalmente na forma de aplicações web (mais difícil de piratear e mais fácil de implantar atualizações);<br />Normalmente voltados a pequenas e médias empresas;<br />
  48. 48. Exercício – 30 minutos<br />Juntar-se em grupos;<br />Pensar em um produto SAAS;<br />Definir:<br />Público;<br />Funcionalidades principais;<br />Preços;<br />Como atingir os clientes;<br />Apresentar o produto;<br />

×