8000 GitHub - onemanpara/rococo: Graduation project of the Java Advanced course from qa.guru
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

onemanpara/rococo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rococo

Logo

Rococo - путеводитель в мире живописи! Исследуйте уникальные картины, познакомьтесь с их авторами, загляните в музеи из разных уголков мира.

Оглавление

Используемые технологии

Архитектура приложения

Приложение Rococo построено на основе микросервисной архитектуры:

  • auth - аутентификация и авторизация.
  • gateway - обработка запросов клиента и вызов нужных микросервисов.
  • userdata - информация о пользователе: юзернейм, имя и фамилия, аватар.
  • geo - данные о странах мира.
  • museum - сведения о музеях.
  • artist - сведениях о художниках.
  • painting - сведениях о картинах.
  • frontend - интерфейс приложения, с которым взаимодействует пользователь

Напрямую пользователь общается по REST только с сервисами auth и gateway и ничего не знает о существовании других сервисов. В то время как микросервисы - ничего не знают об аутентификационных данных пользователя, ведь они общаются только с gateway-сервисом по GRPC, который получает информацию об авторизации из auth-сервиса. Architecture

Список портов приложения

Сервис Порт
AUTH 9000 (server)
GATEWAY 8090 (server)
USERDATA 8091 (grpc)
ARTIST 8092 (grpc)
MUSEUM 8093 (grpc)
GEO 8094 (grpc)
PAINTING 8095 (grpc)
FRONTEND 80 (server)

Минимальные предусловия для запуска проекта локально

  • На Windows рекомендуется используется терминал bash, а не powershell
  • Установить Java версии 17 или новее. Это необходимо, т.к. проект не поддерживает версии <17
  • Установить пакетный менеджер для сборки front-end npm
    Инструкция Рекомендованная версия Node.js - 18.13.0 (LTS)
  • Спуллить контейнер mysql:8.0.33, zookeeper и kafka версии 7.3.2
$ docker pull mysql:8.0.33
$ docker pull confluentinc/cp-zookeeper:7.3.2
$ docker pull confluentinc/cp-kafka:7.3.2
  • Создать volume для сохранения данных из БД в docker на вашем компьютере
docker volume create rococo-mysql

Запуск Rococo локально в IDE:

1. Запустить фронтенд, БД, zookeeper и kafka командами:

Запустив скрипт, для *nix:

$ bash localenv.sh

Запустив скрипт, для windows:

$ bash localenv-windows.sh

Или выполнив последовательно команды, для *nix:

docker run --name rococo-all -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret -d mysql:8.0.33

docker run --name=zookeeper -e ZOOKEEPER_CLIENT_PORT=2181 -e ZOOKEEPER_TICK_TIME=2000 -p 2181:2181 -d confluentinc/cp-zookeeper:7.3.2

docker run --name=kafka -e KAFKA_BROKER_ID=1 \
-e KAFKA_ZOOKEEPER_CONNECT=$(docker inspect zookeeper --format='{{ .NetworkSettings.IPAddress }}'):2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
-e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
-e KAFKA_TRANSACTION_STATE_LOG_MIN_ISR=1 \
-e KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1 \
-p 9092:9092 -d confluentinc/cp-kafka:7.3.2

cd rococo-client
npm i
npm run dev

Для Windows:

docker run --name rococo-all -p 3306:3306 -e MYSQL_ROOT_PASSWORD=secret -d mysql:8.0.33

docker run --name=zookeeper -e ZOOKEEPER_CLIENT_PORT=2181 -e ZOOKEEPER_TICK_TIME=2000 -p 2181:2181 -d confluentinc/cp-zookeeper:7.3.2

docker run --name=kafka -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=$(docker inspect zookeeper --format='{{ .NetworkSettings.IPAddress }}'):2181 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 -e KAFKA_TRANSACTION_STATE_LOG_MIN_ISR=1 -e KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1 -p 9092:9092 -d confluentinc/cp-kafka:7.3.2

cd rococo-client
npm i
npm run dev

Фронт стартанет в браузере на порту 3000: http://127.0.0.1:3000/

2. Прописать run конфигурацию для всех сервисов rococo-* - Active profiles local

Для этого зайти в меню Run -> Edit Configurations -> выбрать main класс -> в поле Environment variables указать spring.profiles.active=local

Set Profile

Либо перейти к main-классу каждого приложения -> кликнуть по методу ПКМ -> выбрать More Run/Debug -> Modify Run Configuration -> в поле Environment variables указать spring.profiles.active=local

Set Profile

3. Запустить сервис rococo-auth c помощью gradle или командой Run в IDE:

$ cd rococo-auth
$ gradle bootRun --args='--spring.profiles.active=local'

Или просто перейдя к main-классу приложения RococoAuthApplication выбрать run в IDEA (предварительно удостовериться, что выполнен предыдущий пункт 2)

4. Запустить в любой последовательности другие сервисы: rococo-gateway, rococo-userdata, rococo-artist, rococo-geo, rococo-museum, rococo-painting

Запуск Rococo в докере:

1. Создать бесплатную учетную запись на https://hub.docker.com/ (если отсутствует)

2. Создать в настройках своей учетной записи access_token Инструкция.

3. Выполнить docker login с созданным access_token (в инструкции это описано)

4. Прописать в etc/hosts элиас для Docker-имени

frontend: 127.0.0.1 client.rococo 9BEC .dc,

auth: 127.0.0.1 auth.rococo.dc

gateway: 127.0.0.1 gateway.rococo.dc

Для *nix:

$ vi /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
127.0.0.1       client.rococo.dc
127.0.0.1       auth.rococo.dc
127.0.0.1       gateway.rococo.dc

В windows файл hosts лежит по пути:

C:\Windows\System32\drivers\etc\hosts

5. Перейти в корневой каталог проекта

$ cd rococo

6. Запустить все сервисы

$ bash docker-compose-dev.sh

Текущая версия docker-compose-dev.sh удалит все старые Docker контейнеры в системе, поэтому если у Вас есть созданные контейнеры для других проектов - отредактируйте строку posh docker rm $(docker ps -a -q), чтобы включить в grep только те контейнеры, которые относятся к rococo.

Rococo при запуске в докере будет работать для Вас по адресу http://client.rococo.dc:80, этот порт не нужно указывать в браузере, таким образом переходить напрямую по ссылке http://client.rococo.dc

Запуск тестов локально

Обратите внимание! Запуск тестов происходит в три потока. Изменить число потоков можно в файле junit-platform.properties

  1. Запустить приложение локально и запустить тесты из корня проекта
$ ./gradlew :rococo-tests:clean test
  1. После прогона тестов запустить формирование отчёта командой:
$ ./gradlew :rococo-tests:allureServe

Запуск тестов в докере

  1. Добавить в файл hosts строку (как работать с файлом hosts описано в пункте Прописать в etc/hosts элиас для Docker-имени):

127.0.0.1 allure

Итоговый файл hosts должен выглядеть следующим образом:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
127.0.0.1       client.rococo.dc
127.0.0.1       auth.rococo.dc
127.0.0.1       gateway.rococo.dc
127.0.0.1       allure
  1. Запустить скрипт:
$ bash docker-compose-test.sh
  1. После того, как все контейнеры успешно соберутся и запустятся - переключиться на логи контейнера rococo-tests командой:
$ docker logs -f rococo-tests
  1. После прогона тестов в логах отобразится ссылка на аллюр отчёт

Пример тестового отчета

Allure Overview

Allure Suites

About

Graduation project of the Java Advanced course from qa.guru

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0