Baixe o app para aproveitar ainda mais
Prévia do material em texto
Paradigmas computacionais Objetivos de aprendizagem Os objetivosdesse texto é: Dar uma breve Descrição do Sucessor da computação Examinar o potencial desses paradigmas Preâmbulo Um relatório do que acontece. O termo paradigma transmite que há um conjunto de práticas a serem seguidas para realizar uma tarefa. No domínio da computação, há muitas práticas, padrões diferentes sendo seguidas com base em invenções e avanços tecnológicos. Nesse texto, vamos observar os vários paradigmas de computação: computação de alto desempenho computação em cluster computação em rede computação em nuvem biocomputação computação móvel computação quântica computação óptica nano computação rede de Computação. Como os sistemas de computação se tornam mais rápidos e mais capazes, é necessário notar as características da computação moderna, para dar entendimento sobre computação em nuvem, e, portanto, torna-se essencial saber um pouco sobre vários paradigmas de computação. Computação de alto desempenho Em sistemas de computação de alto desempenho, um pool de processadores (máquinas em processamento ou unidades de processamento central [CPUs]) conectados (em rede) com outros recursos, como memória, armazenamento e dispositivos de entrada e saída, e nesse universo o software implantado está habilitado para ser executado no sistema inteiro/integrado de componentes conectados. As máquinas em processamento podem ser de tipo homogêneo (que possui igual natureza) ou heterogêneo (que possui natureza desigual). O significado legado de computação de alto desempenho (HPC) é o conceito de Super-Computador, no entanto, não é verdadenos cenários de computação atuais. Portanto, HPC pode também ser atribuída para outros significados em paradigmas da informática. Assim, exemplos de HPC incluem um pequeno cluster de computadores desktop ou computadores pessoais (PCs) ou para os Super-Computadores mais rápidos. Os sistemas HPC são normalmente encontrados nas aplicações em que é necessário usar ou resolver problemas científicos. Mais com o passar do tempo, os desafios para trabalhar com a estes tipos de problemas, executar simulação e estudos adequados, podem ser realizados por HPC sem qualquer dificuldade. Exemplo Científico, tal como: Dobramento de proteínas em biologia molecular. Estudos no desenvolvimento em modelos de aplicações com base em fusão nuclear São valores observados como potencial Aplicações para HPC. Computação paralela A computação paralela também é uma das faces da HPC. Aqui, um conjunto de processadores trabalham cooperativamente para resolver um problema computacional. Essas máquinas de processador ou CPUs são principalmente de tipo homogêneo. Portanto, essa definição é a mesma de HPC e é ampla o suficiente para incluir supercomputadores que têm centenas ou milhares de processadores interligados com outros recursos. Pode-se distinguir entre computadores convencionais (também conhecidos como serial ou sequencial ou Arquitetura de Von Neumann) – “ A Arquitetura de von Neumann é uma arquitetura de computador que se caracteriza pela possibilidade de uma máquina digital armazenar seus programas no mesmo espaço de memória que os dados, podendo assim manipular tais programas “ e computadores paralelos na forma como os aplicativos são executados. Em computadores seriais ou sequenciais, o seguinte se aplica: Ele é executado em uma única máquina de computador/processador com uma única CPU. Um problema é dividido em uma série discreta de instruções. As instruções são executadas uma após a outra. Na computação paralela, uma vez que há o uso simultâneo de várias máquinas de processador, os seguintes se aplica: Ele é executado usando vários processadores (várias CPUs). Um problema é dividido em partes discretas que podem ser resolvidas simultaneamente. Cada parte é dividida em uma série de instruções. As instruções de cada parte são executadas simultaneamente em processadores diferentes. Um mecanismo de controle/coordenação geral é empregado. Computação distribuída A computação distribuída também é um sistema de computação que consiste em vários computadores ou máquinas de processador conectadas através de uma rede, que pode ser homogênea ou heterogênea, mas executada como um único sistema. A conectividade pode ser tal, que as CPUs em um sistema distribuído podem ser fisicamente próximas e conectadas por uma rede local, ou podem ser geograficamente distantes e conectadas por uma rede de área ampla (conectadas por Roteadores). A heterogeneidade em um sistema distribuído suporta qualquer número de configurações possíveis nas máquinas do processador, como mainframes, PCs, estações de trabalho e minicomputadores. O objetivo da computação distribuída é fazer com que uma rede funcione como um único computador. Sistemas de computação distribuída são vantajosos sobre sistemas centralizados, porque há um suporte para os seguintes recursos característicos: 1. Escalabilidade: é a capacidade do sistema para ser facilmente expandido, adicionando mais máquinas, conforme necessário, e vice- versa, sem afetar a configuração existente. 2. Redundância ou replicação: aqui, várias máquinas podem fornecer os mesmos serviços, de modo que mesmo se um estiver indisponível (ou falhou), o trabalho não pára porque outros suportes de computação semelhantes estarão disponíveis. Computação em cluster Um sistema de computação de cluster consiste em um conjunto do mesmo tipo ou Similar de máquinas de processador conectado usando uma infra-estrutura de rede dedicada. Todos os processadores das máquinas partilham recursos, todas as máquinas processadoras compartilham recursos como um diretório inicial comum e possuem um software como uma interface de transmissão de mensagens “message passing interface (MPI)” implementação instalada para permitir que programas possam se executarem todos os nós simultaneamente. Este também é um tipo de categoria HPC. Os computadores individuais em um cluster podem ser chamados de nós. A razão para realizar um cluster como HPC é devido ao fato de que os nós individuais podem trabalhar juntos para resolver um problema maior do que qualquer computador poderia facilmente resolver. E os nós precisam se comunicar entre si para trabalhar de maneira cooperativa e significativa para resolver o problema em questão. Se tivermos máquinas de processador de tipos heterogêneos em um cluster, esse tipo de clusters se tornará um subtipo e ainda na maior parte estão na fase experimental ou de pesquisa. Computação em grade Os recursos de computação na maioria das organizações são subutilizados, mas são necessários para determinadas operações. A ideia da computação em grade é usar esse poder de computação não utilizado pelas organizações carentes e, assim, o retorno do investimento (ROI) em investimentos em computação pode ser aumentado. Assim, a computação em grade é uma rede de máquinas de computação ou processador gerenciadas com um tipo de software como middleware “Middleware é o software de computador que fornece serviços para softwares aplicativos além daqueles disponíveis pelo sistema operacional. Pode ser descrito como "cola de software", a fim de acessar e usar os recursos remotamente. A atividade de gerenciamento de recursos de grade por meio do middleware é chamada de serviços de grade. Serviços de grade fornecem controlede acesso, segurança, acesso a dados, incluindo bibliotecas digitais e bancos de dados e acesso a instalações de armazenamento interativas e de longo prazo de grande escala. TABELA 1 Grade de energia elétrica ecomputação em grade Grade de energia elétrica Computação em grade Nunca se preocupe com a origem da eletricidade que estamos usando; isto é, seja de carvão na Austrália, de energia eólica nos Estados Unidos ou de uma usina nuclear na França, pode-se simplesmente conectar o dispositivo elétrico à tomada na parede e obter a energia elétrica de que precisamos para operar o aparelho Nunca se preocupe com a origem da energia do computador que estamos usando; isto é, seja de um supercomputador na Alemanha, de um “render farm” cluster de computadores na Índia ou de um laptop na Nova Zelândia, pode-se simplesmente conectar o computador e a Internet e realizará a execução do aplicativo. A infraestrutura que torna isso possível é chamada de rede elétrica. Ele une muitos tipos diferentes de usinas de energia à nossa casa, através de estações de transmissão, usinas de energia, transformadores, linhas de energia etc. A infraestrutura que torna isso possível é chamada de grade de computação. Ele une recursos de computação, como PCs, estações de trabalho, servidores e elementos de armazenamento, além de fornecer o mecanismo necessário para acessá-los via Internet. A rede elétrica é difundida: a eletricidade está disponível essencialmente em qualquer lugar, e é possível simplesmente acessá-la através de uma tomada de parede A grade também é difundida no sentido de que os recursos de computação remota estariam acessíveis a partir de diferentes plataformas, incluindo laptops e padrão. telefones celulares, e pode-se simplesmente acessar o poder de computação da grade através do navegador da web. A rede elétrica é uma utilidade: pedimos eletricidade e conseguimos. Também pagamos pelo que recebemos. A computação em grade também é uma utilidade: pedimos poder de computação ou capacidade de armazenamento e conseguimos. Também pagamos pelo que recebemos. Grid Computing (Computação em Grade) é mais popular devido às seguintes razões: Sua capacidade de fazer uso de poder computacional não utilizado, e, portanto, é uma solução rentável (reduzindo os investimentos, apenas os custos recorrentes) Como uma maneira de resolver problemas de acordo com qualquer aplicativo baseado em HPC. Permite que recursos heterogêneos de computadores trabalhem cooperativamente e colaborativamente para resolver um problema científico. Pesquisadores associam o termo grade à forma como a eletricidade é distribuída em áreas municipais para o homem comum. Nesse contexto, a diferença entre a grade de energia elétricae a computação em grade é digno de notação (tabela). Computação em nuvem A tendência da computação mudou para a nuvem a partir do conceito de computação em grade, particularmente quando grandes recursos de computação são necessários para resolver um único problema, usando as ideias do poder da computação como um utilitário e outros conceitos aliados. No entanto, a diferença potencial entre grade e nuvem é que a computação em grade suporta a alavancagem de vários computadores em paralelo para resolver um aplicativo específico, enquanto a computação em nuvem suporta a alavancagem de vários recursos, incluindo recursos de computação, para fornecer um serviço unificado ao usuário final. Na computação em nuvem, os recursos de ti e negócios, como servidores, storage, rede, aplicativos, e processos, podem ser provisionados dinamicamente para as necessidades do usuário e carga de trabalho. Além disso, enquanto uma nuvem pode oferecer suporte a uma grade, uma nuvem também pode suportar ambientes nongrid, como uma arquitetura da Web de três camadas em execução no tradicional ou na Web 2,0 de aplicações. Bioinformática Os sistemas de Bioinformática utilizam os conceitos de moléculas biologicamente derivadas ou simuladas (ou modelos) que realizam processos computacionais para resolver um problema. Os modelos biologicamente derivados auxiliam na estruturação dos programas computacionais que se tornam parte da aplicação. Biocomputing fornece o fundo teórico e as ferramentas práticas para que os cientistas explorem proteínas e DNA. O DNA e as proteínas são blocos de construção da natureza, mas esses blocos de construção não são exatamente usados como tijolos; a função da molécula final depende fortemente da ordem desses blocos. Assim, o cientista de biocomputação trabalha para inventar a ordem adequada para várias aplicações que imitam a biologia. A biocomputação deve, portanto, levar a uma melhor compreensão da vida e das causas moleculares de certas doenças. Computação móvel Na computação móvel, os elementos de processamento (ou computação) são pequenos (ou seja, dispositivos portáteis) e a comunicação entre vários recursos está ocorrendo usando mídia sem fio. A comunicação móvel para aplicativos de voz (por exemplo, telefone celular) é amplamente estabelecida em todo o mundo e testemunha um crescimento muito rápido em todas as suas dimensões, incluindo o aumento no número de assinantes de várias redes celulares. Aplicativos baseados em computação móvel estão se tornando muito importantes e evoluindo rapidamente com vários avanços tecnológicos, pois permite aos usuários transmitir dados de locais remotos para outros locais remotos ou fixos. Uma extensão dessa tecnologia é a capacidade de enviar e receber dados em várias redes de celular usando pequenos dispositivos, como smartphones. Pode haver inúmeras aplicações baseadas nessa tecnologia; por exemplo, vídeo chamada ou conferência é um dos aplicativos importantes que as pessoas preferem usar no lugar das comunicações de voz existentes (somente) em telefones celulares. As aplicações baseadas na computação móvel estão se tornando muito importantes e estão evoluindo rapidamente com vários avanços tecnológicos, pois permitem que os usuários transmitam dados de locais remotos para outros locais remotos ou fixos. Computação quântica Os fabricantes de sistemas de computação dizem que há um limite para colocar cada vez mais transistores em espaços cada vez menores de circuitos integrados (ICs), dobrando assim a capacidade de processamento a cada 18 meses. Esse problema terá que ser superado por uma nova solução baseada em computação quântica, em que a dependência está na informação quântica, as regras que governam o mundo subatômico. Os computadores quânticos são milhões de vezes mais rápidos do que os nossos supercomputadores mais poderosos atualmente. Como a computação quântica funciona de forma diferente no nível mais fundamental do que a tecnologia atual, e embora existam protótipos funcionais, esses sistemas ainda não se mostraram alternativas às máquinas atuais baseadas em silício. Computação óptica O sistema de computação óptica usa os fótons em feixes de luz visível ou infra-vermelho, em vez de corrente elétrica, para realizar cálculos digitais. Uma corrente elétrica flui a apenas 10% da velocidade da luz. Isso limita a taxa na qual os dados podem ser trocados por longas distâncias e é um dos fatores que levaram à evolução da fibra óptica. Ao aplicar algumas das vantagens das redes visíveis e / ou de infravermelho na escala de dispositivos e componentes, pode ser desenvolvido um computador que possa executar operações 10 ou mais vezes mais rápido que um computador eletrônico convencional. Nano informática Nanocomputing refere-se a sistemas de computação que são construídos a partir de componentes em nanoescala. Os transistores de silício em computadores tradicionais podem ser substituídos por transistores baseados em nanotubos de carbono. A realização bem-sucedida dos nanocomputadores está relacionada à escala e integração dessesnanotubos ou componentes. As questões de escala dizem respeito às dimensões dos componentes; eles são, no máximo, alguns nanômetros em pelo menos duas dimensões. As questões de integração dos componentes são duas: a) Primeiro, a fabricação de padrões arbitrários complexos pode ser economicamente inviável b) Segundo, os nano computadores podem incluir quantidades massivas de dispositivos. Pesquisadores estão trabalhando em todas essas questões para trazer a nanocomputação em realidade. Computação em rede A computação em rede é uma forma de projetar sistemas para aproveitar as mais recentes tecnologias e maximizar seu impacto positivo nas soluções de negócios e sua capacidade de atender seus clientes usando uma forte rede subjacente de recursos de computação. Em qualquer solução de computação em rede, o componente cliente de uma arquitetura ou aplicativo em rede será com o cliente ou cliente ou usuário final e, nos dias atuais, eles fornecem um conjunto essencial de funcionalidade necessário para suportar as funções apropriadas do cliente com custo mínimo e máximo simplicidade. Ao contrário dos PCs convencionais, eles não precisam ser individualmente configurados e mantidos de acordo com o uso pretendido. A outra extremidade do componente do cliente na arquitetura de rede será um ambiente de servidor típico para enviar os serviços do aplicativo para o lado do cliente. Sumário Estamos em uma era pós-PC, em que um número maior e uma variedade de computadores e paradigmas de computação com diferentes tamanhos e funções podem ser usados em todos os lugares e com todos os seres humanos. Assim, o objetivo foi ilustrar brevemente as idéias de todos esses domínios de computação, pois a maioria deles é onipresente e difundida em seu ambiente de acesso e trabalho. Pontos-chave Computação móvel: a computação móvel consiste em pequenos elementos de processamento (ou seja, dispositivos portáteis). e a comunicação entre vários recursos é feita usando mídia sem fio. Nanocomputação: Faz uso de componentes em nanoescala. Revisão perguntas – Faça o depósito das respostas no BB 1. Por que é necessário compreender os vários paradigmas computacionais? 2. Compare a computação da grade com a grade da energia elétrica. 3. A computação móvel vai desempenhar um papel dominante no futuro? Discursiva sem resposta específica, podendo o aluno se expressar ao tema. 4. Como a computação distribuída e a computação em rede são diferentes ou similares? 5. Como a nanocomputação pode moldar dispositivos futuros? Metodologias de Desenvolvimento de Aplicativos Atualmente, duas metodologias de desenvolvimento são amplamente utilizadas no desenvolvimento de aplicações: desenvolvimentos distribuídos. e ágeis. Desenvolvimento Distribuído Esse é o subproduto natural da Internet e o fenômeno que nem todos os gênios da codificação vivem a uma distância considerável do local de trabalho. O desenvolvimento distribuído é um desenvolvimento global que traz seus próprios desafios com colaboração e gerenciamento de código. Existem aplicativos disponíveis para gerenciamento de código distribuído, como git e Subversion. Eles são amplamente utilizados em ambientes distribuídos. O Subversion é um sistema de controle de versão centralizado utilizado tradicionalmente em projetos Java. O Git é um sistema de controle de versão distribuído que apresenta crescente adoção na comunidade de desenvolvimento de software em geral, e após sua popularização através do serviço de hospedagem de códigos GitHub se tornou mais popular. Link de tutorial para instalação do GIT: https://www.hostinger.com.br/tutoriais/tutorial-do- git-basics-introducao/ Desenvolvimento ágil É aqui que o desenvolvimento da nuvem pode ser muito mais do que apenas online. Como os ambientes de nuvem podem ser provisionados instantaneamente e praticamente qualquer configuração pode ser copiada e ativada, as possibilidades de desenvolvimentos instantâneos e ambientes de teste são muito atraentes para os desenvolvedores. O desenvolvimento da nuvem também pode impulsionar o desenvolvimento ágil, coordenando a colaboração, as sprints planejadas e as correções de bugs de emergência. A implantação na nuvem também é muito útil para o desenvolvimento ágil. Os pré-lançamentos podem ser enviados para as máquinas de teste dos clientes na nuvem quase instantaneamente. Mesmo que o cliente ainda não esteja em um ambiente de nuvem, os pré- lançamentos podem ser publicados em uma nuvem pública para o cliente acessar e testar remotamente antes de aceitar a entrega da versão final do aplicativo. Os conjuntos de ferramentas que podem ajudar o gerenciamento ágil na nuvem incluem o Code2Cloud, em conjunto com o Tasktop e o CollabNet. Code2Cloud A CollabNet VersionOne é uma empresa de software com sede em Alpharetta, Georgia , Estados Unidos. Os produtos e serviços CollabNet VersionOne pertencem às categorias do setor de gerenciamento de fluxo de valor , devops , gerenciamento ágil , gerenciamento de ciclo de vida de aplicativos (ALM) e controle de versão corporativa. Esses produtos são usados por empresas e organizações governamentais para reduzir o tempo necessário para criar e liberar software. Poder da computação em nuvem no desenvolvimento de aplicativos A computação em nuvem solucionou com eficácia os problemas financeiros e de infra-estrutura associados ao desenvolvimento de aplicativos personalizados para as empresas, pois facilita o investimento financeiro necessário para configurar o sofisticado ambiente de desenvolvedor necessário para criar, testar e implantar aplicativos personalizados internamente. Como resultado, a introdução de plataformas em nuvem permitiu que os desenvolvedores se concentrassem unicamente na criação de aplicativos modernos altamente escalonáveis. Além disso, o processo de comercialização desses aplicativos personalizados consome menos tempo e é mais eficaz como resultado da flexibilidade oferecida pelos serviços de computação em nuvem. Quando as aplicações são executadas na nuvem, eles são acessados como um serviço - isso é conhecido como “Software as a Service (SaaS)”. Software como serviço, é uma forma de distribuição e comercialização de software. No modelo SaaS, o fornecedor do software se responsabiliza por toda a estrutura necessária à disponibilização do sistema (servidores, conectividade, cuidados com segurança da informação), e o cliente utiliza o software via internet, pagando um valor pelo serviço. O modelo SaaS oferece software como serviço com propósitos específicos que estão disponíveis para os usuários na Internet. Os sistemas de software são acessíveis a partir de vários dispositivos por meio de uma interface cliente em uma rede de modelo cliente-servidor como um navegador Web. No SaaS, o usuário não administra as características individuais da aplicação, exceto configurações específicas. Sendo assim, os desenvolvedores se concentram em atualização e não na infraestrutura, levando ao desenvolvimento rápido de sistemas de software. Ao utilizar o SaaS, as empresas podem fornecer serviços de maneira econômica e eficiente. Esse processo permite que as empresas trabalhem em conjunto com parceiros para desenvolver aplicativos e distribuí-los rapidamente no mercado. As vantagens do uso de serviços de computação em nuvem sobre o software tradicional vão além da queda nos custos. Os métodos tradicionais de desenvolvimento de aplicativos personalizados que geralmente levavam meses para serem concluídos agora caíram para apenasalgumas semanas. Com todos os softwares e ferramentas necessários disponíveis na nuvem, os desenvolvedores podem trabalhar de forma mais eficiente e produtiva do que poderiam se estivessem usando software tradicional, onde, na maioria das vezes, componentes adicionais eram necessários para desenvolver um aplicativo completo. A abordagem atualmente simplificada de acesso a aplicativos on-line permite que os desenvolvedores produzam aplicativos abrangentes de nível corporativo simplesmente por meio de um navegador da Web, sem as dificuldades técnicas associadas às soluções tradicionais. Outro benefício principal do uso de serviços de computação em nuvem para o desenvolvimento de aplicativos é o uso eficiente de recursos. Aplicações que utilizam serviços de TI virtualizados são geralmente mais eficientes e melhor equipadas para atender às demandas dos usuários. O modelo pay-per-use dos serviços de computação em nuvem fornece aos clientes flexibilidade para gastar de acordo com seus requisitos e, portanto, elimina os gastos desnecessários. Além disso, os serviços de computação em nuvem permitem a entrega de aplicativos em vários dispositivos. Isso permite que as empresas projetem seus aplicativos para que sejam compatíveis com uma variedade de dispositivos. Desvantagens do desenvolvimento de desktops Os ambientes de desenvolvimento de desktop estão se tornando desatualizados, falhando com mais frequência e causando problemas de produtividade para os desenvolvedores. Os principais problemas com o ambiente de área de trabalho são os seguintes: 1 - Gerenciamento de configuração complicado: o processo de gerenciamento de configuração substancial para o espaço de trabalho de um desenvolvedor transforma os desenvolvedores em administradores de sistemas de meio período, responsáveis por seu próprio mini-DC sendo executado inteiramente na área de trabalho. Isso é demorado, propenso a erros e desafiador para automatizar. Muitos desenvolvedores têm vários computadores e são forçados a repetir essas tarefas em cada máquina. Não há como sincronizar as configurações dos componentes em diferentes máquinas, e cada máquina requer hardware e SOs semelhantes para operar os componentes de forma idêntica. 2 - Diminuição da produtividade: muitos IDEs são limitados de memória e disco, com tempos de inicialização significativos. Eles são tão sedentos de recursos que podem causar lentidão de outras aplicações e o efeito líquido é menos produtividade devido a uma máquina mais lenta. 3 - Acessibilidade limitada: Normalmente, os espaços de trabalho do desenvolvedor da área de trabalho não são acessíveis através de dispositivos móveis pela Internet. Os desenvolvedores que precisam de acesso remoto precisam recorrer a algumas soluções complexas e lentas, como o GotoMyPC. GoToMyPC é um software de desktop remoto que permite aos usuários acessar computadores remotamente usando um navegador da web. Foi desenvolvido pela ExpertCity e lançado em 1998. A Citrix Systems adquiriu a ExpertCity em 2004 e manteve a marca e os serviços GoToMyPC. A Citrix desmembrou os produtos GoTo, que foram adquiridos pelo LogMeIn no início de 2017. Existem três versões: "Pessoal", "Pro" e "Corporativo". 4 - Má colaboração: Atualmente, a maioria dos desenvolvedores trabalha como parte de uma equipe, portanto, a comunicação e a colaboração entre os membros da equipe são essenciais para o sucesso do projeto. No caso de IDEs de desktop, eles devem terceirizar a colaboração para sistemas de comunicação fora do fluxo de trabalho do desenvolvedor, forçando os desenvolvedores a alternar continuamente entre o desenvolvimento dentro do IDE e a comunicação com a equipe por outros meios. Para resolver esses problemas, é necessário mover todo o espaço de trabalho de desenvolvimento para a nuvem. O ambiente baseado em nuvem é centralizado, facilitando o compartilhamento. Os desenvolvedores podem convidar outras pessoas para o espaço de trabalho para codificar, construir e podem se comunicar entre si no próprio espaço de trabalho. A nuvem pode oferecer melhorias na eficiência do sistema, dando a cada espaço de trabalho individual uma fatia configurável da memória disponível e recursos de computação. Vantagens do desenvolvimento de aplicativos na nuvem Plataformas de nuvem reduzem o tempo de desenvolvimento geral de um projeto de software Isso se deve em grande parte à capacidade da plataforma de nuvem de simplificar o processo de desenvolvimento, incluindo a capacidade de obter rapidamente os ativos de desenvolvimento on-line. Além disso, as plataformas de nuvem fornecem a capacidade de colaborar de forma eficaz nos esforços de desenvolvimento. Plataformas de desenvolvimento baseadas em nuvem presentes em nuvens públicas de PaaS ( Platform as a Service) e IaaS (Infrastructure as a Service), como Google, Amazon Web Services, Microsoft e Salesforce.com, oferecem redução de custos e melhor QoS (Qualidade de serviço). Em computação em nuvem, Infraestrutura como serviço, também conhecido como Infrastructure as a Service ou IaaS é uma infraestrutura de servidores acessada através da Internet que pode ser consumida como um serviço. A plataforma como serviço ( PaaS ) ou a plataforma de aplicativo como serviço ( aPaaS ) ou serviço baseado em plataforma é uma categoria de serviços de computação em nuvem que fornece uma plataforma que permite aos clientes desenvolver, executar e gerenciar aplicativos sem a complexidade de criar e manter o infraestrutura normalmente associada ao desenvolvimento e lançamento de um aplicativo. Alguns dos benefícios do desenvolvimento de aplicativos na nuvem são os seguintes: •A capacidade de auto-provisionar ambientes de desenvolvimento e teste. •A capacidade de colocar rapidamente os aplicativos em produção e dimensionar esses aplicativos conforme necessário. •A capacidade de colaborar com outros desenvolvedores, arquitetos e designers no desenvolvimento do aplicativo. Plataformas de desenvolvimento de aplicativos em nuvem O desenvolvimento de aplicativos, a implantação e o gerenciamento de tempo de execução sempre dependeram de plataformas de desenvolvimento, como o .NET, WebSphere ou JBoss da Microsoft, que foram implantados de acordo com as premissas tradicionais. No contexto da computação em nuvem, os aplicativos geralmente são implantados pela nuvem provedores fornecem serviços altamente escaláveis e elásticos para o maior número possível de usuários finais. A infraestrutura de computação em nuvem precisa oferecer suporte a muitos usuários para acessar e utilizar os mesmos serviços de aplicativos, com alocação de recursos elástica. Isso levou ao aprimoramento de tecnologias e arquiteturas de plataforma de desenvolvimento para lidar com desempenho, segurança, alocação de recursos, monitoramento de aplicativos, faturamento e tolerância a falhas. Cloud fornece o ADE como PaaS. Existem várias soluções disponíveis no mercado de PaaS, incluindo o Google App Engine, o Microsoft Windows Azure, o Force.com e o ManjrasoftAneka. Windows Azure O Windows Azure fornece uma ampla variedade de serviços baseados no Windows para desenvolver e implantar aplicativos baseados no Windows na nuvem. Faz uso da infraestrutura fornecida pela Microsoft para hospedar esses serviços e escaloná-los sem problemas. A plataforma Windows Azure consiste em serviços SQL Azure e .NET. Os serviços .NET incluem serviços de controle de acesso e barramento de serviço .NET. O Windows Azure é uma plataforma com hardware compartilhado para vários usuários fornecido pela Microsoft. O desenvolvimento de aplicativos do Windows Azure exige o uso do SQL Azure para a funcionalidade doRDBMS, porque essa é a única funcionalidade de DBMS coexistente acessível no mesmo contexto de hardware que os aplicativos. Google App Engine O Google App Engine fornece um ambiente de tempo de execução extensível para aplicativos baseados na Web desenvolvidos com Java ou Python, que aproveitam a enorme infraestrutura de TI do Google. O Google App Engine é oferecido pelo Google, Inc. Seu principal valor é que os desenvolvedores podem criar rapidamente aplicativos baseados na Web em suas máquinas e implantá-los na nuvem. O Google App Engine fornece aos desenvolvedores um ambiente simulado para criar e testar aplicativos localmente com qualquer sistema operacional ou qualquer sistema que execute uma versão adequada dos ambientes de linguagem Python e Java. O Google usa o mecanismo JVM com o JettyServlet e o Java Data Objects. Force.com O Force.com é um ambiente de desenvolvimento e execução e é a melhor abordagem para o PaaS para o desenvolvimento de aplicativos baseados em gerenciamento de relacionamento com o cliente (CRM). Com relação ao design de sua plataforma e ao ambiente de tempo de execução, ele é baseado na tecnologia Java. A plataforma usa uma linguagem de programação proprietária e um ambiente chamado Apex code, que tem uma reputação de simplicidade no aprendizado e rápido desenvolvimento e execução. Manjrasoft Aneka A Aneka é uma plataforma de aplicativos distribuídos para o desenvolvimento de aplicativos em nuvem. A Aneka pode unir qualquer número de desktops ou servidores físicos ou virtuais baseados no Windows em uma rede de nós interconectados que atuam como uma única camada de execução de aplicativos lógicos. Nuvens baseadas em Aneka podem ser implantadas em uma variedade de hardware e sistemas operacionais, incluindo vários tipos de famílias de sistemas operacionais Windows e Linux. A Aneka fornece um modelo flexível para o desenvolvimento de aplicativos distribuídos e fornece integração com nuvens externas, como o Amazon EC2 e o GoGrid. A Aneka oferece a possibilidade de selecionar a implantação de infraestrutura mais adequada sem estar vinculada a nenhum fornecedor específico, permitindo que as empresas se adaptem confortavelmente à nuvem, como e quando necessário. APIs de computação em nuvem APIs (application Programming Interface ), É um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. Detalhes de algumas das APIs fornecidas pelos CSPs, como Rackspace, IBM e Intel. Rackspace Os desenvolvedores têm acesso à documentação da API e ao kit de desenvolvimento de software (SDK) em todos os serviços da Rackspace no site do desenvolvedor, http://developer.rackspace.com. Assim, a Rackspace fornece aos desenvolvedores as ferramentas e recursos necessários para criar novos aplicativos e serviços sobre suas APIs. IBM A IBM introduziu novas APIs, que podem ser encontradas no site do desenvolvedor da IBM, www.ibm.com/developerworks/. A introdução das novas APIs se concentra em armar desenvolvedores com as ferramentas e recursos para criar novos produtos, aplicativos e serviços. Intel A Intel tem vários SDKs destinados a desenvolvedores de computação em nuvem. A Intel tem uma plataforma de serviços em nuvem beta, onde os desenvolvedores podem baixar o SDK para serviços baseados em identidade e multi-plataforma. O programa Intel Cloud Builders reúne os principais fornecedores de sistemas e soluções de software para fornecer as melhores práticas e orientações práticas sobre como implantar, manter e otimizar uma infraestrutura de nuvem baseada na arquitetura Intel. E para os desenvolvedores que desejam usar serviços de infraestrutura de nuvem pública, o Intel Cloud Finder facilita a seleção de provedores que atendam aos requisitos de um desenvolvedor. Resumo A computação em nuvem está dominando a indústria de TI em todo o mundo atualmente. Mais e mais empresas e organizações estão adotando o modelo de nuvem atualmente. Embora a computação em nuvem seja um novo modelo de prestação de serviços, as tecnologias subjacentes existem há muito tempo. A computação em nuvem usa muitas dessas tecnologias para atingir suas metas estabelecidas. Este capítulo enfoca os vários impulsionadores tecnológicos da computação em nuvem. Ele discute as tecnologias básicas de habilitação da computação em nuvem, como SOA, hipervisores (Um hipervisor, ou monitor de máquina virtual, é um software, firmware ou hardware que cria e roda máquinas virtuais (VMs).) e virtualização. Tecnologia multicore (Um processador multinúcleo é um circuito integrado de processador de computador com duas ou mais unidades de processamento separadas , chamadas núcleos, cada uma das quais lê e executa instruções de programa , como se o computador tivesse vários processadores.) e tecnologias de memória e armazenamento. Ele também fala sobre os mais recentes desenvolvimentos na Web 2.0 e Web 3.0, os avanços nos modelos de programação, modelos de desenvolvimento de software, computação pervasiva, sistemas operacionais e ADEs. Ele também explica como essas tecnologias estão relacionadas ao modelo de nuvem, ajudando a nuvem a fornecer serviços de qualidade. Os desenvolvimentos recentes em cada uma dessas tecnologias capacitadoras são destacados com suas vantagens e características. O capítulo explica como essas tecnologias subjacentes estão capacitando o atual paradigma de computação em nuvem para fornecer seus serviços de forma eficaz. Além disso, o capítulo apresenta como várias partes interessadas, como provedores de serviços e consumidores de serviços, são beneficiadas pelos recursos estendidos por essas tecnologias. Pontos de revisão •SOA: Arquitetura orientada a serviços é um conjunto flexível de princípios e padrões de design usados para desenvolvimento e integração de sistemas. Um sistema baseado em SOA implementado adequadamente fornece um conjunto de serviços fracamente acoplado que pode ser usado pelos consumidores de serviço para atender aos requisitos de serviço em vários domínios de negócios. •Hipervisor: Os hipervisores são ferramentas de software usadas para criar máquinas virtuais e produzem virtualização de vários recursos de hardware, como CPU, armazenamento e dispositivos de rede. Eles também são chamados de VMM (Virtual Machine Monitor, monitor de máquina virtual) ou gerentes de virtualização. •Tecnologia Multicore: Na tecnologia multicore, duas ou mais CPUs estão trabalhando juntas no mesmo chip. Nesse tipo de arquitetura, um único processador físico contém a lógica central de dois ou mais processadores. •Armazenamento como um serviço: o armazenamento como serviço (STaaS) é um modelo de negócios na nuvem no qual um provedor de serviços aluga espaço em sua infraestrutura de armazenamento a vários usuários da nuvem. •Rede definida por software: A rede definida por software (SDN) é uma abordagem à rede em que o controle é desacoplado do hardware de rede e dado a um aplicativo de software chamado controlador. •Web 2.0: Web 2.0 (ou Web 2) é o termo popular dado à tecnologia avançada da Internet e aplicativos que incluem blogs, wikis, RSS e bookmarking social. •Web Semântica: A web semântica é uma visão de TI que permite que dados e informações sejam prontamente interpretados por máquinas, para que as máquinas sejam capazes de tomar decisões contextuais por conta própria, encontrando, combinando e agindo sobre informações relevantes na web. •Modelo de desenvolvimento ágil: O modelo ágil é um modelo de desenvolvimento de softwareem que o software é desenvolvido em ciclos incrementais rápidos. O desenvolvimento resulta em pequenos lançamentos incrementais e é baseado em funcionalidades previamente construídas e é cuidadosamente testado para garantir a qualidade do software. •MapReduce: O MapReduce é um modelo de programação popular projetado para suportar o desenvolvimento de aplicativos com uso intensivo de dados e de dados, o que requer altas demandas de armazenamento e processamento. MapReduce é um modelo de programação desenhado para processar grandes volumes de dados em paralelo, dividindo o trabalho em um conjunto de tarefas independentes. •Computação difundida: A computação difundida é uma combinação de tecnologias como recursos da Internet, reconhecimento de voz, redes, inteligência artificial e computação sem fio, usada para tornar a computação em qualquer lugar possível. •Web OS: Os sistemas operacionais da Web são basicamente sites que replicam o ambiente de área de trabalho dos sistemas operacionais modernos, tudo dentro de um navegador da Web. •Cloud API: Cloud APIs são fornecidos pelos provedores de serviços em nuvem para o desenvolvimento de aplicativos em nuvem. Revisão perguntas – Faça o depósito das respostas no BB 1. Quais são os recursos característicos da SOA usados na implantação bem-sucedida da computação em nuvem? 2. Quais são as várias abordagens na virtualização? Quais são os papéis desempenhados pelo hipervisor e virtualização no ambiente de nuvem? 3. Como as tecnologias multicore podem ser usadas para alcançar o paralelismo na nuvem? 4. Quais são os desenvolvimentos tecnológicos mais recentes para atender aos requisitos de armazenamento na nuvem? 5. Como a SDN se relaciona com o cenário de computação em nuvem? 6. Quais são as maneiras pelas quais a computação em nuvem se baseia nos conceitos da Web 2.0 para sua operação bem-sucedida? 7. Como a Web semântica e os serviços da Web contribuem para a evolução da computação em nuvem? 8. Justifique a decisão de adotar o modelo de desenvolvimento ágil para desenvolvimento de software. Como o paradigma da computação em nuvem pode tornar o processo ágil eficaz? 9. Quais são os modelos de programação usados na nuvem? Justifique a resposta explicando as características dos modelos. 10. Explique as maneiras pelas quais a computação difusa afeta o modelo de nuvem. 11. Explicar as diferenças entre um sistema operacional da web e um sistema operacional em nuvem. 12. Como o paradigma da computação em nuvem ajuda no desenvolvimento eficaz de aplicativos?
Compartilhar