56
INTRODUÇÃO AO DESENVOLVIMENTO WEB - 2 Maurício Linhares – [email protected]

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

Embed Size (px)

Citation preview

Page 1: Introdução ao desenvolvimento web - 2 - iDez 2010

INTRODUÇÃO AO DESENVOLVIMENTO WEB - 2Maurício Linhares – [email protected]

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

QUEM SOU EU?

Desenvolvedor na OfficeDrop.com;

Instrutor da LinuxFi;

Consultor em metodologias ágeis;

JUG Leader do PBJUG;

Page 3: Introdução ao desenvolvimento web - 2 - iDez 2010

VENDENDO O SEU COLEGA - DINÂMICA

Juntem-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;

Page 4: Introdução ao desenvolvimento web - 2 - iDez 2010

OS PROTOCOLOS DA INTERNET

IP

TCP

UDP

DNS

POP/SMTP/IMAP

HTTP

Page 5: Introdução ao desenvolvimento web - 2 - iDez 2010

IP - INTERNET PROTOCOL - REDE

Protocolo baseado em datagramas;

Entrega não garantida (best effort delivery);

Pacotes podem chegar em ordem incorreta;

Não é necessário haver conexão entre a origem e o destino;

Page 6: Introdução ao desenvolvimento web - 2 - iDez 2010

TCP – TRANSMISSION CONTROL PROTOCOL - TRANSPORTE

Baseado em conexão;

Entrega garantida de dados;

Ordenação dos dados entregues;

Controle de fluxo;

Controle de congestionamento;

Page 7: Introdução ao desenvolvimento web - 2 - iDez 2010

UDP – USER DATAGRAM PROTOCOL - TRANSPORTE

Sem conexão;

Pacotes podem chegar na ordem incorreta;

Pacotes podem não chegar do outro lado;

O controle deve ser feito pela aplicação;

Page 8: Introdução ao desenvolvimento web - 2 - iDez 2010

DNS – DOMAIN NAME SYSTEM - APLICAÇÃO

Transforma 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;

Page 9: Introdução ao desenvolvimento web - 2 - iDez 2010

DNS no provedor

de internet

Cliente quer acessar

josé.com

Servidor de DNS

de josé.com

Servidor de DNS *.com

Qual o ip de www.josé.com?

Qual o IP do DNS de josé.com?

1.1.1.5

Qual o IP de www.jose.com?

201.1.10.24

Page 10: Introdução ao desenvolvimento web - 2 - iDez 2010

POP/SMTP/IMAP

Protocolos 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;

Page 11: Introdução ao desenvolvimento web - 2 - iDez 2010

HTTP – HYPER TEXT TRANSFER PROTOCOL

Protocolo 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;

Page 12: Introdução ao desenvolvimento web - 2 - iDez 2010

FERAMENTAS DENTRO DO FIREFOX

WebDeveloper;

Yslow;

Firebug;

PageSpeed;

Page 13: Introdução ao desenvolvimento web - 2 - iDez 2010

TECNOLOGIAS QUENTES NO DESENVOLVIMENTO WEB

Java?

ASP.NET?

PHP?

Django (Python)?

Ruby on Rails (Ruby)?

Page 14: Introdução ao desenvolvimento web - 2 - iDez 2010

CARACTERÍSTICAS IMPORTANTES

Minimalismo;

Pouca burocracia;

Resultados rápidos;

Turnaround rápido;

Integração com tecnologias RIA;

Page 15: Introdução ao desenvolvimento web - 2 - iDez 2010

O QUE ESTÁ EM QUEDA

Configuraçõ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;

Page 16: Introdução ao desenvolvimento web - 2 - iDez 2010

UM BLOG UTILIZANDO RUBY ON RAILSCuidado pra não se maravilhar demais

Page 17: Introdução ao desenvolvimento web - 2 - iDez 2010

DISPOSITIVOS MÓVEIS?

Especialização errada?

Page 18: Introdução ao desenvolvimento web - 2 - iDez 2010

AMBIENTES

Android;

iOS;

Widows Mobile 7;

Blackberry;

Alguma coisa da Nokia;

Page 19: Introdução ao desenvolvimento web - 2 - iDez 2010

USOS?

Aplicações que sincronizam dados entre celulares e apps web;

Aplicações feitas especialmente para navegadores de dispositivos móveis;

Aplicações para dispositivos móveis que são escritas utilizando tecnologias da web (JavaScript, HTML5, CSS);

Page 20: Introdução ao desenvolvimento web - 2 - iDez 2010

TWITTER FOR THE IPHONE

Page 21: Introdução ao desenvolvimento web - 2 - iDez 2010

TECNOLOGIAS RIA – RICH INTERNET APPLICATIONS

Volta dos fat clients;

Aplicações web que emulam aplicações desktop;

É possível gravar dados do lado do cliente;

Runtimes normalmente se atualizam automaticamente nos navegadores;

Page 22: Introdução ao desenvolvimento web - 2 - iDez 2010

GROOVESHARK - FLEX

Page 23: Introdução ao desenvolvimento web - 2 - iDez 2010

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;

Page 24: Introdução ao desenvolvimento web - 2 - iDez 2010

HTML 5 – RIA SEM OS PLUGINS

Suporte nativo a áudio e vídeo (royalties?)

Engines melhores para JavaScript V8 – Chrome Spidermonkey – Firefox IE9

CSS 3;

Suporte nativo a SVG para desenhos vetoriais no browser;

Page 25: Introdução ao desenvolvimento web - 2 - iDez 2010

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)

Page 26: Introdução ao desenvolvimento web - 2 - iDez 2010

TENDÊNCIAS E LINGUAGENS DE PROGRAMAÇÃO

Programação funcional;

Programação concorrente;

Linguagens híbridas;

Profissionais poliglotas;

Projetos heterogêneos;

Page 27: Introdução ao desenvolvimento web - 2 - iDez 2010

CONCORRÊNCIA E O FUTURO

O 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;

Page 28: Introdução ao desenvolvimento web - 2 - iDez 2010

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;

Page 29: Introdução ao desenvolvimento web - 2 - iDez 2010

QUANDO TUDO O QUE VOCÊ TEM É UM MARTELO, TODOS OS PROBLEMAS VÃO PARECER PREGOSProfissionais poliglotas e projetos heterogêneos

Page 30: Introdução ao desenvolvimento web - 2 - iDez 2010

INFRAESTRUTURA

Bancos de dados?

Servidores web?

Hosdedagem?

Sistemas operacionais?

Ambientes de execução?

Page 31: Introdução ao desenvolvimento web - 2 - iDez 2010

BANCOS DE DADOS

Bancos 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;

Page 32: Introdução ao desenvolvimento web - 2 - iDez 2010

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;

Page 33: Introdução ao desenvolvimento web - 2 - iDez 2010

BANCOS DE DADOS RELACIONAIS NÃO SÃO ESCALÁVEIS

Repositó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!);

Page 34: Introdução ao desenvolvimento web - 2 - iDez 2010

BANCOS DE DADOS DO MOVIMENTO NOSQL

Nascidos 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;

Page 35: Introdução ao desenvolvimento web - 2 - iDez 2010

OPÇÕES?

Cassandra Facebook Twitter

Amazon SimpleDB Precisa dizer?

MongoDB The New York Times Justin.tv

CouchDB

Page 36: Introdução ao desenvolvimento web - 2 - iDez 2010

SERVIDORES WEB

Apache 2 Panela velha é quem faz comida boa né...

Lighttpd Leve, seguro e bem comum na web

Nginx Direto do gelo da Rússia para o mundo

Proxies Pound Varnish HAProxy

Page 37: Introdução ao desenvolvimento web - 2 - iDez 2010

CADÊ OS OUTROS?

Tomcat?

JBoss?

IIS?

Jetty?

Page 38: Introdução ao desenvolvimento web - 2 - iDez 2010

HOSPEDAGEM

Compartilhada (piedade senhor, piedade)

VPS - Virtual Private Servers

Cloud real Amazon Elastic Compute Cloud

Cloud VPS Rackspace

Page 39: Introdução ao desenvolvimento web - 2 - iDez 2010

COMPARTILHADA

O 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...

Page 40: Introdução ao desenvolvimento web - 2 - iDez 2010

VPS – VIRTUAL PRIVATE SERVER

Você 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;

Page 41: Introdução ao desenvolvimento web - 2 - iDez 2010

CLOUD REAL - 1

O 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;

Page 42: Introdução ao desenvolvimento web - 2 - iDez 2010

CLOUD REAL - 2

Perfeito para serviços “fire and forget”: 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;

Page 43: Introdução ao desenvolvimento web - 2 - iDez 2010

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;

Page 44: Introdução ao desenvolvimento web - 2 - iDez 2010

SISTEMAS OPERACIONAIS

Windows;

Linux: RedHat OpenSUSE Madriva Ubuntu

Unix-based Solaris HP-UX

Page 45: Introdução ao desenvolvimento web - 2 - iDez 2010

AMBIENTES DE EXECUÇÃO

CLR – Máquina Virtual do .Net

Mono – Máquina Virtual do .Net multiplataforma

Java Virtual Machine – Máquina Virtual Java

Page 46: Introdução ao desenvolvimento web - 2 - iDez 2010

CLR – COMMON LANGUAGE RUNTIME

Ambiente 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;

Page 47: Introdução ao desenvolvimento web - 2 - iDez 2010

PROJETO MONO - .NET MULTIPLATAFORMA

Leva 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;

Page 48: Introdução ao desenvolvimento web - 2 - iDez 2010

JVM – JAVA VIRTUAL MACHINE

Ambiente 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);

Page 49: Introdução ao desenvolvimento web - 2 - iDez 2010

TENDÊNCIAS EM NEGÓCIOS

Aplicações sociais;

Aplicações dentro de redes sociais;

Jogos em navegadores;

SAAS – Software as a Service;

Page 50: Introdução ao desenvolvimento web - 2 - iDez 2010

O MUNDO SOCIAL AINDA NÃO MORREU

Aplicaçõ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;

Page 51: Introdução ao desenvolvimento web - 2 - iDez 2010

deve fazer U$ 238.65 milhões de lucro em 2010

Page 52: Introdução ao desenvolvimento web - 2 - iDez 2010

APLICAÇÕES DENTRO DE REDES SOCIAIS

Orkut BuddyPoke; Colheita Feliz; MiniFazenda; JogaCraque;

Facebook: Mafia Wars; FarmVille;

Page 53: Introdução ao desenvolvimento web - 2 - iDez 2010

JOGOS EM NAVEGADORES

Travian;

La Brute;

BiteFight;

Continua eternamente...

Page 54: Introdução ao desenvolvimento web - 2 - iDez 2010

SOFTWARE AS A SERVICE - 1

Modelo 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;

Page 55: Introdução ao desenvolvimento web - 2 - iDez 2010

SOFTWARE AS A SERVICE - 2

Aplicaçõ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;

Page 56: Introdução ao desenvolvimento web - 2 - iDez 2010

EXERCÍCIO – 30 MINUTOS

Juntar-se em grupos;

Pensar em um produto SAAS;

Definir: Público; Funcionalidades principais; Preços; Como atingir os clientes;

Apresentar o produto;