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

Материал из Public ATP Wiki
Перейти к: навигация, поиск
 
(не показано 5 промежуточных версий этого же участника)
Строка 1: Строка 1:
 
Дизайн и эксплуатация систем в микросервисной архитектур - этот курс о том, как в современном мире создаются и эксплуатируются масштабные системы.  
 
Дизайн и эксплуатация систем в микросервисной архитектур - этот курс о том, как в современном мире создаются и эксплуатируются масштабные системы.  
 +
 +
'''Вопросы которые будут обсуждаться в курсе:'''
 +
*Почему API нужно проектировать идемпотентным
 +
*Как строить транзакции между микросервисами
 +
*Как Kubernetes решает многие проблемы современной разработки
 +
*Зачем во многих современных базах данных разделяют слои обработки и хранения и при чем тут S3
 +
*Как захостить вашего Telegram бота или другой небольшой проект бесплатно и где сервера в Serverless
 +
*Как строятся системы хранения, когда можно пожертвовать консистентностью ради скорости, и как это применяется для распределенного мониторинга
 +
*Через какие системы проходит запрос, когда вы ищете видео с котиками в Youtube
 +
*Чем внутренний SLO отличается от внешнего и что произойдет если нарушить SLA
 +
 +
*В качестве групповых домашних заданий вы будете проектировать системы, чинить сломанные сервера и делать доклады о современных системах на основе статей.
  
 
=Основная цель курса=
 
=Основная цель курса=
Овладение студентами навыками дизайна и эксплуатации систем в микросервисной архитектуре
+
Основная цель курса-овладение студентами навыками дизайна и эксплуатации систем в микросервисной архитектуре.
В процессе курса студент должен научиться:
+
 
•Проектировать системы с учетом заданных требований и ограничений
+
'''В процессе курса студент должен научиться:'''
•Выбирать подходящие базы данных для системы и другие облачные сервисы
+
*Проектировать системы с учетом заданных требований и ограничений
•Применять при необходимости шаблоны проектирования в микросервисной архитектуре
+
*Выбирать подходящие базы данных для системы и другие облачные сервисы
•Проектировать API для взаимодействия с внешними системами
+
*Применять при необходимости шаблоны проектирования в микросервисной архитектуре
•Эксплуатировать системы согласно принципам Site Reliability Engineering
+
*Проектировать API для взаимодействия с внешними системами
 +
*Эксплуатировать системы согласно принципам Site Reliability Engineering
 
   
 
   
 
= Общие сведения =
 
= Общие сведения =
 
* Форма контроля:
 
* Форма контроля:
* Начало занятий: 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
+
'''Лекции:'''
 
+
*Введение
*Модели OSI и TCP/IP, Wireshark;
+
*Трехзвенная архитектура. Отличия монолитов от микросервисы
*Application + Presentation: HTTP(/2), TLS, DNS;
+
Проектирование API API-first дизайн. Критерии качества API. План дизайна API.
*Transport: TCP, UDP, QUIC;
+
*Шаблоны проектирования микросервисной архитектуры
*Network: IPv4, IPv6, Linux networking, iptables;
+
Межсервисная коммуникация. Распределенный транзакции. Контроль доступа.
*Data Link: DHCP, ARP, Ethernet, WiFi;
+
*Хранение данных
*Physical: Ethernet, RJ45, twisted pair.
+
Основные виды хранилищ данных и сценарии их использования на примере сервиса хранения сниппетов кода.
 
+
*Развертывание
Часть 2
+
История развития методов развертывания приложений. Архитектура Kubernetes. Основные шаблоны использования Kubernetes.
 
+
*Наблюдаемость
*GNS3, Топологии сетей;
+
Три столпа наблюдаемости: метрики/логи/трейсинг. Архитектура системы сбора метрик.
*Свичи, Link Aggregation, STP;
+
*Облачные сервисы
*Маршрутизация: статическая, RIP, OSPF, BGP;
+
История появления облачных сервисов. Базовые инфраструктурные сервисы. Платформенные сервисы.
*Безопасность и контроль доступа при построении сетей;
+
*Serverless Эволюция среды исполнения кода.  Основные сценарии использования Serverless.
*Виртуальные сети: VLAN, Q-in-Q, VxLAN, VPN, GRE, IPSec;
+
*Дополнительные элементы проектирования систем
*Linux namespaces, CNI, сети в контейнерах.
+
Балансировка нагрузки. Геопоиск. CDN.
 +
*Основы Site Reliability Engineering
 +
История появления 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/

Текущая версия на 14:06, 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

Проверяет навыки эксплуатации систем

  • Доклад

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

Литература