O documento resume tópicos sobre desenvolvimento web, incluindo:
1) Uma dinâmica para apresentar colegas em potenciais entrevistas de emprego;
2) Uma explicação sobre os principais protocolos da Internet como IP, TCP, UDP, DNS, POP, SMTP, IMAP e HTTP;
3) Uma discussão sobre tendências em tecnologias como dispositivos móveis, RIA, HTML5 e linguagens de programação;
4) Uma revisão de tópicos de infraestrutura como bancos de dados, servidores web
3. 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;
5. IP - Internet Protocol - Rede Protocolo 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 - Transporte Baseado em conexão; Entrega garantida de dados; Ordenação dos dados entregues; Controle de fluxo; Controle de congestionamento;
7. UDP – UserDatagramProtocol - 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;
8. DNS – DomainName 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;
9. 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.24 1.1.1.5
10. 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;
11. HTTP – HyperTextTransferProtocol 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;
15. 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;
19. Usos? Aplicaçõesquesincronizam dados entre celulares e apps web; Aplicaçõesfeitasespecialmenteparanavegadores de dispositivosmóveis; Aplicaçõesparadispositivosmóveisquesãoescritasutilizandotecnologias da web (JavaScript, HTML5, CSS);
21. Tecnologias RIA – Rich Internet Applications Volta 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;
23. 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;
24. 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;
25. 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)
26. Tendências e linguagens de programação Programação funcional; Programação concorrente; Linguagens híbridas; Profissionais poliglotas; Projetos heterogêneos;
27. 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;
28. 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;
29. Quando tudo o que você tem é um martelo, todos os problemas vão parecer pregos Profissionais poliglotas e projetos heterogêneos
30. Infraestrutura Bancos de dados? Servidores web? Hosdedagem? Sistemas operacionais? Ambientes de execução?
31. 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;
32. 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;
33. 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!);
34. 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;
35. Opções? Cassandra Facebook Twitter AmazonSimpleDB Precisa dizer? MongoDB TheNew York Times Justin.tv CouchDB
36. 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
39. 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...
40. 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;
41. 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;
42. Cloud real - 2 Perfeito 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 É 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;
45. Ambientes de execução CLR – Máquina Virtual do .Net Mono – Máquina Virtual do .Net multiplataforma Java Virtual Machine – Máquina Virtual Java
46. CLR – CommonLanguageRuntime 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;
47. 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;
48. 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);
49. Tendências em negócios Aplicações sociais; Aplicações dentro de redes sociais; Jogos em navegadores; SAAS – Software as a Service;
50. 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;
54. 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;
55. 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;
56. 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;