Praktyczne aspekty realizacji systemów rozproszonych
Informacje ogólne
Kod przedmiotu: | 1000-2M21PRS |
Kod Erasmus / ISCED: |
11.3
|
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
|
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 |
![]() |
Typ zajęć: |
Laboratorium, 30 godzin
Wykład, 30 godzin
|
|
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" (w trakcie)
Okres: | 2023-02-20 - 2023-06-18 |
![]() |
Typ zajęć: |
Laboratorium, 30 godzin
Wykład, 30 godzin
|
|
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ę |
Właścicielem praw autorskich jest Uniwersytet Warszawski, Wydział Nauk Ekonomicznych.