- Nazwa przedmiotu:
- Reliable, Scalable and Maintainable IT Systems
- Koordynator przedmiotu:
- Rajmund Kożuszek
- Status przedmiotu:
- Fakultatywny dowolnego wyboru
- Poziom kształcenia:
- Studia II stopnia
- Program:
- Informatyka
- Grupa przedmiotów:
- Przedmioty techniczne - zaawansowane
- Kod przedmiotu:
- ERSMS
- Semestr nominalny:
- 3 / rok ak. 2021/2022
- Liczba punktów ECTS:
- 4
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 1. liczba godzin kontaktowych – 47 godz., w tym
obecność na wykładach 30 godz.,
spotkania projektowe 15 godz.,
konsultacje 2 godz.,
2. praca własna studenta – 70 godz., w tym
przygotowanie do kolokwium 25 godz.,
przygotowanie do zadania projektowego 15 godz.,
realizacja projektu 30 godz.
Łączny nakład pracy studenta wynosi 117 godz., co odpowiada 4 pkt. ECTS.
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- 1,61 pkt. ECTS, co odpowiada 47 godz. kontaktowym
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- 2,05 pkt. ECTS, co odpowiada 15 godz. spotkań projektowych plus 45 godz. przygotowania i realizacji projektu
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład30h
- Ćwiczenia0h
- Laboratorium0h
- Projekt15h
- Lekcje komputerowe0h
- Wymagania wstępne:
- Osoby uczęszczające na przedmiot powinny przede wszystkim mieć wiedzę dotyczącą systemów operacyjnych i sieci komputerowych oraz praktyczną umiejętność programowania w nowoczesnych językach programowania wysokiego poziomu. Realizacja projektu informatycznego wymaga również znajomości co najmniej podstawowych zagadnień dotyczących inżynierii oprogramowania.
- Limit liczby studentów:
- 36
- Cel przedmiotu:
- Rozwój i wdrażanie niezawodnych, skalowalnych i zarządzalnych systemów informatycznych niesie ze sobą szereg wymagań wynikających ze specyfiki tych systemów. Celem przedmiotu jest przekazanie wiedzy niezbędnej do sprostania tym wymaganiom.
- Treści kształcenia:
- Wykład:
1. Introduction to Large-scale Systems
Distributed Systems
Transparency
Openness
Scalability
Decentralized Algorithms
Scaling Techniques
Vertical and Horizontal Distribution
2. Reliability, Scalability and Maintainability
Reliability
Scalability
Maintainability
3. Data Models and Query Languages
Relational and Object Data Model
Document Data Model
Query Languages for Data
Graph-Like Data Models
4. Datastores
Data Structures in Databases
Data Warehousing
Column-Oriented Storage
5. Dataflows and Communication
Protocols
Networking Review
Middleware Protocols
Data Encoding Formats
Dataflow: Databases
Dataflow: RPC and REST
Dataflow: Message-Passing
Sockets
MPI
Message-Queuing Systems
6. Synchronization
Physical Clocks
Clock Synchronization Algorithms
Lamport’s Algorithm
Vector Timestamps
Causal Delivery of Messages
7. Replication
Synchronous vs Asynchronous Replication
Persistent and Transient Communication
Replication Lag
Multi-Leader Replication
Leaderless Replication
Mutual Exclusion
8. Partitioning
Partitioning of Key-Value Data
Partitioning and Secondary Indexes
Partitions Rebalancing
Election Algorithms
9. Transactions
Transaction Concept
Weak Isolation Levels
Serializability
Two-Phase Locking
10. Fault Tolerance
Unreliable Networks
Unreliable Clocks
Byzantine Faults
11. Consistency and Consensus
Linearizability
CAP Theorem
Ordering and Causality
Lamport Timestamps
Distributed Transactions and Consensus
The Impossibility of Consensus
Two-Phase Commit
Three-Phase Commit
12. Batch Processing
Batch Processing with Unix Tools
Map Reduce Workflows
Graphs and Iterative Processing
13. Stream Processing
Stream-Oriented Communication
Messaging Systems
Partitioned Logs
Stream Processing
Quality of Service
Reasoning About Time
Zajęcia projektowe:
Student realizuje zadanie projektowe w grupie 4-6 osobowej.
Każda grupa projektowa ma za zadanie
a. zaprojektować,
b. zaimplementować,
c. przetestować,
d. zademonstrować odbierającemu projekt
zadaną i zdefiniowaną przez prowadzącego projekt z przedmiotu usługę.
System powinien być uruchamialny w środowisku zdalnym bądź chmurowym, do którego można się odwołać z komputerów klienckich pracujących pod kontrolą systemu Linux. Dla części serwerowej wymagane jest również wykorzystanie środowiska systemu Linux.
Efektem końcowym projektu powinny być:
- własne działające oprogramowanie,
- zautomatyzowana procedura prezentacji możliwości zrealizowanego oprogramowania (obligatoryjnie w postaci skryptu sh, z podziałem na etapy),
- pełna dokumentacja projektu w postaci elektronicznej zawierająca co najmniej następujące pozycje:
o uporządkowane wstępne opracowania,
o doprecyzowaną względem treści szczegółową koncepcję zaproponowanego
o rozwiązania,
o opis organizacji grupowego wytwarzania oprogramowania, przypisanych ról w projekcie, sprawozdanie z prac nad projektem, czyli listę
o spotkań roboczych wraz z datami i ustaleniami,
o dokumentację techniczną proponowanego rozwiązania,
o dokumentację testów,
o dokumentację uruchamiania i konfiguracji systemu,
o opis przygotowanych skryptów testowych i prezentacyjnych.
W każdej grupie projektowej powinny być zdefiniowane następujące role:
- kierownik projektu,
- architekt - osoba odpowiedzialna za wytworzenie architektury rozwiązania,
- osoba odpowiedzialna za przygotowanie i zarządzanie repozytorium projektu oraz przechowywanie aktualnej kopii zapasowej projektu,
- dokumentalista - osoba odpowiedzialna za zarządzanie dokumentacją projektu, zbieranie i ujednolicanie dokumentacji technicznej tworzonej przez pozostałych członków zespołu oraz m.in. protokołowanie ustaleń z poszczególnych spotkań roboczych zespołu projektowego,
- tester - osoba odpowiedzialna za przygotowanie planu testów, w tym testów obciążeniowych, niezawodnościowych i synchronizacyjnych, ich przeprowadzenie oraz opisanie,
- handlowiec - osoba odpowiedzialna za przygotowanie powtarzalnej, maksymalnie zautomatyzowanej demonstracji końcowej prototypu oraz samo sprawne przeprowadzenie końcowej demonstracji działania efektu pracy zespołu projektowego.
Z dokumentacji musi jasno wynikać, kto i w jakim stopniu uczestniczył w realizacji poszczególnych elementów projektu.
- Metody oceny:
- Wykład prowadzony w tradycyjnej formie.
Realizacja projektu będzie rozbita na kilka etapów (wyniki uzyskane po zakończeniu każdego z nich będą prezentowane i dyskutowane z prowadzącym w trakcie 2-3 godzinnego spotkania):
1. analizę biznesową przedstawionego problemu,
2. przygotowanie technicznych założeń i projektu architektury systemu,
3. implementację systemu realizującego wymagania projektu,
4. wytworzenie i demonstrację docelowego rozwiązania.
- Egzamin:
- nie
- Literatura:
- 1. “Designing Data-Intensive Applications”, Martin Kleppmann, O’Reilly Media Inc. 2017
2. „Distributed Systems”, Maarten van Steen, Andrew S. Tanenbaum, CreateSpace Independent Publishing Platform; 3.01 edition, 2017
- Witryna www przedmiotu:
- https://usosweb.usos.pw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=103A-INISY-MSP-ERSMS
- Uwagi:
- (-)
Efekty uczenia się