From 70e66d3f8377dee22d41a093a68472a9d50ab8d6 Mon Sep 17 00:00:00 2001
From: Andrey Ivanov <tiburon-777@users.noreply.github.com>
Date: Fri, 1 Oct 2021 11:40:15 +0300
Subject: [PATCH] Fix docs

---
 README.md            |  6 +++---
 test/dz001/README.md |  6 ++++--
 test/dz002/README.md |  6 ++++--
 test/dz003/README.md |  6 ++++--
 test/dz004/README.md | 45 ++++++++++++++++++++++----------------------
 test/dz005/README.md | 29 ++++++++++++++++++++++++++++
 test/dz006/README.md | 27 ++++++++++++++++++++++++++
 test/dz007/README.md | 26 +++++++++++++++++++++++++
 test/dz008/README.md | 28 +++++++++++++++++++++++++++
 test/dz009/README.md | 29 ++++++++++++++++++++++++++++
 test/dz010/README.md | 26 +++++++++++++++++++++++++
 test/dz011/README.md | 29 ++++++++++++++++++++++++++++
 test/dz012/README.md | 30 +++++++++++++++++++++++++++++
 test/dz013/README.md | 21 +++++++++++++++++++++
 14 files changed, 283 insertions(+), 31 deletions(-)
 create mode 100644 test/dz005/README.md
 create mode 100644 test/dz006/README.md
 create mode 100644 test/dz007/README.md
 create mode 100644 test/dz008/README.md
 create mode 100644 test/dz009/README.md
 create mode 100644 test/dz010/README.md
 create mode 100644 test/dz011/README.md
 create mode 100644 test/dz012/README.md
 create mode 100644 test/dz013/README.md

diff --git a/README.md b/README.md
index 996e02f..c9752e1 100644
--- a/README.md
+++ b/README.md
@@ -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. Масштабируемая подсистема диалогов](test/dz006/README.md) (не начата)
+### [06. Репликация из MySQL в tarantool](test/dz006/README.md) (не начата)
 ### [07. Онлайн обновление ленты новостей](test/dz007/README.md) (не начата)
 ### [08. Разделение монолита на сервисы](test/dz008/README.md) (не начата)
 ### [09. Отказоустойчивость приложений](test/dz009/README.md) (не начата)
diff --git a/test/dz001/README.md b/test/dz001/README.md
index e84c0db..1706238 100644
--- a/test/dz001/README.md
+++ b/test/dz001/README.md
@@ -1,5 +1,7 @@
-#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9332/)
-#[РАБОЧИЙ СЕРВИС](http://lab.tiburon.su:8080/)
+#ЗАЧТЕНА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12337/) / [РАБОЧИЙ СЕРВИС](http://lab.tiburon.su:8080/)
+
+-----
+
 # Заготовка для социальной сети
 Цель: В результате выполнения ДЗ вы создадите базовый скелет социальной сети, который будет развиваться в дальнейших ДЗ.
 
diff --git a/test/dz002/README.md b/test/dz002/README.md
index 1e3ac2f..e7cf1c4 100644
--- a/test/dz002/README.md
+++ b/test/dz002/README.md
@@ -1,5 +1,7 @@
-#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/)
-#[ОТЧЕТ](REPORT.md)
+#ЗАЧТЕНА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12338/) / [ОТЧЕТ](REPORT.md)
+
+-----
+
 # Производительность индексов
 Цель: В результате выполнения ДЗ вы создадите набор тестовых данных для проведения нагрузочного тестирования, подберете наиболее подходящие индексы и проведете тесты производительности.
 
diff --git a/test/dz003/README.md b/test/dz003/README.md
index 8623334..68d8092 100644
--- a/test/dz003/README.md
+++ b/test/dz003/README.md
@@ -1,5 +1,7 @@
-#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9334/)
-#[ОТЧЕТ](REPORT.md)
+#ЗАЧТЕНА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12339/) / [ОТЧЕТ](REPORT.md)
+
+-----
+
 #Полусинхронная репликация
 
 В результате выполнения ДЗ вы настроите полусинхронную репликацию, протестируете ее влияние на производительность системы и убедитесь, что теперь вы не теряете транзакции в случае аварии.
diff --git a/test/dz004/README.md b/test/dz004/README.md
index 8900811..923cc2d 100644
--- a/test/dz004/README.md
+++ b/test/dz004/README.md
@@ -1,26 +1,27 @@
-#[В ПРОЦЕССЕ](https://otus.ru/learning/61597/#/homework-chat/9336/)
-#[ОТЧЕТ](REPORT.md)
-#Лента новостей социальной сети
-Цель: В результате выполнения ДЗ вы создадите ленту новостей социальной сети
+#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12342/) / [ОТЧЕТ](REPORT.md)
+
+-----
+
+# Масштабируемая подсистема диалогов
+
+В результате выполнения ДЗ вы создадите базовый скелет микросервиса, который будет развиваться в дальнейших ДЗ.
+
 ### В данном задании тренируются навыки:
-- работа с кешами;
-- работа с очередями;
-- проектирование масштабируемых архитектур.
+- декомпозиции предметной области;
+- построения элементарной архитектуры проекта;
 
-# План выполнения:
-1) Разработать страницу добавления поста.
-2) Разработать ленту новостей, содержащую посты пользователей на которых подписан текущий пользователь.
-    - Создается отдельная страница, куда пишутся все обновления друзей. Для этого нужно хранить подписчиков.
-    - Лента формируется на уровне кешей.
-    - Формирование ленты производить через постановку задачи в очередь на часть подписчиков, чтобы избежать эффекта леди Гаги.
-    - В ленте держать последние 1000 обновлений друзей.
-    - Лента должна кешироваться.
+### План выполнения:
+1) Необходимо написать систему диалогов между пользователями.
+2) Обеспечить горизонтальное масштабирование хранилищ на запись с помощью шардинга.
+3) Предусмотреть:
+   - Возможность решардинга.
+   - “Эффект Леди Гаги” (один пользователь пишет сильно больше среднего).
+   - Наиболее эффективную схему.
+ 
+ДЗ принимается в виде исходного кода на github и отчета по выполненной работе.
 
-ДЗ сдается в виде ссылки на гитлаб и демонстрации работающего проекта, развернутого в интернете.
-Критерии оценки: Оценка происходит по принципу зачет/незачет.
+Требования:
+- Верно выбран ключ шардирования с учетом "эффекта Леди Гаги"
+- В отчете описан процесс решардинга без даунтайма
 
-### Требования:
-Верно работает инвалидация кеша.
-Обновление лент работает через очередь.
-Есть возможность перестройки кешей из СУБД.
-Рекомендуем сдать до: 17.02.2021
\ No newline at end of file
+###Рекомендуем сдать до: 17.11.2021
\ No newline at end of file
diff --git a/test/dz005/README.md b/test/dz005/README.md
new file mode 100644
index 0000000..16dfa34
--- /dev/null
+++ b/test/dz005/README.md
@@ -0,0 +1,29 @@
+#В ПРОЦЕССЕ: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12340/) / [ОТЧЕТ](REPORT.md)
+
+-----
+
+#Лента новостей социальной сети
+Цель: В результате выполнения ДЗ вы создадите ленту новостей социальной сети
+### В данном задании тренируются навыки:
+- работа с кешами;
+- работа с очередями;
+- проектирование масштабируемых архитектур.
+
+### План выполнения:
+1) Разработать страницу добавления поста.
+2) Разработать ленту новостей, содержащую посты пользователей на которых подписан текущий пользователь.
+    - Создается отдельная страница, куда пишутся все обновления друзей. Для этого нужно хранить подписчиков.
+    - Лента формируется на уровне кешей.
+    - Формирование ленты производить через постановку задачи в очередь на часть подписчиков, чтобы избежать эффекта леди Гаги.
+    - В ленте держать последние 1000 обновлений друзей.
+    - Лента должна кешироваться.
+
+ДЗ сдается в виде ссылки на github и демонстрации работающего проекта, развернутого в интернете.
+Критерии оценки: Оценка происходит по принципу зачет/незачет.
+
+### Требования:
+- Верно работает инвалидация кеша.
+- Обновление лент работает через очередь.
+- Есть возможность перестройки кешей из СУБД.
+
+### Рекомендуем сдать до: 17.02.2021
\ No newline at end of file
diff --git a/test/dz006/README.md b/test/dz006/README.md
new file mode 100644
index 0000000..856c063
--- /dev/null
+++ b/test/dz006/README.md
@@ -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
\ No newline at end of file
diff --git a/test/dz007/README.md b/test/dz007/README.md
new file mode 100644
index 0000000..51afb47
--- /dev/null
+++ b/test/dz007/README.md
@@ -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
\ No newline at end of file
diff --git a/test/dz008/README.md b/test/dz008/README.md
new file mode 100644
index 0000000..a3d4538
--- /dev/null
+++ b/test/dz008/README.md
@@ -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
\ No newline at end of file
diff --git a/test/dz009/README.md b/test/dz009/README.md
new file mode 100644
index 0000000..5ae1802
--- /dev/null
+++ b/test/dz009/README.md
@@ -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
\ No newline at end of file
diff --git a/test/dz010/README.md b/test/dz010/README.md
new file mode 100644
index 0000000..836f6d9
--- /dev/null
+++ b/test/dz010/README.md
@@ -0,0 +1,26 @@
+#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12346/) / [ОТЧЕТ](REPORT.md)
+
+-----
+
+# Сервис счетчиков
+
+Цель: В результате выполнения ДЗ вы создадите сервис счетчиков. Сервис будет хранить такие счетчики, как число непрочитанных сообщений.
+### В данном задании тренируются навыки:
+- разработка отказоустойчивых сервисов;
+- использование кешей;
+
+### План выполнения:
+1) Разработайте сервис счетчиков.
+2) Учтите то, что на этот сервис будет большая нагрузка, особенно на чтение.
+3) Продумайте, как обеспечить консистентность между счетчиком и реальным числом непрочитанных сообщений. Например, используйте паттерн SAGA.
+4) Внедрите сервис для отображения счетчиков.
+
+ДЗ сдается в виде демонстрации работоспособности сервиса, ссылки на репозиторий github, отчета по архитектуре.
+
+Критерии оценки: Оценка происходит по принципу зачет/незачет.
+
+### Требования:
+- Верно описан выбранный паттерн обеспечения консистентности.
+- Выбранная архитектура сервиса подходит для решения задачи.
+
+### Рекомендуем сдать до: 24.01.2022
\ No newline at end of file
diff --git a/test/dz011/README.md b/test/dz011/README.md
new file mode 100644
index 0000000..45c1d84
--- /dev/null
+++ b/test/dz011/README.md
@@ -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
\ No newline at end of file
diff --git a/test/dz012/README.md b/test/dz012/README.md
new file mode 100644
index 0000000..d5f8728
--- /dev/null
+++ b/test/dz012/README.md
@@ -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
\ No newline at end of file
diff --git a/test/dz013/README.md b/test/dz013/README.md
new file mode 100644
index 0000000..88c9291
--- /dev/null
+++ b/test/dz013/README.md
@@ -0,0 +1,21 @@
+#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12349/) / [ОТЧЕТ](REPORT.md)
+
+-----
+
+# Разработать MVP по данной архитектуре
+
+### Варианты проектов:
+- Новостной ресурс
+- Сайт знакомств
+- Ресурс для персональных блогов
+- Интернет-магазин
+- Или любой другое проект, кроме социальной сети
+
+Необходимо выбрать тему проекта и отправить её в чат с преподавателем.
+
+### План выполнения:
+1) В начале проекта необходимо с наставником согласовать требования.
+2) Разработать MVP по данной архитектуре.
+3) Итогом будет защита архитектуры и MVP
+
+Критерии оценки: Готовый проект + защита проекта
\ No newline at end of file