config-api로 환경 설정

안녕하세요 개발자 여러분,

응용 프로그램 배포를 위한 스크립트를 작성하는 것은 잊어버리지 않고 빠른 배포를 보장하기 위해 매우 흥미로울 수 있습니다.
config-api는 개발자가 JSON 문서를 기반으로 구성 스크립트를 작성할 수 있도록 도와주는 라이브러리입니다.

구현된 기능:
  • 시스템 설정을 지정합니다.
  • 보안 설정을 지정합니다.
  • 서비스를 활성화합니다.
  • 네임스페이스, 데이터베이스, 매핑을 구성합니다.
  • 기존 구성을 내보냅니다.
  • 모든 기능은 RESTful API로 노출됩니다.

  • 이 라이브러리는 응용 프로그램 배포를 돕기 위한 IRIS 구성에 중점을 둡니다. 따라서 config-api는 응용 프로그램 설치 프로그램 모듈 또는 클라이언트 레지스트리의 역할이어야 한다는 점을 고려하여 코드 기능을 가져오기\컴파일하지 않습니다. config-api를 ZPM 클라이언트와 함께 사용하여 모듈 배포 시 IRIS 설정을 구성할 수 있습니다. 다른 기사에서 이 라이브러리를 ZPM과 결합하는 방법을 배웁니다.

    설치



    zpm “install config-api”
    

    ZPM 사용자가 아닌 경우 종속성이 있는 XML 형식의 최신 버전release page 가져오기 및 컴파일을 다운로드하십시오.

    첫 번째 단계



    몇 가지 시스템 설정을 지정하는 간단한 구성 JSON 문서를 작성해 보겠습니다.
    이 첫 번째 문서에서 우리는:
  • 오류 발생 시 저널 고정을 활성화합니다.
  • 저널 크기 제한을 256MB로 설정하십시오.
  • SystemMode를 개발로 설정하십시오.
  • locksiz 를 늘립니다.
  • LockThreshold 를 늘립니다.

  • Set config = {
      "Journal": {                                /* Service class Api.Config.Journal */
           "FreezeOnError":1,
           "FileSizeLimit":256
       },
       "SQL": {                                    /* Service class Api.Config.SQL */
           "LockThreshold" : 2500
       },
       "config": {                                 /* Service class Api.Config.config */
           "locksiz" : 33554432
       },
       "Startup":{                                 /* Service class Api.Config.Startup */
           "SystemMode" : "DEVELOPMENT"
       }
    }
    Set sc = ##class(Api.Config.Services.Loader).Load(config)
    

    구성 JSON 문서 구조



    첫 번째 수준 키( Journal , SQL , config , Startup )는 %SYS 네임스페이스의 클래스와 관련됩니다(Api.Config.Services 패키지의 중간 클래스 사용). 이는 JournalConfig.Journal , SQL Config.SQL 의 모든 속성 등에서 사용 가능한 모든 속성을 지원함을 의미합니다.

    출력:

    2021-03-31 18:31:54 Start load configuration
    2021-03-31 18:31:54 {
      "Journal":{
        "FreezeOnError":1,
                "FileSizeLimit":256
      },
      "SQL":{
        "LockThreshold":2500
      },
      "config":{
        "locksiz":33554432
      },
      "Startup":{
        "SystemMode":"DEVELOPMENT"
      }
    }
    2021-03-31 18:31:54  * Journal
    2021-03-31 18:31:54    + Update Journal ... OK
    2021-03-31 18:31:54  * SQL
    2021-03-31 18:31:54    + Update SQL ... OK
    2021-03-31 18:31:54  * config
    2021-03-31 18:31:54    + Update config ... OK
    2021-03-31 18:31:54  * Startup
    2021-03-31 18:31:54    + Update Startup ... OK
    


    트릭: Load 메서드는 문자열 인수와 호환됩니다. 이 경우 문자열은 JSON 구성 문서의 파일 이름이어야 합니다(스트림 개체도 허용됨).

    애플리케이션 환경 만들기



    이 섹션에서는 다음을 생성하기 위한 구성 문서를 작성합니다.
  • 네임스페이스 "MYAPP".
  • 4개의 데이터베이스(MYAPPDATA, MYAPPCODE, MYAPPARCHIVE, MYAPPLOG)
  • 1 CSP 웹 응용 프로그램(/csp/zwebapp).
  • 1 REST 웹 응용 프로그램(/csp/zrestapp).
  • 전역 매핑을 설정합니다.

  • Set config = {
        "Defaults":{
            "DBDIR" : "${MGRDIR}",
            "WEBAPPDIR" : "${CSPDIR}",
            "DBDATA" : "${DBDIR}myappdata/",
            "DBARCHIVE" : "${DBDIR}myapparchive/",
            "DBCODE" : "${DBDIR}myappcode/",
            "DBLOG" : "${DBDIR}myapplog/"
        },
        "SYS.Databases":{
            "${DBDATA}" : {"ExpansionSize":128},
            "${DBARCHIVE}" : {},
            "${DBCODE}" : {},
            "${DBLOG}" : {}
        },
        "Databases":{
            "MYAPPDATA" : {
                "Directory" : "${DBDATA}"
            },
            "MYAPPCODE" : {
                "Directory" : "${DBCODE}"
            },
            "MYAPPARCHIVE" : {
                "Directory" : "${DBARCHIVE}"
            },
            "MYAPPLOG" : {
                "Directory" : "${DBLOG}"
            }
        },
        "Namespaces":{
            "MYAPP": {
                "Globals":"MYAPPDATA",
                "Routines":"MYAPPCODE"
            }
        },
        "Security.Applications": {
            "/csp/zrestapp": {
                "DispatchClas" : "my.dispatch.class",
                "Namespace" : "MYAPP",
                "Enabled" : "1",
                "AuthEnabled": "64",
                "CookiePath" : "/csp/zrestapp/"
            },
            "/csp/zwebapp": {
                "Path": "${WEBAPPDIR}zwebapp/",
                "Namespace" : "MYAPP",
                "Enabled" : "1",
                "AuthEnabled": "64",
                "CookiePath" : "/csp/zwebapp/"
            }
        },
        "MapGlobals":{
            "MYAPP": [{
                "Name" : "Archive.Data",
                "Database" : "MYAPPARCHIVE"
            },{
                "Name" : "App.Log",
                "Database" : "MYAPPLOG"
            }]
        }
    }
    Set sc = ##class(Api.Config.Services.Loader).Load(config)
    


    출력:

    2021-03-31 20:20:07 Start load configuration
    2021-03-31 20:20:07 {
      "SYS.Databases":{
        "/usr/irissys/mgr/myappdata/":{
          "ExpansionSize":128
        },
        "/usr/irissys/mgr/myapparchive/":{
        },
        "/usr/irissys/mgr/myappcode/":{
        },
        "/usr/irissys/mgr/myapplog/":{
        }
      },
      "Databases":{
        "MYAPPDATA":{
          "Directory":"/usr/irissys/mgr/myappdata/"
        },
        "MYAPPCODE":{
          "Directory":"/usr/irissys/mgr/myappcode/"
        },
        "MYAPPARCHIVE":{
          "Directory":"/usr/irissys/mgr/myapparchive/"
        },
        "MYAPPLOG":{
          "Directory":"/usr/irissys/mgr/myapplog/"
        }
      },
      "Namespaces":{
        "MYAPP":{
          "Globals":"MYAPPDATA",
          "Routines":"MYAPPCODE"
        }
      },
      "Security.Applications":{
        "/csp/zrestapp":{
          "DispatchClas":"my.dispatch.class",
          "Namespace":"MYAPP",
          "Enabled":"1",
          "AuthEnabled":"64",
          "CookiePath":"/csp/zrestapp/"
        },
        "/csp/zwebapp":{
          "Path":"/usr/irissys/csp/zwebapp/",
          "Namespace":"MYAPP",
          "Enabled":"1",
          "AuthEnabled":"64",
          "CookiePath":"/csp/zwebapp/"
        }
      },
      "MapGlobals":{
        "MYAPP":[
          {
            "Name":"Archive.Data",
            "Database":"MYAPPARCHIVE"
          },
          {
            "Name":"App.Log",
            "Database":"MYAPPLOG"
          }
        ]
      }
    }
    2021-03-31 20:20:07  * SYS.Databases
    2021-03-31 20:20:07    + Create /usr/irissys/mgr/myappdata/ ... OK
    2021-03-31 20:20:07    + Create /usr/irissys/mgr/myapparchive/ ... OK
    2021-03-31 20:20:07    + Create /usr/irissys/mgr/myappcode/ ... OK
    2021-03-31 20:20:07    + Create /usr/irissys/mgr/myapplog/ ... OK
    2021-03-31 20:20:07  * Databases
    2021-03-31 20:20:07    + Create MYAPPDATA ... OK
    2021-03-31 20:20:07    + Create MYAPPCODE ... OK
    2021-03-31 20:20:07    + Create MYAPPARCHIVE ... OK
    2021-03-31 20:20:07    + Create MYAPPLOG ... OK
    2021-03-31 20:20:07  * Namespaces
    2021-03-31 20:20:07    + Create MYAPP ... OK
    2021-03-31 20:20:07  * Security.Applications
    2021-03-31 20:20:07    + Create /csp/zrestapp ... OK
    2021-03-31 20:20:07    + Create /csp/zwebapp ... OK
    2021-03-31 20:20:07  * MapGlobals
    2021-03-31 20:20:07    + Create MYAPP Archive.Data ... OK
    2021-03-31 20:20:07    + Create MYAPP App.Log ... OK
    


    효과가있다! 구성이 성공적으로 로드되었습니다.

    다음 기사에서는 ZPM과 함께 config-api를 사용하여 애플리케이션을 배포하는 방법을 배웁니다.

    읽어 주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기