Uniwersytet Warszawski, Wydział Nauk Ekonomicznych - Centralny System Uwierzytelniania
Strona główna

Praktyczne aspekty realizacji systemów rozproszonych

Informacje ogólne

Kod przedmiotu: 1000-2M21PRS
Kod Erasmus / ISCED: 11.3 Kod klasyfikacyjny przedmiotu składa się z trzech do pięciu cyfr, przy czym trzy pierwsze oznaczają klasyfikację dziedziny wg. Listy kodów dziedzin obowiązującej w programie Socrates/Erasmus, czwarta (dotąd na ogół 0) – ewentualne uszczegółowienie informacji o dyscyplinie, piąta – stopień zaawansowania przedmiotu ustalony na podstawie roku studiów, dla którego przedmiot jest przeznaczony. / (0612) Database and network design and administration Kod ISCED - Międzynarodowa Standardowa Klasyfikacja Kształcenia (International Standard Classification of Education) została opracowana przez UNESCO.
Nazwa przedmiotu: Praktyczne aspekty realizacji systemów rozproszonych
Jednostka: Wydział Matematyki, Informatyki i Mechaniki
Grupy: Przedmioty monograficzne dla III - V roku informatyki
Przedmioty obieralne dla informatyki
Przedmioty obieralne na studiach drugiego stopnia na kierunku bioinformatyka
Punkty ECTS i inne: 6.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.

zobacz reguły punktacji
Język prowadzenia: angielski
Rodzaj przedmiotu:

monograficzne

Tryb prowadzenia:

w sali

Skrócony opis:

Przedmiot porusza tematykę problemów i zagadnień występujących przy realizacji systemów rozproszonych o bardzo dużej skali i jest oparty na doświadczeniach z rzeczywistej implementacji takiego systemu. Omówimy praktyczne aspekty budowy systemów o wysokiej przepustowości, procesujących petabajty danych dziennie w rozproszonych geograficznie centrach danych. Poruszymy typowe problemy oraz rozważymy decyzje związane z utrzymaniem i rozwojem takich systemów. Przyjrzymy się technikom efektywnej wymiany danych pomiędzy komponentami systemu, zagadnieniom związanym z przechowywaniem oraz procesowaniem dużej ilości danych. Zajmiemy się także praktycznymi aspektami organizacji infrastruktury wspomagającej uczenie maszynowe w realiach systemów o dużej skali.

Pełny opis:

Obsługa wielu zapytań na sekundę w krótkim limicie czasu jest prawdziwym wyzwaniem. W warunkach rozproszonego systemu, kiedy konieczne jest gromadzenie dużych ilości danych, trzeba się zmierzyć z wieloma problemami natury architektonicznej oraz implementacyjnej.

Przedmiot porusza tematykę problemów i zagadnień występujących przy realizacji systemów rozproszonych o bardzo dużej skali i jest oparty na doświadczeniach z rzeczywistej implementacji takiego systemu (5M+ zapytań na sekundę, 200TB+ danych dziennie, 2K+ serwerów, 4 centrów danych na różnych kontynentach). Omówimy praktyczne aspekty budowy systemów o wysokiej przepustowości, procesujących petabajty danych dziennie w rozproszonych geograficznie centrach danych. Poruszymy typowe problemy oraz rozważymy decyzje związane z utrzymaniem i rozwojem takich systemów. Przyjrzymy się technikom efektywnej wymiany danych pomiędzy komponentami systemu, zagadnieniom związanym z przechowywaniem oraz procesowaniem dużej ilości danych. Zajmiemy się także praktycznymi aspektami organizacji infrastruktury wspomagającej uczenie maszynowe w realiach systemów o dużej skali.

Ćwiczenia będą polegały na stworzeniu w trakcie semestru działającego rozproszonego systemu, którego zadaniem będzie obsłużenie dużej ilości ruchu. System będzie tworzony przyrostowo. Na pierwszych zajęciach zostanie stworzony jego zalążek na podstawie minimalnych wymagań. W toku kolejnych zajęć będą przedstawiane kolejne wymagania, które spowodują konieczność rozbudowy systemu przez studentów.

1. Wprowadzenie: wymagania i kompromisy związane z systemami dużej skali, przykłady architektury.

2. Skalowalność systemów, podział na data centers, wysoka dostępność, load-balancing, infrastruktura sieciowa.

3. Wdrażanie aplikacji w środowisku rozproszonym (Docker, Kubernetes), zarządzanie infrastrukturą sprzętową (Puppet, Ansible).

4. Monitoring stanu zdrowia systemów o dużej skali (Graphite, Grafana, Icinga).

5. Efektywna komunikacja pomiędzy komponentami systemów rozproszonych (Kafka).

6. Metody procesowania strumieni danych (Kafka Streams, Kafka Workers).

7. Przechowywanie i synchronizacja danych (polyglot persistence, bazy danych NoSQL typu Aerospike, FoundationDB, Cassandra, Memcached).

8. Zarządzanie strukturami i schematami danych w systemach rozproszonych (Avro, Schema Registry).

9. Organizacja i implementacja infrastruktury wspomagającej uczenie maszynowe i

analizę danych w środowisku systemów rozproszonych (MapReduce, Spark, rozproszone systemy plików typu HDFS).

10. Rozwiązania chmurowe - podejścia Infrastructure as a Service (IaaS), Platform as a Service (PaaS) i Serverless, zalety i wady, model hybrydowy, analiza kosztów, przykładowe przypadki użycia (Google Compute Engine, BigQuery, Cloud Storage).

Literatura:

1. Site Reliability Engineering - Betsy Beyer, Chris Jones, Jennifer Petoff, Niall Richard Murphy

2. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems - Martin Kleppmann

3. Fundamentals of Software Architecture: An Engineering Approach - Mark Richards

4. Making Sense of Stream Processing - Martin Kleppmann

5. Kafka: The Definitive Guide - Neha Narkhede, Gwen Shapira, Todd Palino

6. Microservices: Up and Running: A Step-By-Step Guide to Building a Microservices Architecture - Ronnie Mitra, Irakli Nadareishvili

Efekty uczenia się:

Wiedza:

1. Zna zagadnienia związane z inżynierią niezawodności w realiach dużych systemów.

2. Zna metody i narzędzia wspomagające wdrażanie aplikacji w środowisku rozproszonym.

3. Zna zagadnienia związane z konteneryzacja aplikacji.

4. Zna metody i narzędzia do monitorowania stanu zdrowia infrastruktury i aplikacji.

5. Zna przypadki użycia oraz architekturę systemów typu pub/sub (Kafka).

6. Zna biblioteki do przetwarzania strumieni danych z ekosystemu Kafka.

7. Zna rodzaje popularnych nierelacyjnych baz danych i ich zastosowania w systemach rozproszonych o dużej skali.

8. Zna zagadnienia związane z wersjonowaniem i kompatybilnością struktur danych wykorzystywanych w systemach rozproszonych.

9. Zna podstawowe aspekty związane ze składowaniem i optymalizacją przetwarzania dużych danych.

10. Ma wiedzę na temat analizy złożoności algorytmów rozproszonych i algorytmów przetwarzających duże dane.

11. Zna zasady projektowania algorytmów zgodnych z paradygmatem MapReduce.

12. Rozumie korzyści i wady wykorzystania usług chmurowych w architekturze systemu rozproszonego.

Umiejętności:

1. Potrafi zaprojektować architekturę systemu rozproszonego o dużej skali.

2. Potrafi podjąć właściwe decyzje uwzględniające konieczne kompromisy przy projektowaniu systemów rozproszonych.

3. Potrafi skonfigurować podstawowe elementy systemu odpowiedzialne za utrzymanie wysokiej niezawodności.

4. Potrafi stworzyć kontener z aplikacją i wdrożyć go w środowisku rozproszonym.

5. Potrafi skonfigurować wypełnianie centralnego dziennika zdarzeń w środowisku rozproszonym.

6. Potrafi skonfigurować zbieranie podstawowych metryk użycia zasobów na serwerach.

7. Potrafi skonfigurować klaster Kafka i przy jego użyciu zaimplementować komunikację.

8. Potrafi zaimplementować aplikację przetwarzającą strumienie danych, którą można wygodnie i dynamicznie skalować.

9. Potrafi adekwatnie dobrać nierelacyjne źródło danych dla klasy problemu w rozproszonym systemie o dużej skali.

10. Potrafi wyrazić problemy w modelach obliczeń rozproszonych takich jak MapReduce.

11. Potrafi diagnozować wąskie gardła w algorytmach rozproszonych służących do przetwarzania danych.

Przedmiot będzie prowadzony przez inżynierów z firmy RTB House pracujących na co dzień przy rozwoju i utrzymaniu systemu odpowiedzialnego za inteligentne wyświetlanie reklam w Internecie z wykorzystaniem algorytmów deep learning i działającego w oparciu o model Real Time Bidding.

Metody i kryteria oceniania:

Ocena końcowa na podstawie projektu stworzonego w trakcie semestru.

Zajęcia w cyklu "Semestr zimowy 2022/23" (zakończony)

Okres: 2022-10-01 - 2023-01-29
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć:
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Piotr Jaczewski
Prowadzący grup: Damian Bodnar, Piotr Jaczewski, Bartosz Łoś, Jarosław Rzeszótko, Paweł Wiejacha
Lista studentów: (nie masz dostępu)
Zaliczenie: Zaliczenie na ocenę

Zajęcia w cyklu "Semestr letni 2022/23" (jeszcze nie rozpoczęty)

Okres: 2023-02-20 - 2023-06-18
Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć:
Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: Piotr Jaczewski
Prowadzący grup: Piotr Jaczewski, Bartosz Łoś, Jarosław Rzeszótko
Lista studentów: (nie masz dostępu)
Zaliczenie: Zaliczenie na ocenę
Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski, Wydział Nauk Ekonomicznych.
ul. Długa 44/50
00-241 Warszawa
tel: +48 22 55 49 126 https://www.wne.uw.edu.pl/
kontakt deklaracja dostępności USOSweb 6.8.1.0-2 (2023-01-24)