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

Preview:

Citation preview

INTRODUÇÃO AO DESENVOLVIMENTO WEB - 2Maurício Linhares – mauricio.linhares@gmail.com

QUEM SOU EU?

Desenvolvedor na OfficeDrop.com;

Instrutor da LinuxFi;

Consultor em metodologias ágeis;

JUG Leader do PBJUG;

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;

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

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;

FERAMENTAS DENTRO DO FIREFOX

WebDeveloper;

Yslow;

Firebug;

PageSpeed;

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 RAILSCuidado pra não se maravilhar demais

DISPOSITIVOS MÓVEIS?

Especialização errada?

AMBIENTES

Android;

iOS;

Widows Mobile 7;

Blackberry;

Alguma coisa da Nokia;

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

TWITTER FOR THE IPHONE

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 PREGOSProfissionais 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 Facebook Twitter

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;

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

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;

Recommended