diff --git a/Project_template_part_1.md b/Project_template_part_1.md new file mode 100644 index 000000000..cdec2425e --- /dev/null +++ b/Project_template_part_1.md @@ -0,0 +1,71 @@ +Это шаблон для решения **первой части** проектной работы. Структура этого файла повторяет структуру заданий. Заполняйте его по мере работы над решением. + +# Задание 1. Анализ и планирование + +Чтобы составить документ с описанием текущей архитектуры приложения, можно часть информации взять из описания компании условия задания. Это нормально. + +### 1. Описание функциональности монолитного приложения + +**Управление отоплением:** + +- Пользователи могут… +- Система поддерживает… +- … + +**Мониторинг температуры:** + +- Пользователи могут… +- Система поддерживает… +- … + +### 2. Анализ архитектуры монолитного приложения + +Перечислите здесь основные особенности текущего приложения: какой язык программирования используется, какая база данных, как организовано взаимодействие между компонентами и так далее. + +### 3. Определение доменов и границы контекстов + +Опишите здесь домены, которые вы выделили. + +### **4. Проблемы монолитного решения** + +- … +- … +- … + +Если вы считаете, что текущее решение не вызывает проблем, аргументируйте свою позицию. + +### 5. Визуализация контекста системы — диаграмма С4 + +Добавьте сюда диаграмму контекста в модели C4. + +Чтобы добавить ссылку в файл Readme.md, нужно использовать синтаксис Markdown. Это делают так: + +```markdown +[Текст ссылки](URL) +``` + +Замените `Текст ссылки` текстом, который хотите использовать для ссылки. Вместо `URL` вставьте адрес, на который должна вести ссылка. Например: + +```markdown +[Посетите Яндекс](https://ya.ru/) +``` + +# Задание 2. Проектирование микросервисной архитектуры + +В этом задании вам нужно предоставить только диаграммы в модели C4. Мы не просим вас отдельно описывать получившиеся микросервисы и то, как вы определили взаимодействия между компонентами To-Be системы. Если вы правильно подготовите диаграммы C4, они и так это покажут. + +**Диаграмма контейнеров (Containers)** + +Добавьте диаграмму. + +**Диаграмма компонентов (Components)** + +Добавьте диаграмму для каждого из выделенных микросервисов. + +**Диаграмма кода (Code)** + +Добавьте одну диаграмму или несколько. + +# Задание 3. Разработка ER-диаграммы + +Добавьте сюда ER-диаграмму. Она должна отражать ключевые сущности системы, их атрибуты и тип связей между ними. diff --git a/Project_template_part_2.md b/Project_template_part_2.md new file mode 100644 index 000000000..b86532059 --- /dev/null +++ b/Project_template_part_2.md @@ -0,0 +1,83 @@ +Это шаблон для решения **второй части** проектной работы. Структура этого файла повторяет структуру заданий. Заполняйте его по мере работы над решением. + +Все задания в этой части проектной работы — дополнительные. Их можно сделать по желанию. Чтобы ревьюер быстрее проверил ваше решение, укажите, какие задания вы сделали. Для этого оставьте нужный эмодзи около заголовка задания: + +✅ — вы выполнили это задание. + +❌ — вы пропустили задание. + +# Разработка MVP + +# ✅ ❌ Задание 1. Создание и документирование API + +### 1. Тип API + +Укажите, какой тип API вы будете использовать для взаимодействия микросервисов. Объясните своё решение. + +### 2. Документация API + +Здесь приложите ссылки на документацию API для микросервисов, которые вы спроектировали в первой части проектной работы. Для документирования используйте Swagger/OpenAPI или AsyncAPI. + +# ✅ ❌ Задание 2. Новые микросервисы и интеграция с монолитом + +### 1. Язык программирования + +Опишите, какой язык вы выбрали для реализации микросервисов и почему. + +### 2. Создание проекта + +Укажите здесь ссылки на проекты, которые вы создали для микросервисов: + +- Микросервис «Управление телеметрией» **[🔗 ссылка]** +- Микросервис «Управление устройствами» **[🔗 ссылка]** + +### 4. Интеграция с монолитом + +Укажите, какой способ взаимодействия микросервисов с монолитом вы выбрали. Поясните, почему остановились именно на нём. + +### **5. Развёртывание в Minikube, либо Docker Compose** + +Опишите полную инструкцию для развёртывания с нуля вашего решения, а так же тестовые запросы — Swagger. + +## **Дополнительная часть** + +В ходе работы над заданием вы можете по желанию выполнить ряд условий. Оставьте рядом с описанием условий смайлик, который соответствует статусу решения, и своё пояснение: + +- ✅ ❌ Реализован паттерн Saga для управления распределенными транзакциями между микросервисами. +- ✅ ❌ Разделены операции чтения и записи данных в микросервисах с помощью паттерна CQRS. +- ✅ ❌ Применены дополнительные принципы 12-факторных приложений. +- ✅ ❌ Использован Kafka кластер для обеспечения отказоустойчивости и масштабируемости. + +# ✅ ❌ Задание 3. Подготовка 3rd party сервисов для связи микросервисов + +1. ✅ ❌ **Развёрнут и настроен кластер Kafka.** +Этот пункт задания выполнять необязательно. Это зависит от того, как вы реализовали своё решение. Оставьте рядом с пунктом тот смайлик, который отражает ваш выбор. Если используете кластер Kafka, добавьте сюда ссылку. +2. **Развёрнут и настроен API Gateway** +Поясните, какие технологии для API Gateway вы используете. Оставьте ссылку. +3. **Тестирование** +Поясните, какие команды нужно использовать для тестирования. + +# Автоматизация поставки + +# ✅ ❌ Задание 1. Контейнеризация микросервисов + +1. **Созданы Helm-чарты** +2. **Docker-образы собраны и загружены в хранилище артефактов** +Добавьте сюда ссылку на GitHub Container Registry. +3. **Запуск сервисов** +Напишите, какие команды нужно использовать для запуска сервисов с нуля. +4. **Тестирование работы сервисов** +Напишите, какие команды нужно использовать для тестирования. + +# ✅ ❌ Задание 2. Настройка CI/CD-пайплайнов **c помощью GitHub Actions** + +1. **Созданы CI/CD-пайплайны для каждого микросервиса** + - Опишите шаги пайплайна GitHub Actions в ci.yaml и добавьте сюда ссылку на этот файл. + - Опишите шаги, которые нужно пройти для сборки, тестирования, загрузки образов в хранилище артефактов и обновления Helm релиза в Minikube. +2. **Настроены триггеры для запуска пайплайнов** + + Пайплайны настроены на запуск при каждом пуше кода в репозиторий. + +3. **Проверена работа пайплайнов** + + Пайплайн автоматически запускается и успешно выполняет все этапы: сборка, тестирование, развертывание. Добавьте сюда ссылку, по которой можно посмотреть выполнение пайплайнов.