엔드포인트 구성

본 장에서는 AnyAPI 게이트웨이의 엔드포인트 구성과 각 엔드포인트의 구성 요소들의 배포 방법에 대해 설명합니다.

개요

엔드포인트는 실제로 외부 시스템과 연결되어 데이터를 송수신하는 기능을 담당합니다.

보통 하나의 엔드포인트는 하나의 다른 시스템과 연결할 수 있으며 하나의 게이트웨이에 엔드포인트를 여러 개 두어 여러 시스템과 연결할 수 있습니다. 엔드포인트 리소스는 엔드포인트 그룹과 엔드포인트, 두 가지의 리소스로 분리하여 관리합니다. 엔드포인트는 AnyLink 게이트웨이에서 나온 개념이지만 AnyAPI에서는 해당 개념을 활용하여 AnyAPI 게이트웨이로써 동작하고 있습니다.

주요 특징

엔드포인트에서는 외부에 대한 정보(IP 주소, 포트 번호, 타임아웃과 같은 운영 정보)를 관리합니다. 엔드포인트는 프로토콜마다 설정 포인트가 조금씩 다르나 AnyAPI에서는 PO와 HTTP 프로토콜만을 다룹니다.

AnyAPI 기본 엔드포인트

AnyAPI 게이트웨이에서는 기본적으로 4개의 엔드포인트가 사전에 staticResources 내에 정의되어 있으며 웹 어드민을 통해 서버를 추가할 때마다 dynamicResources에 엔드포인트들이 추가됩니다.

다음은 AnyAPI 게이트웨이에서 기본적으로 설정되어 있는 4가지 엔드포인트에 대한 설명입니다.

  • poClientEndpoint

    poClientEndpoint는 Master의 애플리케이션인 Admin과 통신하기위해 만들어진 클라이언트 엔드포인트다. 게이트웨이는 부팅할 때 해당 엔드포인트를 통하여 Admin과 연결을 맺고 GatewayPost 서비스를 요청하여 연결을 수립합니다. 연결이 수립되면 Admin은 들고 있는 전체 설정 정보를 배포하게 되며 이후 설정이 변경될 때마다 부분 배포가 이루어집니다. 또한 실제 API가 동작하게 될 때 이 연결을 통해서 Master에 인증/인가 등을 요청합니다.

  • poServerEndpoint

    poServerEndpoint는 Master가 Admin에서 관리하는 라우팅 정보를 배포 받기 위해 사용하는 서버 엔드포인트다. 해당 엔드포인트를 통해서 설정 파일을 배포하거나 받을 수 있습니다.

  • httpEndpoint / httpsEndpoint

    httpEndpoint와 httpsEndpoint는 실제 클라이언트의 요청을 받는 HTTP 포트에 대한 설정입니다. httpEndpoint는 HTTP, httpsEndpoint는 HTTPS에 대한 포트입니다.

엔드포인트 설정

엔드포인트는 게이트웨이의 설정 파일 내에 복수의 엔드포인트를 설정할 수 있습니다. (현재 JSON 형식만 지원)

다음은 엔트포인트의 설정 예시 및 설정 항목에 대한 설명입니다.

  • PO 엔드포인트 설정

    "endpoint": {
        "physicalName": "poClientEndpoint",
        "protocol": "HTTP",
        "direction": "OUTBOUND",
        "bootState": "RUNNING",
        "connectType": "CLIENT",
        "httpUrl": {
            "split": true,
            "scheme": "http",
            "host": "${MS_IP}", (1)
            "port": "${MS_PORT}" (2)
        }
    }
    항목 설명

    (1) host

    연결할 외부 주소입니다. 단, 클라이언트일 때 설정합니다. (보통 JEUS의 MS IP를 사용)

    (2) port

    연결에 사용할 포트 번호입니다. (보통 JEUS의 MS HTTP-PORT를 사용)

    게이트웨이의 서버, 클라이언트 모드에 따라 의미가 다릅니다.

    • SERVER: 연결할 외부 포트

    • CLIENT: 게이트웨이에서 열 내부 포트

  • HTTPS 엔드포인트 설정

    "endpoint": {
        "physicalName": "httpsEndpoint",
        "protocol": "HTTP",
        "direction": "Inbound",
        "bootState": "Running",
        "connectType": "Server",
        "connection_pool": {
            "max": "100"
        },
        "useSsl": true, (1)
        "ssl": { (2)
            "keystore": { (3)
                "storeType": "PEM", (4)
                "storeLocation": "${SSL_STORE}" (5)
            }
        },
        "httpUrl": {
            "scheme": "https",
            "port": "${HTTPS_PORT}" (6)
        },
        "rulesetId": "ApiApplication.ApiServiceGroup.ApiDefaultRuleChain",
        "errorRulesetId": "anylink.system.ApiGatewayErrorRuleSet"
    }
    항목 설명

    (1) useSsl

    엔드포인트의 SSL 적용 여부입니다.

    (2) ssl

    해당 엔드포인트에서 사용할 SSL에 대한 세부 정보입니다.

    (3) keystore

    SSL 관련 Key Store 정보입니다. 해당 필드는 SSL 인증에 사용될 Key Store 파일 설정과 연관됩니다.

    (4) storeType

    사용할 인증서 타입입니다. (현재 PEM 타입만 가능)

    (5) storeLocation

    인증서가 저장된 파일 경로입니다.

    (6) port

    엔드포인트에서 열 내부 HTTPS 포트입니다.

  • 공통 엔드포인트 설정 (PO, HTTP)

    항목 설명

    physicalName

    엔드포인트의 물리적인 이름입니다.

    protocol

    엔드포인트에서 사용하는 프로토콜입니다.

    direction

    엔드포인트의 방향입니다.

    • OUTBOUND: 외부로 나가는 엔드포인트

    • INBOUND: 외부에서 들어오는 엔드포인트

    • BOTH: 외부와 양방향으로 통신이 가능한 엔드포인트

    bootState

    게이트웨이 부팅 시 엔드포인트의 초기 상태입니다.

    • Running: 부팅할 때 자동으로 시작합니다.

    • Stopped: 부팅할 때 시작하지 않습니다.

    connectType

    게이트웨이의 연결 타입입니다.

    • CLIENT: 클라이언트 타입의 엔드포인트

    • SERVER: 서버 타입의 엔드포인트

    connection_pool

    게이트웨이의 연결 풀입니다. 연결 풀은 엔드포인트가 여러 개의 물리적인 통신 연결을 가질 수 있기 때문에 이러한 물리적인 연결을 어떻게 관리할지 설정할 수 있습니다.

    • min: 연결 풀이 최소로 들고 있어야 하는 연결의 개수를 양의 정수로 지정합니다. 항상 이 연결 수 만큼 유지를 해야하므로 부팅이 된 엔드포인트는 이 값의 연결이 생길 때까지 연결을 시도합니다. 단, 클라이언트 타입일 때만 동작합니다.

    • max: 연결 풀이 최대로 유지할 수 있는 연결 개수를 양의 정수로 지정합니다.

    rulesetId

    해당 엔드포인트로 요청이 들어왔을 때 실행시킬 룰입니다.

    errorRulesetId

    해당 엔드포인트로 요청을 처리하는 도중 에러가 발생하였을 때 처리할 룰입니다.