From f4feb8a161275e95e3e1a8acd55ab2d8521b1934 Mon Sep 17 00:00:00 2001
From: sasha
Date: Tue, 7 Nov 2023 23:58:20 +0400
Subject: [PATCH] savenkov_alexander_lab_3 is ready
---
savenkov_alexander_lab_3/README.md | 167 +++++++++
savenkov_alexander_lab_3/screens/img1.png | Bin 0 -> 40343 bytes
savenkov_alexander_lab_3/screens/img10.png | Bin 0 -> 25217 bytes
savenkov_alexander_lab_3/screens/img11.png | Bin 0 -> 19009 bytes
savenkov_alexander_lab_3/screens/img12.png | Bin 0 -> 48088 bytes
savenkov_alexander_lab_3/screens/img13.png | Bin 0 -> 34516 bytes
savenkov_alexander_lab_3/screens/img14.png | Bin 0 -> 17806 bytes
savenkov_alexander_lab_3/screens/img15.png | Bin 0 -> 59017 bytes
savenkov_alexander_lab_3/screens/img16.png | Bin 0 -> 51870 bytes
savenkov_alexander_lab_3/screens/img17.png | Bin 0 -> 69442 bytes
savenkov_alexander_lab_3/screens/img18.png | Bin 0 -> 24515 bytes
savenkov_alexander_lab_3/screens/img19.png | Bin 0 -> 34114 bytes
savenkov_alexander_lab_3/screens/img2.png | Bin 0 -> 53489 bytes
savenkov_alexander_lab_3/screens/img20.png | Bin 0 -> 50036 bytes
savenkov_alexander_lab_3/screens/img21.png | Bin 0 -> 74548 bytes
savenkov_alexander_lab_3/screens/img22.png | Bin 0 -> 34587 bytes
savenkov_alexander_lab_3/screens/img23.png | Bin 0 -> 33353 bytes
savenkov_alexander_lab_3/screens/img24.png | Bin 0 -> 58127 bytes
savenkov_alexander_lab_3/screens/img3.png | Bin 0 -> 55137 bytes
savenkov_alexander_lab_3/screens/img4.png | Bin 0 -> 53408 bytes
savenkov_alexander_lab_3/screens/img5.png | Bin 0 -> 77521 bytes
savenkov_alexander_lab_3/screens/img6.png | Bin 0 -> 48821 bytes
savenkov_alexander_lab_3/screens/img7.png | Bin 0 -> 35733 bytes
savenkov_alexander_lab_3/screens/img8.png | Bin 0 -> 71848 bytes
savenkov_alexander_lab_3/screens/img9.png | Bin 0 -> 77965 bytes
.../video-conferencing-application/.gitignore | 33 ++
.../.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 59925 bytes
.../.mvn/wrapper/maven-wrapper.properties | 18 +
.../video-conferencing-application/mvnw | 316 ++++++++++++++++++
.../video-conferencing-application/mvnw.cmd | 188 +++++++++++
.../video-conferencing-application/pom.xml | 56 ++++
.../videoconferencingapplication/Dockerfile | 14 +
.../VideoConferencingApplication.java | 11 +
.../VideoConferenceAppController.java | 57 ++++
.../model/VideoConferenceApp.java | 73 ++++
.../model/VideoConferenceAppDTO.java | 53 +++
.../VideoConferenceAppRepository.java | 13 +
.../service/VideoConferenceAppService.java | 64 ++++
.../src/main/resources/application.properties | 8 +
.../VideoConferencingApplicationTests.java | 13 +
.../webcam-application/.gitignore | 33 ++
.../.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 59925 bytes
.../.mvn/wrapper/maven-wrapper.properties | 18 +
.../webcam-application/mvnw | 316 ++++++++++++++++++
.../webcam-application/mvnw.cmd | 188 +++++++++++
.../webcam-application/pom.xml | 60 ++++
.../com/example/webcamapplication/Dockerfile | 14 +
.../webcamapplication/WebcamApplication.java | 18 +
.../controller/WebcamController.java | 61 ++++
.../webcamapplication/docker-compose.yml | 31 ++
.../dto/WebcamCreateUpdateDTO.java | 12 +
.../webcamapplication/dto/WebcamDTO.java | 14 +
.../dto/WebcamDetailDTO.java | 14 +
.../dto/WebcamDetailInfoDTO.java | 11 +
.../webcamapplication/model/Webcam.java | 21 ++
.../com/example/webcamapplication/nginx.conf | 19 ++
.../repository/WebcamRepository.java | 10 +
.../service/WebcamService.java | 116 +++++++
.../src/main/resources/application.properties | 9 +
.../WebcamApplicationTests.java | 13 +
60 files changed, 2062 insertions(+)
create mode 100644 savenkov_alexander_lab_3/README.md
create mode 100644 savenkov_alexander_lab_3/screens/img1.png
create mode 100644 savenkov_alexander_lab_3/screens/img10.png
create mode 100644 savenkov_alexander_lab_3/screens/img11.png
create mode 100644 savenkov_alexander_lab_3/screens/img12.png
create mode 100644 savenkov_alexander_lab_3/screens/img13.png
create mode 100644 savenkov_alexander_lab_3/screens/img14.png
create mode 100644 savenkov_alexander_lab_3/screens/img15.png
create mode 100644 savenkov_alexander_lab_3/screens/img16.png
create mode 100644 savenkov_alexander_lab_3/screens/img17.png
create mode 100644 savenkov_alexander_lab_3/screens/img18.png
create mode 100644 savenkov_alexander_lab_3/screens/img19.png
create mode 100644 savenkov_alexander_lab_3/screens/img2.png
create mode 100644 savenkov_alexander_lab_3/screens/img20.png
create mode 100644 savenkov_alexander_lab_3/screens/img21.png
create mode 100644 savenkov_alexander_lab_3/screens/img22.png
create mode 100644 savenkov_alexander_lab_3/screens/img23.png
create mode 100644 savenkov_alexander_lab_3/screens/img24.png
create mode 100644 savenkov_alexander_lab_3/screens/img3.png
create mode 100644 savenkov_alexander_lab_3/screens/img4.png
create mode 100644 savenkov_alexander_lab_3/screens/img5.png
create mode 100644 savenkov_alexander_lab_3/screens/img6.png
create mode 100644 savenkov_alexander_lab_3/screens/img7.png
create mode 100644 savenkov_alexander_lab_3/screens/img8.png
create mode 100644 savenkov_alexander_lab_3/screens/img9.png
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/.gitignore
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/.mvn/wrapper/maven-wrapper.jar
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/.mvn/wrapper/maven-wrapper.properties
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/mvnw
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/mvnw.cmd
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/pom.xml
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/src/main/java/com/example/videoconferencingapplication/Dockerfile
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/src/main/java/com/example/videoconferencingapplication/VideoConferencingApplication.java
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/src/main/java/com/example/videoconferencingapplication/controller/VideoConferenceAppController.java
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/src/main/java/com/example/videoconferencingapplication/model/VideoConferenceApp.java
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/src/main/java/com/example/videoconferencingapplication/model/VideoConferenceAppDTO.java
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/src/main/java/com/example/videoconferencingapplication/repository/VideoConferenceAppRepository.java
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/src/main/java/com/example/videoconferencingapplication/service/VideoConferenceAppService.java
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/src/main/resources/application.properties
create mode 100644 savenkov_alexander_lab_3/video-conferencing-application/src/test/java/com/example/videoconferencingapplication/VideoConferencingApplicationTests.java
create mode 100644 savenkov_alexander_lab_3/webcam-application/.gitignore
create mode 100644 savenkov_alexander_lab_3/webcam-application/.mvn/wrapper/maven-wrapper.jar
create mode 100644 savenkov_alexander_lab_3/webcam-application/.mvn/wrapper/maven-wrapper.properties
create mode 100644 savenkov_alexander_lab_3/webcam-application/mvnw
create mode 100644 savenkov_alexander_lab_3/webcam-application/mvnw.cmd
create mode 100644 savenkov_alexander_lab_3/webcam-application/pom.xml
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/Dockerfile
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/WebcamApplication.java
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/controller/WebcamController.java
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/docker-compose.yml
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/dto/WebcamCreateUpdateDTO.java
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/dto/WebcamDTO.java
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/dto/WebcamDetailDTO.java
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/dto/WebcamDetailInfoDTO.java
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/model/Webcam.java
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/nginx.conf
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/repository/WebcamRepository.java
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/java/com/example/webcamapplication/service/WebcamService.java
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/main/resources/application.properties
create mode 100644 savenkov_alexander_lab_3/webcam-application/src/test/java/com/example/webcamapplication/WebcamApplicationTests.java
diff --git a/savenkov_alexander_lab_3/README.md b/savenkov_alexander_lab_3/README.md
new file mode 100644
index 0000000..039959d
--- /dev/null
+++ b/savenkov_alexander_lab_3/README.md
@@ -0,0 +1,167 @@
+# Лабораторная работа №3 - REST API, Gateway и синхронный обмен между микросервисами
+
+Цель: изучение шаблона проектирования gateway, построения синхронного обмена между микросервисами и архитектурного стиля RESTful API.
+
+Задачи:
+
+Создать 2 микросервиса, реализующих CRUD на связанных сущностях.
+Реализовать механизм синхронного обмена сообщениями между микросервисами.
+Реализовать шлюз на основе прозрачного прокси-сервера nginx.
+
+# Создание микросервисов
+1-й микросервис - video-conferencing-application для сущности Приложение для видеоконференций
+2-й микросервис - webcam-application для сущности Веб-камера
+
+Сущность: Веб-камера (Webcam):
+1. УИД (Уникальный идентификатор): Уникальный номер или код, идентифицирующий конкретную веб-камеру.
+2. Модель (Model): Название и модель веб-камеры.
+3. Разрешение (Resolution): Максимальное разрешение видеозаписи, которое может предоставить веб-камера.
+4. Интерфейс (Interface): Тип интерфейса для подключения к компьютеру (USB, Wi-Fi и т.д.).
+5. УИД видеоконференции (subscriptionUuid): УИД видеоконференции, с которым данная веб-камера связана. Это поле устанавливает связь "1-ко-многим" между веб-камерой и приложением.
+6. Информация о видеоконференции (subscriptionInfo): Информация полученная по subscriptionUuid и УИД видеоконференций о приложении для видеоконференции. Хранит в себе информацию об Приложение для видеоконференций (Name, Supported Platforms, Maximum Participants)
+
+Сущность: Приложение для видеоконференций (Video Conferencing Application):
+1. УИД (Уникальный идентификатор): Уникальный номер или код, идентифицирующий конкретное приложение для видеоконференций.
+2. Название (Name): Название приложения для видеоконференций.
+3. Поддерживаемые платформы (Supported Platforms): Операционные системы и устройства, на которых работает приложение (Windows, macOS, iOS, Android и др.).
+4. Максимальное количество участников (Maximum Participants): Максимальное количество пользователей, которое может присоединиться к одной видеоконференции.
+
+Связь "1-ко-многим" между этими сущностями реализуется через поле "УИД приложения" в сущности "Веб-камера". Каждая веб-камера связывается с конкретным приложением для видеоконференций через УИД этого приложения, и это позволяет одному приложению быть связанным с несколькими веб-камерами.
+
+Вот примеры моделей для запросов:
+Пример модели "Приложение для видеоконференций" для списка:
+{
+ "uuid": "8f036445-a5bd-401c-926e-840f9de795cd",
+ "Name": "Zoom",
+ "Supported Platforms": "Windows, macOS, iOS, Android",
+ "Maximum Participants": 500
+}
+Пример модели "Приложение для видеоконференций" для создания или изменения:
+{
+ "uuid": "8f036445-a5bd-401c-926e-840f9de795cd",
+ "Name": " Zoom",
+ "Supported Platforms": "Windows, macOS, iOS, Android",
+ "Maximum Participants": 500
+}
+Пример модели "Веб-камера" для списка:
+{
+ "uuid": "8740d660-b251-4272-8535-be7ec3748d4b",
+ "Model": "Logitech C920",
+ "Resolution": "Full HD 1080p",
+ "Interface": "USB",
+ "subscriptionUuid": "8f036445-a5bd-401c-926e-840f9de795cd"
+}
+Пример модели "Веб-камера" для создания или изменения:
+{
+ "Model": " Logitech C920",
+ "Resolution": " Full HD 1080p ",
+ "Interface": "USB",
+ "subscriptionUuid": "8f036445-a5bd-401c-926e-840f9de795cd"
+}
+Пример модели "Веб-камера" для подробностей:
+{
+ "uuid": "8740d660-b251-4272-8535-be7ec3748d4b",
+ "Model": "Logitech C920",
+ "Resolution": "Full HD 1080p",
+ "Interface": "USB",
+ "subscriptionUuid": "8f036445-a5bd-401c-926e-840f9de795cd",
+ "subscriptionInfo": {
+ "Name": "Zoom",
+ "Supported Platforms": "Windows, macOS, iOS, Android",
+ "Maximum Participants": 500
+ }
+}
+
+
+
Структура 1-го микросервиса
+
+
+
+
Структура 2-го микросервиса
+
+
+- контроллеры для обработка запросов, дтошки для выбора что изображать в сваггере при запросах, модели для сущностей, репозитории для отправки данных, сервисы для бизнес-логики
+
+# Докер файлы, докер компоус, nginx
+
+
+
Докер файл для 1-го микросервиса
+
+
+
+
Докер файл для 2-го микросервиса
+
+
+-Использования базового образа, установка рабочий директории, копирования джар файла, экспорт порта, запуск приложения при запуске контейнера
+
+
Докер компоус
+
+
+-создания общей сети для всех сервисов, запуск образов сервисов, проброска портов, копирования конфигурационного файла nginx и запуск этого сервиса после запуска других сервисов
+
+
nginx
+
+
+установка количества одновремменных подключений, прослушка запросов по 80 порту, серверное имя локалхост, адрес для переадресации запросов по нему, url переадрусации
+
+
Скрин созданых образов
+
+
+
+
Скрин созданых контейнеров
+
+
+
+
Swagger 1-го микросервиса
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Swagger 2-го микросервиса
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# Видео
+
+Видео с разбором лабораторной работы - https://youtu.be/FpiSDxH4FSU
diff --git a/savenkov_alexander_lab_3/screens/img1.png b/savenkov_alexander_lab_3/screens/img1.png
new file mode 100644
index 0000000000000000000000000000000000000000..d9457b88e786e3ddb835c378ef39b18a94baf368
GIT binary patch
literal 40343
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⋘yqHkJS`Lnh
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