@ckstack/ck-ms-board
v3.3.14
Published
ms-board microservice module
Downloads
14
Readme
이력
2023년 6월 29일 부터 ck-gw-core 2.48.0 버전 부터 더 이상 사용 하지 않는다. ck-gw-core 에서 직접 board DB 에 붙어서 DB 작업을 처리 한다.
버전 제한
- NodeJS : 14.16.0
- npm : 7.6.1
package-lock.json 은 npm 버전에 따라서 바뀔 수 있기 때문에, npm 버전을 맞추어야 한다.
NodeJS 특정 버전 설치하기 위해서는 NodeJS 홈페이지에서 버전 다운로드 받아 설치하면 된다. NPM 은 다음 명령어로 특정 버전을 설치 하면 된다.
$ npm i -g [email protected]
Install
proto 파일에서 javascript 소스 및 typescript 소스를 자동 생성해서, 개발을 진행 한다.
protoc 설치
참고: https://grpc.io/docs/protoc-installation/
설치하면 커맨드 창에서 protoc 명령을 실행 시킬 수 있다.
NOTE:
protoc 버전 3.12.4, 3.13.0 하에서 개발 진행 되었음.
grpc 에서 특이 사항
int64, fixed64, uint64 : string, number 모두 허용한다.
원문 ( JSON value will be a decimal string. Either numbers or strings are accepted. )
출처 ( https://developers.google.com/protocol-buffers/docs/proto3 )
typescript 정의 추출
참고: https://github.com/improbable-eng/ts-protoc-gen
proto 파일에서 typescript 정의 및 javascript 파일을 만드는 스크립트를 생성 해 두었다. (개발 환경이 MS 윈도우라면 윈도우 파워쉘 버전으로 build-proto.sh 파일을 만들어야 한다.)
build-protos.sh 스크립트를 실행 하면 src/proto 디렉토리에 javascript 및 typescript 파일이 생성 된다.
build-protos.sh 스크립트는 다음 두 가지 argument 를 지원 한다.
- build : src 디렉토리에 javascript 와 typescript d.ts 파일을 생성 한다.(개발시 사용)
- dist : dist 디렉토리에 javascript 파일을 생성 한다.(실행 및 배포시 사용)
예)
$ ./build-protos.sh build
$ ./build-protos.sh dist
sequelize typescript
다음 npm library 는 sequelize typescript 를 위해서 설치 한 것이기 때문에 삭제 하면 안 된다.
- @types/bluebird
- @types/validator
- bluebird
- reflect-metadata
- sequelize : 5.22.3
- sequelize-typescript
NOTE:
sequelize 버전을 5.22.3 으로 고정 해야 한다. 버전 업그레이드 시키면 정상 동작 하지 않는다. (6.x.x 버전으로 테스트 했을때 정상 동작 하지 않음. sequelize typescript 버전이 업그레이드 되기 전까지는 버전 유지 하도록 한다.)
GRPC Client
BloomRPC 라는 클라이언트가 있으므로 이것을 사용 한다.(https://awesomeopensource.com/project/uw-labs/bloomrpc)
osx 에서는 다음과 같이 설치 한다.
$ brew install --cask bloomrpc
Docker
설명
ras5 기본 비지니스 로직을 처리하는 docker 이미지 이다. 다음과 같이 버전 관리 하도록 한다.
- 개발 : x.<0 또는 odd>.x
- 상용 : x..x
즉, 개발은 중간 버전을 홀수(1.0.0, 또는 1.1.0) 으로 상용은 짝수(1.2.0) 으로 한다. 즉, 1.0.0 과 1.2.0 은 같은 버전이고, 1.1.0 과 1.4.0 도 같은 버전이다.(환경-개발, 상용만 다름)
이미지 생성
$ docker image build --build-arg BUILDER_TYPE=development -t ras5/ms_board:1.0.0 .
$ docker image build --build-arg BUILDER_TYPE=production -t ras5/ms_board:1.0.0 .
이미지 삭제
$ docker image rm ras5/ms_board:1.0.0
dangle 이미지
- 조회
$ docker image ls -f dangling=true
- 삭제
$ docker image rm -f $(docker images -f "dangling=true" -q)
이미지 추출
$ docker image save -o ras5_ms_board_1_0_0.tar ras5/ms_board:1.0.0
이미지 로드
$ docker image load -i ras5_ms_board_1_0_0.tar
컨테이너
테스트용 실행
$ docker container run -dit --name ras5_ms_board \
-p 10000:10000 \
-v /Users/dhkim/Documents/Develop/project.ckstack/ras5/ms-core/log:/data/log/ms-board \
ras5/ms_board:1.0.0 \
/bin/sh
접근
$ docker container attach ras5_ms_board
중단
$ docker container stop ras5_ms_board ; docker container rm ras5_ms_board
환경 변수
- PG_TIME_ZONE : 기본 타임존
- PG_LANG : 기본 언어
- PG_LOG_LEVEL : 로그 레벨
- PG_FILE_ERR_MILLI_SEC : 파일 처리 제한 시간. 파일 처리시 설정 시간 보다 더 걸리면 에러 로그 출력. milli-sec 단위
- PG_PROC_ERR_MILLI_SEC : 로직 처리 제한 시간. 로직 처리시 설정 시간 보다 더 걸리면 에러 로그 출력. milli-sec 단위
- PG_SQL_ERR_MILLI_SEC : SQL 처리 제한 시간. SQL 처리시 설정 시간 보다 더 걸리면 에러 로그 출력. milli-sec 단위
- PG_REDIS_ERR_MILLI_SEC : Redis 처리 제한 시간. Redis 처리시 설정 시간 보다 더 걸리면 에러 로그 출력. milli-sec 단위
- PG_INFLUX_ERR_MILLI_SEC : Influx 처리 제한 시간. Influx 처리시 설정 시간 보다 더 걸리면 에러 로그 출력. milli-sec 단위
- PG_MQTT_PUB_ERR_MILLI_SEC : Mqtt publish 처리 제한 시간. Mqtt publish 처리시 설정 시간 보다 더 걸리면 에러 로그 출력. milli-sec 단위
- PG_GRPC_ERR_MILLI_SEC : GRPC 서버 연동 제한 시간. GRPC 연동시 설정 시간 보다 더 걸리면 에러 로그 출력. milli-sec 단위
- PG_DB_COUNT : RDBMS 연결 개수. 스키마별로 연결시 여러개의 연결을 할 수 있다.
- PG_DB1_DIALECT : RDBMS 종류. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임. 현재는 mysql 만 지원
- PG_DB1_HOST : RDBMS host. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_DB1_PORT : RDBMS port. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_DB1_POOL_MAX_COUNT : Maximum number of connection in pool. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_DB1_POOL_IDLE : The maximum time, in milliseconds, that a connection can be idle before being released. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_DB1_POOL_ACQUIRE : The maximum time, in milliseconds, that pool will try to get connection before throwing error. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_DB1_SCHEMA : RDBMS database(schema) name. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_DB1_USER : RDBMS 연결 유저 아이디. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_DB1_PASSWORD : RDMS 연결 유저 비밀번호. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_DB1_MODEL_ABS_PATH : Sequelize Table model 이 들어 있는 경로. building 이후의 경로로 설정 되어야 함.(소스 경로 아님)
- PG_TUNNEL_DB_COUNT : ssh tunnel 을 통한 RDBMS 연결 개수. 스키마별로 연결시 여러개의 연결을 할 수 있다.
- PG_TUNNEL_DB1_PROXY_HOST : RDBMS 연결을 위한 tunnel server host. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_PROXY_PORT : RDBMS 연결을 위한 tunnel server port. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_PROXY_USER_ID : RDBMS 연결을 위한 tunnel 서버의 로그인 유저 아이디. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_PROXY_USER_PASSWORD : RDBMS 연결을 위한 tunnel 서버의 로그인 유저 비밀번호. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_PROXY_USER_PASSWORD_PEM_PATH : RDBMS 연결을 위한 tunnel 서버의 로그인 인증서. 비밀번호 대신 인증서로 로그인 할 수 있음. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_DATABASE_SERVER_HOST : tunnel 서버에서 접근할 RDBMS 서버 주소. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_DATABASE_SERVER_PORT : tunnel 서버에서 접근할 RDBMS 서버 포트. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_DIALECT : tunnel 서버를 통해 연결될 RDBMS 종류. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_PORT : tunnel 을 연결하는 local 에서 tunnel 연결을 위해 사용하는 포트. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_POOL_MAX_COUNT : Maximum number of connection in pool. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_POOL_IDLE : The maximum time, in milliseconds, that a connection can be idle before being released. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_POOL_ACQUIRE : The maximum time, in milliseconds, that pool will try to get connection before throwing error. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_SCHEMA : tunnel 을 통해서 연결되는 RDBMS database(schema) name. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_USER : tunnel 을 통해서 연결되는 RDBMS 연결 유저 아이디. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_PASSWORD : tunnel 을 통해서 연결되는 RDMS 연결 유저 비밀번호. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_TUNNEL_DB1_MODEL_ABS_PATH : Sequelize Table model 이 들어 있는 경로. building 이후의 경로로 설정 되어야 함.(소스 경로 아님)
- PG_REDIS_COUNT : redis 연결 개수
- PG_REDIS1_HOST : redis host. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_REDIS1_PORT : redis port. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_REDIS1_PASSWORD : redis 연결 비밀번호. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_REDIS1_DB : redis db number. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_MQTT_BROKER_COUNT : Mqtt broker 설정 개수
- PG_MQTT_BROKER1_PROTOCOL : mqtt 프로토콜. mqtt, mqtts 둘 중 하나
- PG_MQTT_BROKER1_HOST : mqtt host
- PG_MQTT_BROKER1_PORT : mqtt port
- PG_MQTT_BROKER1_CLIENT_ID : mqtt client id prefix
- PG_MQTT_BROKER1_USER_ID : mqtt broker 에 접근하기 위한 user id. anonymous 라면 값을 주지 않는다.
- PG_MQTT_BROKER1_USER_PASSWORD : mqtt broker 에 접근하기 위한 user password. anonymous 라면 값을 주지 않는다.
- PG_MQTT_BROKER1_KEEP_ALIVE : keepalive는 초 단위이고, 0 이면 disable 된다. 특정 설정이 없으면 60으로 값을 준다.
- PG_MQTT_BROKER1_RECONNECT_PERIOD : reconnect period 는 milli-sec 단위이고, 0 이면 자동 reconnect 를 하지 않는다. 특정 설정이 없다면 1000으로 값을 준다.
- PG_MQTT_BROKER1_CONNECT_TIMEOUT : CONNACK 을 받을때 까지 대기 시간이며, milli-sec 단위이다. 특정 설정이 없다면 10000으로 값을 준다.
- PG_MQTT_BROKER1_TLS_SELF_SIGNED : tls 를 사용하여 연결 할때, 인증서가 self-sign 인지 여부이다. true 이면 self-signed 인증임. tls 사용하지 않으면 값을 주지 않는다.
- PG_MQTT_BROKER1_TLS_KEY_PATH : 인증서 key 파일의 파일 패스. nginx에서 사용하는 key 파일을 사용하면 됨. tls 사용하지 않으면 값을 주지 않는다.
- PG_MQTT_BROKER1_TLS_CERT_PATH : 인증서 cert 파일의 파일 패스. nginx에서 사용하는 cert 파일을 사용하면 됨. tls 사용하지 않으면 값을 주지 않는다.
- PG_MQTT_BROKER1_WILL_TOPIC : 비정상적인 연결 종료일때, 발생되는 메시지의 토픽. will 을 사용하지 않으면 값을 주지 않는다.
- PG_AWS_S3_COUNT : AWS S3 버킷 설정 개수
- PG_AWS1_S3_SIGNATURE_VERSION : S3 버전. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_AWS1_S3_REGION : S3 리전. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_AWS1_S3_BUCKET : S3 버킷. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_AWS1_S3_ACCESS_KEY_ID : S3 연결 access key. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_AWS1_S3_SECRET_ACCESS_KEY : S3 연결 secret. 여러개 연결시 1, 2, 3 형태로 사용한다. 1 부터 시작임.
- PG_AWS1_S3_ACL : S3 acl
- PG_MSBOARD_DB_INDEX : ms-board 로직의 DB index. RDBMS index 번호임. 0 부터 시작.
- PG_MSBOARD_LIMIT_UPDATE_BOARD : 한 번에 변경 할 수 있는 board 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_DELETE_BOARD : 한 번에 삭제 할 수 있는 board 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_UPDATE_CATEGORY : 한 번에 변경 할 수 있는 category 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_DELETE_CATEGORY : 한 번에 삭제 할 수 있는 category 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_UPDATE_COMMENT : 한 번에 변경 할 수 있는 comment 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_DELETE_COMMENT : 한 번에 삭제 할 수 있는 comment 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_UPDATE_DOCUMENT : 한 번에 변경 할 수 있는 document 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_DELETE_DOCUMENT : 한 번에 삭제 할 수 있는 document 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_UPDATE_DOCUMENT_LINK : 한 번에 변경 할 수 있는 document link 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_DELETE_DOCUMENT_LINK : 한 번에 삭제 할 수 있는 document link 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_UPDATE_DOCUMENT_PIN : 한 번에 변경 할 수 있는 document pin 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_DELETE_DOCUMENT_PIN : 한 번에 삭제 할 수 있는 document pin 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_UPDATE_TAG : 한 번에 변경 할 수 있는 tag 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSBOARD_LIMIT_DELETE_TAG : 한 번에 삭제 할 수 있는 tag 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
디렉토리 및 파일
- /data/log/ms : 로그 디렉토리