Mário M. Freire
         Full Professor (Professor Catedrático)

           Department of Computer Science, University of Beira Interior
           Rua Marquês de Ávila e Bolama, 6201-001 Covilhã, Portugal

           E-mail addresses: mfreire(at)computer.org  or  mfreire(at)acm.org  or  mario(at)di.ubi.pt



Computação na Cloud / Cloud Computing 2016/2017
Mestrado em Engenharia Informática / MS in Computer Science and Engineering

"Be. If you can not be a pine on the top of a hill, be a bush in the valley but be the best bush to the stream bank. Be a branch if you can not be a tree. If you can not be a branch, be a little grass and give joy to some way. If you can not be a highway, Be just a path, if you can not be the sun, be a star. It is not by size that you will have success or failure ... But be the best in whatever you are."

Pablo Neruda (1904-1973), Chilean poet-diplomat and politician.

Objetivos Gerais, Avaliação e Bibliografia / Course Description, Evaluation and Grading and Bibliography


Objetivos Gerais e Resultados de Aprendizagem / Course Objectives
O objetivo da unidade curricular consiste em dotar os estudantes de uma perspetiva ampla e integradora da virtualização e da computação na cloud. No final da unidade curricular o estudante deve ser capaz de sistematizar uma abordagem vertical às diversas tecnologias de virtualização e da computação na cloud, que ofereça às aplicações e serviços maior flexibilidade, melhor utilização de recursos, maior escalabilidade e adaptabilidade e redução de custos. O estudante deve ser capaz de avaliar escolhas, soluções e compromissos envolvidos no desenvolvimento, utilização e gestão de infra-estruturas de virtualização e deve ser capaz de desenvolver aplicações e sistemas, escaláveis e fiáveis, para computação na cloud.
The aim of the course is to provide students with a broad and integrative perspective of virtualization and cloud computing. At the end of the course, students should be able to systematize a vertical approach to the various virtualization and cloud computing technologies that provide applications and services with greater flexibility, better resource utilization, greater scalability and adaptability, and reduced costs. Students should be able to assess the choices, solutions and commitments involved in the development, use and management of virtualization infrastructures and must be able to develop scalable and reliable applications and systems for cloud computing.

Programa / Syllabus
Virtualização: Conceitos, Níveis de Implementação, Estruturas/Ferramentas e Mecanismos. Virtualização de CPU, Memória e Dispositivos de I/O. Virtualização de Clusters e de Datacenters. Computação na Cloud, Modelos de Serviços e Projeto de Datacenters. Paradigmas de Programação Paralela e Distribuída. Suporte de Programação do Google App Engine. Programação no Amazon AWS. Suporte de Programação do Microsoft Azure. Ambientes de Software Cloud Emergentes. Desempenho de Sistemas Distribuídos e Cloud.
Virtualization: Concepts, Levels of Implementation, Structures/Tools and Mechanisms. Virtualization of CPU, Memory and I / O Devices. Virtualization of Clusters and Datacenters. Cloud Computing, Service Models, and Datacenter Design. Paradigms of Parallel and Distributed Programming. Programming Support of Google App Engine. Programming on Amazon AWS. Microsoft Azure Programming Support. Emerging Cloud Software Environments. Performance of Distributed Systems and Cloud.

Métodos e Critérios de Avaliação / Evaluation and Grading
Ensino Aprendizagem
Teste de avaliação de conhecimentos: 40%.
Trabalho de síntese: 15%.
Projeto laboratorial ou de campo: 45%

Teste de avaliação de conhecimentos: Teste sem consulta com duração de 1 hora; Teste constituído por 20 perguntas com 4 opções das quais apenas uma está correta; Respostas erradas não descontam sobre a pontuação dessas questões.
Trabalho de síntese: Alunos organizados em grupos de 3 estudantes; É dado um conjunto de temas e respetivo escalonamento para apresentação oral; É dado um conjunto de tópicos que deve ser obrigatoriamente abordado; Elaboração da Apresentação: 50% (Avaliada com base na qualidade, abrangência, profundidade e valor de síntese no contexto do tema atribuído); Apresentação e defesa do trabalho: 50% (Avaliada com base no domínio e segurança dos tópicos apresentados, concretização das ideias fundamentais e cobertura dos vários aspetos requeridos).
Projeto laboratorial ou de campo: Alunos organizados em grupos de 3 estudantes; Realização do trabalho: 70%; Elaboração do relatório: 15%; Apresentação e defesa do trabalho: 15%.

Exames
Exame escrito: 55%.
Projeto laboratorial ou de campo (realizado no período de ensino aprendizagem): 45%.
Exame escrito: Teste sem consulta com duração de 1 hora; Teste constituído por 20 perguntas com 4 opções das quais apenas uma está correta; Respostas erradas não descontam sobre a pontuação dessas questões.

Teaching Learning
Written test: 40%.
Theorectical work: 15%.
Field or laboratory project: 45%

Written test: Test with closed book with duration of 1 hour; The test comprises 20 questions with four options of which only one is correct; Wrong answers do not discount on the score of a given question.
Theorectical work: Students are organized in groups of 3 (maximum) students; It is given a set of themes and appropriate scaling for oral presentation; It is given a set of topics that must necessarily be addressed; Preparation of Presentation: 50% (Assessed based on the quality, breadth, depth and value of synthesis in the context of the assigned topic); Presentation and defense of the work: 50% (Assessed based on the domain and security of the topics presented, achievement of the fundamental ideas and coverage of the various required aspects).
Field or laboratory project: Students are organized in groups of 3 (maximum) students; Carrying out the work: 70%; Preparation of the report: 15%; Presentation and defense of work: 15%.

Exams
Written exam: 55%.
Laboratory or field project (done in teaching and learning period): 45%.
Written exam: Test with closed book with duration of 1 hour; The test comprises 20 questions with four options of which only one is correct; Wrong answers do not discount on the score of a given question.


Projeto Laboratorial
Enunciado do Projeto Laboratorial

Template e Estrutura do Relatório do Projeto
Template de Artigos de Conferência do IEEE
Estrutura do Relatório do Projeto em 10 Páginas:
Título (<8 palavras): deve centrar-se no tópico, ser curto, claro e eye-catching; Autores e filiações (em 1-2 linhas após o título).
Abstract (<50 ~ 100 palavras): deve explicitar os objetivos da investigação, resumir os resultados da investigação e destacar as contribuições inovadoras.
Introdução (incluindo o título, resumo) (1 página): deve motivar os leitores para ler o resto do artigo e prepará-los com o background necessário.
Definição e formulação do problema (2 páginas): a ser resolvido, pressupostos básicos, formulação do problema com as especificações técnicas.
Arquitetura, algoritmos, métodos, protocolos, resultados analíticos e exemplo ilustrado, etc. (2 páginas).
Configuração experimental (1 página): arquitetura do sistema, benchmarks e conjunto de dados utilizado.
Resultados experimentais (2 páginas): em figuras ou tabelas e respetivas interpretações e análise de desempenho.
Trabalhos relacionadas e conclusões (1 página).
Referências (1 página): lista de 15 artigos relevantes.

Bibliografia de Apoio à Unidade Curricular / Bibliography
Distributed and Cloud Computing: From Parallel Processing to the Internet of Things, Kai Hwang, Jack Dongarra, Geoffrey C. Fox (Authors), Morgan Kaufmann, 1st edition, 2011, ISBN-13: 978-0123858801, 672 pages.
Guide to Reliable Distributed Systems: Building High-Assurance Applications and Cloud-Hosted Services, Kenneth P. Birman (Author), Springer, 2012, ISBN-13: 978-1447124153, 730 pages.
Cloud Computing: A Hands-On Approach, Arshdeep Bahga, Vijay Madisetti (Authors), Vijay Madisetti, 2014, ISBN-13: 978-0996025508, 456 pages.


Plano das Aulas Teóricas / Schedule

Aula 1 (fevereiro 21, 2017, 14:00-16:00).

Sumário: Apresentação do professor aos estudantes. Indicação do horário de atendimento e da localização do gabinete do professor. Objectivos da unidade curricular e competências a adquirir. Conteúdos programáticos. Método de avaliação. Bibliografia de apoio à unidade curricular.

Aula 2 (março 7, 2017, 14:00-16:00).

Sumário: Virtualização: Conceitos, Níveis de Implementação, Estruturas/Ferramentas e Mecanismos.
Conceito de virtualização e de máquina virtual (VM). Níveis de implementação de virtualização; Requisitos de projeto de Virtual Machine Monitors (VMM); Comparação de VMM e Hypervisor Software Packages: VMware Workstation, VMware ESX, Xen e QEMU/KVM; Suporte de virtualização ao nível do sistema operativo; Suporte de middleware para virtualização; A arquitetura Xen; Tradução binária com virtualização completa; Para-virtualização com suporte de compilador; Host-Based virtualization.

Aula 3 (março 14, 2017, 14:00-16:00).

Sumário: Virtualização de CPU, Memória e Dispositivos de I/O.
Suporte de hardware para virtualização; Virtualização de CPU, virtualização de memória, virtualização de entradas/saídas, virtualização de processadores multi-core.

Aula 4 (março 21, 2017, 14:00-16:00).

Sumário: Computação na Cloud, Modelos de Serviços e Projeto de Datacenters.
Modelos de sistema para computação distribuída e na cloud. Clouds públicas, privadas e híbridas; Ecosistema cloud e tecnologias de suporte; Modelos de Serviços: Infrastructure-as-a-Service, Platform-as-a-Service, Software-as-a-Service, Anything-as-a-Service, Serverless computing.

Aula 5 (março 28, 2017, 14:00-16:00).

Projeto de datacenters à escala de warehouses; Redes intradatacenter; Datacenters modulares em contentores; Aspetos de gestão de datacenters.

Aula 6 (abril 4, 2017, 14:00-16:00).

Sumário: Virtualização de Clusters e de Datacenters.
Clusters físicos versus clusters virtuais; Etapas para migração ao vivo de VMs e impacto no desempenho; Migração de memória, ficheiros e recursos de rede; Instalação dinâmica de clusters virtuais; Consolidação de servidores em datacenters; Gestão de armazenamento virtual; Sistemas operativos cloud para Datacenters virtualizados; Gestão da confiança em Datacenters virtualizados.

Aula 7 (abril 18, 2017, 14:00-16:00).

Sumário: Projeto Arquitetónico de Clouds.
Projeto da arquitetura de uma cloud. Desenvolvimento arquitetónico de uma cloud em camadas. Suporte de virtualização e disaster recovery. Desafios do projeto arquitetónico. Características de plataformas de cloud; Características de dados e base de dados; Suporte de programação e tempo de execução; Comparação de plataformas de cloud públicas: IBM BlueCloud/Bluemix, Amazon Web Services (AWS), Google App Engine (GAE), Microsoft Windows Azure, Salesfource Force.com.

Aula 8 (maio 2, 2017, 14:00-16:00).

Sumário: Paradigmas de Programação Paralela e Distribuída.
Computação paralela e paradigmas de programação; MapReduce, Twister e Iterative MapReduce; Hadoop Library do Apache; Dryad e DryadLINQ da Microsoft; Linguagens de alto-nível Sawzall e Pig Latin; Aplicações de mapeamento para sistemas paralelos e distribuídos.

Aula 9 (maio 9, 2017, 14:00-16:00).

Sumário: Suporte de Programação em Google App Engine.
A plataforma de cloud pública Google App Engine; Programação em Google App Engine; Google File System (GFS); BigTable, Google's NOSQL system; Chubby, Google's Distributed Lock Service.

Aula Suplementar (maio xx, 2017, 14:30-17:30).

Sumário: Visita ao datacenter da Portugal Telecom.

Aula 10 (maio 16, 2017, 14:00-16:00).

Sumário: Programação em Amazon AWS.
A plataforma de cloud pública Amazon Web Services (AWS), Programação em Amazon Elastic Compute Cloud (EC2), Amazon Simple Storage Service (S3), Amazon Elastic Block Store (EBS), SimpleDB e Amazon DynamoDB, AWS Lambda, monitorização de recursos e aplicações e escalabilidade (CloudWatch, Auto Scaling).

Aula 11 (maio 23, 2017, 14:00-16:00).

Sumário: Ambientes de Software Cloud Emergentes.
Open source Eucalyptus e Nimbus; OpenNebula, Sector/Sphere e OpenStack; Manjrasoft Aneka Cloud e Appliances.

Aula 12 (maio 30, 2017, 14:00-16:00).

Sumário: Realização e correção da frequência.

Aula 13 (junho 6, 2017, 14:00-16:00).

Sumário: Desempenho de Sistemas Distribuidos e Cloud.
Data-intensive scalable computing; Métricas de desempenho para sistemas HPC/HTC (High Performance/High Throughput Computing); Qualidade de serviço em computação na cloud; Benchmarking MPI, Azure, EC2, MapReduce e Hadoop.



“One of the problems of being a pioneer is you always make mistakes and I never, never want to be a pioneer. It’s always best to come second when you can look at the mistakes the pioneers made”.

Seymour Cray (1925-1996), Public Lecture at Lawrence Livermore Laboratories on the introduction of the CRAY-1, 1976.
Last update: 2017/03/14.