Introdução ao desenvolvimento web - 2Maurício Linhares – mauricio.linhares@gmail.com
Quemsoueu?DesenvolvedornaOfficeDrop.com;Instrutor da LinuxFi;Consultoremmetodologiaságeis;JUG Leader do PBJUG;
Vendendo o seu colega - DinâmicaJuntem-se em pares;Aprenda sobre o seu par (10 minutos);Forme uma estratégia para apresentá-lo em uma entrevista de emprego:Apresente-o;Determine suas capacidades;Demonstre porque ele é uma boa contratação;
Os protocolos da InternetIPTCPUDPDNSPOP/SMTP/IMAPHTTP
IP - Internet Protocol - RedeProtocolo baseado em datagramas;Entrega não garantida (besteffortdelivery);Pacotes podem chegar em ordem incorreta;Não é necessário haver conexão entre a origem e o destino;
TCP – TransmissionControlProtocol - TransporteBaseado em conexão;Entrega garantida de dados;Ordenação dos dados entregues;Controle de fluxo;Controle de congestionamento;
UDP – UserDatagramProtocol - TransporteSem conexão;Pacotes podem chegar na ordem incorreta;Pacotes podem não chegar do outro lado;O controle deve ser feito pela aplicação;
DNS – DomainName System - AplicaçãoTransforma nomes (hosts) em endereços IPs (e vice-versa);Simplifica a lembrança de endereços em redes (como a internet);Pode ser usado como uma forma de balancear a carga entre vários servidores;Servidores DNS raízes são a fonte oficial dos hosts, sem eles a internet pára;
Qual o ip de www.josé.com?Qual o IP do DNS de josé.com?Qual o IP de www.jose.com?201.1.10.241.1.1.5
POP/SMTP/IMAPProtocolos de troca de emails;Ainda o serviço mais utilizado da internet;Possível fonte de dados para aplicações web;Provavelmente o meio de comunicação mais eficiente da atualidade;
HTTP – HyperTextTransferProtocolProtocolo base para transmissão de dados na internet;Tudo é transferido em forma de texto (pouco eficiente para dados binários);Tudo é transferido em forma de documentos ou recursos;É a forma mais simples de transferir dados pela internet;
Feramentasdentro do FirefoxWebDeveloper;Yslow;Firebug;PageSpeed;
Tecnologias quentes no desenvolvimento webJava?ASP.NET?PHP?Django (Python)?RubyonRails (Ruby)?
Características ImportantesMinimalismo;Pouca burocracia;Resultados rápidos;Turnaround rápido;Integração com tecnologias RIA;
O que está em quedaConfigurações extensas;Início lento ou com vários artefatos antes do início do código;Poucas opções de componentes/plugins de terceiros;Código fechado;
Um blog utilizando RubyonRailsCuidado pra não se maravilhar demais
Dispositivosmóveis?Especializaçãoerrada?
AmbientesAndroid;iOS;Widows Mobile 7;Blackberry;Algumacoisa da Nokia;
Usos?Aplicaçõesquesincronizam dados entre celulares e apps web;Aplicaçõesfeitasespecialmenteparanavegadores de dispositivosmóveis;Aplicaçõesparadispositivosmóveisquesãoescritasutilizandotecnologias da web (JavaScript, HTML5, CSS);
Twitter for the iPhone
Tecnologias RIA – Rich Internet ApplicationsVolta dos fatclients;Aplicações web que emulam aplicações desktop;É possível gravar dados do lado do cliente;Runtimes normalmente se atualizam automaticamente nos navegadores;
Grooveshark - Flex
Problemas?Versões de runtimes diferentes == problemas diferentes pra debugar;Ocupam um pouco mais de memória e processador nas máquinas clientes;Nem sempre estão instalados e atualizados nas máquinas clientes;Novas linguagens, IDEs e ferramentas pra integrar ao processo;
HTML 5 – RIA sem os pluginsSuporte nativo a áudio e vídeo (royalties?)Engines melhores para JavaScriptV8 – ChromeSpidermonkey – FirefoxIE9CSS 3;Suporte nativo a SVG para desenhos vetoriais no browser;
Problemas?Quando vai ficar pronto?O IE vai implementar tudo certinho?Quando todos os outros IEs vão morrer?E os royalties do H.256?Quando tudo vai funcionar igual em todos os browsers? (Youtube ainda quebra no Chrome)
Tendências e linguagens de programaçãoProgramação funcional;Programação concorrente;Linguagens híbridas;Profissionais poliglotas;Projetos heterogêneos;
Concorrência e o futuroO clock dos processadores não consegue mais evoluir na mesma velocidade;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);Aplicações não concorrentes não vão conseguir fazer uso disso e vão continuar eternamente lentas;
Problemas de concorrência?Linguagens OO não são boas para programas concorrentes porque costumam direcionar as pessoas a utilizar memórias compartilhadas;Em linguagens puramente funcionais, não existe memória compartilhada;Linguagens que juntam ambos paradigmas são as mais cotadas para o futuro próximo:Scala;Closure;
Quando tudo o que você tem é um martelo, todos os problemas vão parecer pregosProfissionais poliglotas e projetos heterogêneos
InfraestruturaBancos de dados?Servidores web?Hosdedagem?Sistemas operacionais?Ambientes de execução?
Bancos de dadosBancos relacionais começando a dar sinais de velhice;Movimento NoSQL crescendo e aparecendo em grandes empresas;Várias opções de bancos de dados não-relacionais para resolver problemas do mundo da internet;
Problemas?Milhões de usuários produzindo bilhões de dados;Os mesmos usuários estão:Buscando;Alterando;Reajustando;E produzindo;...ainda mais informação;
Bancos de dados relacionais não são escaláveisRepositório central de infomações;Modelos arcaicos de replicação;Modelos arcaicos de conexão e extração de dados;Pouco flexíveis quanto a alteração da estrutura das informações (criar uma nova coluna naquela tabela com milhões de linhas? FUUUUUUU!);
Bancos de dados do movimento NoSQLNascidos na era da internet com um problema definido para resolver;Schema-less ou bem mais flexíveis quanto a alterações nos modelos;Replicação é funcionalidade padrão;Múltiplos servidores, sharding e particionamento/balanceamento são necessidades básicas;
Opções?CassandraFacebookTwitterAmazonSimpleDBPrecisa dizer? MongoDBTheNew York TimesJustin.tvCouchDB
Servidores webApache 2Panela velha é quem faz comida boa né...LighttpdLeve, seguro e bem comum na webNginxDireto do gelo da Rússia para o mundoProxiesPoundVarnishHAProxy
Cadê os outros?Tomcat?JBoss?IIS?Jetty?
HospedagemCompartilhada (piedade senhor, piedade)VPS - Virtual PrivateServersCloud realAmazonElastic Compute CloudCloud VPSRackspace
CompartilhadaO ambiente já está pronto;Você compartilha tudo com várias outras pessoas;Segurança? Acredite em Papai Noel também;Se você precisa de alguma coisa que foge do padrão...
VPS – Virtual Private ServerVocê escolhe o que vai ser instalado;Você configura o ambiente;Você cria contas e instala o que é necessário;Você faz tudo, mas o ambiente não é controlado externamente;Limites em consumo de memória, transferência e uso de processador;
Cloud real - 1O mundo é efêmero, você configura uma imagem inicial do servidor e sobe ele para executar um trabalho;A instância não tem armazenamento estático, o que estiver gravado nela se perde se ela for “desligada” ou sair do ar;É necessário “plugar” serviços de armazenamento as instâncias para manter dados entre a execução delas;
Cloud real - 2Perfeito para serviços “fireandforget”:Cálculos matemáticos longos;Processamento de algoritmos complexos;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;Hospedagem em um serviço desses não é para os fracos de coração;
Cloud VPSÉ um serviço de cloud que funciona como VPS;Você contrata uma instância em uma VPS e pode aumentar a instância ou crias novas conforme a sua necessidade;Normalmente disponibilizam APIs para acesso e criação de “fazendas de servidores” quando é necessário;Mais fácil de trabalhar quando o interesse é hospedagem;
Sistemas operacionaisWindows;Linux:RedHatOpenSUSEMadrivaUbuntuUnix-basedSolarisHP-UX
Ambientes de execuçãoCLR – Máquina Virtual do .NetMono – Máquina Virtual do .Net multiplataformaJava Virtual Machine – Máquina Virtual Java
CLR – CommonLanguageRuntimeAmbiente de execução Microsoft para o ambiente .Net;Disponível apenas no Windows;Integração forte com APIs disponíveis do Windows e forma preferida para desenvolvimento de aplicações nessa plataforma;
Projeto Mono - .Net MultiplataformaLeva o runtime do .Net para outras plataformas que não Windows;Costuma estar atrasado quando comparado com o CLR da Microsoft;Não implementa alguns pedaços do .Net Framework por questões jurídicas da Microsoft;Nem sempre apresenta o mesmo comportamento do CLR no Windows;
JVM – Java Virtual MachineAmbiente de execução comumente relacionado a linguagem de programação Java;Já tem um conjunto longo de linguagens executáveis:Ruby;PHP;Scala;Closure;Python (Jython);
Tendências em negóciosAplicações sociais;Aplicações dentro de redes sociais;Jogos em navegadores;SAAS – Software as a Service;
O mundo social ainda não morreuAplicações sociais continuam surgindo, conseguindo público e ganhando dinheiro:http://foursquare.com/http://justin.tv/http://twitter.com/http://shellfari.com/Novas aplicações focam em nichos específicos;Redes sociais “genéricas” não vão mais chamar a atenção;
devefazerU$ 238.65 milhõesde lucroem 2010
Aplicações dentro de redes sociaisOrkutBuddyPoke;Colheita Feliz;MiniFazenda;JogaCraque;Facebook:MafiaWars;FarmVille;
Jogos em navegadoresTravian;La Brute;BiteFight;Continua eternamente...
Software as a Service - 1Modelo de negócio para começar a produzir e vender software;Uso do software fica sempre atrelado ao pagamento de uma assinatura mensal ou taxa de uso;O fluxo de caixa se mantém constante enquanto os clientes estão usando/pagando;Economia de escala barateia os preços de assinatura;
Software as a service - 2Aplicações com pouca customização, normalmente são produtos de prateleira que são vendidos de forma diferente;Normalmente na forma de aplicações web (mais difícil de piratear e mais fácil de implantar atualizações);Normalmente voltados a pequenas e médias empresas;
Exercício – 30 minutosJuntar-se em grupos;Pensar em um produto SAAS;Definir:Público;Funcionalidades principais;Preços;Como atingir os clientes;Apresentar o produto;

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

  • 1.
    Introdução ao desenvolvimentoweb - 2Maurício Linhares – mauricio.linhares@gmail.com
  • 2.
  • 3.
    Vendendo o seucolega - DinâmicaJuntem-se em pares;Aprenda sobre o seu par (10 minutos);Forme uma estratégia para apresentá-lo em uma entrevista de emprego:Apresente-o;Determine suas capacidades;Demonstre porque ele é uma boa contratação;
  • 4.
    Os protocolos daInternetIPTCPUDPDNSPOP/SMTP/IMAPHTTP
  • 5.
    IP - InternetProtocol - RedeProtocolo baseado em datagramas;Entrega não garantida (besteffortdelivery);Pacotes podem chegar em ordem incorreta;Não é necessário haver conexão entre a origem e o destino;
  • 6.
    TCP – TransmissionControlProtocol- TransporteBaseado em conexão;Entrega garantida de dados;Ordenação dos dados entregues;Controle de fluxo;Controle de congestionamento;
  • 7.
    UDP – UserDatagramProtocol- TransporteSem conexão;Pacotes podem chegar na ordem incorreta;Pacotes podem não chegar do outro lado;O controle deve ser feito pela aplicação;
  • 8.
    DNS – DomainNameSystem - AplicaçãoTransforma nomes (hosts) em endereços IPs (e vice-versa);Simplifica a lembrança de endereços em redes (como a internet);Pode ser usado como uma forma de balancear a carga entre vários servidores;Servidores DNS raízes são a fonte oficial dos hosts, sem eles a internet pára;
  • 9.
    Qual o ipde www.josé.com?Qual o IP do DNS de josé.com?Qual o IP de www.jose.com?201.1.10.241.1.1.5
  • 10.
    POP/SMTP/IMAPProtocolos de trocade emails;Ainda o serviço mais utilizado da internet;Possível fonte de dados para aplicações web;Provavelmente o meio de comunicação mais eficiente da atualidade;
  • 11.
    HTTP – HyperTextTransferProtocolProtocolobase para transmissão de dados na internet;Tudo é transferido em forma de texto (pouco eficiente para dados binários);Tudo é transferido em forma de documentos ou recursos;É a forma mais simples de transferir dados pela internet;
  • 12.
  • 13.
    Tecnologias quentes nodesenvolvimento webJava?ASP.NET?PHP?Django (Python)?RubyonRails (Ruby)?
  • 14.
    Características ImportantesMinimalismo;Pouca burocracia;Resultadosrápidos;Turnaround rápido;Integração com tecnologias RIA;
  • 15.
    O que estáem quedaConfigurações extensas;Início lento ou com vários artefatos antes do início do código;Poucas opções de componentes/plugins de terceiros;Código fechado;
  • 16.
    Um blog utilizandoRubyonRailsCuidado pra não se maravilhar demais
  • 17.
  • 18.
  • 19.
    Usos?Aplicaçõesquesincronizam dados entrecelulares e apps web;Aplicaçõesfeitasespecialmenteparanavegadores de dispositivosmóveis;Aplicaçõesparadispositivosmóveisquesãoescritasutilizandotecnologias da web (JavaScript, HTML5, CSS);
  • 20.
  • 21.
    Tecnologias RIA –Rich Internet ApplicationsVolta dos fatclients;Aplicações web que emulam aplicações desktop;É possível gravar dados do lado do cliente;Runtimes normalmente se atualizam automaticamente nos navegadores;
  • 22.
  • 23.
    Problemas?Versões de runtimesdiferentes == problemas diferentes pra debugar;Ocupam um pouco mais de memória e processador nas máquinas clientes;Nem sempre estão instalados e atualizados nas máquinas clientes;Novas linguagens, IDEs e ferramentas pra integrar ao processo;
  • 24.
    HTML 5 –RIA sem os pluginsSuporte nativo a áudio e vídeo (royalties?)Engines melhores para JavaScriptV8 – ChromeSpidermonkey – FirefoxIE9CSS 3;Suporte nativo a SVG para desenhos vetoriais no browser;
  • 25.
    Problemas?Quando vai ficarpronto?O IE vai implementar tudo certinho?Quando todos os outros IEs vão morrer?E os royalties do H.256?Quando tudo vai funcionar igual em todos os browsers? (Youtube ainda quebra no Chrome)
  • 26.
    Tendências e linguagensde programaçãoProgramação funcional;Programação concorrente;Linguagens híbridas;Profissionais poliglotas;Projetos heterogêneos;
  • 27.
    Concorrência e ofuturoO clock dos processadores não consegue mais evoluir na mesma velocidade;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);Aplicações não concorrentes não vão conseguir fazer uso disso e vão continuar eternamente lentas;
  • 28.
    Problemas de concorrência?LinguagensOO não são boas para programas concorrentes porque costumam direcionar as pessoas a utilizar memórias compartilhadas;Em linguagens puramente funcionais, não existe memória compartilhada;Linguagens que juntam ambos paradigmas são as mais cotadas para o futuro próximo:Scala;Closure;
  • 29.
    Quando tudo oque você tem é um martelo, todos os problemas vão parecer pregosProfissionais poliglotas e projetos heterogêneos
  • 30.
    InfraestruturaBancos de dados?Servidoresweb?Hosdedagem?Sistemas operacionais?Ambientes de execução?
  • 31.
    Bancos de dadosBancosrelacionais começando a dar sinais de velhice;Movimento NoSQL crescendo e aparecendo em grandes empresas;Várias opções de bancos de dados não-relacionais para resolver problemas do mundo da internet;
  • 32.
    Problemas?Milhões de usuáriosproduzindo bilhões de dados;Os mesmos usuários estão:Buscando;Alterando;Reajustando;E produzindo;...ainda mais informação;
  • 33.
    Bancos de dadosrelacionais não são escaláveisRepositório central de infomações;Modelos arcaicos de replicação;Modelos arcaicos de conexão e extração de dados;Pouco flexíveis quanto a alteração da estrutura das informações (criar uma nova coluna naquela tabela com milhões de linhas? FUUUUUUU!);
  • 34.
    Bancos de dadosdo movimento NoSQLNascidos na era da internet com um problema definido para resolver;Schema-less ou bem mais flexíveis quanto a alterações nos modelos;Replicação é funcionalidade padrão;Múltiplos servidores, sharding e particionamento/balanceamento são necessidades básicas;
  • 35.
  • 36.
    Servidores webApache 2Panelavelha é quem faz comida boa né...LighttpdLeve, seguro e bem comum na webNginxDireto do gelo da Rússia para o mundoProxiesPoundVarnishHAProxy
  • 37.
  • 38.
    HospedagemCompartilhada (piedade senhor,piedade)VPS - Virtual PrivateServersCloud realAmazonElastic Compute CloudCloud VPSRackspace
  • 39.
    CompartilhadaO ambiente jáestá pronto;Você compartilha tudo com várias outras pessoas;Segurança? Acredite em Papai Noel também;Se você precisa de alguma coisa que foge do padrão...
  • 40.
    VPS – VirtualPrivate ServerVocê escolhe o que vai ser instalado;Você configura o ambiente;Você cria contas e instala o que é necessário;Você faz tudo, mas o ambiente não é controlado externamente;Limites em consumo de memória, transferência e uso de processador;
  • 41.
    Cloud real -1O mundo é efêmero, você configura uma imagem inicial do servidor e sobe ele para executar um trabalho;A instância não tem armazenamento estático, o que estiver gravado nela se perde se ela for “desligada” ou sair do ar;É necessário “plugar” serviços de armazenamento as instâncias para manter dados entre a execução delas;
  • 42.
    Cloud real -2Perfeito para serviços “fireandforget”:Cálculos matemáticos longos;Processamento de algoritmos complexos;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;Hospedagem em um serviço desses não é para os fracos de coração;
  • 43.
    Cloud VPSÉ umserviço de cloud que funciona como VPS;Você contrata uma instância em uma VPS e pode aumentar a instância ou crias novas conforme a sua necessidade;Normalmente disponibilizam APIs para acesso e criação de “fazendas de servidores” quando é necessário;Mais fácil de trabalhar quando o interesse é hospedagem;
  • 44.
  • 45.
    Ambientes de execuçãoCLR– Máquina Virtual do .NetMono – Máquina Virtual do .Net multiplataformaJava Virtual Machine – Máquina Virtual Java
  • 46.
    CLR – CommonLanguageRuntimeAmbientede execução Microsoft para o ambiente .Net;Disponível apenas no Windows;Integração forte com APIs disponíveis do Windows e forma preferida para desenvolvimento de aplicações nessa plataforma;
  • 47.
    Projeto Mono -.Net MultiplataformaLeva o runtime do .Net para outras plataformas que não Windows;Costuma estar atrasado quando comparado com o CLR da Microsoft;Não implementa alguns pedaços do .Net Framework por questões jurídicas da Microsoft;Nem sempre apresenta o mesmo comportamento do CLR no Windows;
  • 48.
    JVM – JavaVirtual MachineAmbiente de execução comumente relacionado a linguagem de programação Java;Já tem um conjunto longo de linguagens executáveis:Ruby;PHP;Scala;Closure;Python (Jython);
  • 49.
    Tendências em negóciosAplicaçõessociais;Aplicações dentro de redes sociais;Jogos em navegadores;SAAS – Software as a Service;
  • 50.
    O mundo socialainda não morreuAplicações sociais continuam surgindo, conseguindo público e ganhando dinheiro:http://foursquare.com/http://justin.tv/http://twitter.com/http://shellfari.com/Novas aplicações focam em nichos específicos;Redes sociais “genéricas” não vão mais chamar a atenção;
  • 51.
  • 52.
    Aplicações dentro deredes sociaisOrkutBuddyPoke;Colheita Feliz;MiniFazenda;JogaCraque;Facebook:MafiaWars;FarmVille;
  • 53.
    Jogos em navegadoresTravian;LaBrute;BiteFight;Continua eternamente...
  • 54.
    Software as aService - 1Modelo de negócio para começar a produzir e vender software;Uso do software fica sempre atrelado ao pagamento de uma assinatura mensal ou taxa de uso;O fluxo de caixa se mantém constante enquanto os clientes estão usando/pagando;Economia de escala barateia os preços de assinatura;
  • 55.
    Software as aservice - 2Aplicações com pouca customização, normalmente são produtos de prateleira que são vendidos de forma diferente;Normalmente na forma de aplicações web (mais difícil de piratear e mais fácil de implantar atualizações);Normalmente voltados a pequenas e médias empresas;
  • 56.
    Exercício – 30minutosJuntar-se em grupos;Pensar em um produto SAAS;Definir:Público;Funcionalidades principais;Preços;Como atingir os clientes;Apresentar o produto;