Este documento fornece um resumo da história dos sistemas computacionais desde os primeiros computadores elétricos até a era atual da computação em nuvem. Ele discute como as inovações em hardware, software e arquitetura de rede permitiram a popularização dos computadores e o surgimento de novas abordagens como client-server, web dinâmica e computação em nuvem. O documento também destaca os desafios atuais como a crescente quantidade de dados e a necessidade de tolerância a falhas em sistemas distribuídos e complexos.
4. Quem eu NÃO Sou
- não sou programador
- não sou cientista
- não sou professor de português
- não sou historiador
Sou apenas um “velho” sysadmin
- "Surge" pode significar "se tornou popular em dado momento"
ou "agora é hora de falar sobre isso na apresentação"
- "Hacker" aqui é o Cracker, o malvado
- A sequencia dos fatos não são precisas
5. 1 - Começo, primeiro computador elétrico
- Computadores para propósitos gerais
- Caros $$$$ ... e fracos (CPU, memória, I/O)
- Sem Disco
- Somente linguagem de máquina
- Somente cientistas, só para governos e grandes instituições
- Bugs: insetos de verdade
Sem rede !!!
6. 2 – Era Comercial, computadores corporativos
Empresas: Menos CPU e Mais Armanezamento
- Tecnologia de teares de 1795 para entrada de dados, armazenamento e processamento
- Tempo de CPU muito caro, programadores não tinham acesso aos computadores
- Programação em lote (Batch) = aproveitamento de tempo de CPU
- Mais simples = Mão de obra
- Menores Preços = Mais fornecedores comerciais
- Surge o LEO,
o primeiro computador corporativo, meu nome ;)
Primeira "modinha":
Batch vs Multiprogramação
(Cpu vs Pessoas)
8. 3 - Interpretadores
Abstração de linguagem, melhorar produtividade
1 - Carrega o interpretador dos cartões para a memória
2 - Carrega o código dos cartões
3 - Executa o código na memória
4 - Imprime (na impressora) os resultados
5 – Remove/Limpa a memória para o próximo lote
- Surgimento de fitas magnéticas
- Começo da abstração de hardware (System Calls)
primórdio dos “frameworks”
- Mão de obra de estudantes
10. 4 - Circuito Integrado
Começo da Lei de Moore
- Redução do tamanho
- Mais poder de processamento !!!
- Mais memória !!!
- Mais armazenamento !!!
- Mais I/O (velocidade de transferência de dados)
- Componentes menores = Mais fáceis de produzir = Maior Quantidade
= Custo Menor = Menores Preços
- Popularização = Mão de obra
11. E o que fazer com tanto
poder ?
- Multi-tarefa virtual, divisão do tempo
12. 5 - Multi-programação
Modinha virou realidade
- "THE Multiprogramming System", muti-tarefa
- THE introduziu bugs e a coexistência com eles
- THE introduziu os níveis de execução
- THE introduziu a paginação de memória
- Surge a camada de abstração do sistema de arquivos,
pedaços de memória viraram arquivos persistentes
- Surge a comunicação inter-processos (IPC)
- Conceitos de manipulação de erro amadurecem
13. System Levels
+Access Control
+Bugs
+Complexity
=HACKERS !!!
14. 6 - Redes
Multi-programming necessitava de multi terminais
- Mais acesso = mais mão-de-obra
- Popularização entre universidades
- Mais criatividade e colaboração
- Mais Hackers
- Mais Bugs
15. 7 - Mainframes
Pilhas de CPUs
- Tempo é dinheiro:
hardware tolerante a falhas
- Redes escassas contribuíram para
centralização
- Custos centralizados de manutenção
- Começo da Virtualização
- Surgem os hypervisors
- Mão de obra super especializada
16. 8 - PC
Terminal crescido
- Necessidades básicas de empresas
- Jogos !
- Podia ser conectado em um computador central
- Sem time-sharing, sem multi-tasking
- Surge o DBM, banco de dados de chave-valor,
para persistir memória no disco.
Configurações, ranking dos jogos, etc.
- Microsoft lança seu popular e barato
Sistema Operacional para pequenas máquinas
17. 9 - Caos
Conhecimento + Redes + Bugs + Popularização = Segurança no Hardware
a MMU
MMU mapeia a memória para criar/traduzir endereços virtuais de memória de
modo que os programas não consigam roubar espaços um dos outros
... e a lei era: computadores reduzem a duplicação de dados
(armazenamento era caro...)
RAM ainda uma fração do armazenamento permanente
18. 10 - Popularização
- Redes mais longas e melhores
- Mais RAM, Mais Storage
- Mais Bugs e mais hackers
- Conhecimento = Mais mão-de-obra
- Melhores preços !!
Surge o banco de dados relacional (SQL)
Surgem os softwares livres e de código fonte aberto
19. 11 - Cliente/Servidor (era da latência)
Máquinas pequenas realizando taredas específicas de modo centralizado
- Parte do Processamento local
- Decadência dos Mainframes
- Surge o roteador: INTERNET virou realidade!
- Websites pequenos e estáticos
- Arquitetura mais simples, mais fornecedores
- Internet = fácil acesso ao conhecimento
- Mão de obra mais cara que o tempo de CPU = maior foco em produtividade
21. 12 - Web dinâmica
$$$$$$$$
- Apache inventa os Virtual Hosts: 1 computador = vários sites
- Surge o PHP: programação simples para internet
Estilo Abre-roda-morre*milhões = Alta escalabilidade
- Surge o RPC = Comunicação Remota de Processos
- O conceito da MMU para virtualizar IPs: Ip Masq
1 IP = diversos computadores conectados
- Muita mão-de-obra
criando milhões de pequenos e simples sistemas web
- Mais bugs, mais hackers
22. Shopping = Dinheiro
Tempo é Dinheiro
Tempo = Alta Disponibilidade
Shopping = Experiência do Usuário
24. 13 - Caos Físico
Morte da Lei de Moore
- Solução: inovações no software
- Discos maiores, porém lentos, não acompanham velocidade do CPU
Porém, RAMs maiores, mais rápidas e mais baratas!
- Nomes sofisticados e estranhos para especialistas em informática:
- Engenheiro
- Arquiteto
- "Operador" agora é "System Administrator”
- “Governança em TI”
- Lei de Moore virou um Objetivo, e ter objetivos é muito bom
25. 14 - Paralelismo crucial
Único jeito de aumentar o poder de processamento
- Sistemas Multi CPUs, CPUs multi core, Cores multi threaded
- Real multi-tasking popular !!! (Multi-tarefa real)
- Muitos, muitos, muitos bugs
- Memórias pra todo lado, como buffers e caches:
- File systems buffers and caches
- CPU cache
- HD buffers and caches
- Disc controllers buffers and caches
Lei de Amdahl: "...se 95% do programa pode ser paralelizado, o aumento
teórico de performance máximo atingido usando paralelismo será de 20x...
não importa quantos processadores serão usados."
26. ... e depois de tanto tempo, o Windows aprendeu como
usar os níveis de execução, a memória virtual e conseguiu
diminuir os travamentos do sistema :)
27. 15 - Virtualização
- Multi-processamento = Popularização de Virtualização
- Consolidação de vários sistemas em uma única máquina
- Fácil de rodar testes e POCs
- Facilidade de criar ambientes de contingência
Porém: I/O de computador comum e dividido em várias máquinas virtuais :(
29. Mainframes trabalham com paralelismo, caches de
hardware, virtualização, multi-core e multi-cpus há 50
anos, pelos menos motivos.
(porém com latência de I/O menor )
30. 16 - Situação atual
Quantidade de dados crescendo absurdamente
- Poder de processamento não é suficientemente
- Armazenamento e largura de banda crescendo, porém latência diminuindo
em taxas muito baixas
Significando: Banco de dados central é o gargalo e atual vilão.
Largura de banda = tamanho total de operações em um espaço de tempo
Latência = tempo mínimo de uma operação
Banco de dados fazem ~ milhares de pequenas operações de I/O por
segundo. E muitas operações que não deveriam ser colocadas em caches
e buffers
31. 17 - Como os softwares podem ajudar?
- Separando os acessos a disco?
- Ajustar tudo na memória?
- Quebrar a lei de não duplicar dados para evitar acessos a disco ?
Tudo isso + camada de rede em tudo (Federation)
- Estilo PHP clássico ficando obsoleto
- sem fácil/barato compartilhamento de memória
- sem fácil/barata comunicação entre processos
- sem fácil/barato controle de “lock”
- Distribuição de dados e tarefas, mais componentes no backend
Surgem Software Loadbalancer mais simples e baratos !!!
Lembra do IPC e RPC ? Evoluíram para ser a API,
"Comunicação inter-Aplicações”
- Use massivo de Soap e REST
32. 18 - Acessos mais lentos (I/O)
Mais latência, recursos fora das máquinas
- Caches saíram da máquina local, viram sistemas dedicados
- Tempo de resposta mais lentos levaram à abordagens Assíncronas
- Filas e Message Brokers
- Manipulação de error mais importante que nunca (Design for failures)
Lembra do DBM ? Saiu do computador, ganhou uma camada de rede
e virou Sistemas NoSql
Lembra do MMU ? Teve um neto chamado:
Hash Partitioning (DHT - Distributed hash table) = Sharding
Acesso a dados mais complicados:
2 entre 3: consistência, disponibilidade e distribuição de dados (CAP)
34. 1 ns = .000000001 segundo
pior para multi-cpu ou
virtual machines
“Pipelines”
quantos pedaços de hardware pode falhar entre EUA e Europa?
http://www.cs.cornell.edu/projects/ladis2009/talks/dean-keynote-ladis2009.pdf
35. 19 - Muitos desafios
Mais complexo = mais falhas = tolerância a falhas (Design for failures)
- Complexidade requer maior abstração = mar de Frameworks
Lembra do níveis de execução? Saíram do computador:
- Development Environment
- Testing Environment
- Staging Environment
- Production Environment
Rollbacks não são mais triviais
Complexidade = processos e automação
Um grande problema: controle de acesso agora é mundial
36. Ter mais ambientes antes do ambiente de produção não é burocracia,
É liberdade
37. 20 - SSD ?
- No começo eram bugados, tempo de vida curto
- SSD foram bem vindos, mas para se juntar a festa...
...pq desafios trouxeram motivação
- Ainda são muito caros
- Muito usados como grandes buffers e caches,
mais rápidos discos porém mais lentos que a memória
38. 21 - *aaS Era
*aaS = * as a Service
Mainframe ? Evoluiu para ser a nuvem
- Mesmo modelo Pay-per-use, assim como eletricidade e telefonia
- Serviço aaS: "Me dê um login e uma senha”
- Hardware aaS:
system call ? Tornou-se "cloud call”,
chamada para uma instância de hardware completo.
- redução de desperdícios
- capacidade para picos
- Software (ou Platform) aaS: Abstração de Hardware
- Deploy tornando-se “commodity”
39. 22 - Nova ordem mundial
- Updates constantes (especialmente Github)
- Sistemas nascem distribuídos
- Programação orientada a eventos agora na web (Erlang, Nginx, NodeJS)
- Linguagens funcionais na Web (stateless, de fácil distribuição)
- Browser para gravar, processar e cachear
- Uso massivo de comunicação JSON
- Serem humanos se comunicando no estilo IPC (Twitter)
- Diversos Dispositivos
- Ao contrário dos tempos dos Mainframes, os dados são maiores do que um
único computador sequer imagina em processar
- Map-reduce para todos esses dados
40. Troca de mensagens e programação orientada a eventos
é exatamente o que o kernel vem fazendo por 40 anos
42. 23 - Por que web devs não paralelizam ?
"Entretanto, novas tecnologias são sempre difíceis
de usar no começo, mas tornam-se invariavelmente Is Parallel Programming Hard, And, If
mais simples com o passar do tempo. Por exemplo, So,What Can You Do About It?
havia um tempo em que a habilidade de dirigir um
Edited by:
carro era para poucos, porém em vários países em Paul E. McKenney
desenvolvimento, essa habilidade agora é comum. Linux Technology Center
Essa mudança dramática aconteceu por razões bá- IBM Beaverton
sicas: (1) carros ficaram mais baratos e mais paulmck@linux.vnet.ibm.com
fáceis de possuir, dando mais oportunidade para mais January 2, 2011
pessoas aprender, e (2) carros tornaram-se mais
simples de operar, em razão de transmissões
automáticas, injeções eletrônicas, ignição automática,
melhora significativa na confiança do sistema e a
inclusão de diversas melhorias vinda de outras tecnologias.
http://kernel.org/pub/linux/kernel/people/paulmck/perfbook/perfbook.2011.01.02a.pdf
Significa: Empresas! Produtividade e baixos riscos, coisas acontecem mais devagar
43. 24 - Aceitação
Douglas Crockford thoughts (http://yuiblog.com/crockford/):
"As pessoas que deveriam ser as primeiras a reconhecer o valor de uma
inovação são geralmente as últimas."
E ele tá falando de desenvolvedores
Corrida dos 16 bits: "Intel foi para um outra direção..." "...desastre total" "...voltou para
os 8 bits... tentando capturar o mercado de 8 bits fazendo uma máquina que fosse
compatível com assembly antigo..."
Está fazendo o mesmo desde então
"Estamos em um grande momento para ser um programador, temos diversas escolhas, e
precisamos ser espertos fazendo essas escolhas se sermos abertos a aceitar novas
idéias porque existes muitas idéias por aí, não devemos rejeitá-las somente porque
não são familiares ou não vemos nenhum necessidade pra elas”
44. 25 - Manutenção-”ability”
"You are not Google, Amazon or Facebook”
- Ivan Ribeiro, na apresentação
"You shall Not Get Excited”,
sobre a jornada de 2-3 anos para usar
Erlang em produção
http://slideshare.net/x697272/you-shall-not-get-excited-5851097
Em empresas, não basta somente aceitação
... mas toda a adaptação necessária
- ter ferramentas suficientes
- bibliotecas suficientes
- integrar com os processos existentes e automações (de testes e segurança
colaboração de colegas
- comunidade com bom suporte
- comprovação de ótima utilização de recursos
45. 26 - Novas Linguagens
Chegando na Web
Para quebrar o tradicional “LAMP”
Porém...
as 4 linguagens mais populares são:
C, Java, Php, JavaScript, todas baseadas na mesma sintaxe
Lembre-se da Intel, perder produtividade sem justificativa não é legal
46. 27 - ORM, agora não
Abstrações requerem poder
- POO na web, só 40 anos depois
- templatização de sites, só com multi-core
SQL não é só abstração, é também paralelização
Bancos de dados têm ótimo cache interno e um ótimo otimizador de queries
Não é hora!
Aceitação de NoSql foi rápida, motivo: necessidade imediata
Sistemas web = poucas queries
fáceis de empacotar dentro de funções e classes
... que podem tirar melhor proveito de caches e buffers especializados
(Memcached)
47. Matt Yonkovit - at Percona Live NYC 2011
http://www.percona.com/files/presentations/percona-live/nyc-2011/PerconaLiveNYC2011-How-MySQL-and-NoSQL-Coexist.pdf
48. L'esprit de l'escalier - Gleicon Moraes e John D. Rowell @NoSQL:br v2 2011
http://www.slideshare.net/gleicon/lesprit-de-lescalier
49. 28 - E a ciência?
Últimas palavras em computação científica:
GPU: Graphic CPU, nasceu paralela e distribuída
FPGA: Trazendo o software mais próximo do hardware
GRID: Rede Internacional e Compartilhada
http://www.opensciencegrid.org/
Dá pra ter em casa ou na nuvem !!!!!!
50. 29 - Futuro ?
Pare de pensar serial e sequêncial
"Compute Local, Act Global.
Otherwise the Overhead will kill you”
- Carlos Bueno, um amigo
Juntar disco e memória,
sistemas que não precisam de boot
2012 - Fim do mundo ?
Se não: Parar de fazer “brute force”, computação quântica
From GWAN's website
51. "A new vogue for the now generation
A new profit in the same old game
We got new thoughts, new ideas it's all so groovy
It's just a shame that we all seen the same old movies "
The Saints - Private Affairs
twitter: @againstty0
Referências:
“Romances” do Tanenbaum,
Manuscritos do EWD,
Wikipedia,
Busca de imagens do Google,
Minhas experiências e de meus amigos.