Serwisy internetowe Uniwersytetu Warszawskiego Nie jesteś zalogowany | zaloguj się
katalog przedmiotów - pomoc

Praktyczne aspekty realizacji systemów rozproszonych

Informacje ogólne

Kod przedmiotu: 1000-2M21PRS Kod Erasmus / ISCED: 11.3 / (0612) Database and network design and administration
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
Punkty ECTS i inne: 6.00
zobacz reguły punktacji
Język prowadzenia: angielski
Rodzaj przedmiotu:

monograficzne

Tryb prowadzenia:

mieszany: w sali i zdalnie

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ę, 10PB+ 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 letni 2021/22" (jeszcze nie rozpoczęty)

Okres: 2022-02-21 - 2022-06-15

Wybrany podział planu:


powiększ
zobacz plan zajęć
Typ zajęć: Laboratorium, 30 godzin więcej informacji
Wykład, 30 godzin więcej informacji
Koordynatorzy: (brak danych)
Prowadzący grup: (brak danych)
Lista studentów: (nie masz dostępu)
Zaliczenie: Zaliczenie na ocenę
Skrócony opis:

Koordynatorzy:

Piotr Jaczewski <piotr.jaczewski@rtbhouse.com>

Tomasz Uliński <tomasz.ulinski@rtbhouse.com>

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Uniwersytet Warszawski.