Prévia do material em texto
1. Explique os tipos de transparência: (a) Transparência de acesso Oculta diferenças na representação de dados e no modo de acesso (b) Transparência de localização O local do recurso é desconhecido. (c) Transparência de migração O recurso pode ser movido, inclusive enquanto está em uso. (d) Transparência de relocação O recurso pode ser movido, inclusive enquanto está em uso. (f) Transparência de replicação Múltiplas instâncias de um recurso podem ser utilizadas para aumentar a confiabilidade e desempenho. (g) Transparência de concorrência Vários usuários podem compartilhar o mesmo recurso. (h) Transparência à falha A falha e a recuperação de um recurso não afetam o sistema. 2. Quanto mais transparente melhor o sistema? Justifique. Sim, Transparência refere-se, novamente, do ponto de vista do usuário, a quão transparente o sistema é, ou seja, quanto o cliente “desconhece” do funcionamento interno do sistema, e isso é uma característica positiva: quanto menos o usuário necessitar saber da implementação e funcionamento do sistema, ou seja, quanto mais transparente o sistema for, melhor para o usuário. 3.Um sistema aberto é desejável, mas, para que isso aconteça precisamos garantir Interoperabilidade e Portabilidade. Redefina um sistema distribuído. Aberto usando o que vem a ser interoperabilidade e portabilidade. Interoperabilidade: Caracteriza até que ponto duas implementações de sistemas ou componentes de fornecedores diferentes devem coexistir e trabalhar em conjunto Portabilidade: Caracteriza até que ponto uma aplicação desenvolvida para um sistema distribuído A pode ser executada, sem modificação, em um sistema distribuído diferente B que implementa as mesmas interfaces 4. O que significa ser um sistema escalável, em relação ao tamanho? Um sistema que tem a Facilidade em adicionar mais usuários e recursos ao sistema. um sistema cujo desempenho aumenta com o acréscimo de hardware e software, proporcionalmente à capacidade acrescida, é chamado escalável. É importante notar, entretanto, que um sistema dito escalável permite que se aumente ou diminua a quantidade de recursos. 5. Explique e exemplifique três técnicas que auxiliam na melhora da escalabilidade. • Não aguardar por resposta: comunicação assíncrona. • Útil em processamento em lotes e aplicações paralelas nas quais tarefas mais ou menos independentes podem ser escalonadas para execução enquanto outra espera comunicação. • Há aplicações onde não é possível fazer comunicação assíncrona • ex: aplicações interativas: nada melhor a fazer que esperar a resposta. • Solução melhor: reduzir comunicação global. • Ex.: verificação de erros de sintaxe em validação de formulário: código no servidor vs. código no cliente. •dividir componente e espalhar pelo sistema. • Ex.: DNS. • aumenta disponibilidade. • diminui latência. • equilibra carga. • Ex.: Cache (forma “especial” de replicação); • cache: decisão tomada pelo cliente; replicação pelo proprietário. • cache: sob demanda; replicação: planejada. • Problema: consistência. 6. Sistemas pervasivos estão em foco na atualidade e geralmente são distribuídos. Defina o que são sistemas pervasivos. Esses sistemas denominados sistemas distribuídos pervasivos, os equipamentos costumam ser caracterizados por seu pequeno tamanho, pela alimentação por bateria, por sua mobilidade e por terem somente uma conexão sem fio; – Um aspecto importante é a ausência geral de controle administrativo humano. O poder computacional está sempre disponível, se encontra em qualquer lugar, a todo momento e é acessível com qualquer dispositivo. A computação pervasiva propõe o deslocamento da para a centralização no usuário e suas atividades. Nesta visão, quem deve ser reconhecido pelo sistema é o usuário e não os equipamentos que ele porta ou usa (como estão definidos os sistemas computacionais atuais. A comunicação no ambiente pervasivo, por causa dos seus requisitos, envolve várias questões e desafios de pesquisa. Neste cenário, onde desconexões são frequentes, faz-se necessário um serviço de comunicação que leve em consideração o estado da rede e o tipo de conexão. . 7. Arquiteturas de sistemas mostram, como componentes de software podem ser organizados e como se comunicam. Defina o que são componentes de software. Diferencie-os dos conectores. um componente é uma unidade modular com interfaces requeridas e fornecidas bem definidas que é substituível dentro de seu ambiente. - é passível de substituição; - Necessário respeitar as interfaces; Conector é descrito como um mecanismo que serve de mediador da comunicação ou da cooperação entre componentes. 8. Autores sugerem que trabalhar com os conceitos cliente e servidor é uma boa. De forma análoga, dividir um sistema em camadas também é recomendado. Quais as camadas mínimas? Descreva cada uma delas. 3 camadas: 1 nível de interface de usuário: conteúdo que é necessário para fazer interface diretamente com o usuário como gerenciamento de exibição (manipula a interação com o usuário) 2 nível de processamento: normalmente contém as aplicações (intermediária – mantém a funcionalidade central da aplicação) 3: nível de dados: gerencia os dados propriamente ditos sobre os quais está sendo executada alguma ação (age sobre o banco de dados ou sistema de arquivos;) 9. Clientes podem ser magros ou gordos. Explique está afirmação usando modelo de camadas da arquitetura cliente servidor. A arquitetura cliente-servidor mais simples é chamada de arquitetura de duas camadas em que uma aplicação é organizada como um servidor e um conjunto de clientes. Podem utilizar um modelo cliente-magro onde o cliente só responde pela camada de apresentação (pode apresentar problemas de escalabilidade e desempenho) ou um modelo cliente-gordo (pode apresentar problemas de gerenciamento) onde o cliente implementa a lógica de aplicação e as interações com os usuários do sistema. Na solução de duas camadas, três camadas lógicas devem ser mapeadas em dois sistemas de computadores. A linguagem java e a possibilidade de recorrer a applets por download permite desenvolver um modelo cliente-servidor intermediário entre os modelos magro e gordo. 10. Explique a distribuição vertical e horizontal. vertical - “[...] da perspectiva e gerenciamento de sistema, ter uma distribuição vertical pode ajudar: funções são subdivididas lógica e fisicamente por várias máquinas, e cada máquina é projetada para um grupo específico de funções.” horizontal – “ em arquiteturas modernas, muitas vezes é a distribuição dos clientes dos servidores que conta à qual nos referimos como distribuição horizontal” - o cliente ou o servidor podem ser subdivididos fisicamente em partes logicamente equivalentes; - Cada parte opera em sua própria porção do conjunto; -Busca-se o equilíbrio da carga. Ex: peer-to-peer 11. Como um sistema em camadas funciona? Componentes são organizados em camadas; O componente da camada L, pode chamar um componente subjacente Li-1; Modelo amplamente adotado pela comunidade de redes; Requisições descem pela hierarquia; Resultados (respostas0 fluem para cima. 12. O que é um processo? Diferencie processo de código. Um processo costuma ser definido como um programa em execução, isto é, um programa que está sendo executado em um dos processadores virtuais dos sistemas operacionais no momento em questão - o código é a parte que contém as instruções que compõem o programa em execução. 13. O que são threads? Quais as diferenças entre um processo e uma thread, também chamada de light process? Thread é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrencialmente. A thread tem vantagens no desempenho na execução de processos Os processos são criados a partir de uma ação qualquer, É reservado um espaço na memória para o determinadoprocesso 14. Porque é interessante criar múltiplos processos, mesmo com um único processador? Porque ele vira uma thread e obtém vantagens na execução 15. Explique o que entende por virtualização, em seguida, descreva as formas de se fazer isso e suas vantagens. A virtualização trata de estender ou substituir uma interface existente de modo a imitar o comportamento de um outro sistema. É uma solução para auxiliar a manutenção de middelwares. Primeira forma relacionada com a interpretação ou emulação de um conjunto de instruções. Ex: jvm, dalvik, wine. Segunda abordagem fornece um sistema que é implementado sobre uma camada que protege o hardware original, mas oferece interface para o usuário. 16. Explique as camadas e os protocolos da figura abaixo: “physical layer” - contém a especificação e implementação dos Bits e da transmissão entre transmissor e receptor; ● “data link layer” - prescreve a transmissão Como uma série de Bits no frame para permitir o controle de fluxo e de erros; ● “network layer” - descreve Como pacotes em uma rede de Computadores serão roteados e/ou encaminhados. ● Obs.: ... para muitos sistemas distribuídos, a interface da camada Mais baixa é aquele da camada de rede - “network layer”. Protocolos de Transporte ● “transport layer” - provê as facilidades de comunicação que Possibilitam a troca de mensagens entre os processos – base Para a maioria dos sistemas distribuídos; ● ... último elemento do que podemos chamar “basic network protocol stack” no sentido que contempla todos os serviços que não são Contemplados na camada de rede mas que são necessários para a Concepção das aplicações de rede. ● Protocolos da Internet (Padrões “de facto”): ● Transmission Control Protocol (TCP) – orientado a conexão, confiável e Comunicação orientada por “stream” (fluxo de bytes); ● User Datagram Protocol (UDP) – comunicação de não confiável; ● Real-time Transport Protocol (RTP) – especifica formato de pacotes para tempo real sem prover mecanismo que garanta a entrega do dado Solução – manter os protocolos de middleware nas camadas Superiores de modo que possam oferecer diferentes protocolos (Sintonizáveis) através de uma interface única. ● ... esta abordagem pressupõe uma pequena adaptação do modelo de referência para comunicação “Middleware protocols” - devem suportar serviços de Comunicação de alto nível de forma transparente; “Middleware protocols” - suporte para serviços de comunicação De alto nível de forma transparente: ● “data (un)marshaling” - necessário para sistemas integrados; ● “naming protocols” - facilitar o compartilhamento de recursos; ● “security protocols” - para segurança de comunicação; ● “scaling mechanisms” - para replicação e salvaguarda 17: Quais os quatro tipos de comunicação poderemos oferecer em um middleware? Detalhe cada uma delas “transient communication”( Comunicação transitória) - servidor de comunicação descarta mensagens quando não podem ser entregues no próximo servidor ou mesmo no solicitante da requisição. “persistent communication” (Comunicação persistente)- mensagem é armazenada no servidor de comunicação pelo tempo que for necessário de modo que a entrega da mensagem seja garantida. “assynchronous communication” (Comunicação assíncrona)- remetente continua o seu processamento imediatamente após submeter a mensagem; ● “synchronous communication” (comunicação síncrona)- remetente é bloqueado até que sua requisição seja enviada ou processada pelo receptor. 18. Diferencie e explique os dois tipos de comunicação ilustrados abaixo: A – Interação entre cliente e servidor em uma RCP tradicional B- Interação que usa RCP ( chamada de procedimento remoto) assíncrona ( fornecem de modo a não bloquear o cliente quando não há nenhum resultado a esperar 19/20/21 22. Diferencie arquitetura de software de arquitetura de sistema. Arquitetura de software: Preocupa-se com a organização lógica. Como é realizada a interação e como são estruturados dos componentes. Arquitetura de sistemas: os componentes que compõem os sistemas distribuídos estão colocados nas várias máquinas. 23. O que é o SOA? Descreva está arquitetura. Service Oriented Architectures (SOA) é, em tradução livre, Arquitetura Orientada a Serviços. Esse conceito de arquitetura busca disponibilizar as funcionalidades de um sistema como um serviço. Desta forma, essas funcionalidades podem ser compartilhadas e reutilizadas entre aplicações. Seu principal objetivo é ser mais flexível em atender às necessidades do mercado. Um dos componentes mais importantes do SOA é o Enterprise Service Bus (ESB), um barramento de serviços corporativos. Esse barramento disponibiliza com maior facilidade os serviços do sistema para os usuários e outras aplicações, acelerando processos de integração. O alinhamento com as regras de negócio é um dos maiores benefícios desse tipo de arquitetura. Podemos elencar outras vantagens como: • A diminuição do tempo de desenvolvimento; • O baixo acoplamento entre as partes do sistema facilita a manutenção; • O isolamento da estrutura de um serviço traz flexibilidade durante mudanças; • Facilidade de agregar novas tecnologias a plataformas; • E a possibilidade de reutilização de componentes. 24. O que é uma arquitetura RESTful? Onde é utilizada? Descreva-a brevemente. um estilo de arquitetura de software que define um conjunto de restrições a serem usados para a criação de web services (serviços Web). 25. Dois web servers muito utilizados são o Apache e o NGINX. Pesquise a respeito e apresente as diferenças entre eles. Estatísticas de uso O Apache, sem dúvidas, é o servidor web mais popular. No entanto, o NGINX vem a cada ano e de forma consistente ganhando espaço, popularidade e sendo a preferência dos novos projetos. Logo, a mudança e, por conseguinte, o primeiro lugar em uso será muito em breve. Nas análises do site BuiltWith, conseguimos analisar sua participação de mercado em diferentes cenários. Em alguns casos, como o Top 10k sites ele fica empatado com o Apache. .htaccess? https://pt.wikipedia.org/wiki/Arquitetura_de_software https://pt.wikipedia.org/wiki/Restri%C3%A7%C3%B5es_de_integridade https://pt.wikipedia.org/wiki/Web_service https://trends.builtwith.com/web-server Apache tem uma configuração descentralizada, possivelmente espalhada em diversos diretórios da aplicação através do arquivo oculto .htaccess. Embora seja possível desabilitar essa opção, mas é prática muito comum mantê-la. NGINX tem uma configuração centralizada, num único arquivo. Ele não reconhece, logo não interpreta, o .htaccess. Módulos Quase todo o software tem uma arquitetura que permite sua extensibilidade através de outros softwares que o complementam. Alguns com o WordPress o chamam de plugins, outros de add-ons. No caso dos servidores web o chamamos de “módulos”. NGINX e Apache tem seu mecanismo de módulos, mas trabalham de forma diferenciada um do outro. Através do segundo, os módulos podem ser carregados em tempo de execução, enquanto no primeiro os módulos são carregados dinamicamente e precisam ser compilados junto ao seu core. Através dos módulos ambos conseguem ter as mesmas funcionalidades geralmente requisitadas, como: compressão de arquivos, autenticação, funcionalidade de e-mail, login, reescrita de URLs, Geolocalização, criptografia, Proxing e vários outros. Arquivos e interpretação de URLs Esse tipo de atividade nos servidores web é muito utilizada para uma infinidade de possibilidades, como a implementação de URLs amigáveis, bloqueio de determinados arquivos para maior segurança e várias outras regras. Ambos permitem a interpretação direta dos arquivos quanto de forma abstrata. Expressões regulares são muito utilizadas para o encontro prático de uma combinação de possibilidades. NGINX foi desenvolvido para ser tanto um servidor web quantoum servidor de proxy. Devido sua arquitetura requerida para essas duas atividades, sua interpretação primária são com URLs. Enquanto isso, o Apache utiliza as diretrizes <Directoy>, <Files> e <Location>, o NGINX utiliza os blocos server e locations para interpretar todas as requisições. Por ser configurado para interpretar diferentes padrões de URLs, o NGINX não verifica o sistema de arquivos até que ele esteja preparado para servir a requisição, o que explica a não implementação de um mecanismo como arquivo .htaccess como o Apache. As regras de segurança e performance Todo servidor web precisa aplicar regras de segurança para proteção das aplicações que estão rodando em seu mecanismo. Todas as dicas que você encontrar sobre segurança e que serão aplicadas em servidores web, saiba que é possível, em quase 100% dos casos, aplicar em ambos. Atente-se que no Apache as regras normalmente serão aplicadas no arquivo .htaccess ou no httpd.conf. Já no NGINX nos blocos server/locations no arquivo de configuração. O mesmo se aplica as regras para melhorias de performance, como otimização de imagens, aplicação de regras de cachê e compressão de arquivos.