Buscar

Computação_Distribuida

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 37 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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?

Continue navegando