A história da computação em nuvem

Muitas pessoas nascidas no século XXI acreditam que as tecnologias de nuvem surgiram durante a sua geração. Na verdade, a história das “nuvens” já se estende por pelo menos seis décadas, com períodos de estagnação e fases de rápido desenvolvimento. A base para elas foi estabelecida, como aconteceu com várias outras inovações tecnológicas, pelos militares. Mas, afinal, em que circunstâncias surgiram as tecnologias de nuvem e como elas se desenvolveram? É sobre isso que trataremos no nosso artigo de hoje.
Da inovação militar à tecnologia moderna: o nascimento da computação em nuvem
Exatamente sessenta anos atrás, em 1963, a Agência de Projetos de Pesquisa Avançada (DARPA), atuando, como se sabe, nos interesses do Departamento de Defesa dos EUA, concedeu uma bolsa de dois milhões de dólares ao Instituto de Tecnologia de Massachusetts para um desenvolvimento bastante interessante. Ele recebeu o nome de Project on Mathematics and Computing, abreviado como Project MAC, embora, é claro, nada tivesse a ver com “Macs” (no sentido moderno). O objetivo dos pesquisadores, cujo grupo era liderado pelos cientistas da cibernética Robert M. Fano e Fernando Jose Corbató, era desenvolver um sistema de compartilhamento de tempo fundamentalmente novo, projetado para organizar o acesso compartilhado aos recursos de computadores eletrônicos por vários usuários remotos. A razão para o interesse por tais tecnologias por parte do departamento militar é, em geral, óbvia: os computadores na época eram caros, e havia relativamente poucos deles, enquanto a necessidade por capacidade computacional crescia rapidamente.

O Project MAC foi baseado no sistema experimental Corbató Compatible Time-Sharing System (CTSS), criado por Fernando Jose Corbató alguns anos antes, que permitia que usuários de vários terminais conectados a um computador acessassem o mesmo programa executado nessa máquina. O código do CTSS foi reformulado e aprimorado, como resultado do qual, em seis meses, 200 usuários em dez laboratórios diferentes do MIT conseguiram se conectar a um único computador e executar programas centralmente. Esse evento pode ser considerado um ponto de partida na história do desenvolvimento das tecnologias em nuvem, já que, no âmbito desse experimento, foi implementado o principal princípio subjacente — um modo multiusuário de acesso sob demanda a recursos computacionais compartilhados.
UNIX, Multics e Plan 9: marcos cruciais na tecnologia em nuvem
Em 1969, com base no projeto MAC, os Laboratórios Bell e a General Electric criaram um sistema operacional de compartilhamento de tempo multiusuário chamado Multics (Multiplexed Information and Computing Service), que foi baseado nos princípios estabelecidos pelos cientistas do MIT. Além da organização de acesso a aplicativos, o Multics oferecia compartilhamento de arquivos, bem como implementava algumas funções de segurança e proteção de dados contra danos acidentais. Foi com base nesse sistema que Ken Thompson criou a primeira versão do UNIX em novembro de 1971, que por muitos anos se tornou o sistema operacional multiusuário mais popular do mundo.

Pode-se dizer que, desde o surgimento do UNIX, houve um período de calmaria na história do desenvolvimento da tecnologia em nuvem, já que esse sistema atendia plenamente aos requisitos tanto de inúmeras empresas comerciais quanto de instituições educacionais onde era utilizado no processo de ensino. A calmaria durou exatamente até que os próprios Laboratórios Bell decidiram substituir o UNIX por um sistema operacional mais moderno, focado principalmente no compartilhamento de recursos de hardware e software.
Essa decisão foi mais um passo rumo ao desenvolvimento das tecnologias modernas de nuvem. O novo sistema Plan 9, desenvolvido por uma equipe de criadores do UNIX liderada por Ken Thompson, possibilitou o trabalho completo com arquivos, sistemas de arquivos e dispositivos, independentemente de em qual computador conectado à rede eles estivessem fisicamente localizados. De fato, esse sistema operacional transformou toda a rede de computadores em um único sistema computacional multiusuário global com recursos compartilhados, aos quais se tinha acesso sob demanda e de acordo com os direitos dos usuários — ou seja, na prática, em uma espécie de “nuvem” moderna.

Virtualização e a evolução dos sistemas em nuvem
O próximo passo importante na evolução dos sistemas em nuvem foi o surgimento das máquinas virtuais. A ideia da virtualização surgiu logo após o aparecimento dos sistemas de compartilhamento de tempo multiusuário. Em meados dos anos 60, foram realizados experimentos com tecnologias que podem ser classificadas como os primeiros hipervisores no Centro de Pesquisa Thomas J. Watson da IBM em Yorktown Heights, onde foi desenvolvido o sistema experimental IBM M44/44X. Com base no computador IBM 7040, os pesquisadores criaram vários emuladores de computador independentes nos quais instâncias próprias de programas podiam ser iniciadas e executadas em paralelo em seus próprios ambientes isolados.

Na mesma época, outros departamentos da IBM estavam experimentando com a máquina IBM CP-40: um computador IBM System/360 Model 40 especialmente modificado. Para esse computador, foram desenvolvidos contêineres de hardware e software isolados, nos quais podia operar um sistema operacional com compartilhamento de tempo e memória virtual chamado CMS (Cambridge Monitor System). Esse sistema operacional foi criado por funcionários do Centro de Pesquisa da IBM em Cambridge (CSC) em estreita colaboração com pesquisadores do Instituto de Tecnologia de Massachusetts que trabalhavam no projeto MAC. Essas máquinas virtuais eram chamadas de “pseudo-computadores” em Cambridge, e o principal objetivo do projeto era implementar a colaboração de vários usuários com memória virtual.

Máquinas virtuais de aplicação, ou os chamados ambientes de execução gerenciados (MREs), foram desenvolvidos paralelamente, oferecendo uma abstração de alto nível para várias linguagens de programação. Sua principal tarefa era fornecer um ambiente de programação independente de plataforma que abstraísse o hardware ou o sistema operacional subjacente e permitisse que o aplicativo fosse executado da mesma forma em uma máquina com qualquer configuração de hardware. Tal “máquina virtual” serve apenas a um processo, é executada como um aplicativo normal dentro do sistema operacional principal e termina quando esse processo é encerrado.
O surgimento do primeiro MRE remonta a 1966 — essa tecnologia foi utilizada pelo compilador de código objeto BCPL. Posteriormente, o uso de código objeto, que mais tarde pode ser traduzido em código executável para várias arquiteturas de hardware, foi adotado por compiladores de outras linguagens de alto nível. Ambientes de execução gerenciados se desenvolveram rapidamente, e o auge de sua evolução é considerado o surgimento da Máquina Virtual Java. Isso, por sua vez, levou os Bell Labs a suspender o desenvolvimento do projeto Plan 9 e começar a desenvolver o sistema operacional Inferno, no núcleo do qual era usada a máquina virtual Dis.
O sistema operacional Inferno podia fazer tudo o que o Plan 9 fazia, mas o uso da virtualização elevou o compartilhamento de recursos de hardware e software a um novo patamar. Os desenvolvedores presumiram que o Inferno seria capaz de operar plenamente em diversos dispositivos e plataformas de hardware sem adaptação adicional, executando os mesmos aplicativos e oferecendo aos usuários a mesma funcionalidade. Na prática, essa plataforma, criada em 1996, tornou-se o primeiro sistema operacional verdadeiramente baseado em nuvem da história, ao menos em sua arquitetura. Embora não tenha encontrado ampla aplicação, o Inferno estabeleceu uma base sólida para o desenvolvimento futuro das tecnologias em nuvem distribuídas.
A origem do termo “computação em nuvem” e os experimentos da Apple
Acredita-se que o termo “cloud computing” tenha aparecido pela primeira vez em 1996 na documentação interna da Compaq. Ele era usado para se referir ao processamento de dados distribuído em redes locais, embora alguns pesquisadores acreditem que ele tenha surgido muito antes, em diversos artigos acadêmicos. Em particular, a revista Computerworld mencionou em uma de suas publicações que a expressão “cloud computing” já era usada nos anos 60 por J. C. R. Licklider, o primeiro diretor do departamento de Tecnologia de Processamento da Informação da ARPA.

Uma certa contribuição para o desenvolvimento das tecnologias em nuvem foi feita pela Apple, que lançou o projeto Paradigm em 1989. Como parte desse projeto, planejava-se desenvolver um sistema operacional fundamentalmente novo, capaz de distribuir uma carga computacional típica entre vários dispositivos operando simultaneamente na rede. A principal plataforma para esse sistema operacional seriam os computadores pessoais de bolso, que naquela época ainda não tinham grande poder computacional, mas eram considerados o vetor mais promissor para o desenvolvimento da tecnologia computacional.
Dentro da Apple, o projeto não recebeu o devido apoio do CEO John Sculley, então logo foi criada uma empresa separada — a General Magic — para seu desenvolvimento, e o sistema operacional recebeu o nome de trabalho Magic Cap. A interface desse sistema utilizava a metáfora de um prédio: por exemplo, um calendário e um cliente de e-mail podiam ser encontrados em um “escritório”, enquanto jogos e outros entretenimentos ficavam em uma “sala de estar”. Para o desenvolvimento de aplicativos de usuário, era usada a linguagem Magic Script, especialmente criada pela General Magic: um dialeto orientado a objetos de C. Infelizmente, o sistema operacional distribuído Magic Cap não teve continuidade, mas várias de suas ideias e conceitos foram utilizados na arquitetura do Apple Newton, e muito mais tarde foram refletidos no iOS.

Hoje em dia, é praticamente impossível imaginar o cenário global de TI sem as “nuvens”: os serviços em nuvem permitem aos clientes não apenas gerenciar infraestrutura com flexibilidade, economizar em equipamentos, backup e suporte técnico, mas também acessar uma enorme quantidade de serviços, aplicativos e dados de qualquer lugar do mundo. Ao mesmo tempo, todas as capacidades modernas das tecnologias em nuvem se baseiam em três pilares fundamentais: o compartilhamento de recursos, a virtualização e a possibilidade de acesso remoto a esses recursos via Internet. É notável que todos esses três componentes tenham se originado no início dos anos 60 nos laboratórios de pesquisa do MIT, da IBM, dos Bell Labs e de outras empresas de tecnologia, muitas das quais foram financiadas pela ARPA. O nível tecnológico atual, que em 1963 pareceria uma fantasia completa para os cientistas, é, em essência, apenas o desenvolvimento lógico da base científica e técnica estabelecida há 60 anos.