IntroduçãO Ao Desenvolvimento Web 2
-
Upload
mauricio-linhares -
Category
Documents
-
view
813 -
download
4
Transcript of IntroduçãO Ao Desenvolvimento Web 2
INTRODUÇÃO AO DESENVOLVIMENTO
WEB - 2Maurício Linhares – [email protected]
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;
OS PROTOCOLOS DA INTERNET
IP
TCP
UDP
DNS
POP/SMTP/IMAP
HTTP
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;
TCP – TRANSMISSION CONTROL PROTOCOL -
TRANSPORTE
Baseado em conexão;
Entrega garantida de dados;
Ordenação dos dados entregues;
Controle de fluxo;
Controle de congestionamento;
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;
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;
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;
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;
TECNOLOGIAS QUENTES NO
DESENVOLVIMENTO WEB
Java?
ASP.NET?
PHP?
Django (Python)?
Ruby on Rails (Ruby)?
CARACTERÍSTICAS IMPORTANTES
Minimalismo;
Pouca burocracia;
Resultados rápidos;
Turnaround rápido;
Integração com tecnologias RIA;
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;
UM BLOG UTILIZANDO RUBY ON
RAILS
Cuidado pra não se maravilhar demais
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;
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 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;
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ÇÃO
Programação funcional;
Programação concorrente;
Linguagens híbridas;
Profissionais poliglotas;
Projetos heterogêneos;
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;
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 PREGOS
Profissionais poliglotas e projetos heterogêneos
INFRAESTRUTURA
Bancos de dados?
Servidores web?
Hosdedagem?
Sistemas operacionais?
Ambientes de execução?
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;
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Á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!);
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;
OPÇÕES?
Cassandra
Amazon SimpleDB
Precisa dizer?
MongoDB
The New York Times
Justin.tv
CouchDB
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
CADÊ OS OUTROS?
Tomcat?
JBoss?
IIS?
Jetty?
HOSPEDAGEM
Compartilhada (piedade senhor, piedade)
VPS - Virtual Private Servers
Cloud real
Amazon Elastic Compute Cloud
Cloud VPS
Rackspace
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...
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;
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;
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;
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 OPERACIONAIS
Windows;
Linux:
RedHat
OpenSUSE
Madriva
Ubuntu
Unix-based
Solaris
HP-UX
AMBIENTES DE EXECUÇÃO
CLR – Máquina Virtual do .Net
Mono – Máquina Virtual do .Net multiplataforma
Java Virtual Machine – Máquina Virtual Java
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;
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;
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);
TENDÊNCIAS EM NEGÓCIOS
Aplicações sociais;
Aplicações dentro de redes sociais;
Jogos em navegadores;
SAAS – Software as a Service;
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;
APLICAÇÕES DENTRO DE REDES SOCIAIS
Orkut
BuddyPoke;
Colheita Feliz;
MiniFazenda;
JogaCraque;
Facebook:
Mafia Wars;
FarmVille;
JOGOS EM NAVEGADORES
Travian;
La Brute;
BiteFight;
Continua eternamente...
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;
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;
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;