@ckstack/ck-ms-core
v3.5.14
Published
ms-core microservice module
Downloads
825
Readme
버전 제한
- NodeJS : 14.16.0
- npm : 7.6.1
package-lock.json 은 npm 버전에 따라서 바뀔 수 있기 때문에, npm 버전을 맞추어야 한다.
NodeJS 특정 버전 설치하기 위해서는 NodeJS 홈페이지에서 버전 다운로드 받아 설치하면 된다. NPM 은 다음 명령어로 특정 버전을 설치 하면 된다.
$ npm i -g [email protected]
AWS S3 설정
S3에 올린 파일에 웹브라우저로 접근하기 위해서는 버킷의 권한을 퍼블릭으로 열어야 한다. AWS S3 콘솔에서 "퍼블릭 엑세스 차단"을 모두 체크 하지 않게 한 후, 파일을 올릴때 ACL 값을 public-read 로 업로드 하면 웹브라우저를 통해서 주소로 파일에 접근 가능 하다.
S3 URL 주소는 다음과 같은 형태로 만들어 지는 것으로 보인다.
https://com-ckstack-test.s3.ap-northeast-2.amazonaws.com/ras5/mscore/021b4b71dcc059569f2034aef63ef44f
https://<버킷명>.s3.<리전명>.amazonaws.com/<object key>
위의 예에서 "ras5/mscore/021b4b71dcc059569f2034aef63ef44f" 가 object key 이다. 마치 디렉토리 처럼 보이지만, 디렉토리가 아니고, "/" 도 그냥 object key 에 들어가 있는 문자 이다.
데이터 템플릿이란
다이나믹한 데이터를 수용하기 위해서 데이터 템플릿이란 개념을 사용 한다.
Attribute
템플릿을 구성하는 요소이며 다음 항목으로 정의 한다.
- type : {string} [mandatory] 템플릿 항목 구분. input, text, number, array, object 으로 값 고정 되어 있음.
- name : {string} [mandatory] 템플릿을 사용하여 데이터가 구성 될때의 데이터 키.
- label : {string} [mandatory] 템플릿을 사용하여 데이터가 구성 될때의 데이터 이름. 웹에서 보여 줄때 사람이 판단 할 수 있는 데이터 이름.
- mandatory : {boolean} [optional] 템플릿 항목이 값 입력이 필수인지 아닌지 판단 하는 값. true 이면 필수.
- maxlen : {number} [optional] type 이 input, text 일때 문자열 길이(byte 가 아니라 문자열 길이) 제한하는 값.
- line : {number} [optional] type 이 text 일때 텍스트 입력의 라인수.
- min : {number} [optional] type 이 number 일때 입력 가능한 숫자의 최소값.
- max : {number} [optional] type 이 number 일때 입력 가능한 숫자의 최대값.
- data : {object} [optional | mandatory on object, array] type 이 array, object 일때 구성 요소. array 라면 내부에 input, text, number 구성을 포함 할 수 있다. object 라면 내부에 input, text, array, object 를 포함 할 수 있다.(object 도 포함 가능 하지만, 에디터 구성이 힘들기 때문에 웬만하면 사용하지 말자) array 에 사용되는 구조와 object 에서 사용하는 구조가 다른 것에 주의 한다. array type 내부에 array, type 은 추가 될 수 없다.
- depth : {number} [optional | mandatory on object] type 이 object 일때 object tree 항목의 depth. 0 부터 시작 한다.
템플릿 구조 예시
템플릿 구조는 다음과 같이 정의 된다.
한줄 문자열
한줄 문자를 입력하기 위한 구조 이다. 에디터에서는 한줄 짜리 html [input=text] 로 표시 된다. 구조 예시는 다음과 같다.
{
"type": "input",
"name": "nickname",
"label": "별명",
"mandatory": true,
"maxlen": 10
}
해당 템플릿을 사용한 데이터 예시는 다음과 같다.
{
"nickname": "사과"
}
여러줄 문자열
여러줄의 문자를 입력하기 위한 구조 이다. 에디터에서는 html text 로 표시 된다. 구조 예시는 다음과 같다.
{
"type": "text",
"name": "description",
"label": "설명",
"mandatory": false,
"line": 5,
"maxlen": 100
}
해당 템플릿을 사용한 데이터 예시는 다음과 같다.
{
"description": "설명 입니다."
}
숫자
숫자를 입력하기 위한 구조 이다. 에디터에서는 html [input=number] 로 표시 된다. 구조 예시는 다음과 같다.
{
"type": "number",
"name": "age",
"label": "나이",
"mandatory": true,
"min": 5,
"max": 80
}
해당 템플릿을 사용한 데이터 예시는 다음과 같다.
{
"age": 20
}
Array
여러개의 값을 입력(열거형)하기 위한 구조이다. 에디터에서는 html editable dropdown 또는 tree 으로 표시 될 것이다. 동일한 형태의 값으로만 구성 된다. 예시는 다음과 같다.(data 에 포함되는 name, label, mandatory 는 array 와 동일한 값으로 설정 한다.)
{
"type": "array",
"name": "area",
"label": "지역",
"mandatory": true,
"data": {
"type": "input",
"name": "area",
"label": "지역",
"mandatory": true,
"maxlen": 10
}
}
해당 템플릿을 사용한 데이터 예시는 다음과 같다.
{
"area": [
"경기도",
"서울",
"강원도"
]
}
Object
여러개의 값을 입력하기 위한 구조이다. 에디터에서는 tree 로 표시 될 것이다. 에시는 다음과 같다.
{
"type": "object",
"name": "menu_name",
"label": "메뉴명(언어별)",
"mandatory": true,
"depth": 0,
"data": {
"ko-KR": {
"type": "input",
"name": "ko-KR",
"label": "한국어"
},
"en-US": {
"type": "input",
"name": "en-US",
"label": "English"
}
}
}
tbl_template.extra 에 저장되는 데이터 예시(실제 저장되는 데이터)
tbl_menus 의 메뉴명일 경우 다국어로 지원 할 수 있으므로 tbl_menus.extra 를 위한 tbl_template.extra에 저장되는 템플릿 데이터 구조는 다음과 같다. object 가 저장 되는 구조 이다.
{
"menu_name": {
"type": "object",
"name": "menu_name",
"label": "메뉴명(언어별)",
"mandatory": true,
"data": {
"ko-KR": {
"type": "input",
"name": "ko-KR",
"label": "한국어"
},
"en-US": {
"type": "input",
"name": "en-US",
"label": "영어"
}
}
}
}
이것을 사용해서 tbl_menus.extra 에 저장되는 데이터는 다음과 같다.
{
"menu_name": {
"ko-KR": "안녕하세요",
"en-US": "Hello"
}
}
object 구조 하단에 object 가 저장되는 예시(실제 저장되는 데이터)
{
"user_extra": {
"type": "object",
"name": "user_extra",
"label": "유저 부가 정보",
"mandatory": true,
"data": {
"firstName": {
"type": "input",
"name": "firstName",
"label": "이름"
},
"lastName": {
"type": "input",
"name": "lastName",
"label": "성"
},
"alarm": {
"type": "object",
"name": "alarm",
"label": "유저 부가 정보",
"mandatory": true,
"data": {
"soundFlag": {
"type": "number",
"name": "soundFlag",
"label": "알람 on/off"
},
"vibFlag": {
"type": "number",
"name": "vibFlag",
"label": "진동 on/off"
},
"vol": {
"type": "number",
"name": "vol",
"label": "볼륨"
},
"hobb": {
"type": "array",
"name": "hobb",
"label": "취미",
"data": {
"type": "input",
"name": "hobb",
"label": "취미",
"maxlen": 10
}
}
}
}
}
}
}
이것을 사용해서 저장되는 데이터는 다음과 같다.
{
"user_extra": {
"firstName": "Hee",
"lastName": "Kim",
"alarm": {
"soundFlag": 1,
"vibFlag": 2,
"vol": 5,
"hobb": ["잠자기", "게임", "독서"]
}
}
}
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_core:1.0.0 .
$ docker image build --build-arg BUILDER_TYPE=production -t ras5/ms_core:1.0.0 .
이미지 삭제
$ docker image rm ras5/ms_core: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_core_1_0_0.tar ras5/ms_core:1.0.0
이미지 로드
$ docker image load -i ras5_ms_core_1_0_0.tar
컨테이너
테스트용 실행
$ docker container run -dit --name ras5_ms_core \
-p 10000:10000 \
-v /Users/dhkim/Documents/Develop/project.ckstack/ras5/ms-core/log:/data/log/ms-core \
ras5/ms_core:1.0.0 \
/bin/sh
접근
$ docker container attach ras5_ms_core
중단
$ docker container stop ras5_ms_core ; docker container rm ras5_ms_core
환경 변수
- 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_MSCORE_DB_INDEX : ms-core 로직의 DB index. RDBMS index 번호임. 0 부터 시작.
- PG_MSCORE_LIMIT_UPDATE_APP : 한 번에 변경 할 수 있는 app 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_APP : 한 번에 삭제 할 수 있는 app 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_UPDATE_APP_VERSION : 한 번에 변경 할 수 있는 app version 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_APP_VERSION : 한 번에 삭제 할 수 있는 app version 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_UPDATE_ROLE : 한 번에 변경 할 수 있는 role 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_ROLE : 한 번에 삭제 할 수 있는 role 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_UPDATE_MENU : 한 번에 변경 할 수 있는 menu 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_MENU : 한 번에 삭제 할 수 있는 menu 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_UPDATE_FILE : 한 번에 변경 할 수 있는 file 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_FILE : 한 번에 삭제 할 수 있는 file 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_UPDATE_TEMPLATE_GROUP : 한 번에 변경 할 수 있는 template group 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_TEMPLATE_GROUP : 한 번에 삭제 할 수 있는 template group 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_UPDATE_TEMPLATE : 한 번에 변경 할 수 있는 template 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_TEMPLATE : 한 번에 삭제 할 수 있는 template 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_UPDATE_LANG : 한 번에 변경 할 수 있는 support lang 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_LANG : 한 번에 삭제 할 수 있는 support lang 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_UPDATE_USER : 한 번에 변경 할 수 있는 user 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_USER : 한 번에 삭제 할 수 있는 user 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_URL_KEY : 한 번에 삭제 할 수 있는 url key 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_UPDATE_MQTT_SERVER : 한 번에 변경 할 수 있는 mqtt server 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_MQTT_SERVER : 한 번에 삭제 할 수 있는 mqtt server 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_LIMIT_UPDATE_MQTT_USER : 한 번에 변경 할 수 있는 mqtt user 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 변경되면 에러 처리 됨.
- PG_MSCORE_LIMIT_DELETE_MQTT_USER : 한 번에 삭제 할 수 있는 mqtt user 의 row 개수 제한. 0 이면 제한 없음. 설정 개수 보다 더 많이 삭제되면 에러 처리 됨.
- PG_MSCORE_S3_FILE_UPLOAD : 파일 저장시에 S3에도 같이 저장 할지 여부. true 이면 S3 에도 같이 저장됨.
- PG_MSCORE_S3_FILE_UPLOAD_INDEX : 파일 저장시 S3 에 파일 업로드시 사용될 S3 설정 index 번호. 0 부터 시작.
- PG_MSCORE_S3_FILE_UPLOAD_PREFIX : 파일 저장시 S3 파일 업로드 할때 붙는 S3 object prefix. 가장 앞에 '/' 를 붙이지 않고, 가장 마지막에 '/'를 붙인다.
- PG_MSCORE_S3_FILE_UPLOAD_ERR_MILLI_SEC : 파일 저장시 S3 파일 업로드 제한 시간. 설정 시간 보다 더 걸리면 에러 로그 출력. milli-sec 단위
- PG_MSCORE_USE_EMAIL_CONFIRM : 유저가 email 을 체크 했는지, 하지 않았는지 체크 여부. true 일 경우 이메일 확인을 하지 않으면 API 에러 처리 된다.
- PG_MSCORE_LOGIN_FAIL_COUNT_LIMIT : 로그인을 block 하는 로그인 실패 카운트. 0 이면 로그인 실패 카운트가 증가하더라도, 로그인 block 하지 않고, 0 보다 큰 값이면 설정된 값 보다 로그인 실패 되면 로그인 block 된다.
- PG_MSCORE_ACCESS_TOKEN_ALIVE_TM : 접속 토큰 유지 시간. sec 단위.
- PG_MSCORE_ACCESS_TOKEN_AUTO_KEEP_ALIVE : 접속 토큰 자동 연장 여부. true 라면 API 사용 할때 마다 접속 토큰 만료 시간이 연장 된다.
- PG_MSCORE_CHECK_API_REQUEST_TIME : API 호출시 클라이언트와 서버 시간 비교 여부. true 라면 비교 한다.
- PG_MSCORE_CONFIRM_API_REQUEST_PERIOD : 클라이언트와 서버 시간 비교 기능을 사용 할때, 비교 간격. (서버 시간 - 시간 간격) ~ (서버 시간 + 시간 간격) 으로 비교 된다.
- PG_MSCORE_USE_BACKDOOR_SIGNATURE : backdoor API signature 를 사용 할지 여부. true 라면 사용 한다.
- PG_MSCORE_BACKDOOR_SIGNATURE : backdoor API signature 를 사용 할때, backdoor signature 의 값
- PG_MSCORE_AUTH_CODE_EXPIRE_SEC : 휴대폰 번호 또는 이메일 확인을 위한 인증 코드 만료 시간 간격. 초 단위
- PG_MSCORE_AUTH_CODE_LENGTH : 인증 코드의 길이. 숫자 스트링의 길이임.
- PG_MSCORE_AUTH_CODE_SENDER_NAME : 이메일로 인증 코드 발송시 메일 발송자의 이름. smtp 서버에 따라 설정 되지 않을 수 있음
- PG_MSCORE_AUTH_CODE_SENDER_EMAIL_ADDRESS : 이메일로 인증 코드 발송시 메일 발송자의 이메일 주소. smtp 서버에 따라 설정 되지 않을 수 있음
- PG_MSCORE_AUTH_CODE_MAIL_SUBJECT : 이메일로 인증 코드 발송시 메일 제목
- PG_MSCORE_AUTH_CODE_MAIL_TEMPLATE_PATH : 이메일로 인증 코드 발송시 메일 본문 템플릿 파일 경로. 왠만하면 기본으로 사용 하도록 한다.
- PG_MSCORE_SMTP_HOST : 이메일 발송을 위한 smtp host
- PG_MSCORE_SMTP_PORT : 이메일 발송을 위한 smtp port
- PG_MSCORE_SMTP_SECURE : smtp secure 사용 여부. true, false 둘 중 하나
- PG_MSCORE_SMTP_USER : 이메일 발송을 위한 smtp 유저 아이디
- PG_MSCORE_SMTP_PASSWORD : 이메일 발송을 위한 smtp 유저 비밀번호
- PG_MSCORE_SMTP_SELF_SIGNED : 메일 발송 서버가 self signed 인증서를 사용하는지 여부. self signed 인증서를 사용하면 true
- PG_MSCORE_SMTP_REQUIRE_TLS : 지메일을 위한 TLS 옵션
- PG_MSCORE_SMTP_GMAIL_CLIENT_ID : 지메일을 사용한 메일 발송시 Oauth2 를 이용한 로그인 처리를 위한 값
- PG_MSCORE_SMTP_GMAIL_CLIENT_SECRET : 지메일을 사용한 메일 발송시 Oauth2 를 이용한 로그인 처리를 위한 값
- PG_MSCORE_SMTP_GMAIL_REFRESH_TOKEN : 지메일을 사용한 메일 발송시 Oauth2 를 이용한 로그인 처리를 위한 값
- PG_MSCORE_SMTP_GMAIL_ACCESS_TOKEN : 지메일을 사용한 메일 발송시 Oauth2 를 이용한 로그인 처리를 위한 값
- PG_MSCORE_LINK_KEY_EXPIRE_SEC : 값을 주지 않았을때 사용되는 Url link key 만료 시간 간격. 생성일로 부터 설정 기간 이후에 자동 폐기 된다.
- PG_MSCORE_LINK_KEY_URL : URL Link key 의 URL 패턴. 가 url link key 의 rid, 가 url link key 의 expire_date milli-timestamp reverse 로 변경 된다.
디렉토리 및 파일
- /data/log/ms : 로그 디렉토리
- /data/files/template : html 템플릿 디렉토리