# [BlokWorks] Transport Service #
DataLake 역할을 하는 모듈 중 하나로,장비에서 들어오는 데이터를 수집하여 저장소에 저장하고, 조회할 수 있는 Spring boot 기반 Java 애플리케이션입니다.

## 기반 기술 ##

* Java 17
* Spring Boot 3.1.3
* Gradle 8.2.1

## 주요 의존성 ##

* AMQP
* MongoDB
* AOP
* Zipkin
* Actuator

## 구동 ##

### 사전 구동 애플리케이션 및 모듈 ###

1. RabbitMQ 컨테이너 모듈
   - Inference 결과 데이터를 구독하기 위한 Message Broker 입니다.
2. MongoDB 컨테이너 모듈
   - Inference 결과 데이터를 저장하고 조회할 수 있는 NoSQL 입니다.
3. StackBase Tree Service 애플리케이션(`stackbase-tree-service`)
   - Inference 결과 이미지 및 원본 이미지를 조회할 수 있는 서비스 입니다.
4. StackBase API gateway 애플리케이션(`stackbase-api-gateway`)
   - StackBase 마이크로서비스의 API를 요청하기 위한 Gateway 입니다.

### 배포 ###
k8s 배포 시, manifest로 작성한 Deployment 오브젝트에 반드시 명시해야 하는 설정 정보(`env`)는 아래와 같습니다.

|            옵션             |                        설명                         | 필수 여부 |                                                예시                                                |
|:-------------------------:|:-------------------------------------------------:|:-----:|:------------------------------------------------------------------------------------------------:|
|  SPRING_PROFILES_ACTIVE   |                    구동 profile                     |   O   |                                               k8s                                                |
|     SERVER_PORT      |                  애플리케이션이 등록될 포트                   |   O   |                                               8185                                               |
|       AMQP_HOST        |                   RabbitMQ의 URL                   |   O   |                               rabbitmq.sdt-cloud.svc.cluster.local                               |
|        AMQP_PORT         |                   RabbitMQ의 포트                    |   O   |                                               5672                                               |
|        AMQP_USERNAME         |                 RabbitMQ에 접속할 계정                  |   O   |                                              guest                                               |
|        AMQP_PASSWORD         |                RabbitMQ에 접속할 비밀번호                 |   O   |                                              guest                                               |
|        INFERENCE_RESULT_QUEUE         |    RabbitMQ 모듈의 구독할 Inference 결과 데이터 Queue 이름     |   O   |                                          gseps-ResultQ                                           |
|        UPLOADED_INFERENCE_RESULT_QUEUE         | RabbitMQ 모듈의 구독할 Inference 결과 이미지 업로드 완료 Queue 이름 |   O   |                                       gseps-Result-uploadQ                                       |
|        MONGODB_URI         |              MongoDB 모듈의 연결을 위한 URI               |   O   | mongodb://mongoadmin:secret@mongo-db.database.svc.cluster.local:27017/blokworks?authSource=admin |
|        STACKBASE_HOST         |            StackBase API Gateway의 URL             |   O   |             http://stackbase-api-gateway.sdt-cloud.svc.cluster.local:8180/stackbase              |
|        ZIPKIN_TRACING_ENDPOINT         |       모니터링을 위해 추적 데이터를 수집할 Zipkin의 Endpoint       |   O   |                                       http://zipkin.sdt-cloud.svc.cluster.local:9411/api/v2/spans                                       |

