Distributed Systems

Objectives

This is a mandatory course on distributed systems. It provides the basic knowledge on the models, methods and techniques for developing secure distributed systems. As prerequisites students should have previous acquaintance with algorithms, programming, and computer networks.

Knowledge 

* Understand the problems and challenges for the design of dist. sys.;
* Understand the architectures of dist. sys.;
* Know the models and systems for direct and indirect communication;
* Understand the algorithms for establishing secure channels;
* Know the alternatives for naming: name and directory services;
* Understand the mechanisms for ordering and tracking causality of events;
* Understand the caching and replication algorithms and associated consistency models.

Know-how

* To design a secure dist. sys. for solving a non-trivial problem.
* To program dist. sys. leveraging standard communication sub-systems;
* To use of replication as a technique for improving fault tolerance and performance.

General characterization

Code

8153

Credits

6.0

Responsible teacher

Nuno Manuel Ribeiro Preguiça

Hours

Weekly - 5

Total - 65

Teaching language

Português

Prerequisites

As prerequisites students should have previous acquaintance with algorithms, programming, and computer networks.

Bibliography

M. van Steen and A.S. Tanenbaum, Distributed Systems, 4th ed., distributed-systems.net, 2023. https://www.distributed-systems.net/index.php/books/ds4/

Distributed Systems: Concepts and Design. George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair. Publisher: Addison Wesley; 5th edition ISBN-13: 978-0132143011

Teaching method

In lectures, the key points of the syllabus are presented, using examples of existing distributed systems whenever possible. This presentation should be complemented with studying the recommended book.

 The laboratory classes target the presentation and resolution of two programing projects, providing students with experience in using the studied techniques for programming distributed systems. Projects will include a sequence of steps that follow the topics studied. Examples will be presented in laboratory classes, where each step of the project will be started.

Evaluation method

Método de avaliação dos alunos

Componentes da avaliação

  • Dois testes, com o peso na nota final de 30% cada um.
  • Um trabalho prático, com duas fases, com peso na nota final de 20% cada um.

Notas a ter em atenção

  • A nota final é aproximada ao valor, as notas intermédias à décima de valor.
  • Os testes são realizados sem consulta.
  • Ter êxito na frequência é condição necessária para aceder ao exame de recurso.

Avaliação da frequência

Têm frequência os alunos cuja nota de frequência seja igual ou superior a 9,0 valoes. A nota de frequência é calculada da seguinte forma:

  • Nota de frequência base = 50% * trab - fase 1 + 50% * trab - fase 2

Haverá uma discussão (para aferir o conhecimento que cada aluno tem sobre o trabalho realizado) que é obrigatória, presencial e individual. A discussão do trabalho consiste em fazer alterações ao código para que o novo programa resolva uma variante do problema original, definida no enunciado da discussão, que difere pouco do trabalho realizado. As notas das discussões e os respetivos critérios são os seguintes:

  • 20: as alterações estão globalmente certa;
  • 16: as alterações estão confusas ou muito incompleta, mas o caminho poderia ser aquele;
  • 12: as alterações não estão certas, havendo "algumas coisas bem e outras muito mal";
  • 4: não foi feita qualquer alteração ou as alterações feitas são ínfimas ou as alterações feitas não fazem sentido.

Regra geral, a nota de frequência de um aluno é o mínimo entre da nota de frequência base, com base na nota das duas fases do trabalho que entregou (realizados em grupo), e a sua nota na discussão (que é zero, se o aluno faltou sem justificação), i.e.,

  • Nota de frequência = min( nota de frequência base, nota de discussão)

A frequência de anos anteriores é válida este ano.

Nota sobre a utilização de ferramentas de IA generativo: a utilização destas ferramentas na realização do trabalho é permitida, mas a mesma deve ser reportada aquando da entrega do trabalho.

Nota final

Para os alunos com frequência, a nota final será calculada da seguinte forma:

  • Nota final = 30% * teste 1 + 30% * teste 2 + 40% * nota de frequência

Para os alunos com frequência que vão a exame, a nota final será calculada da seguinte forma:

  • Nota final = 60% * exame + 40% * nota de frequência
Para os alunos que pretendem fazer melhoria, a nota final será calculada da seguinte forma:
  • Nota final = MAX( 30% * teste 1 + 30% * teste 2, 60% * exame) + 40% * nota de frequência

Para os alunos cuja nota média dos testes ou a nota do exame seja menor que 9,5, a nota final será igual a esta nota.

Condições de aprovação na cadeira

1. Trabalho prático válido;

2. Avaliação de frequência superior ou igual a 9,0 valores;

3. Média(teste 1, teste 2) >= 9,5 ou exame >= 9,5;

4. Nota final superior ou igual a 9,5 valores.

Subject matter

1. Introduction

2. Architectures
2.1 Architectures: client/server, p2p and variants
2.2 System models

3. Direct communication
3.1 Base systems: TCP, UDP, IP multicast, HTTP
3.2 Asynchronous systems: HTTP asynchronous, web sockets

4. Remote invocation
4.1 Model
4.2 Interfaces and data representation
4.3 Protocols
4.4 Binding and server concurrency

5. Client/server invocation in the web
5.1 SOAP
5.2 REST

6. Evaluation of distributed systems
6.1 Functional testing and load testing

6. Security
6.1 Cryptography
6.2 Authentication, certificates and secure channels
6.3 TLS and O.Auth

7. Time and ordering of events
7.1 Limitations of physical clocks
7.2 Logical clocks, vector clocks and version vectors

8. Replication and consistency
8.1 Caching
8.2 Replication: strong: primary-backup; weak: epidemic replication and Coda

9. Indirect communication
9.1 Group communication: properties
9.2 Pub/sub and message queues
9.3 Providing fault tolerance

10. Naming
10.1 Concepts
10.2 Name and directory services

Programs

Programs where the course is taught: