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

Материал из Public ATP Wiki
Перейти к: навигация, поиск

Дизайн и эксплуатация систем в микросервисной архитектур - этот курс о том, как в современном мире создаются и эксплуатируются масштабные системы. Вопросы которые будут обсуждаться в курсе: •Почему 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/