Successfully reported this slideshow.

Introdução ao desenvolvimento web - 2 - iDez 2010

622 views

Published on

  • Be the first to comment

Introdução ao desenvolvimento web - 2 - iDez 2010

  1. 1. Introdução ao desenvolvimento web - 2<br />Maurício Linhares – mauricio.linhares@gmail.com<br />
  2. 2. Quemsoueu?<br />DesenvolvedornaOfficeDrop.com;<br />Instrutor da LinuxFi;<br />Consultoremmetodologiaságeis;<br />JUG Leader do PBJUG;<br />
  3. 3. 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 />
  4. 4. Os protocolos da Internet<br />IP<br />TCP<br />UDP<br />DNS<br />POP/SMTP/IMAP<br />HTTP<br />
  5. 5. 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 />
  6. 6. 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 />
  7. 7. 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 />
  8. 8. 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 />
  9. 9. Qual o ip de www.josé.com?<br />Qual o IP do DNS de josé.com?<br />Qual o IP de www.jose.com?<br />201.1.10.24<br />1.1.1.5<br />
  10. 10. 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 />
  11. 11. 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 />
  12. 12. Feramentasdentro do Firefox<br />WebDeveloper;<br />Yslow;<br />Firebug;<br />PageSpeed;<br />
  13. 13. Tecnologias quentes no desenvolvimento web<br />Java?<br />ASP.NET?<br />PHP?<br />Django (Python)?<br />RubyonRails (Ruby)?<br />
  14. 14. Características Importantes<br />Minimalismo;<br />Pouca burocracia;<br />Resultados rápidos;<br />Turnaround rápido;<br />Integração com tecnologias RIA;<br />
  15. 15. 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 />
  16. 16. Um blog utilizando RubyonRails<br />Cuidado pra não se maravilhar demais<br />
  17. 17. Dispositivosmóveis?<br />Especializaçãoerrada?<br />
  18. 18. Ambientes<br />Android;<br />iOS;<br />Widows Mobile 7;<br />Blackberry;<br />Algumacoisa da Nokia;<br />
  19. 19. Usos?<br />Aplicaçõesquesincronizam dados entre celulares e apps web;<br />Aplicaçõesfeitasespecialmenteparanavegadores de dispositivosmóveis;<br />Aplicaçõesparadispositivosmóveisquesãoescritasutilizandotecnologias da web (JavaScript, HTML5, CSS);<br />
  20. 20. Twitter for the iPhone<br />
  21. 21. 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 />
  22. 22. Grooveshark - Flex<br />
  23. 23. 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 />
  24. 24. 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 />
  25. 25. 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 />
  26. 26. 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 />
  27. 27. 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 />
  28. 28. 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 />
  29. 29. Quando tudo o que você tem é um martelo, todos os problemas vão parecer pregos<br />Profissionais poliglotas e projetos heterogêneos<br />
  30. 30. Infraestrutura<br />Bancos de dados?<br />Servidores web?<br />Hosdedagem?<br />Sistemas operacionais?<br />Ambientes de execução?<br />
  31. 31. 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 />
  32. 32. 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 />
  33. 33. 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 />
  34. 34. 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 />
  35. 35. 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 />
  36. 36. 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 />
  37. 37. Cadê os outros?<br />Tomcat?<br />JBoss?<br />IIS?<br />Jetty?<br />
  38. 38. Hospedagem<br />Compartilhada (piedade senhor, piedade)<br />VPS - Virtual PrivateServers<br />Cloud real<br />AmazonElastic Compute Cloud<br />Cloud VPS<br />Rackspace<br />
  39. 39. 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 />
  40. 40. 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 />
  41. 41. 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 />
  42. 42. 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 />
  43. 43. 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 />
  44. 44. Sistemas operacionais<br />Windows;<br />Linux:<br />RedHat<br />OpenSUSE<br />Madriva<br />Ubuntu<br />Unix-based<br />Solaris<br />HP-UX<br />
  45. 45. 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 />
  46. 46. 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 />
  47. 47. 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 />
  48. 48. 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 />
  49. 49. 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 />
  50. 50. 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 />
  51. 51. devefazerU$ 238.65 milhõesde lucroem 2010<br />
  52. 52. Aplicações dentro de redes sociais<br />Orkut<br />BuddyPoke;<br />Colheita Feliz;<br />MiniFazenda;<br />JogaCraque;<br />Facebook:<br />MafiaWars;<br />FarmVille;<br />
  53. 53. Jogos em navegadores<br />Travian;<br />La Brute;<br />BiteFight;<br />Continua eternamente...<br />
  54. 54. 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 />
  55. 55. 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 />
  56. 56. 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 />

×