Sistemas Distribuídos
1. Componente Curricular:
Sistemas Distribuídos.
2. Carga Horária:
60 horas
3. Objetivo:
Tendo como base a execução de atividades práticas e o desenvolvimento de produtos, apresentar ao estudante os principais conceitos relacionados ao funcionamento e ao desenvolvimento de Sistemas Distribuídos.
4. Ementa Oficial:
Conceitos de sistemas distribuído (SD). Computação distribuída e paralela. Metas de projeto de sistemas distribuídos. Comunicação distribuída: troca de mensagens, sockets, chamada de procedimento remoto (RPC). Sincronização em sistemas distribuídos. Serviços Web. Programação de Sistemas Distribuídos.
5. Conteúdo Programático:
1. Fundamentos
Definições, Caracterização e Tipos.
Sistemas Distribuídos versus Centralizados.
2. Arquiteturas
Tipos de Sistemas.
Requisitos de Projeto.
3. Comunicação e Sincronização
Processos e Protocolos.
Componentes e Serviços.
Problemas Clássicos de Sincronização.
4. Serviços de Rede
Redes P2P.
Virtualização.
Computação em Nuvem.
5. Computação Distribuída e Paralela
Processamento Paralelo.
Cluster e Grid de Computadores.
6. Abordagem Metodológica:
Aprender fazendo e fazer aprendendo. As ações implementadas têm como foco o aprendizado do desenvolvimento de Sistemas Distribuídos pelo uso de recursos computacionais - privilegiando o projeto por simuladores e o desenvolvimento prático; seguido de exposições teóricas, apoiadas por: simulações, slides e vídeos. Em resumo, a metodologia tem como base a tríade Conteúdo, Atividade e Produto.
A nota final será dada pelas avaliações dos artefatos (relatório, lista de exercício - manuscritas, apresentação oral, pôster, postagem, vídeo, ...) produzidos durante as aulas e entregues em cada uma das datas especificadas. O aluno também será avaliado através de outros recursos, como p.ex. a frequência e a apresentação de artefatos não obrigatórios - os quais poderão até ter pontuação extra.
7. Plano de Aprendizado:
Aula 1
Conteúdo:
Fundamentos: Definições, Caracterização e Tipos.
Atividades:
Entendendo a definição e as características de um sistema distribuído (SD).
As arquiteturas, os componentes físicos e os tipos de SDs.
Componentes: Sistemas Operacionais, Banco de Dados, Redes como Infraestrutura, Sistemas e Aplicações.
Acompanhando um pouco da História dos SDs:
Avaliativas:
Desenvolver infográficos interativos dentro do tema: "Definições, Caracterização e Tipos de SDs".
Sugestão de Ferramentas: Genially, Adobe Express, Canva, ...
Produtos:
Aula 2
Conteúdo:
Fundamentos: Sistemas Distribuídos versus Centralizados.
Atividades:
Revisando a visão geral dos SDs.
Comparando as vantagens e desvantagens dos SDs.
Redes Compartilhando Recursos: Modelo de Compartilhamento para Redes Locais.
Elementos do Modelo de Transparência.
Avaliando SDs com foco na relação distribuído/centralizado.
Diferenciando Redes Centralizadas, Descentralizadas e Distribuídas.
Listando os principais Desafios dos SDs.
Visão geral do Modelos de Falhas.
Avaliativas:
Lista de exercícios 2: Lista do Capítulo 1 do livro "Sistemas Distribuídos: Conceitos e Projetos".
Desenvolver vídeos ou infográficos interativos dentro do tema: "Sistemas Distribuídos versus Centralizado".
Exemplo de Trabalho: Sistemas Distribuídos versus Sistemas Centralizados.
Produtos:
Aula 3
Conteúdo:
Atividades:
Revisando a Arquitetura Geral e os Fundamentos dos SDs.
Classificando os modelos quanto aos:
Modos de interação: Middleware, Cliente-servidor (avançado), Ponto-a-Ponto, Agentes móveis.
Acesso aos serviços: Centralizadas, descentralizadas, híbridas.
Visão geral da Arquitetura de Microsserviços.
Avaliativas:
Desenvolver Lista de exercícios (pelo menos 3 destaques) do texto: "Microsserviços".
Desenvolver vídeos ou infográficos interativos dentro do tema: "Arquiteturas: Tipos de Sistemas".
Exemplo de Trabalho: Sistemas Distribuídos versus Sistemas Centralizados.
Produtos:
Aula 4
Conteúdo: Revisão de conteúdos e 1ª Avaliação.
Atividades: Apresentação e Avaliação de trabalhos.
Produtos: Seminários 1 e/ou Prova Prática 1.
Aula 5
Conteúdo:
Atividades:
Listando Elementos de Modelagem de SDs.
Listando os Tipos de Modelos de SDs.
Apresentando as Metas para o desenvolvimento de SDs.
Analisando os Focos das Práticas Corporativas.
Estudo de caso da AWS Well-Architected.
Estude de caso do Modelo de arquitetura do Google Cloud.
Estude de caso dos Quatro pilares da Oracle Cloud Infrastructure.
Apresentando um Estratégia para Migração para Serviços em Nuvem.
Fases: 1. Rehost; 2. Replatform; 3. Refactor/Re-architect; 4. Repurchase; 5. Retire; 6. Retain.
Problema Proposto: Backup sob demanda de filiais com atualização de dados na matriz.
Avaliativas:
Desenvolver Lista de exercícios (pelo menos 3 destaques) do texto: "Requisitos para o Projeto de Aplicações Móveis Distribuídas".
Desenvolver vídeos ou infográficos interativos dentro do tema: "Arquiteturas: Requisitos de Projeto".
Produtos:
Como arquitetar aplicativos baseados em contêineres e em microsserviços.
5 princípios para o desenvolvimento de sistemas distribuídos no Itaú.
Estrutura de arquitetura do Google Cloud: design do sistema.
Arquitetura de um Middleware Corporativo na Companhia de Transmissão de Energia Elétrica Paulista.
Projeto de Sistemas Distribuídos e de Tempo Real para Automação (livro).
Aula 6
Conteúdo:
Comunicação e Sincronização: Processos e Protocolos.
Atividades:
Comparando as camadas do RM-OSI+TC/IP com RPC dos SDs.
Observar o relacionamento com o Pacote TCP/IP.
O Modelo RPC.
O Modelo IPC e sua Relação com RPC.
Definindo a importância da Comunicação Multicast.
Praticando Comunicação entre Processos.
Um Exemplo em Python.
Avaliativas:
Desenvolver Lista de exercícios (pelo menos 3 destaques) do texto: "Comunicação Entre Processos (IPC).
Fazer um programa em Python onde um servidor calcule a média aritmética das notas enviadas pelo cliente.
Produtos:
Aula 7
Conteúdo:
Comunicação e Sincronização: Componentes e Serviços.
Atividades:
Integrando diferentes sistemas como Middlewares.
Visão geral dos benefícios e da arquitetura de sistemas distribuídos.
Determinando o uso da Sincronização em SDs.
Controlando Exclusão Mútua com algoritmos do Algoritmos Centralizado, Distribuído e Anel.
Avaliativas:
Desenvolver Lista de exercícios (pelo menos 3 destaques) do texto: "Sincronização em Sistemas Distribuídos.
Desenvolver vídeos ou infográficos interativos dentro do tema: "Comunicação e Sincronização: Componentes e Serviços".
Produtos:
Aula 8
Conteúdo: Revisão de conteúdos e 2ª Avaliação.
Atividades: Apresentação e Avaliação de trabalhos.
Produtos: Seminários 2 e/ou Prova Prática 2.
Aula 9
Conteúdo:
Comunicação e Sincronização: Problemas Clássicos de Sincronização.
Atividades:
Iniciando pela principal causa; a Exclusão Mútua.
Solução com Mutex.
Exemplo de Mutex Exclusiva e Compartilhada.
Visualizando e Detectando os Deadlocks.
Entendendo os Problemas.
Produtor/Consumidor: Visão Geral do Problema, Características e Solução.
Leitores/escritores: Visão Geral do Problema, Características e Solução.
Avaliativas:
Desenvolver Lista de exercícios (pelo menos 3 destaques) do texto: "Problemas clássicos".
Fazer um programa no Scratch para implementar uma solução para Produtor/Consumidor sem Deadlock.
Produtos:
Aula 10
Conteúdo:
Serviços de Rede: Redes P2P.
Atividades:
Apresentando o Modelo P2P e as Principais Características.
Cliente Servidor vs P2P ("servidor" na aplicação).
Exemplos de Serviços: Torrent, Skype, IPTV, Blockchain...
Entendendo a Arquitetura P2P.
Com base nas Redes Sobrepostas.
DB descentralizado com acesso via Chaves DHT.
As obsoletas P2Ps Centralizadas (Napster).
Usando o Serviço de Torrent para prover arquivos.
Na aplicação de Torrent, crie um torrent para um arquivo local e configure os modos de compartilhamento.
Mais detalhes em: "Como criar um torrent e lançá-lo em um tracker público".
Avaliativas:
Desenvolver Lista de exercícios (pelo menos 3 destaques) do texto: "P2P: Descubra O Que É, Como Funciona E Principais Vantagens".
Definir os principais componentes de um "Servidor de Arquivos" sem IP válido, com base nas características do serviço de Torrent.
Produtos:
Aula 11
Conteúdo:
Atividades:
Entendendo a Virtualização e seus Tipos.
Virtualização de Desktop, de Aplicações e os Data Center Definido por Software.
Apresentando os Elementos da Arquitetura.
Diagrama de representação conceitual do Hipervisor Tipo 1 (nativo, metal puro).
Diagrama de representação conceitual do Hipervisor Tipo 2 (hospedado).
Exemplos: VMware, VirtualBox, KVM, QEMU.
Arquitetura de Virtualização de Redes de Servidores.
Exemplo: NVGRE.
Avaliativas:
Desenvolver Lista de exercícios (pelo menos 3 destaques) do texto: "O que é virtualização?".
Desenvolver vídeos ou infográficos interativos dentro do tema: "Serviços de Rede: Virtualização".
Produtos:
O que é e como funciona o SDDC (Software Defined Data Center) ?
Arquitetura de linha de base das Máquinas Virtuais do Azure.
Boot Remoto Linux: Redução De Custos, Padronização e Aumento Da Segurança Da Informação.
Aula 12
Conteúdo: Revisão de conteúdos e 3ª Avaliação.
Atividades: Apresentação e Avaliação de trabalhos.
Produtos: Seminários 3 e/ou Prova Prática 3.
Aula 13
Conteúdo:
Atividades:
Apresentando o Conceito e a Estrutura de Serviços.
Vantagens: Todas.
Desvantagem: Dependência da Conexão.
Relação entre Computação em Nuvem e Computação Distribuída.
Entendendo a Arquitetura e seus Modelos.
Resumos: Operacional, de Modelos de Serviços e de Conceitos.
Optativas:
Desenvolver Lista de exercícios (pelo menos 3 destaques) do texto: "O que é a computação em nuvem?".
Desenvolver vídeos ou infográficos interativos dentro do tema: "Serviços de Rede: Computação em Nuvem".
Produtos:
Aula 14
Conteúdo:
Computação Distribuída e Paralela: Processamento Paralelo.
Atividades:
Diferenciando Computação Paralela e Serial.
Diferenciando Sistemas Distribuídos e Paralelos.
Entendendo as Arquiteturas da Taxonomia de Flynn.
Modelo de Organização do Processadores.
Exemplificando os Tipos de Paralelismo: Dados, Instruções, Tarefas e Bits.
Optativas:
Desenvolver Lista de exercícios (pelo menos 3 destaques) do texto: "Entenda o que é processamento paralelo e quais são os tipos".
Desenvolver vídeos ou infográficos interativos dentro do tema: "Computação Distribuída e Paralela: Processamento Paralelo".
Produtos:
Aula 15
Conteúdo:
Computação Distribuída e Paralela: Cluster e Grid de Computadores.
Atividades:
Compreendendo um Cluster e sua Infraestrutura.
Interconexão da Estrutura Básica.
Arquitetura Geral e Tipos: Alto Desempenho; Alta Disponibilidade e; Balanceamento de Carga.
Entendendo um Grid como um Cluster não Centralizado.
Materializando a relação Cloud, Grid e Cluster.
Desenvolvendo software nestes ambientes: Docker.
Produtos:
8. Bibliografia Básica:
Coulouris, G., Dollimore, J., Kindberg, T., e Blair, G. (2013). Sistemas Distribuídos – Conceitos e Projetos. Bookman, 5a edição.
Tanenbaum, A. S. e Steen, M. V. (2008). Sistemas Distribuídos – Princípios e Paradigmas. Pearson, 2a edição.
Tanenbaum, A. S. (1995). Distributed Operating Systems. Prentice Hall, 1a edição.