Дизайн и эксплуатация систем в микросервисной архитектуре — различия между версиями

Материал из Public ATP Wiki
Перейти к: навигация, поиск
Строка 1: Строка 1:
 
Дизайн и эксплуатация систем в микросервисной архитектур - этот курс о том, как в современном мире создаются и эксплуатируются масштабные системы.  
 
Дизайн и эксплуатация систем в микросервисной архитектур - этот курс о том, как в современном мире создаются и эксплуатируются масштабные системы.  
 +
Вопросы которые будут обсуждаться в курсе:
 +
•Почему API нужно проектировать идемпотентным
 +
•Как строить транзакции между микросервисами
 +
•Как Kubernetes решает многие проблемы современной разработки
 +
•Зачем во многих современных базах данных разделяют слои обработки и хранения и при чем тут S3
 +
•Как захостить вашего Telegram бота или другой небольшой проект бесплатно и где сервера в Serverless
 +
•Как строятся системы хранения, когда можно пожертвовать консистентностью ради скорости, и как это применяется для распределенного мониторинга
 +
•Через какие системы проходит запрос, когда вы ищете видео с котиками в Youtube
 +
•Чем внутренний SLO отличается от внешнего и что произойдет если нарушить SLA
 +
 +
В качестве групповых домашних заданий вы будете проектировать системы, чинить сломанные сервера и делать доклады о современных системах на основе статей.
  
 
=Основная цель курса=
 
=Основная цель курса=
Строка 12: Строка 23:
 
= Общие сведения =
 
= Общие сведения =
 
* Форма контроля:
 
* Форма контроля:
* Начало занятий: 09.09.24
+
* Начало занятий:  
* [https://forms.gle/bG7KoPvAsdBFypBU9 Продление дедлайнов]
+
* [https://forms.gle/z6xnMysDuFmvArKd6 Форма регистрации]
* [https://t.me/+3rtAqGyQs-0xMDky Телеграм-чат курса]
+
* [https://t.me/+dc4uruFEqdkxMGUy Телеграм-чат курса]
  
 
= Команда курса =
 
= Команда курса =
* Максим Кочуков, руководитель курса, лекции, семинарист  
+
* Арслан Хабутдинов, руководитель курса, лекции, семинарист  
* Асхат Хайруллин, семинарист
+
 
  
 
= План курса =
 
= План курса =
*[https://docs.google.com/spreadsheets/d/1LIRj55yOfUprJ4asGLEu_UTlHDU0DndC2ozziCSI--c/edit?usp=sharing План курса]
+
Лекции:
 
+
•Введение
Часть 1
+
•Трехзвенная архитектура. Отличия монолитов от микросервисы
 
+
Проектирование API API-first дизайн. Критерии качества API. План дизайна API.
*Модели OSI и TCP/IP, Wireshark;
+
•Шаблоны проектирования микросервисной архитектуры
*Application + Presentation: HTTP(/2), TLS, DNS;
+
Межсервисная коммуникация. Распределенный транзакции. Контроль доступа.
*Transport: TCP, UDP, QUIC;
+
•Хранение данных
*Network: IPv4, IPv6, Linux networking, iptables;
+
Основные виды хранилищ данных и сценарии их использования на примере сервиса хранения сниппетов кода.
*Data Link: DHCP, ARP, Ethernet, WiFi;
+
•Развертывание
*Physical: Ethernet, RJ45, twisted pair.
+
История развития методов развертывания приложений. Архитектура Kubernetes. Основные шаблоны использования Kubernetes.
 
+
•Наблюдаемость
Часть 2
+
Три столпа наблюдаемости: метрики/логи/трейсинг. Архитектура системы сбора метрик.
 
+
•Облачные сервисы
*GNS3, Топологии сетей;
+
История появления облачных сервисов. Базовые инфраструктурные сервисы. Платформенные сервисы.  
*Свичи, Link Aggregation, STP;
+
•Serverless Эволюция среды исполнения кода.  Основные сценарии использования Serverless.
*Маршрутизация: статическая, RIP, OSPF, BGP;
+
•Дополнительные элементы проектирования систем
*Безопасность и контроль доступа при построении сетей;
+
Балансировка нагрузки. Геопоиск. CDN.
*Виртуальные сети: VLAN, Q-in-Q, VxLAN, VPN, GRE, IPSec;
+
•Основы Site Reliability Engineering
*Linux namespaces, CNI, сети в контейнерах.
+
История появления Site Reliability Engineering.  Error Budget. SLI/SLO/SLA. Инцидент-менеджмент. Дежурство.
 +
•Собеседования по дизайну систем
 +
План прохождения собеседований. Разбор типичной задачи. Критерии оценивания собеседований.
 +
Доклады студентов
 +
По современным технологиям, используемым в дизайне систем.
  
 
= Важные ссылки =
 
= Важные ссылки =
* [https://docs.google.com/forms/d/e/1FAIpQLScE-gMVo-AaFvF7KH_UIYivs-nDGKjktu2LaR8L2YJ_OtivOQ/viewform Регистрация на курс]
+
* [https://forms.gle/z6xnMysDuFmvArKd6 Регистрация на курс]
* [https://t.me/+3rtAqGyQs-0xMDky Чат курса]
+
* [https://t.me/+dc4uruFEqdkxMGUy Чат курса]
* [https://forms.gle/yHeLgyXP3gJHiRG36 Форма на продление дедлайнов]
 
  
 
== Материалы ==
 
== Материалы ==
* [https://www.youtube.com/watch?v=rnFoMfY8uKY&list=PLHVUfYYv0xkkWgyC962qJsEISPmUhq0aB&index=1 Видео лекций YouTube].
+
* [https://www.youtube.com/playlist?list=PL3KJ6aFelSDL9kXYRlyGzzL-6ivTqxfF2 Записи лекций YouTube].
* [https://drive.google.com/drive/folders/1lWAkkIUU2gPJugQqlAfx3r42S_ht8pZc?usp=sharing Видеозаписи занятий]
+
* [https://forms.gle/Q5zx9G519A7xR2eZ9 Фидбек]
* К каждой новой лекции по этой ссылке будут появляться слайды с новым материалом. [https://docs.google.com/presentation/d/1gtvlrsw0HAHzEs_mK0bB2hejR0vweG9F99jXqT8QdjQ/edit#slide=id.g1f10e076f13_0_0 Презентация курса]
+
* [https://drive.google.com/drive/folders/1xsh5iRiW22_P1SwotXgAO76Wz6bAK_QP?usp=sharing Презентация курса]
* [https://github.com/tna0y/course-networks Репозиторий курса]
 
  
 
= Критерии получения оценки =
 
= Критерии получения оценки =
  
Максимум 16 баллов. Баллы переводятся в десятичную систему 1 к 1.
+
*3 балла - Дизайн док-системы;
 
+
*3 балла - Задания по драблшутингу;
*3 балла - Теоретический зачет в конце семестра;
+
*3 баллов - Доклады;
*3 балла - Проектирование и реализация своего reliable протокола поверх UDP (1 часть курса);
+
*3 балла - Активность на парах и в чате.
*5 баллов - Лабораторные работы в GNS3 по проектированию сетей (2 часть курса);
 
*3 балла - Реализация атаки на протокол по выбору.
 
*2 балла - Дополнительные баллы за работу на семинарах.
 
 
 
== Домашние задания ==
 
На курсе планируется 2 больших дз - реализация протокола, атака, 5 лабораторных работ.
 
  
ДЗ 1
+
=Домашние задания =
Написание кода - демо любой атаки на протокол. Тему необходимо согласовать с семинаристом.
 
Дедлайн - зачетная неделя.
 
  
ДЗ 2
+
•Документ с дизайном системы
Реализация reliable протокола поверх UDP.
+
Проверяет навыки проектирования систем
Дедлайн
+
•Задания по Troubleshooting
 +
Проверяет навыки эксплуатации систем
 +
•Доклад
 +
Проверяет навык разобраться в новой технологии и рассказать другим, для чего она может быть полезна
  
Темы лабораторных работ
+
=Литература=
*STP+LAG
+
https://twirl.github.io/The-API-Book/index.html
*RIP
+
https://www.amazon.com/gp/product/1617294543
*OSPF+BGP
+
https://www.amazon.co.uk/Kubernetes-Patterns-Reusable-Designing-Applications/dp/1492050288
*Security
+
https://sre.google/sre-book/table-of-contents/
*VLAN+QinQ
+
https://www.amazon.com/System-Design-Interview-Insiders-Guide-ebook/dp/B0CR977BQH/

Версия 13:54, 17 сентября 2024

Дизайн и эксплуатация систем в микросервисной архитектур - этот курс о том, как в современном мире создаются и эксплуатируются масштабные системы. Вопросы которые будут обсуждаться в курсе: •Почему API нужно проектировать идемпотентным •Как строить транзакции между микросервисами •Как Kubernetes решает многие проблемы современной разработки •Зачем во многих современных базах данных разделяют слои обработки и хранения и при чем тут S3 •Как захостить вашего Telegram бота или другой небольшой проект бесплатно и где сервера в Serverless •Как строятся системы хранения, когда можно пожертвовать консистентностью ради скорости, и как это применяется для распределенного мониторинга •Через какие системы проходит запрос, когда вы ищете видео с котиками в Youtube •Чем внутренний SLO отличается от внешнего и что произойдет если нарушить SLA

В качестве групповых домашних заданий вы будете проектировать системы, чинить сломанные сервера и делать доклады о современных системах на основе статей.

Основная цель курса

Овладение студентами навыками дизайна и эксплуатации систем в микросервисной архитектуре В процессе курса студент должен научиться: •Проектировать системы с учетом заданных требований и ограничений •Выбирать подходящие базы данных для системы и другие облачные сервисы •Применять при необходимости шаблоны проектирования в микросервисной архитектуре •Проектировать API для взаимодействия с внешними системами •Эксплуатировать системы согласно принципам Site Reliability Engineering

Общие сведения

Команда курса

  • Арслан Хабутдинов, руководитель курса, лекции, семинарист


План курса

Лекции: •Введение •Трехзвенная архитектура. Отличия монолитов от микросервисы Проектирование API API-first дизайн. Критерии качества API. План дизайна API. •Шаблоны проектирования микросервисной архитектуры Межсервисная коммуникация. Распределенный транзакции. Контроль доступа. •Хранение данных Основные виды хранилищ данных и сценарии их использования на примере сервиса хранения сниппетов кода. •Развертывание История развития методов развертывания приложений. Архитектура Kubernetes. Основные шаблоны использования Kubernetes. •Наблюдаемость Три столпа наблюдаемости: метрики/логи/трейсинг. Архитектура системы сбора метрик. •Облачные сервисы История появления облачных сервисов. Базовые инфраструктурные сервисы. Платформенные сервисы. •Serverless Эволюция среды исполнения кода. Основные сценарии использования Serverless. •Дополнительные элементы проектирования систем Балансировка нагрузки. Геопоиск. CDN. •Основы Site Reliability Engineering История появления Site Reliability Engineering. Error Budget. SLI/SLO/SLA. Инцидент-менеджмент. Дежурство. •Собеседования по дизайну систем План прохождения собеседований. Разбор типичной задачи. Критерии оценивания собеседований. Доклады студентов По современным технологиям, используемым в дизайне систем.

Важные ссылки

Материалы

Критерии получения оценки

  • 3 балла - Дизайн док-системы;
  • 3 балла - Задания по драблшутингу;
  • 3 баллов - Доклады;
  • 3 балла - Активность на парах и в чате.

Домашние задания

•Документ с дизайном системы Проверяет навыки проектирования систем •Задания по Troubleshooting Проверяет навыки эксплуатации систем •Доклад Проверяет навык разобраться в новой технологии и рассказать другим, для чего она может быть полезна

Литература

https://twirl.github.io/The-API-Book/index.html https://www.amazon.com/gp/product/1617294543 https://www.amazon.co.uk/Kubernetes-Patterns-Reusable-Designing-Applications/dp/1492050288 https://sre.google/sre-book/table-of-contents/ https://www.amazon.com/System-Design-Interview-Insiders-Guide-ebook/dp/B0CR977BQH/