Disciplina
Engenharia de Sistemas de Larga Escala
Área
Área Científica de Arquitectura e Sistemas Operativos > Sistemas Operativos e Sistemas Distribuídos
Activa nos planos curriculares
MEIC-A 2021 > MEIC-A 2021 > 2º Ciclo > Area Principal > Agrupamentos > Gestão de Serviços de It > Engenharia de Sistema de Larga Escala
MEIC-T 2018 > MEIC-T 2018 > 2º Ciclo > Agrupamentos > Gestão de Serviços It > Engenharia de Sistema de Larga Escala
METI 2021 > METI 2021 > 2º Ciclo > Área Principal > Especializações > Especialização em Gestão de Redes e Sistemas > Informática > Engenharia de Sistema de Larga Escala
MEIC-T 2021 > MEIC-T 2021 > 2º Ciclo > Área Principal > Agrupamentos > Gestão de Serviços de It > Engenharia de Sistema de Larga Escala
MEIC-A 2015 > MEIC-A 2015 > 2º Ciclo > Agrupamentos > Tecnologia dos Sistemas Informáticos > Engenharia de Sistema de Larga Escala
MEIC-T 2015 > MEIC-T 2015 > 2º Ciclo > Agrupamentos > Tecnologia dos Sistemas Informáticos > Engenharia de Sistema de Larga Escala
METI 2018 > METI 2018 > 2º Ciclo > Áreas de Especialização > Gestão das Redes, da Informação e dos Serviços > Engenharia de Sistema de Larga Escala
Nível
Exame (50%), Projeto (40%), Apresentação de artigo (10%)
Tipo
Não Estruturante
Regime
Semestral
Carga Horária
1º Semestre
3.0 h/semana
1.5 h/semana
147.0 h/semestre
Objectivos
O desempenho e a escalabilidade são fatores chave no sucesso e adoção de serviços de Internet como a Google, Amazon, Microsoft, Facebook ou Netflix. O objetivo desta UC é dotar os alunos de capacidades e ferramentas para analisar o desempenho e escalabilidade de sistemas de larga escala de um modo geral, com ênfase em sistemas baseados em Computação em Nuvem. Durante a UC os alunos irão aprender a identificar os fatores que limitam a escalabilidade e desempenho de um sistema, através da monitorização e modelação do comportamento do sistema. Serão abordadas técnicas de desenho e conceção de benchmarks e simulações e como interpretar os resultados obtidos através da adequada representação das métricas obtidas. Os conhecimentos e técnicas adquiridas permitirão aos alunos desenhar sistemas escaláveis e de alto desempenho na nuvem, bem como analisar e melhorar sistemas existentes. Estes serão postos em prática através de casos de estudo concreto que explorar técnicas de Machine Learning, heterogeneidade de recursos e outras técnicas para prever comportamento futuro, fazer planeamento de capacidade e desenvolver sistemas auto adaptáveis. No final da UC, os alunos deverão ser capazes de: ● Conceber sistemas tendo em conta o desempenho e a escalabilidade e o desempenho ● Desenhar benchmarks para aferir corretamente o comportamento do sistema sobre várias cargas ● Medir, identificar e resolver limitações de desempenho (bottlenecks) ● Prever comportamento futuro para planeamento de capacidade ● Simular novos sistemas para aferir o seu desempenho antes da implementação e simular sistemas existentes para aferir o impacto de potenciais modificações.
Programa
1 - Introdução (2 aulas) - Introdução, desafios e erros típicos - Visão geral de um sistema baseado em Computação em Nuvem - Desafios de desempenho e escalabilidade em bases de dados NoSQL - Desafios de desempenho e escalabilidade em Network Virtual Functions (NVF) 2- Escalabilidade (2 aulas) - Conceitos fundamentais: escalabilidade, eficiência, elasticidade - Fatores que limitam a escalabilidade: - Contenção: relação e impacto da lei de Amdahl - Coerência: relação e impacto da Lei Universal da Escalabilidade 3 - Desempenho (5 aulas) - Propriedades de sistema: débito, latência, variabilidade, trabalho útil - Concorrência, escalonamento e sobrecarga - Identificação de limitações de desempenho (bottlenecks) - Técnicas para desempenho: loteamento, filas, atrasos, especulação, escalonamento 4 – Simulação (3 aulas) - Simulação discreta de eventos - Estruturas de gestão de eventos - Verificação e validação - Replicações e condições de paragem 5 - Benchmarking e planeamento de capacidade (5 aulas) - Benchmarking, macro e micro benchmarking - Seleção e desenho de cargas de trabalho - Métricas e representação de métricas - Parâmetros de escalabilidade - Fatores e técnicas de avaliação - Planeamento de capacidade 6- Sistemas auto-adaptáveis (4 aulas) - Propriedades - Operação e reconfiguração autonómica - Papel do Machine Learning nos sistemas modernos auto-adaptáveis - Descoberta automatizada de configurações - Políticas de adaptação 7 – Casos de estudo (2 aulas) - Exploração heterogeneidade para melhoria desempenho de bases de dados NoSQL - Previsão de desempenho usando Machine Learning - Planeamento de capacidade e sistemas auto-adaptáveis
Metodologia de avaliação
Exame (50%), Projeto (40%), Apresentação de artigo (10%)
Pré-requisitos
Componente Laboratorial
Princípios Éticos
Componente de Programação e Computação
Componente de Competências Transversais
Bibliografia
Principal
Principles of Computer System Design An Introduction
Jerome H. Saltzer, M. Frans Kaashoek
Morgan Kaufmann_eBook ISBN: 9780080959429; Paperback ISBN: 9780123749574
Secundária
Adicional papers will be announced through Fénix