main
Andrey Ivanov 2021-10-01 11:40:15 +03:00 committed by a.ivanov
parent 36a389f628
commit 70e66d3f83
14 changed files with 283 additions and 31 deletions

View File

@ -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) (не начата)

View File

@ -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/)
-----
# Заготовка для социальной сети
Цель: В результате выполнения ДЗ вы создадите базовый скелет социальной сети, который будет развиваться в дальнейших ДЗ.

View File

@ -1,5 +1,7 @@
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9333/)
#[ОТЧЕТ](REPORT.md)
#ЗАЧТЕНА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12338/) / [ОТЧЕТ](REPORT.md)
-----
# Производительность индексов
Цель: В результате выполнения ДЗ вы создадите набор тестовых данных для проведения нагрузочного тестирования, подберете наиболее подходящие индексы и проведете тесты производительности.

View File

@ -1,5 +1,7 @@
#[ЗАЧТЕНА](https://otus.ru/learning/61597/#/homework-chat/9334/)
#[ОТЧЕТ](REPORT.md)
#ЗАЧТЕНА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12339/) / [ОТЧЕТ](REPORT.md)
-----
#Полусинхронная репликация
В результате выполнения ДЗ вы настроите полусинхронную репликацию, протестируете ее влияние на производительность системы и убедитесь, что теперь вы не теряете транзакции в случае аварии.

View File

@ -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
###Рекомендуем сдать до: 17.11.2021

29
test/dz005/README.md Normal file
View File

@ -0,0 +1,29 @@
#В ПРОЦЕССЕ: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12340/) / [ОТЧЕТ](REPORT.md)
-----
#Лента новостей социальной сети
Цель: В результате выполнения ДЗ вы создадите ленту новостей социальной сети
### В данном задании тренируются навыки:
- работа с кешами;
- работа с очередями;
- проектирование масштабируемых архитектур.
### План выполнения:
1) Разработать страницу добавления поста.
2) Разработать ленту новостей, содержащую посты пользователей на которых подписан текущий пользователь.
- Создается отдельная страница, куда пишутся все обновления друзей. Для этого нужно хранить подписчиков.
- Лента формируется на уровне кешей.
- Формирование ленты производить через постановку задачи в очередь на часть подписчиков, чтобы избежать эффекта леди Гаги.
- В ленте держать последние 1000 обновлений друзей.
- Лента должна кешироваться.
ДЗ сдается в виде ссылки на github и демонстрации работающего проекта, развернутого в интернете.
Критерии оценки: Оценка происходит по принципу зачет/незачет.
### Требования:
- Верно работает инвалидация кеша.
- Обновление лент работает через очередь.
- Есть возможность перестройки кешей из СУБД.
### Рекомендуем сдать до: 17.02.2021

27
test/dz006/README.md Normal file
View File

@ -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

26
test/dz007/README.md Normal file
View File

@ -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

28
test/dz008/README.md Normal file
View File

@ -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

29
test/dz009/README.md Normal file
View File

@ -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

26
test/dz010/README.md Normal file
View File

@ -0,0 +1,26 @@
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12346/) / [ОТЧЕТ](REPORT.md)
-----
# Сервис счетчиков
Цель: В результате выполнения ДЗ вы создадите сервис счетчиков. Сервис будет хранить такие счетчики, как число непрочитанных сообщений.
### В данном задании тренируются навыки:
- разработка отказоустойчивых сервисов;
- использование кешей;
### План выполнения:
1) Разработайте сервис счетчиков.
2) Учтите то, что на этот сервис будет большая нагрузка, особенно на чтение.
3) Продумайте, как обеспечить консистентность между счетчиком и реальным числом непрочитанных сообщений. Например, используйте паттерн SAGA.
4) Внедрите сервис для отображения счетчиков.
ДЗ сдается в виде демонстрации работоспособности сервиса, ссылки на репозиторий github, отчета по архитектуре.
Критерии оценки: Оценка происходит по принципу зачет/незачет.
### Требования:
- Верно описан выбранный паттерн обеспечения консистентности.
- Выбранная архитектура сервиса подходит для решения задачи.
### Рекомендуем сдать до: 24.01.2022

29
test/dz011/README.md Normal file
View File

@ -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

30
test/dz012/README.md Normal file
View File

@ -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

21
test/dz013/README.md Normal file
View File

@ -0,0 +1,21 @@
#НЕ НАЧАТА: [ЧАТ](https://otus.ru/learning/61597/#/homework-chat/12349/) / [ОТЧЕТ](REPORT.md)
-----
# Разработать MVP по данной архитектуре
### Варианты проектов:
- Новостной ресурс
- Сайт знакомств
- Ресурс для персональных блогов
- Интернет-магазин
- Или любой другое проект, кроме социальной сети
Необходимо выбрать тему проекта и отправить её в чат с преподавателем.
### План выполнения:
1) В начале проекта необходимо с наставником согласовать требования.
2) Разработать MVP по данной архитектуре.
3) Итогом будет защита архитектуры и MVP
Критерии оценки: Готовый проект + защита проекта