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.