Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Fundamentos de sistemas distribuídos
Sistemas Monolítico
❖ Muitas das vezes chamado de Kernel
● Controla todo o sistema e onde estão todos os seus componentes
● Tudo está contido num único bloco
❖ Primeiro modelo de arquitetura utilizado na computação e ainda é muito usado.
❖ Permitiu o desenvolvimento da Computação nos seus primórdios.
Prós
● Simplicidade:
○ Mais simples de construir, testar e implantar.
○ Permite escalabilidade horizontal, com várias
instâncias rodando em paralelo via balanceador de carga.
● Preocupações transversais:
○ Facilitam a gestão centralizada de questões
transversais, como registro, configuração e monitoramento.
● Desempenho:
○ Os componentes normalmente compartilham
memória que é mais rápida do que as comunicações serviço a
serviço.
Problemas
● Abordagem monolítica é difícil de alterar ou atualizar o código por trás do
aplicativo.
● O código para os principais elementos do aplicativo são misturados em uma “bola”
de código fortemente entrelaçada.
Sistemas Distribuídos
❖ Geralmente de grande porte e bastante complexos.
❖ Utilizam recursos de rede para se comunicar.
❖ Tanenbaum os define como uma “Coleção de computadores independentes que se
apresenta ao usuário como um sistema único e consistente”.
Componentes
● Rede
● Hardware
● Sistemas Operacionais
● Linguagens de programação
● Múltiplas implementações
Desafios
● Heterogeneidade: diferentes hosts devem se comunicar de forma transparente
● Abertura: deve-se ter um ambiente “aberto”, com amplas possibilidades de
integração
○ sistema distribuído pode ser extendido e re-implementado
● Segurança: o ambiente deve oferecer segurança de acesso e proteção seletiva
● Escalabilidade: o sistema deve ser escalável, na medida da necessidade
● Manipulação de erros: erros devem ser tratados antes que provoquem maiores
danos
● Transparência: o sistema deve "esconder" a complexidade da distribuição e fazer
com que pareça que o usuário está trabalhando em um ambiente local e único
Middleware
● Camadas de software que abstraem os desafios da computação distribuída,
provendo um ambiente integrado e coeso
● Funciona como uma camada de tradução para interligar o SO com os programas.
● CORBA
○ Tipo de middleware para lidar com múltiplos objetos
○ Common Object Request Broker Architecture
○ Desenvolvido pelo Object Management Group (OMG)
Contrato de API
● Uma API necessita estabelecer padrões de comunicação para ser consumida, na
forma de um contrato.
Consequências Importantes
● A definição de SD tem as seguintes consequências importantes:
○ Concorrência:
■ Em sistemas distribuídos, a concorrência é uma norma, onde
programas são executados simultaneamente em diferentes
máquinas. Embora a adição de mais recursos aumente a capacidade
de manipulação, o principal desafio está na coordenação eficiente
desses programas ao compartilharem recursos.
○ Inexistência de relógio global:
■ A inexistência de um relógio global em sistemas distribuídos significa
que não há uma noção única de tempo que todos os
computadores compartilham. A coordenação entre programas é
feita por troca de mensagens, mas há limites para a precisão da
sincronização dos relógios, o que impede uma referência temporal
global exata.
○ Falhas independentes:
■ Cada componente do sistema pode falhar independentemente,
deixando os outros ainda em funcionamento.
Sistema Monolítico X Distribuído
MONOLÍTICO DISTRIBUÍDO
Todas as funcionalidades num único bloco de
código, podendo haver módulos
Funcionalidades em blocos distintos de
código (componentes), que se integram
Predomina análise e modelagem no modelo
tradicional
Predomina orientação a objetos/serviços,
modelo inovador
Sistema fortemente acoplado Componentes fracamente acoplados
Desenvolvimento mais fácil, com poucas
tecnologias e praticamente sem integrações
Desenvolvimento complexo, com a
necessidade de grande conhecimento de
tecnologias e integrações
Difícil manutenção, com grande possibilidade
de propagação de erros
Manutenção mais fácil devido à alta
granularidade. Porém, gerando dificuldades de
integração e atualização.
Robustez e segurança Pouco robusto e pouco seguro
Sistema fechado Sistema aberto, flexível
Escalabilidade sem distribuição Escalabilidade total
Classificações dos sistemas computacionais
Por meio da classificação é possível ter uma noção de quanto cobrar pelo serviço, estimar o
tempo que será utilizado para o desenvolvimento e escolher as suas ferramentas.
Classificação
● Podemos dividir os sistemas computacionais em dois grupos:
○ Sistemas centralizados
○ Sistemas paralelos
★ Para sistemas paralelos, temos duas subcategorias:
■ Sistemas fortemente acoplados
■ Sistemas fracamente acoplados
Sistemas Centralizados
● Sistema centralizado em que o usuário acessa um mainframe e ele redireciona
para os recursos necessários. Ex: Serviços de aplicação e Banco de dados
● Funcionamento:
○ Possível por meio de
mainframes.
○ Recebem grande quantidade
de informações e as
processam.
● Vantagens:
○ Estabilidade e robustez
○ Segurança
○ Facilidade de gerenciamento
● Desvantagens:
○ Estabilidade e produtividade
○ Linguagens de programação antigas e falta de profissionais qualificados
○ Servidores de grande porte, com necessidade de salas especiais
○ Valor elevado para implementação e falta de interface gráfica
Sistemas Paralelos
● São sistemas que possuem mais de um processador para processar suas
informações.
● Todos os processamentos são resolvidos de forma paralela entre os
processadores
● Presentes em Pcs, smartphones e outro equipamentos
● Processadores com vários núcleos
● Baseados em clusters
○ Conjuntos de máquinas interligadas que dividem sua carga de
processamento
● Vantagens:
○ Escalabilidade: Capacidade de continuar operando eficientemente ao
aumentar o número de processadores.
○ Produtividade: Capacidade de realizar tarefas aproveitando o poder de
processamento de múltiplos processadores.
○ Economia: Em comparação com os custos de equipamentos para sistemas
centralizados.
● Desvantagens:
○ Dificuldade para gerenciamento
■ Tarefa complexa devido a natureza descentralizada desses
ambientes.
○ Segurança
■ Como os dados são processados em vários locais ao mesmo tempo,
diferente do modelo centralizado, facilita assim o acesso aos dados
por vários servidores.
Sistemas Paralelo Fortemente Acoplados
● A comunicação dos processadores ocorre por meio de barramentos internos.
● Os processadores compartilham a mesma memória principal.
Sistemas Paralelo Fracamente Acoplados
● A interligação entre os elementos do sistema se dá via rede e não internamente ao
hardware
○ Torna o acompanhamento mais flexível
Fundamentos da Computação Móvel
● O que é computação móvel?
○ Transmissão e recepção de dados através de dispositivos computacionais
por meio de redes móveis sem fio.
○ Acesso à informação a qualquer lugar, a qualquer momento.
● Requisitos:
○ Processamento: Processamento de dados de forma eficiente é crucial para
garantir os fundamentos da informação de qualidade.
■ Tarefa conjunta entre: Hardware, Software e Big Data
○ Mobilidade: A mobilidade é necessária e desejada.
○ Acessibilidade: A informação deve estar disponível a qualquer momento.
● Histórico - Origens da tecnologia sem fio:
○ Campos eletromagnéticos
○ Transmissão e recepção de ondas de rádio
○ Ondas eletromagnéticas
○ Telegrafia sem fios
○ Primeiro rádio
Mobilidade
● A computação móvel envolve o uso de dispositivos portáteis que permitem
acessar e compartilhar dados de forma fácil e rápida.
● Características:
○ Portabilidade: Capacidade de ser facilmente transportável.
■ Interface limitada
● Processamento
● Comunicação
● Energia
○ Usabilidade: A usabilidade de um dispositivo depende de vários fatores
como características do usuário, ambiente e dispositivo.
○ Funcionalidade: São implementadas na forma de aplicações, e dispositivos
móveis tem múltiplas aplicações que rodam neles.
■ Independentes: Executam sem qualquer contato com outro usuário
ou sistema (relógio, calculadora, etc).■ Dependentes: Precisam se conectar a outros usuários ou sistema
(gps, correio eletrônico, notícias, etc).
○ Conectividade: Uma das maiores características atualmente nos
dispositivos móveis é a conectividade.
■ Conectar pessoas e/ou sistemas
■ Transmitir e receber informações
● Um dispositivo móvel opera em três modos:
○ Sempre conectado
○ Parcialmente conectado
○ Nunca conectado
Computação Ubíqua e Pervasiva
● Ubíquo: Algo que está em toda parte ao mesmo tempo.
● A computação ubíqua se refere à integração de tecnologias de computação em
nosso cotidiano, permitindo acesso e uso contínuos, independente da localização.
● A computação se move para além de estações de trabalho, integrando-se a diversos
dispositivos no ambiente (Computação Móvel + Pervasiva).
● Ambientes variados, como salas de aula, escritórios, edifícios, são exemplos de
locais onde a computação ubíqua pode estar presente.
● Características:
○ Diversidade: Inclusão de diferentes tipos de dispositivos e contextos de uso.
○ Descentralização: A computação não se encontra mais em um único
dispositivo.
○ Conectividade: Dispositivos conectados em rede de forma constante.
○ Onipresença: Computação integrada ao cotidiano, invisível e acessível em
qualquer lugar.
○ Mudança na relação homem - máquina: A interação com a máquina se
torna passiva, onde o computador deixa de ser o foco das atenções.
○ Calm Technology: Integração invisível e tranquila, sem interrupções.
● Tecnologias:
○ Hardware: Dispositivos de redes e de computação móvel.
○ Software: Sistemas distribuídos e ferramentas de desenvolvimento.
○ Modelagem de contexto: Uso de sensores e processamento de dados para
entender o ambiente.
○ Interação: Interfaces hands-free e adaptação de interfaces e dispositivos de
hardware.
○ Aplicações: Projeto de novas aplicações e aspectos sociais da computação
ubíqua.
● Computação móvel:
○ Dispositivos pequenos e portáteis, que podem ser usados enquanto o
usuário se movimenta livremente.
○ Computadores Wearable: projetados para o uso sem necessidade das
mãos, podendo usar sensores (câmeras e microfones), e formas
convenientes de teclados.
○ Computadores Wireless: Conexão wireless contínua à rede, mantendo o
serviço funcionando mesmo os dispositivos em movimento.
● Computação móvel:
○ Dispositivos operam a distância: O usuário não precisa estar fisicamente
próximo dos dispositivos.
○ Interfaces hands-free: Controle por voz e outras formas que permitem a
interação sem o uso das mãos.
○ Consciência de contexto: Sensores detectam o ambiente e as atividades
do usuário, permitindo respostas automáticas.
○ Ambiente Inteligente: Ações automáticas baseadas em eventos contextuais
sem intervenção direta do usuário.
● Computação Ubíqua e Pervasiva Combinadas:
○ Computação Desagregada: Dispositivos se reconfiguram dinamicamente,
permitindo, por exemplo, mover uma apresentação para diferentes telas
automaticamente.
○ Computação Sensível à Posição: A interação muda conforme o usuário se
movimenta, como em guias automáticos em museus.
○ Realidade Aumentada: Dispositivos vestíveis combinados com sensores de
posição sobrepõem informações ao campo de visão do usuário.
○ Interfaces Sensíveis a Objetos: Objetos físicos são associados a
informações digitais, como vincular um objeto a uma página web.
Desenvolvimento de Aplicações Distribuídas - Aplicações Móveis
Computação Móvel
● Cenário Atual
○ Redes de computadores prometem acesso livre à Internet a qualquer hora.
○ Necessidade crescente de redução de custos.
● Tipos de Dispositivos
○ Portátil
○ Pessoal
○ Estático
○ Compartilhado
■ Recursos
● Comunicação
○ Bluetooth
○ Wifi
○ NFC
● Sensores
○ GPS
○ Proximidade
○ Bússola
● Outros
○ Touchscreen
○ Microfone
○ Câmera
● Limitação dos Dispositivos
○ Dificuldade na entrada e saída de informação
○ Baixa capacidade de armazenamento dos equipamentos
○ Tamanho e resolução das telas
○ Baixa autonomia das baterias
○ Baixo poder de processamento
○ Opções e custos de conectividade
● Fragmentação de plataformas
○ IOS
○ Android
● Requisitos das Aplicações Móveis:
○ Contextualização e individualização
■ Captura do contexto global, mas cada aplicação escolhe o que
utilizar.
○ Adaptação multi-dimensão e multi-nível
■ Dimensões (físicas, lógicas e pessoais) e níveis (rede sistema e
aplicação).
○ Adaptação negociada
■ As aplicações devem se valer de alguns aspectos como localização e
recursos onde executam.
○ Desacoplamento temporal e espacial
■ Considerar atividades distribuídas no tempo e no espaço.
○ Funcionalidade selecionada pelo contexto
■ A aplicação se comporta de forma otimizada e se vale do contexto e
dos recursos.
Arquitetura
Aplicações Nativas
● Executam em um SO específico (Android, IOS, Windows Phone)
● Desenvolvida com linguagens como Objective-C, Swift, .NET, Java
● Acesso total aos recursos dos dispositivos (câmera, contatos, sensores, etc)
● Adquirida via download a partir das lojas virtuais de aplicativos
● Instalada diretamente no dispositivo móvel
● Exemplos: Angry Birds
Aplicações Web
● Executam em qualquer dispositivo móvel que possua um Navegador Web
● Desenvolvidas com linguagens web como:
○ Cliente - HTML, JavaScript, CSS
○ Servidor - Java, .NET, PHP, Python, Ruby
● Acesso apenas aos recursos disponíveis para o navegador
● Não requerem download ou instalação
● Dependem essencialmente da conexão a Internet
● Exemplos: Aplicações Web
Aplicações Híbridas
● Executam nos diversos SO que possuam suporte a tecnologia empregada
● Desenvolvidas com base em frameworks multi-plataforma
● Acesso parcial aos recursos dos dispositivos, via framework utilizado
● Mesclam parte nativa e parte Web
● A parte nativa deve ser descarregada das lojas virtuais de aplicativos
● A parte Web é provida por um servidor na Internet e acessada via navegador
inserido na parte ativa
● Exemplos: Linkedin, Facebook, Twitter
Comunicação
Redes sem fio
● Redes Infraestrutura
● Redes Ad hoc
● Redes de Satélites
Tipos de Conectividade
● Sempre Conectado
○ Um dispositivo móvel normalmente opera num modo sempre ligado
● Parcialmente Conectado
○ Há situações em que o dispositivo móvel está sem conexão por longos
períodos de tempo.
Sincronização
O tipo de conexão afeta a maneira com que você pode sincronizar dados entre os sistemas
de back-end e o dispositivo móvel.
● A sincronização é possível de duas maneiras:
○ Comunicação contínua
■ Quando a ligação entre o cliente e o servidor é contínua, a
sincronização de dados é contínua e pode ser alcançada através de
meios síncronos ou assíncronos.
○ Método “guardar e encaminhar” (Store-and-forward)
■ Suponhamos, por exemplo, que um usuário móvel pretende inserir
dados, enquanto o seu dispositivo móvel não está ligado a um
servidor. Um aplicativo cliente móvel pode inicialmente armazenar os
dados localmente.
■ Mais tarde, quando a ligação for restabelecida, o aplicativo móvel irá
transmitir os dados locais para o banco de dados no servidor.
Arquitetura da plataforma Android (2022)
Kernel do Linux
● A fundação da plataforma Android é o Kernel do Linux.
● Usar um kernel do Linux permite que o Android aproveite os recursos de
segurança principais e que os fabricantes dos dispositivos desevolvam drivers de
hardware para um kernel conhecido.
Camada de abstração de Hardware (HAL)
● Fornece interfaces padrão que expõem as capacidades de hardware do dispositivo
para a estrutura da Java API de maior nível.
● Consiste em módulos de biblioteca, que implementam uma interface para um
tipo específico de componente de hardware, como o módulo de câmera ou
Bluetooth.
● Ex: Áudio, Bluetooth, Câmera, Sensores, etc.
Android Runtime (ART)
● Projetado para executar várias máquinas virtuais em dispositivos de baixa memória
executando arquivos DEX.
○ DEX: Formato de bytecode projetado especialmente para Android, otimizado
para oferecer consumo mínimo de memória.
● Antes do Android versão 5.0, o Dalvik era a máquina virtual utilizada em tempo de
execução do Android.
Bibliotecas C/C++ nativas
● Vários componentese serviços principais do sistema Android, como ART e HAL, são
implementados por código nativo que exige bibliotecas nativas programadas em C e
C++.
Java Framework
● Fornece acesso aos recursos so SO Android através das APIs programadas na
linguagem Java.
● Formam blocos de programação utilizados para criar os aplicativos Android.
● Simplifica reutilização de componentes e serviços de sistema modulares e principais.
Aplicativos do Sistema
● Conjunto de aplicativos principais para e-mail, envio de SMS, calendários,
navegador de internet, contatos etc.
● Os aplicativos inclusos na plataforma não têm status especial entre os aplicativos
que o usuário opta por instalar.
Arquitetura da plataforma IOS
Core OS
● Todas as tecnologias IOS são construídas sob a camada de nível mais baixo, ou
seja, a camada Core OS. Essas tecnologias incluem:
○ Accelerate Framework
○ Core Bluetooth Framework
○ Local Authentication Framework
○ Security Framework
○ System
Core Services
Abaixo estão algumas estruturas importantes presentes nesta camada
● Address Book Framework;
● Cloud Kit Framework;
● Core Data Framework;
● Core Foundation Framework;
● Estrutura de localização central;
● Core Motion Framework;
● Framework Foundation;
● HealthKit Framework;
● HomeKit Framework;
● Social Framework;
● StoreKit Framework.
Media
Graphics Technologies: provê diversos recursos para criarmos interfaces de usuários de
alta qualidade. :
Audio Technologies: trabalha com reprodução e gravação de áudio.
Video Technologies: provê formas para gerenciarmos o conteúdo de vídeos do aplicativo e
na internet.
AirPlay: permite fazer stream de áudio e/ou vídeo com qualquer receptor/emissor que faça
uso do AirPlay.
Cocoa Touch
Está camada nos provê uma gama de frameworks que são utilizados para a construção dos
aplicativos. Dentre eles estão frameworks para aparência, multi-tasking, touch-based input,
push notifications, dentre outros.

Mais conteúdos dessa disciplina