본문으로 건너뛰기

syn.config.json 환경설정

syn.loader.js 에 의해 조회되는 웹 서버의 루트 디렉토리의 syn.config.json 파일은 HandStack 화면을 구성하는데 필요한 설정을 담고 있으며, 이를 통해 화면의 동작과 기능을 설정됩니다.

기본적으로 처음 화면이 조회 될 때 웹 브라우저의 세션이 유지되는 동안에만 유효하도록 저장되며, 이를 통해 반복적인 요청을 줄이고, 빠른 화면 전환을 가능하게 합니다.

syn.config.json 파일 내용​

{
"SystemID": "HANDSTACK",
"ApplicationID": "HDS",
"ProjectID": "SYS",
"SystemVersion": "1.0.0",
"TransactionTimeout": 180000,
"HostName": "WebClient",
"UIEventLogLevel": "Verbose",
"IsLocaleTranslations": false,
"LocaleAssetUrl": "/assets/shared/language/",
"IsClientCaching": true,
"IsDebugMode": false,
"TenantAppRequestPath": "app",
"ContractRequestPath": "view",
"SharedAssetUrl": "/assets/shared/",
"IsApiFindServer": false,
"DiscoveryApiServerUrl": "",
"ReportServer": "",
"FileManagerServer": "http://localhost:8421",
"FindClientIPServer": "/checkip",
"FindGlobalIDServer": "",
"FileServerType": "L",
"FileBusinessIDSource": "None",
"CookiePrefixName": "HandStack",
"Environment": "Development",
"DomainAPIServer": {
"ServerID": "SERVERD01",
"ServerType": "D",
"Protocol": "http",
"IP": "localhost",
"Port": "8421",
"Path": "/transact/api/transaction/execute",
"ClientIP": "localhost"
},
"Program": {
"ProgramName": "ack",
"ProgramVersion": "1.0.0",
"LanguageID": "ko",
"LocaleID": "ko-KR",
"BranchCode": ""
},
"Transaction": {
"ProtocolVersion": "001",
"SimulationType": "P",
"DataFormat": "J",
"MachineTypeID": "WEB",
"EncryptionType": "P",
"EncryptionKey": "G",
"CompressionYN": "N"
},
"EnvironmentSetting": {
"Application": {
"LoaderPath": "/js/syn.domain.js",
"CodeHelpID": "SYS|SYS010|LD01"
},
"Definition": {
"BindingAction": "Append",
"Styles": [],
"Scripts": [],
"Controls": []
}
}
}

옵션 설명​

SystemID​

운영중인 프로그램의 시스템의 ID를 설정합니다. 거래 요청시 동일한 시스템에서 운영중인지 식별하는데 사용되며 서버에 요청할 때 헤더와 본문에 사용됩니다. 다른 값으로 변경하려면 ack 프로그램의 app.settings.json 그리고 각 모듈의 module.json 내 의 SystemID와 동일하게 변경해야합니다.

ApplicationID​

기본 Application ID를 설정합니다. HandStack 에서 화면과 기능을 [Application ID > Project ID > Transaction ID > Function ID] 로 구성되며, 이 중에서 Application ID는 화면의 기능을 구성하는 최상위 단위입니다. HDS는 HandStack 의 3자리 약어입니다. 다른 값으로 변경하려면 프로젝트 초기에 변경하는 것을 권장합니다.

ProjectID​

기본 Project ID를 설정합니다. HandStack 에서 화면과 기능을 [Application ID > Project ID > Transaction ID > Function ID] 로 구성되며, 이 중에서 Project ID는 화면의 기능을 구성하는 상위 단위입니다. 일반적으로 Project ID는 화면에 따라 상위 디렉토리명으로 자동으로 부여됩니다.

SystemVersion​

운영중인 프로그램의 정보성의 시스템의 버전을 설정합니다. syn.config.json 세션 캐시를 갱신하는데 사용됩니다.

TransactionTimeout​

화면에서 서버로 거래 요청을 보내고 응답을 제한 시간을 설정합니다. 기본값은 180000ms(3분) 입니다.

HostName​

클라이언트의 호스트명을 설정합니다. 클라이언트의 단말 식별 단위로 사용되며 화면에서 서버로 요청을 보낼 때 헤더에 사용됩니다.

UIEventLogLevel​

화면에서 syn.$l.eventLog 함수로 기록하는 이벤트 로그의 수준을 설정합니다. 기본값은 "Verbose" 입니다. 로그의 수준은 다음과 같습니다.

  • Verbose = 0;
  • Debug = 1;
  • Information = 2;
  • Warning = 3;
  • Error = 4;
  • Fatal = 5;

개발 환경에서는 "Verbose" 로 설정하여 모든 로그를 기록하고, 운영 환경에서는 "Warning" 로 설정하여 경고와 오류만 기록하도록 권장합니다.

IsClientCaching​

화면에서 서버의 자원을 요청할 때 캐싱을 사용할지 여부를 설정합니다. 기본값은 true 입니다. 클라이언트 캐싱을 사용하면 화면의 자원을 서버에서 받아오지 않고, 클라이언트에 저장된 자원을 사용하여 화면을 구성합니다. 이를 통해 화면의 구성 속도를 높일 수 있습니다.

IsDebugMode​

개발자 모드를 설정합니다. 기본값은 false 입니다. 개발 환경에서는 true를 운영 환경에서는 false를 권장합니다. 이 설정은 2개의 영향을 줍니다.

  • true 일때 syn.$l.eventLog 함수로 로그를 기록할 때 debugger 를 호출하여 크롬 인스펙터 실행중일 때 디버그 상태로 진입합니다.
  • true 일때 syn.bundle.js, syn.bundle.css 파일을 로드하며 false이면 syn.bundle.min.js, syn.bundle.min.css 파일을 로드합니다. 파일 크기가 2배 이상 차이가 나며 보안 향상 및 자원을 절약합니다.

TenantAppRequestPath​

태넌트 앱의 기본 요청 경로를 설정합니다. 기본값은 "app"입니다. 태넌트 앱은 다수의 사용자가 사용하는 앱을 의미하며, 이를 통해 다수의 사용자가 사용하는 앱을 구분합니다.

SharedAssetUrl​

공유 자원의 기본 경로를 설정합니다. 기본값은 "/assets/shared/"입니다. 공유 자원은 모든 모듈과 태넌트 앱의 화면에서 사용하는 자원을 의미합니다.

wwwroot 모듈의 /wwwroot/assets/shared 경로에 위치한 자원을 사용합니다.

IsApiFindServer​

transact 모듈의 API 서버의 검색 기능을 사용할지 여부를 설정합니다. 기본값은 false입니다. 검색 기능을 사용하면 화면에서 서버의 자원을 검색할 때 DiscoveryApiServerUrl 검색 서버를 사용하여 검색합니다.

DiscoveryApiServerUrl​

transact 모듈의 API 서버의 검색 기능을 사용할 때 검색 서버의 URL을 설정합니다. 기본값은 빈 문자열("")입니다. 검색 서버는 화면에서 서버의 자원을 검색할 때 사용합니다.

이 기능은 개발 중이며, 추후에 변경될 수 있습니다.

FileManagerServer​

repository 모듈을 호스팅하는 파일 매니저 서버의 URL을 설정합니다. 기본값은 "http://localhost:8421" 입니다. 파일 매니저 서버는 화면에서 파일을 업로드/다운로드할 때 사용합니다.

FindClientIPServer​

클라이언트의 IP 주소를 검색하는 서버의 URL을 설정합니다. 기본값은 "/checkip" 입니다. http://localhost:8421/checkip 을 호출하여 클라이언트의 IP 주소를 검색합니다.

FindGlobalIDServer​

클라이언트의 글로벌 ID를 검색하는 서버의 URL을 설정합니다. 모든 거래 요청의 보안 검증을 위해 사용되며 기본적인 안전을 위해 /wwwroot/api/index/create-id 을 호출하여 클라이언트의 글로벌 ID를 검색합니다.

FileServerType​

파일 서버의 타입을 설정합니다. 기본값은 "L"입니다. 파일 서버의 타입은 다음과 같습니다.

  • L: Local
  • D: Development
  • P: Production

CookiePrefixName​

서버에서 발급하는 쿠키의 접두사를 설정합니다. 기본값은 "HandStack"입니다. 쿠키의 접두사는 쿠키의 이름을 설정할 때 사용됩니다.

Environment​

실행중인 화면의 환경을 설정합니다. 기본값은 "Development"입니다. 환경은 다음과 같습니다.

  • Development
  • Staging
  • Production

DomainAPIServer​

transact 모듈의 API 서버 URL을 설정합니다. Protocol, IP, Port, Path의 정보를 주의 깊게 설정 해야 합니다.

{
"ServerID": "SERVERD01",
"ServerType": "D", // D: Development, S: Staging, P: Production
"Protocol": "http", // http, https
"IP": "localhost", // IP Address 또는 도메인명 (예: localhost, www.handstack.kr)
"Port": "8421", // Port Number 또는 빈값 (예: 8421, "")
"Path": "/transact/api/transaction/execute", // API Server Path
"ClientIP": "localhost"
}

Program​

화면에서 서버에 거래 요청에 보내질 프로그램의 정보를 설정합니다. 프로그램의 이름, 버전, 언어, 로케일, 지점 코드를 설정합니다.

{
"ProgramName": "ack",
"ProgramVersion": "1.0.0",
"LanguageID": "ko",
"LocaleID": "ko-KR",
"BranchCode": ""
}

Transaction​

화면에서 서버에 거래 요청에 사용할 보안 전문 프로토콜을 설정합니다. 이 값은 클라이언트와 서버 간의 다양한 보안 시나리오에 대응하는 설정입니다. SimulationType, DataFormat, EncryptionType, EncryptionKey, CompressionYN의 정보를 주의 깊게 설정 해야 합니다. 프로그램 수준의 개발자 외에 기본값을 권장합니다.

{
"ProtocolVersion": "001",
"SimulationType": "P", // D: Development, S: Staging, P: Production
"DataFormat": "J", // J: JSON, T: Tabluar Data
"MachineTypeID": "WEB", // WEB, WIN, SVR, SVC, CMD, MOB, TAB, ETC
"EncryptionType": "P", // P:Plain, F:Full, H:Header, B:Body
"EncryptionKey": "G", // P:프로그램, K:KMS 서버, G:GlobalID 키
"CompressionYN": "N" // Y:압축, N:압축안함
}

EnvironmentSetting​

화면에서 사용할 도메인 스크립트 경로와 공통으로 적용할 스타일/스크립트/컨트롤 자산 목록을 설정합니다. Application, Definition의 정보를 주의 깊게 설정 해야 합니다.

{
"Application": {
"LoaderPath": "/js/syn.domain.js", // 화면에서 사용하는 기본 도메인 스크립트 경로입니다.
"CodeHelpID": "" // 코드도움을 위한 기본 거래 ID입니다.
},
"Definition": {
"BindingAction": "Append", // Append: 기본 자산 목록에 추가, Replace: 기본 자산 목록을 대체합니다.
"Styles": [], // 추가로 로드할 CSS 파일 경로 목록입니다.
"Scripts": [], // 추가로 로드할 JavaScript 파일 경로 목록입니다.
"Controls": [] // 추가로 로드할 UI 컨트롤 스크립트 경로 목록입니다.
}
}

태넌트 앱의 app.environment.json에서는 EnvironmentSetting의 내용을 최상위 객체로 두고 Application, Cookie, Header, Definition을 함께 사용할 수 있습니다. Cookie, Header는 요청 시 추가로 전송할 쿠키/헤더 값을 지정합니다.