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 2022/2023
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 de Aprendizagem / Learning Outcomes
O objetivo da unidade curricular consiste em dotar os estudantes de uma perspetiva ampla e integradora da computação em nuvem. No final da unidade curricular o estudante deve ser capaz de sistematizar uma abordagem vertical às diversas tecnologias de computação em nuvem, 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 desenvolver aplicações e sistemas, escaláveis e fiáveis, para computação na nuvem.
The aim of the course is to provide students with a broad and integrative perspective of cloud computing. At the end of the course, students should be able to systematize a vertical approach to the various cloud computing technologies that offer applications and services greater flexibility, better resource utilization, greater scalability and adaptability, and cost reduction. Students should be able to develop scalable and reliable applications and systems for cloud computing..

Programa / Syllabus
Perspetiva geral sobre a adoção de tecnologias de computação em nuvem. Computação em nuvem e modelos de serviços. Plataformas de nuvem públicas. Características de plataformas grid e para a nuvem. Paradigmas de programação paralela e distribuída. Suporte de programação em Google App Engine/Google Cloud Platform. Programação em Amazon AWS. Suporte de programação em Microsoft Azure. Software para ambientes de computação em nuvem. Desempenho de sistemas distribuídos e em nuvem.
Perspective on the adoption of cloud computing technologies. Cloud computing and service models. Comparison of public cloud platforms. Features of grid and cloud platforms. Parallel and distributed programming paradigms. Programming support of Google App Engine. Programming on Amazon AWS. Microsoft Azure programming support. Cloud software environments. Performance of distributed and cloud systems.

Métodos e Critérios de Avaliação / Evaluation and Grading
Teste de avaliação de conhecimentos/Exame: 40%.
Trabalho teorico-prático: 20%.
Projeto laboratorial: 40%.

Teste de avaliação de conhecimentos/Exame: O Teste é realizado online no Moodle, com consulta, e tem a duração de 2 horas; O Teste é constituído por 20 perguntas; Cada pergunta tem 4 opções de resposta, das quais apenas uma está correta; Respostas erradas não descontam sobre a pontuação dessas questões. Cada estudante pode ter um teste diferente, com algumas perguntas comuns a todos os estudantes; O Teste deve ser realizado respeitando, sob compromisso de honra, o Código de Integridade da Universidade da Beira Interior.

Trabalho teórico-prático: Trabalho realizado em grupo, sendo cada grupo constituído por 2 estudantes; Deve ser elaborado um relatório sobre um dos temas disponibilizados pelo docente para exploração. O relatório será avaliado com base na qualidade, abrangência, profundidade e capacidade de síntese no contexto do tema. O relatório pode ser submetido durante o período de ensino-aprendizagem ou no dia do exame.

Projeto laboratorial ou de campo: Trabalho laboratorial realizado em grupo durante as aulas práticas, sendo cada grupo constituído (no máximo) por 2 estudantes. O relatório deste trabalho é apresentado e discutido na aula prática, sendo a nota de cada estudante atribuída individualmente. O relatório pode ser submetido e discutido durante o período de ensino-aprendizagem ou no dia do exame.

Written test/Exam: 40%.
Theorectical-pratical work: 20%.
Laboratory project: 40%.

Written test/Exam: Test online on Moodle with open book and with duration of 2 hours; The test comprises 20 questions; Each question has 4 answer options, of which only one is correct; Wrong answers do not discount on the score of a given question; Each student can have a different test, with some questions common to all students; The Test must be carried out respecting, under oath, the Integrity Code of the University of Beira Interior.

Theorectical-pratical work: Work to be carried out in a group, each group consisting of 2 students; A report on a theme for exploration should be drawn up; The report will be evaluated based on the quality, breadth, depth and value of synthesis in the context of the theme. The report can be submitted during the teaching-learning period or on the day of the exam.

Laboratory project: Work to be carried out in group during practical lectures, each group consisting of 2 students. The report of this work is presented and discussed in a practical lecture, being each student grade assigned individually.

Trabalho Teorico-Prático/Theorectical-Pratical Work
Temas para o trabalho teórico-prático:
- Arquitetura de Microsserviços
- Computação na Nuvem e Internet das Coisas
- Computação na Periferia (Edge computing)
- Containers como um Serviço
- DevSecOps
- Docker
- Ferramentas de Configuração da Nuvem
- FinOps
- IA em Computação na Nuvem
- Infrastructure as Code
- Infrastructure from Code
- Kubernetes
- OpenStack
- Plataformas de Código Aberto para Computação Sem Servidor
- Plataformas para Processamento de Bigdata Streams
- Plataformas para Processamento em Batch
- Segurança na Computação em Nuvem
- Serviços de Bases de Dados Não Relacionais
- Terraform

O relatório deve ser escrito usando o template do IEEE disponível abaixo e deve ter, no máximo, 8 páginas.
Template de Artigos de Conferência do IEEE
A Estrutura do Relatório deve incluir o Abstract, a Introdução, secções específicas sobre cada tema, Conclusões e Referências.
Data limite para a entrega do relatório: 9 de maio. A submissão deve ser feita via Moddle.

Projeto Laboratorial
As propostas para a realização do Projeto Laboratorial encontram-se disponíveis no Moodle. São disponibilizados quatro projetos, dos quais, cada grupo deve escolher apenas um.
Template e Estrutura do Relatório do Projeto
Template de Artigos de Conferência do IEEE
Estrutura do Relatório do Projeto em 8 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 (<100 ~ 150 palavras): deve explicitar os objetivos da investigação, resumir os resultados da investigação e destacar as contribuições inovadoras, se as houver.
Introdução (incluindo o título, abstract) (1 página): deve motivar os leitores para ler o resto do artigo e prepará-los com o background necessário.
Arquitetura, algoritmos, métodos, protocolos, resultados analíticos e exemplo ilustrado, etc. (2 páginas).
Configuração experimental (2 página): arquitetura do sistema implementado, detalhes de instalação e configuração, benchmarks e conjunto de dados utilizado.
Resultados experimentais 2 páginas): em figuras ou tabelas e respetivas interpretações e análise de desempenho.
Conclusões e Referências (1 página): Conclusões e lista de artigos relevantes referenciados no texto.

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

Os slides das aulas e testes de avaliação para cada capítulo estão disponíveis no Moodle da UBI.

Aula 1 (fevereiro 28, 2023, 14:00-16:00, sala 6.02).
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. Planeamento das aulas teóricas. Marcação da data da frequência.

Aula 2 (março 7, 2023, 14:00-16:00, sala 6.02).
Sumário: Perspetiva global sobre a adoção das tecnologias de computação em nuvem.

Aula 3 (março 14, 2023, 14:00-16:00, sala 6.02).
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 4 (março 21, 2023, 14:00-16:00, sala 6.02).
Sumário: Plataformas de Cloud Públicas.
Clouds públicas e oferta de serviços; 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 5 (março 28, 2023, 14:00-16:00, sala 6.02).
Sumário: Características de Plataformas Grid e Cloud.
Capacidades da cloud e características das plataformas; Aspetos comuns a grids e clouds; Cracterísticas de dados e base de dados; Suporte de programação e ambientes de execução.

Aula 6 (abril 4, 2023, 14:00-16:00, sala 6.02).
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 7 (abril 11, 2023, 14:00-16:00, sala 6.02).
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 8 (abril 18, 2023, 14:00-16:00, sala 6.02).
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 9 (maio 2, 2023, 14:00-16:00, sala 6.02).
Sumário: Realização e correção da frequência.

Aula 10 (maio 9, 2023, 14:00-16:00, sala 6.02).
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 11 (maio 16, 2023, 14:00-16:00, sala 6.02).
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 12 (maio 23, 2023, 14:00-16:00, sala 6.02).
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 13 (maio 30, 2023, 14:00-16:00, sala 6.02).
Sumário: Ambientes de Software Cloud Emergentes.
Open source Eucalyptus e Nimbus; OpenNebula, Sector/Sphere e OpenStack; Manjrasoft Aneka Cloud e Appliances.

Aula 14 (junho 6, 2023, 14:00-16:00, sala 6.02).
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: 2023/03/07.