Skip to content

Commit

Permalink
fix(task): updated tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
zeionara committed Feb 3, 2025
1 parent b6c6e07 commit aefd9d6
Show file tree
Hide file tree
Showing 6 changed files with 75 additions and 80 deletions.
41 changes: 20 additions & 21 deletions docs/task/task/1.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,27 @@

## Задание

Основной задачей первой лабораторной работы является создание проекта (`Baseline`), адаптируемого для работы в условиях высоких нагрузок в последующих лабораторных работах.
Основной задачей первой лабораторной работы является описание проекта приложения, которое будет работать в условиях высоких нагрузок.

### Выбор темы проекта

Каждая команда должна выбрать тему для разработки высоконагруженного приложения.

#### Примеры тем:

- **Онлайн-магазин** (например, платформа для продажи книг, одежды или электроники).
- **Социальная сеть** (например, для обмена фотографиями, публикациями или контентом).
- **Сервис для обмена сообщениями** (например, мессенджер или платформа для командного общения).
- **Онлайн-магазин** (например, платформа для продажи книг, одежды или электроники);
- **Социальная сеть** (например, для обмена фотографиями, публикациями или контентом);
- **Сервис для обмена сообщениями** (например, мессенджер или платформа для командного общения).

::: important Важно
Заранее продумайте функциональность проекта, так как к концу курса он должен включать следующие элементы:
- **API** - реализованный в микросервисной архитектуре.
- **База данных** - на выбор студентов.
- **Балансировщик нагрузки** - Nginx.
- **Брокер сообщений** - на выбор студентов.
- **Кэш** - на выбор студентов.
- **ELK-стек** Elasticsearch, Logstash и Kibana, для сбора и анализа логов.
Заранее продумайте функциональность проекта, так как к концу курса она должна включать следующие элементы:

- **API** - реализованный в микросервисной архитектуре;
- **База данных** - на выбор студентов;
- **Балансировщик нагрузки** - Nginx;
- **Брокер сообщений** - на выбор студентов;
- **Кэш** - на выбор студентов;
- **ELK-стек** Elasticsearch, Logstash и Kibana, для сбора и анализа логов;
- **Мониторинг** Grafana и Prometheus.
:::

Expand Down Expand Up @@ -59,19 +60,19 @@
- **Actor** пользователей или системы, взаимодействующих с приложением.
- **Use case** основные действия и взаимодействия с системой.


### Инициализация проекта

После выбора темы и формирования требований необходимо инициализировать репозиторий с исходным кодом проекта:
1. В репозитории курса [highload-2025](https://code.cloud.cosm-lab.science/itmo-teaching/highload-2025) создать отдельную ветку с названием, соответствующим ID вашего ИСУ.
1. Для своего проекта создайте `README.md` файл, в который добавите описание своего проекта.
1. В репозитории курса [highload-2025](https://code.cloud.cosm-lab.science/itmo-teaching/highload-2025) создать отдельную ветку с названием, соответствующим ID вашего ИСУ;
1. Для своего проекта создайте `README.md` файл, в который добавите описание своего проекта.

::: tip Примечание
Не нужно создавать `pull request` для своей ветки, так как они не будут сливаться с `main`. Это позволит преподавателю вносить общие изменения в `main`, которые потом можно будет подтянуть в свои ветки по мере необходимости.
:::

### Реализация базового API
После инициализации проекта необходимо реализовать основную логику приложения и проверить её работоспособность.

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

Под основной логикой подразумевается:

Expand All @@ -81,10 +82,8 @@
- **ELK-стек**.

## Критерии оценки
1. Полнота и корректность выполнения всех этапов лабораторной работы.
1. Работоспособность API, наличие основных эндпоинтов.
1. Документированность кода и инструкции для запуска API.
1. Уровень владения информацией о проекте каждым участником группы.
1. Полнота и корректность выполнения всех этапов лабораторной работы;
1. Работоспособность API, наличие основных эндпоинтов;
1. Документированность кода и инструкции для запуска API;
1. Уровень владения информацией о проекте каждым участником группы;
1. Точность и полнота ответов на вопросы преподавателя по содержанию лабораторной работы при ее защите.


14 changes: 6 additions & 8 deletions docs/task/task/2.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,10 @@

Основным элементом отчета по результатам выполнения данной лабораторной работы является описание архитектуры системы, которое рекомендуется выполнять в виде одной или нескольких диаграмм, соответствующих нотации UML. Так, допускается использовать следующие типы диаграмм (в порядке увеличения степени детализации, сложности выполнения и количества баллов, которые можно получить по результатам выполнения данной лабораторной работы):

1. Диаграмма, не соответствующая нотации UML.
1. [Диаграмма компонентов](https://drive.google.com/file/d/1qoTxBFyAIKRhoO7N9tBUer_Oz8oX1hlz/view?usp=drive_link).

1. Диаграмма, не соответствующая нотации UML;
1. [Диаграмма компонентов](https://drive.google.com/file/d/1qoTxBFyAIKRhoO7N9tBUer_Oz8oX1hlz/view?usp=drive_link);
1. [Диаграмма развертывания](https://drive.google.com/file/d/1qoTxBFyAIKRhoO7N9tBUer_Oz8oX1hlz/view?usp=drive_link).


::: tip Рекомендация
При создании детализированных диаграмм полезно разбить их на несколько частей. Используйте однообразность стиля при создании диаграммы, которая не соответствует UML нотации ([Пример диаграмм, не соответствующие натации UML](https://github.com/donnemartin/system-design-primer?tab=readme-ov-file))
:::
Expand All @@ -20,8 +18,8 @@

При оценке результатов лабораторной работы учитываются следующие аспекты предложенного решения:

1. Полнота описания архитектуры системы.
1. Точность соответствия представленных диаграмм нотации UML.
1. Уровень детализации описания архитектуры.
1. Умение аргументировать архитектурные решения, принятые при разработке архитектуры системы.
1. Полнота описания архитектуры системы;
1. Точность соответствия представленных диаграмм нотации UML;
1. Уровень детализации описания архитектуры;
1. Умение аргументировать решения, принятые при разработке архитектуры системы;
1. Точность и полнота ответов на вопросы преподавателя по содержанию лабораторной работы при ее защите.
31 changes: 15 additions & 16 deletions docs/task/task/3.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 3. Развертывание системы

Данная лабораторная работа направлена на освоение навыков контейнеризации, настройки CI/CD и настройки мониторинга для отслеживания состояния системы.
Данная лабораторная работа направлена на освоение навыков контейнеризации, настройки CI/CD и мониторинга для отслеживания состояния системы.

## Задание

Expand All @@ -9,46 +9,45 @@
Для выполнения лабораторной работы необходимо провести **контейнеризацию** всех разработанных сервисов с использованием **Docker**. Также необходимо подготовить файл `docker-compose.yml` для их **совместного развертывания**.

::: tip Рекомендация
- Для эффективной работы с Docker используйте volumes для хранения данных, чтобы сохранять их между перезапусками контейнеров.
- Для безопасного управления конфиденциальными данными используйте `.env` файлы, передавая переменные окружения в контейнеры.
- Для передачи конфиденциальных данных в контейнеры используйте переменные окружения.
:::

### Добавление мониторинга

Добавьте мониторинг для отслеживания состояния системы, для этого выполните следующие пункты:
- Установите и настройте **Prometheus** для сбора метрик со всех сервисов.
- Подключите **Grafana** для визуализации данных.
- Установите и настройте **Prometheus** для сбора метрик со всех сервисов;
- Подключите **Grafana** для визуализации данных;
- Настройте следующие базовые алерты в Prometheus:
- Использование процессора превышает 80%.
- Объем оперативной памяти превышает 75%.
- Использование процессора превышает 80%;
- Объем оперативной памяти превышает 75%;
- Сервисы недоступны более 30 секунд.

### Добавление автотестов

Реализуйте автоматическое тестирование системы, охватывающее ключевые аспекты работы приложения. Для этого напишите следующие виды тестирования:
- **Unit Tests**: Проверяйте отдельные модули или функции приложения, чтобы убедиться, что они работают корректно в изоляции.
- **Integration Tests**: Убедитесь, что различные компоненты системы взаимодействуют друг с другом без ошибок.

- **Unit Tests**: проверяйте отдельные модули или функции приложения, чтобы убедиться, что они работают корректно в изоляции;
- **Integration Tests**: убедитесь, что различные компоненты системы взаимодействуют друг с другом без ошибок.

### Настройка CI/CD
Настройте CI/CD пайплайн в Forgejo с использованием Jenkins для автоматизированной сборки, тестирования и развертывания проекта на предоставленных серверах в соответствии со следующими этапами:

Настройте CI/CD пайплайн в `Forgejo` с использованием `Jenkins` для автоматизированной сборки, тестирования и развертывания проекта на предоставленных серверах в соответствии со следующими этапами:

1. Этап сборки:
- Сборка Docker-образов для всех сервисов.
2. Этап тестирования:
- Запуск автотестов на собранных образах.
- Генерация отчета о тестах.


::: important Важно
Убедитесь, что ваши CI/CD конфигурации безопасны. Скройте `secrets` (например, ключи и пароли) через переменные среды Forgejo и Jenkins.
Убедитесь, что конфиденциальные данные (например, ключи и пароли) в CI/CD конфигурациях защищены. Используйте переменные окружения `Forgejo` и `Jenkins`.
:::

## Критерии оценки

При оценке результатов лабораторной работы учитываются следующие аспекты проделанной работы:

1. Полнота и точность настройки системы мониторинга.
1. Полнота реализованных автотестов в пайплайне.
1. Умение аргументировать принятые решения при разработке `Dockerfile`, `docker-compose.yml`, `Jenkins` и конфигураций мониторинга.
1. Точность и полнота ответов на вопросы преподавателя по содержанию лабораторной работы при ее защите.
1. Полнота и точность настройки системы мониторинга;
1. Полнота реализованных автотестов в пайплайне;
1. Умение аргументировать принятые решения при разработке `Dockerfile`, `docker-compose.yml`, `Jenkins` и конфигураций мониторинга;
1. Точность и полнота ответов на вопросы преподавателя по содержанию лабораторной работы при ее защите.
Loading

0 comments on commit aefd9d6

Please sign in to comment.