Transcript
Page 1: IntroduçãO Ao Desenvolvimento Web   2

INTRODUÇÃO AO DESENVOLVIMENTO

WEB - 2Maurício Linhares – [email protected]

Page 2: IntroduçãO Ao Desenvolvimento Web   2

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 3: IntroduçãO Ao Desenvolvimento Web   2

OS PROTOCOLOS DA INTERNET

IP

TCP

UDP

DNS

POP/SMTP/IMAP

HTTP

Page 4: IntroduçãO Ao Desenvolvimento Web   2

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 5: IntroduçãO Ao Desenvolvimento Web   2

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 6: IntroduçãO Ao Desenvolvimento Web   2

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 7: IntroduçãO Ao Desenvolvimento Web   2

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 8: IntroduçãO Ao Desenvolvimento Web   2

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 9: IntroduçãO Ao Desenvolvimento Web   2

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 10: IntroduçãO Ao Desenvolvimento Web   2

TECNOLOGIAS QUENTES NO

DESENVOLVIMENTO WEB

Java?

ASP.NET?

PHP?

Django (Python)?

Ruby on Rails (Ruby)?

Page 11: IntroduçãO Ao Desenvolvimento Web   2

CARACTERÍSTICAS IMPORTANTES

Minimalismo;

Pouca burocracia;

Resultados rápidos;

Turnaround rápido;

Integração com tecnologias RIA;

Page 12: IntroduçãO Ao Desenvolvimento Web   2

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 13: IntroduçãO Ao Desenvolvimento Web   2

UM BLOG UTILIZANDO RUBY ON

RAILS

Cuidado pra não se maravilhar demais

Page 14: IntroduçãO Ao Desenvolvimento Web   2

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 15: IntroduçãO Ao Desenvolvimento Web   2

GROOVESHARK - FLEX

Page 16: IntroduçãO Ao Desenvolvimento Web   2

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 17: IntroduçãO Ao Desenvolvimento Web   2

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 18: IntroduçãO Ao Desenvolvimento Web   2

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 19: IntroduçãO Ao Desenvolvimento Web   2

TENDÊNCIAS E LINGUAGENS DE

PROGRAMAÇÃO

Programação funcional;

Programação concorrente;

Linguagens híbridas;

Profissionais poliglotas;

Projetos heterogêneos;

Page 20: IntroduçãO Ao Desenvolvimento Web   2

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 21: IntroduçãO Ao Desenvolvimento Web   2

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 22: IntroduçãO Ao Desenvolvimento Web   2

QUANDO TUDO O QUE VOCÊ TEM É

UM MARTELO, TODOS OS PROBLEMAS

VÃO PARECER PREGOS

Profissionais poliglotas e projetos heterogêneos

Page 23: IntroduçãO Ao Desenvolvimento Web   2

INFRAESTRUTURA

Bancos de dados?

Servidores web?

Hosdedagem?

Sistemas operacionais?

Ambientes de execução?

Page 24: IntroduçãO Ao Desenvolvimento Web   2

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 25: IntroduçãO Ao Desenvolvimento Web   2

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 26: IntroduçãO Ao Desenvolvimento Web   2

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 27: IntroduçãO Ao Desenvolvimento Web   2

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 28: IntroduçãO Ao Desenvolvimento Web   2

OPÇÕES?

Cassandra

Facebook

Twitter

Amazon SimpleDB

Precisa dizer?

MongoDB

The New York Times

Justin.tv

CouchDB

Page 29: IntroduçãO Ao Desenvolvimento Web   2

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 30: IntroduçãO Ao Desenvolvimento Web   2

CADÊ OS OUTROS?

Tomcat?

JBoss?

IIS?

Jetty?

Page 31: IntroduçãO Ao Desenvolvimento Web   2

HOSPEDAGEM

Compartilhada (piedade senhor, piedade)

VPS - Virtual Private Servers

Cloud real

Amazon Elastic Compute Cloud

Cloud VPS

Rackspace

Page 32: IntroduçãO Ao Desenvolvimento Web   2

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 33: IntroduçãO Ao Desenvolvimento Web   2

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 34: IntroduçãO Ao Desenvolvimento Web   2

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 35: IntroduçãO Ao Desenvolvimento Web   2

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 36: IntroduçãO Ao Desenvolvimento Web   2

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 37: IntroduçãO Ao Desenvolvimento Web   2

SISTEMAS OPERACIONAIS

Windows;

Linux:

RedHat

OpenSUSE

Madriva

Ubuntu

Unix-based

Solaris

HP-UX

Page 38: IntroduçãO Ao Desenvolvimento Web   2

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 39: IntroduçãO Ao Desenvolvimento Web   2

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 40: IntroduçãO Ao Desenvolvimento Web   2

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 41: IntroduçãO Ao Desenvolvimento Web   2

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 42: IntroduçãO Ao Desenvolvimento Web   2

TENDÊNCIAS EM NEGÓCIOS

Aplicações sociais;

Aplicações dentro de redes sociais;

Jogos em navegadores;

SAAS – Software as a Service;

Page 43: IntroduçãO Ao Desenvolvimento Web   2

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 44: IntroduçãO Ao Desenvolvimento Web   2

APLICAÇÕES DENTRO DE REDES SOCIAIS

Orkut

BuddyPoke;

Colheita Feliz;

MiniFazenda;

JogaCraque;

Facebook:

Mafia Wars;

FarmVille;

Page 45: IntroduçãO Ao Desenvolvimento Web   2

JOGOS EM NAVEGADORES

Travian;

La Brute;

BiteFight;

Continua eternamente...

Page 46: IntroduçãO Ao Desenvolvimento Web   2

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 47: IntroduçãO Ao Desenvolvimento Web   2

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 48: IntroduçãO Ao Desenvolvimento Web   2

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;


Recommended