0

Tópicos quentes de pesquisa na área de Internet – Parte III: Cloud Computing

Daremos continuidade a série de postagens sobre os tópicos quentes de pesquisa na área de Internet, na qual já foi falada sobre CDNs e Internet das coisas. Falaremos sobre Cloud Computing ou Computação em Nuvem.

A computação em nuvem é hoje uma realidade e muitos usuários já a usam mesmo sem saber. Por exemplo, quando um usuário coloca um arquivo em um serviço do tipo Dropbox ou Google Drive, ele está fazendo uso de uma infraestrutura de computação em nuvem. Quando usa um serviço de formulários online, como SurveyMonkey ou Typeform para suas pesquisas, também está.

Apesar disso, para muitas pessoas o conceito de nuvem é um tanto quanto etéreo e abstrato. Afinal, se um usuário coloca um arquivo em um serviço em nuvem para onde isso vai? Para entender melhor é preciso voltar um pouquinho na história da computação. No início apenas grandes empresas tinham a possibilidade de possuir os mainframes, que nada mais são que computadores de grande porte com a capacidade de oferecer serviços de processamento a milhares de usuários conectados através de milhares de terminais. Nessa época, os terminais em si não tinham praticamente nenhum poder de processamento, sendo que os mainframes centralizavam todas as operações.

Com o advento dos PCs muitas das tarefas que antes eram executadas em um mainframe passaram a ser possíveis de ser realizadas localmente e assim o poder de processamento se tornou um pouco mais distribuído. Nesse contexto, o modelo cliente-servidor, que ainda hoje é o mais utilizado, tornou-se predominante. O servidor roda um ou mais serviços ou programas que compartilham recursos com os clientes. Já um cliente (que normalmente é uma máquina de usuário) inicia uma comunicação através de uma rede de computadores, solicitando conteúdo ou serviços de um servidor. Há vários exemplos de aplicações que seguem esse paradigma como o e-mail, a Web e as impressoras em rede. Inicialmente nesse modelo o servidor possuía um endereço lógico conhecido, além de se conhecer sua localização física (muitas vezes, no data center da própria empresa).

Pode-se pensar na computação em nuvem como uma evolução desse modelo no sentido de que o servidor não tem necessariamente uma localização conhecida. Além disso, os serviços prestados pelo servidor são geralmente terceirizados e executados de forma distribuída. Um usuário não é capaz de saber se apenas um servidor é responsável por toda a execução de um processamento ou se há vários envolvidos. Há a possibilidade de coordenação entre vários servidores em diferentes localidades para a “entrega” do serviço solicitado pelo cliente. Por isso, a ideia de nuvem aparece.

A computação em nuvem se baseia na virtualização de servidores, que nada mais é do que emular um servidor de forma virtual, configurando em um software de virtualização quanto de memória RAM, espaço de armazenamento, processador e sistema operacional aquela máquina vai ter. O interessante é que numa máquina real é possível ter quantas máquinas virtuais forem desejadas, com diferentes configurações que atendam o que for necessário. Basicamente esses servidores virtuais compartilham o mesmo hardware e podem rodar simultaneamente de forma otimizada. Para ajudar na compreensão analisemos um exemplo: imagine um servidor real com um processador Intel i7, 10GB de memória RAM e 1TB de espaço de armazenamento (HD). Nele foi instalado um software de virtualização e com isso foram configuradas 2 máquinas virtuais, sendo que uma roda Windows e tem disponível 8GB de RAM e 500MB de HD, enquanto a outra roda um Linux e tem disponível 4GB de RAM e 800MB de HD. Somando as capacidades das máquinas virtuais notamos que o valor é maior do que o existente na máquina real. Mas isso não é um problema porque os valores configurados são os máximos a serem atingidos no caso da outra máquina virtual estar ociosa ou superdimensionada. Quando uma máquina virtual não for mais necessária, ela pode ser simplesmente apagada da memória da máquina real.

Há várias vantagens em se usar a computação em nuvem, sendo que dentre as principais estão a alta disponibilidade dos serviços, a alta capacidade de processamento, os custos reduzidos em comparação a uma solução interna e a grande flexibilidade para ampliar ou diminuir a capacidade de processamento ou de armazenamento (o que se conhece como elasticidade). Por outro lado, há desvantagens que devem ser consideradas na hora de se adotar a nuvem como a redução de desempenho, o esforço de portabilidade de aplicações já existentes internamente para a nuvem, o atendimento a regulamentação de países específicos e os riscos de segurança, especialmente em relação ao vazamento de informações e violação à privacidade.

Hoje existem 3 categorias de serviços de computação em nuvem. O mais conhecido é o SaaS (Software as a Service) em que o provedor de serviços fornece um programa que fica em um servidor remoto e as aplicações são acessíveis por meio de dispositivos do cliente, com uso de interfaces simples, como a Web. O usuário não gerencia ou controla nenhum item da infraestrutura que hospeda o software, sendo somente possível ajustar configurações específicas a nível de usuário. Exemplos desse tipo de serviço são o Google Drive, Dropbox, SurveyMonkey e Typeform.

Ainda existem as categorias conhecidas como PaaS (Platform as a Service) e IaaS (Infrastructure as a Service) que no geral são mais voltadas para equipes de desenvolvimento de software. Uma das empresas mais conhecida que fornece esses tipos de serviço é a Amazon Web Services (AWS).

Apesar da computação em nuvem já ser uma realidade e estar sendo comercializada, ainda há muitos desafios a serem superados, os quais são tópicos relevantes de pesquisa na área da Internet e de redes de computadores. Um dos mais relevante concerne às questões de segurança, em como minimizar o vazamento de informações. Isso porque há a possibilidade de explorar vulnerabilidades em relação ao incorreto isolamento entre os servidores virtuais.

No próximo post continuaremos falando sobre tópicos quentes de pesquisa na área de Internet. Até lá!

Anúncios
0

As computadoras

programmers

A história da computação possui muitos personagens que contribuíram para o seu desenvolvimento.Na sua grande maioria, os personagens conhecidos dessa história são homens, dentre os quais podemos citar Babbage, Boole, Turing, Von Neumann dentre outros. E aonde ficam as mulheres nessa história toda? Será que não houve nenhuma contribuição feita por uma mulher? Não digo daquelas mulheres que são tidas como “a primeira mulher engenheira de computação do mundo”, ou seja, a primeira mulher a fazer uma atividade que antes era dominada apenas por homens. Digo uma mulher que tenha sido o primeiro indivíduo, seja homem ou mulher, que contribuiu originalmente com alguma coisa para a computação.

Já nos primórdios da computação moderna houve a primeira contribuição de uma mulher. Seu nome é Ada Byron, filha do conhecido poeta inglês Lord Byron. Também é conhecida como Ada Lovelace, por ter se casado aos 20 anos com o conde de Lovelace. Sua grande contribuição para a história da computação é ter sido a primeira pessoa a descrever completamente o processo que hoje é conhecido como programação de computador [1] [2].

Na época de Ada, também viveu um outro grande contribuinte no desenvolvimento da computação, o cientista Charles Babbage, que é tido como o pai dos computadores modernos. Ada conheceu o trabalho de Babbage e, traduzindo uma de suas teorias, acrescentou notas nas quais descrevia como alimentar a máquina analítica de Babbage com cartões perfurados, sendo tidos como os primeiros programas de computadores. Ada também previu a possibilidade da música computadorizada, afirmando que a música é matemática e, portanto, poderia ser adaptada para ser composta por uma máquina [1].

A máquina descrita por Babbage foi reconhecida como um primeiro modelo de computador e as notas de Ada como a descrição de um software, ainda que não tenha sido possível construir a máquina naquela época por restrições da tecnologia [2].

Mas as contribuições das mulheres na computação não pararam por ai. Na década 40, foi desenvolvido pelo exército um projeto ultrassecreto, o ENIAC. Depois da segunda guerra, foi divulgada a existência dessa máquina que é tida como o primeiro computador digital eletrônico de grande escala. O ENIAC foi criado pelos cientistas norte-americanos John Eckert e John Mauchly. Porém, uma parte dessa história foi obscura durante muitos anos: quem haveria programado esse máquina para computar trajetórias balísticas? Na década de 80, a pesquisadora Kathy Kleiman decide ir atrás de algumas pistas nesse sentido e descobre que o ENIAC havia sido programado por seis matemáticas mulheres. Seus nomes eram: Betty Jean Jennings, Ruth Lichterman, Kathleen McNulty, Betty Snyder, Marlyn Wescoff e Fran Bilas [3].

Elas foram escolhidas entre um grupo de 100 mulheres que trabalhavam na Universidade da Pensilvânia calculando manualmente as equações diferenciais necessárias para as trajetórias balísticas durante a guerra [3]. O exército chamava a função destas mulheres de “computers” ou computadoras (em uma tradução livre, já que esse termo não existe com a flexão feminina na língua portuguesa).

O ENIAC era programado através da conexão de fios, relês e sequências de chaves para que se determinasse a tarefa a ser executada. Havia milhares de chaves, podendo cada uma delas assumir o valor 1 ou 0 conforme estivessem ligadas ou desligadas. [4] A cada tarefa diferente o processo deveria ser refeito. A resposta dos cálculos era dada por uma sequência de lâmpadas.

Essas mulheres não tinham permissão de ver o ENIAC por ele ser um projeto secreto, mas mesmo assim elas o programaram. E para fazer isso, tiverem que estudar os diagramas esquemáticos da máquina e entender como ela poderia ser programada, isso em uma época que não existiam livros que se ensinasse a programar. Ao fazer isso elas fundaram as bases para os programadores e engenheiros de software do futuro [3].

Mas elas não pararam por ai. Após esse projeto, Jean liderou a equipe que transformou o ENIAC em um dos primeiros computadores eletrônicos com memória de armazenamento do mundo. Já Betty continuou trabalhando na computação ao longo de toda a sua vida profissional, sendo uma pioneira na área ao desenvolver o primeiro conjunto de instruções de máquina, a primeira rotina de ordenação e a primeira aplicação de software [3].

Apesar do papel pioneiro dessas mulheres como primeiras programadoras da computação moderna, elas foram reconhecidas tardiamente pelo que fizeram, sendo que a maioria tinha cerca de 70 anos. Elas receberam prêmios da IEEE Computer Society, do Museu da História da Computação, da associação Women in Technology International e outras organizações [3].

As programadoras do ENIAC foram seguidas por várias mulheres pioneiras na área da ciência da computação, mas essa é uma das áreas em que a representatividade das mulheres ainda é muito baixa. Segundo Moreiras et al (2014), apenas 20,1% dos alunos do curso de Ciência da Computação no Brasil são mulheres. Que essas mulheres da história possam servir de inspiração para as novas gerações, mostrando que lugar de mulher é onde ela quiser, inclusive programando!

Bibliografia

[1] Rolka, G. M. 100 Mulheres que Mudaram a História do Mundo. Editora Nova Fronteira, 2004.

[3] http://eniacprogrammers.org/

[4] https://pt.wikipedia.org/wiki/ENIAC

[5] Moreiras, J. A. et al. Um Panorama da Presença Feminina na Ciência da Computação. 18º REDOR, 2014. Disponível em: < http://www.ufpb.br/evento/lti/ocs/index.php/18redor/18redor/paper/viewFile/1935/853 >.