Fix docs
parent
36a389f628
commit
70e66d3f83
|
@ -5,12 +5,12 @@
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
### [04. Лента новостей социальной сети](test/dz004/README.md) (в процессе)
|
### [04. Масштабируемая подсистема диалогов](test/dz004/README.md) (не начата)
|
||||||
|
### [05. Лента новостей социальной сети](test/dz005/README.md) (в процессе)
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
### [05. Репликация из MySQL в tarantool](test/dz005/README.md) (не начата)
|
### [06. Репликация из MySQL в tarantool](test/dz006/README.md) (не начата)
|
||||||
### [06. Масштабируемая подсистема диалогов](test/dz006/README.md) (не начата)
|
|
||||||
### [07. Онлайн обновление ленты новостей](test/dz007/README.md) (не начата)
|
### [07. Онлайн обновление ленты новостей](test/dz007/README.md) (не начата)
|
||||||
### [08. Разделение монолита на сервисы](test/dz008/README.md) (не начата)
|
### [08. Разделение монолита на сервисы](test/dz008/README.md) (не начата)
|
||||||
### [09. Отказоустойчивость приложений](test/dz009/README.md) (не начата)
|
### [09. Отказоустойчивость приложений](test/dz009/README.md) (не начата)
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9332/)
|
#ЗАЧТЕНА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12337/) / [РАБОЧИЙ СЕРВИС](http://lab.tiburon.su:8080/)
|
||||||
#[РАБОЧИЙ СЕРВИС](http://lab.tiburon.su:8080/)
|
|
||||||
|
-----
|
||||||
|
|
||||||
# Заготовка для социальной сети
|
# Заготовка для социальной сети
|
||||||
Цель: В результате выполнения ДЗ вы создадите базовый скелет социальной сети, который будет развиваться в дальнейших ДЗ.
|
Цель: В результате выполнения ДЗ вы создадите базовый скелет социальной сети, который будет развиваться в дальнейших ДЗ.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/)
|
#ЗАЧТЕНА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12338/) / [ОТЧЕТ](REPORT.md)
|
||||||
#[ОТЧЕТ](REPORT.md)
|
|
||||||
|
-----
|
||||||
|
|
||||||
# Производительность индексов
|
# Производительность индексов
|
||||||
Цель: В результате выполнения ДЗ вы создадите набор тестовых данных для проведения нагрузочного тестирования, подберете наиболее подходящие индексы и проведете тесты производительности.
|
Цель: В результате выполнения ДЗ вы создадите набор тестовых данных для проведения нагрузочного тестирования, подберете наиболее подходящие индексы и проведете тесты производительности.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9334/)
|
#ЗАЧТЕНА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12339/) / [ОТЧЕТ](REPORT.md)
|
||||||
#[ОТЧЕТ](REPORT.md)
|
|
||||||
|
-----
|
||||||
|
|
||||||
#Полусинхронная репликация
|
#Полусинхронная репликация
|
||||||
|
|
||||||
В результате выполнения ДЗ вы настроите полусинхронную репликацию, протестируете ее влияние на производительность системы и убедитесь, что теперь вы не теряете транзакции в случае аварии.
|
В результате выполнения ДЗ вы настроите полусинхронную репликацию, протестируете ее влияние на производительность системы и убедитесь, что теперь вы не теряете транзакции в случае аварии.
|
||||||
|
|
|
@ -1,26 +1,27 @@
|
||||||
#[В ПРОЦЕССЕ](https://otus.ru/learning/61597/#/homework-chat/9336/)
|
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12342/) / [ОТЧЕТ](REPORT.md)
|
||||||
#[ОТЧЕТ](REPORT.md)
|
|
||||||
#Лента новостей социальной сети
|
-----
|
||||||
Цель: В результате выполнения ДЗ вы создадите ленту новостей социальной сети
|
|
||||||
|
# Масштабируемая подсистема диалогов
|
||||||
|
|
||||||
|
В результате выполнения ДЗ вы создадите базовый скелет микросервиса, который будет развиваться в дальнейших ДЗ.
|
||||||
|
|
||||||
### В данном задании тренируются навыки:
|
### В данном задании тренируются навыки:
|
||||||
- работа с кешами;
|
- декомпозиции предметной области;
|
||||||
- работа с очередями;
|
- построения элементарной архитектуры проекта;
|
||||||
- проектирование масштабируемых архитектур.
|
|
||||||
|
|
||||||
# План выполнения:
|
### План выполнения:
|
||||||
1) Разработать страницу добавления поста.
|
1) Необходимо написать систему диалогов между пользователями.
|
||||||
2) Разработать ленту новостей, содержащую посты пользователей на которых подписан текущий пользователь.
|
2) Обеспечить горизонтальное масштабирование хранилищ на запись с помощью шардинга.
|
||||||
- Создается отдельная страница, куда пишутся все обновления друзей. Для этого нужно хранить подписчиков.
|
3) Предусмотреть:
|
||||||
- Лента формируется на уровне кешей.
|
- Возможность решардинга.
|
||||||
- Формирование ленты производить через постановку задачи в очередь на часть подписчиков, чтобы избежать эффекта леди Гаги.
|
- “Эффект Леди Гаги” (один пользователь пишет сильно больше среднего).
|
||||||
- В ленте держать последние 1000 обновлений друзей.
|
- Наиболее эффективную схему.
|
||||||
- Лента должна кешироваться.
|
|
||||||
|
ДЗ принимается в виде исходного кода на github и отчета по выполненной работе.
|
||||||
|
|
||||||
ДЗ сдается в виде ссылки на гитлаб и демонстрации работающего проекта, развернутого в интернете.
|
Требования:
|
||||||
Критерии оценки: Оценка происходит по принципу зачет/незачет.
|
- Верно выбран ключ шардирования с учетом "эффекта Леди Гаги"
|
||||||
|
- В отчете описан процесс решардинга без даунтайма
|
||||||
|
|
||||||
### Требования:
|
###Рекомендуем сдать до: 17.11.2021
|
||||||
Верно работает инвалидация кеша.
|
|
||||||
Обновление лент работает через очередь.
|
|
||||||
Есть возможность перестройки кешей из СУБД.
|
|
||||||
Рекомендуем сдать до: 17.02.2021
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
#В ПРОЦЕССЕ: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12340/) / [ОТЧЕТ](REPORT.md)
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
#Лента новостей социальной сети
|
||||||
|
Цель: В результате выполнения ДЗ вы создадите ленту новостей социальной сети
|
||||||
|
### В данном задании тренируются навыки:
|
||||||
|
- работа с кешами;
|
||||||
|
- работа с очередями;
|
||||||
|
- проектирование масштабируемых архитектур.
|
||||||
|
|
||||||
|
### План выполнения:
|
||||||
|
1) Разработать страницу добавления поста.
|
||||||
|
2) Разработать ленту новостей, содержащую посты пользователей на которых подписан текущий пользователь.
|
||||||
|
- Создается отдельная страница, куда пишутся все обновления друзей. Для этого нужно хранить подписчиков.
|
||||||
|
- Лента формируется на уровне кешей.
|
||||||
|
- Формирование ленты производить через постановку задачи в очередь на часть подписчиков, чтобы избежать эффекта леди Гаги.
|
||||||
|
- В ленте держать последние 1000 обновлений друзей.
|
||||||
|
- Лента должна кешироваться.
|
||||||
|
|
||||||
|
ДЗ сдается в виде ссылки на github и демонстрации работающего проекта, развернутого в интернете.
|
||||||
|
Критерии оценки: Оценка происходит по принципу зачет/незачет.
|
||||||
|
|
||||||
|
### Требования:
|
||||||
|
- Верно работает инвалидация кеша.
|
||||||
|
- Обновление лент работает через очередь.
|
||||||
|
- Есть возможность перестройки кешей из СУБД.
|
||||||
|
|
||||||
|
### Рекомендуем сдать до: 17.02.2021
|
|
@ -0,0 +1,27 @@
|
||||||
|
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12341/) / [ОТЧЕТ](REPORT.md)
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
#Репликация из MySQL в tarantool
|
||||||
|
Цель: В результате выполнения ДЗ вы настроите репликацию из MySQL в tarantool, а также напишите запрос на lua.
|
||||||
|
### В данном задании тренируются навыки:
|
||||||
|
- администрирование MySQL;
|
||||||
|
- администрирование tarantool;
|
||||||
|
- разработка хранимых процедур для tarantool;
|
||||||
|
|
||||||
|
# План выполнения:
|
||||||
|
1) Выбрать любую таблицу, которую мы читаем с реплик MySQL.
|
||||||
|
2) С помощью программы https://github.com/tarantool/mysql-tarantool-replication настроить реплицирование в tarantool (лучше всего версии 1.10).
|
||||||
|
3) Выбрать любой запрос и переписать его на lua-процедуру на tarantool.
|
||||||
|
4) Провести нагрузочное тестирование, сравнить tarantool и MySQL по производительности.
|
||||||
|
|
||||||
|
ДЗ сдается в виде ссылки на гитлаб и отчета о выполнении ДЗ.
|
||||||
|
Критерии оценки: Оценка происходит по принципу зачет/незачет.
|
||||||
|
|
||||||
|
### Требования:
|
||||||
|
- Репликация из MySQL в tarantool работает.
|
||||||
|
- Хранимые процедуры в tarantool написаны корректно.
|
||||||
|
- Хранимые процедуры выполнены по code style на примере репозитория Mail.Ru.
|
||||||
|
- Нагрузочное тестирование проведено.
|
||||||
|
|
||||||
|
### Рекомендуем сдать до: 22.12.2021
|
|
@ -0,0 +1,26 @@
|
||||||
|
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12343/) / [ОТЧЕТ](REPORT.md)
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
# Онлайн обновление ленты новостей
|
||||||
|
|
||||||
|
Цель: В результате выполнения ДЗ вы научитесь обновлять ленту новостей без перезагрузки страницы.
|
||||||
|
|
||||||
|
### В данном задании тренируются навыки:
|
||||||
|
- работа с WebSocket;
|
||||||
|
|
||||||
|
### План выполнения:
|
||||||
|
1) Разработать компонент, куда будет подключаться клиент при открытии страницы ленты. Сервис должен слушать очередь обновлений ленты. При получении подписанным клиентом сообщения, отправлять его в браузер по WebSocket.
|
||||||
|
2) Учесть возможность масштабирования сервиса. То есть сообщение должно доставляться только на тот экземпляр компонента, куда соединен клиент. Для этого можно использовать, например Routing Key из Rabbitmq.
|
||||||
|
|
||||||
|
ДЗ принимается в виде исходного кода на github, документации по архитектуре и демонстрации работоспособности развернутого в интернете приложения.
|
||||||
|
|
||||||
|
Критерии оценки: Оценка происходит по принципу зачет/незачет.
|
||||||
|
|
||||||
|
### Требования:
|
||||||
|
- При добавлении поста у друга, лента должна обновляться автоматически (с небольшой задержкой).
|
||||||
|
- Корректная работа сервиса вебсокетов.
|
||||||
|
- Линейная масштабируемость сервиса вебсокетов.
|
||||||
|
- Описан процесс масштабирования RabbitMQ.
|
||||||
|
|
||||||
|
### Рекомендуем сдать до: 27.12.2021
|
|
@ -0,0 +1,28 @@
|
||||||
|
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12344/) / [ОТЧЕТ](REPORT.md)
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
# Разделение монолита на сервисы
|
||||||
|
|
||||||
|
Цель: В результате выполнения ДЗ вы перенесете бизнес-домен монолитного приложения в отдельный сервис.
|
||||||
|
###В данном задании тренируются навыки:
|
||||||
|
- декомпозиции предметной области;
|
||||||
|
- разделение монолитного приложения;
|
||||||
|
- работа с HTTP;
|
||||||
|
- работа с REST API и gRPC;
|
||||||
|
|
||||||
|
### План выполнения:
|
||||||
|
1) Вынести систему диалогов в отдельный сервис.
|
||||||
|
2) Взаимодействия монолитного сервиса и сервиса чатов реализовать на Rest API или gRPC.
|
||||||
|
3) Организовать сквозное логирование запросов.
|
||||||
|
4) Предусмотреть то, что не все клиенты обновляют приложение быстро и кто-то может ходить через старое API.
|
||||||
|
|
||||||
|
ДЗ сдается в виде исходного кода на github и отчета по устройству системы.
|
||||||
|
Критерии оценки: Оценка происходит по принципу зачет/незачет.
|
||||||
|
|
||||||
|
### Требования:
|
||||||
|
- Описан протокол взаимодействия.
|
||||||
|
- Поддержаны старые клиенты.
|
||||||
|
- Новые клиенты верно ходят через новый API.
|
||||||
|
|
||||||
|
### Рекомендуем сдать до: 10.01.2022
|
|
@ -0,0 +1,29 @@
|
||||||
|
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12345/) / [ОТЧЕТ](REPORT.md)
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
# Отказоустойчивость приложений
|
||||||
|
Цель: В результате выполнения ДЗ вы уменьшите число точек отказа в вашем приложении.
|
||||||
|
###В данном задании тренируются навыки:
|
||||||
|
- проектирование отказоустойчивых архитектур;
|
||||||
|
- настройка nginx;
|
||||||
|
- настройка HAProxy;
|
||||||
|
- Поднять несколько слейвов MySQL;
|
||||||
|
|
||||||
|
### План выполнения:
|
||||||
|
1) Реализовать соединение со слейвами mysql через haproxy.
|
||||||
|
2) Поднять несколько приложений и обеспечить их балансировку через nginx.
|
||||||
|
3) Воспроизвести нагрузку.
|
||||||
|
4) Под нагрузкой с помощью "kill -9" отключить один из слейвов MySQL. Убедится, что система осталась работоспособной.
|
||||||
|
5) Под нагрузкой с помощью "kill -9" отключить один из инстансов бэкенда. Убедится, что система осталась работоспособной.
|
||||||
|
|
||||||
|
ДЗ принимается в виде отчета по выполненным пунктам.
|
||||||
|
Критерии оценки: Оценка происходит по принципу зачет/незачет.
|
||||||
|
|
||||||
|
### Требования:
|
||||||
|
- В отчете верно описана конфигурация haproxy.
|
||||||
|
- В отчете верно описана конфигурация nginx.
|
||||||
|
- В отчете верно описаны условия эксперимента.
|
||||||
|
- В отчете должны быть логи работы системы.
|
||||||
|
|
||||||
|
### Рекомендуем сдать до: 17.01.2022
|
|
@ -0,0 +1,26 @@
|
||||||
|
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12346/) / [ОТЧЕТ](REPORT.md)
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
# Сервис счетчиков
|
||||||
|
|
||||||
|
Цель: В результате выполнения ДЗ вы создадите сервис счетчиков. Сервис будет хранить такие счетчики, как число непрочитанных сообщений.
|
||||||
|
### В данном задании тренируются навыки:
|
||||||
|
- разработка отказоустойчивых сервисов;
|
||||||
|
- использование кешей;
|
||||||
|
|
||||||
|
### План выполнения:
|
||||||
|
1) Разработайте сервис счетчиков.
|
||||||
|
2) Учтите то, что на этот сервис будет большая нагрузка, особенно на чтение.
|
||||||
|
3) Продумайте, как обеспечить консистентность между счетчиком и реальным числом непрочитанных сообщений. Например, используйте паттерн SAGA.
|
||||||
|
4) Внедрите сервис для отображения счетчиков.
|
||||||
|
|
||||||
|
ДЗ сдается в виде демонстрации работоспособности сервиса, ссылки на репозиторий github, отчета по архитектуре.
|
||||||
|
|
||||||
|
Критерии оценки: Оценка происходит по принципу зачет/незачет.
|
||||||
|
|
||||||
|
### Требования:
|
||||||
|
- Верно описан выбранный паттерн обеспечения консистентности.
|
||||||
|
- Выбранная архитектура сервиса подходит для решения задачи.
|
||||||
|
|
||||||
|
### Рекомендуем сдать до: 24.01.2022
|
|
@ -0,0 +1,29 @@
|
||||||
|
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12347/) / [ОТЧЕТ](REPORT.md)
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
# Внедрение docker и consul
|
||||||
|
|
||||||
|
Цель: В результате выполнения ДЗ вы интегрируете в ваш проект социальной сети docker и auto discovery сервисов с помощью consul
|
||||||
|
### В данном задании тренируются навыки:
|
||||||
|
- использование docker;
|
||||||
|
- использование consul;
|
||||||
|
- построение auto discovery;
|
||||||
|
|
||||||
|
### План выполнения:
|
||||||
|
1) Обернуть сервис диалогов в docker
|
||||||
|
2) Развернуть consul в вашей системе
|
||||||
|
3) Интегрировать auto discovery в систему диалогов
|
||||||
|
4) Научить монолитное приложение находить и равномерно нагружать все поднятые узлы сервиса диалогов
|
||||||
|
5) Опционально можно использовать nomad
|
||||||
|
|
||||||
|
6) ДЗ сдается в виде репозитория с исходными кодами на github и отчетом о выполненных шагах.
|
||||||
|
|
||||||
|
Критерии оценки: Оценка происходит по принципу зачет/незачет.
|
||||||
|
|
||||||
|
### Требования:
|
||||||
|
- Верно настроен docker.
|
||||||
|
- Обеспечено распределение нагрузки по экземплярам сервиса.
|
||||||
|
- Описан процесс развертки новых экземпляров.
|
||||||
|
|
||||||
|
### Рекомендуем сдать до: 31.01.2022
|
|
@ -0,0 +1,30 @@
|
||||||
|
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12348/) / [ОТЧЕТ](REPORT.md)
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
# Мониторинг
|
||||||
|
|
||||||
|
Цель: В результате выполнения ДЗ вы организуете мониторинг своего сервиса чатов.
|
||||||
|
### В данном задании тренируются навыки:
|
||||||
|
- эксплутация prometheus;
|
||||||
|
- эксплутация grafana;
|
||||||
|
- эксплутация zabbix;
|
||||||
|
-
|
||||||
|
### План выполнения:
|
||||||
|
1) развернуть zabbix;
|
||||||
|
2) развернуть prometheus;
|
||||||
|
3) развернуть grafana;
|
||||||
|
4) начать писать в prometheus бизнес-метрики сервиса чатов по принципу RED;
|
||||||
|
5) начать писать в zabbix технические метрики сервера с сервисом чатов;
|
||||||
|
6) организовать дашборд в grafana.
|
||||||
|
|
||||||
|
ДЗ сдается в виде отчета со скриншотами.
|
||||||
|
|
||||||
|
Критерии оценки: Оценка происходит по принципу зачет/незачет.
|
||||||
|
|
||||||
|
### Требования:
|
||||||
|
- Сбор технических метрик осуществляется верно.
|
||||||
|
- Сбор бизнес метрик осуществляется верно по принципу RED.
|
||||||
|
- В grafana организован дашборд.
|
||||||
|
|
||||||
|
### Рекомендуем сдать до: 16.02.2022
|
|
@ -0,0 +1,21 @@
|
||||||
|
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12349/) / [ОТЧЕТ](REPORT.md)
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
# Разработать MVP по данной архитектуре
|
||||||
|
|
||||||
|
### Варианты проектов:
|
||||||
|
- Новостной ресурс
|
||||||
|
- Сайт знакомств
|
||||||
|
- Ресурс для персональных блогов
|
||||||
|
- Интернет-магазин
|
||||||
|
- Или любой другое проект, кроме социальной сети
|
||||||
|
|
||||||
|
Необходимо выбрать тему проекта и отправить её в чат с преподавателем.
|
||||||
|
|
||||||
|
### План выполнения:
|
||||||
|
1) В начале проекта необходимо с наставником согласовать требования.
|
||||||
|
2) Разработать MVP по данной архитектуре.
|
||||||
|
3) Итогом будет защита архитектуры и MVP
|
||||||
|
|
||||||
|
Критерии оценки: Готовый проект + защита проекта
|
Loading…
Reference in New Issue