호스팅된 대상 튜토리얼

Apigee Edge 문서입니다.
Go to the Apigee X 문서로 이동합니다.
info

다음 튜토리얼에서는 Apigee에서 호스팅하는 기본 Node.js 런타임 환경인 호스팅된 대상을 사용하여 Node.js 애플리케이션을 Edge에 배포하는 방법을 설명합니다.

이 튜토리얼에서는 다음 작업을 안내합니다.

  • Edge UI를 사용하여 Node.js 앱을 호스팅된 대상에 배포합니다.
  • 로컬 개발 머신에서 Node.js 앱을 호스팅된 대상에 배포합니다.
  • 기존 프록시를 기존 Edge Node.js 대상 구현으로 호스팅된 대상으로 마이그레이션합니다.

Edge UI를 사용하여 Node.js 앱을 호스팅된 대상에 배포

이 튜토리얼에서는 Edge UI를 사용하여 간단한 Node.js 앱을 호스팅된 대상에 배포합니다. 튜토리얼을 완료하면 호스팅된 대상 프록시의 기본 구조와 콘텐츠, 배포 및 빌드 로그 파일에 액세스하는 방법을 이해하게 됩니다.

로그인

  1. apigee.com/edge로 이동합니다.
  2. Apigee 로그인 사용자 인증 정보를 입력하여 로그인합니다.

새 프록시 만들기

  1. 측면 탐색 메뉴에서 개발 > API 프록시 를 선택합니다.
  2. + 프록시 를 클릭합니다.
  3. 프록시 만들기 페이지에서 호스팅된 대상 을 선택합니다.
  4. 다음 을 클릭합니다.
  5. 프록시 이름 필드에 hello-hosted-targets 를 입력합니다.
  6. 'Hello World' 샘플이 선택되어 있는지 확인합니다.
  7. 다음 을 클릭합니다.
  8. 보안 페이지에서 승인에 대해 통과 (없음) 를 선택합니다.
  9. 다음 을 클릭합니다.
  10. 다음 을 클릭합니다.
  11. 빌드 페이지에서 테스트 환경이 선택되어 있는지 확인합니다. 프록시 유형이 호스팅된 대상 입니다.
  12. 빌드 및 배포 를 클릭합니다. 프록시 배포가 완료되는 데 몇 분 정도 걸릴 수 있습니다.
  13. 프록시가 성공적으로 배포되면 페이지 하단에서 hello-hosted-targets 프록시 보기 를 클릭합니다.
  14. API 프록시를 호출합니다. 가장 쉬운 방법은 Trace 탭으로 이동하여 Trace 세션을 시작하고 전송 을 클릭하는 것입니다. 다음 응답과 함께 상태 200이 표시됩니다.
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

프록시 검사

  1. Edge UI에서 개발 탭을 클릭합니다.
  2. 탐색기에서 대상 엔드포인트 아래의 기본값 을 선택합니다.
  3. 코드 편집기에서 빈 <HostedTarget/> 하위 요소가 <TargetEndpoint> 요소 아래에 있음을 확인합니다. 이 빈 태그는 필수입니다. Edge에 프록시의 대상이 호스팅된 대상 환경에 배포된 애플리케이션임을 알립니다.

  4. 탐색기에서 스크립트 섹션의 콘텐츠를 확인합니다. Node.js 앱 파일은 호스팅됨 라벨 아래에 나열됩니다.

  5. Edge UI의 스크립트 에서 호스팅됨 아래에 나열된 파일을 검사합니다.
    • app.yaml 파일에는 구성 정보가 포함되어 있습니다. 예를 들어 런타임 시 Node.js 애플리케이션에서 사용할 수 있는 환경 변수를 추가할 수 있습니다. 이 예시에서는 이 파일을 수정할 필요가 없습니다.
    • index.js 파일은 Node.js 앱의 기본 파일입니다.
    • 앱에 모듈 종속 항목이 있는 경우 package.json에 나열해야 합니다.

로그 파일 보기

애플리케이션 로그 파일은 빌드 단계와 런타임 중에 발생하는 문제를 디버깅하는 데 유용할 수 있습니다.

  1. Edge UI에서 개발 탭을 클릭합니다.
  2. 빌드 로그를 보려면 빌드 로그 를 클릭합니다.
  3. 배포 로그를 보려면 런타임 로그 를 클릭합니다.

    로그 파일 액세스도 참조하세요.

요약

  • 간단한 Node.js 애플리케이션을 호스팅된 대상 환경에 배포하고 Edge UI에서 테스트했습니다.
  • 호스팅된 대상 프록시에는 대상 엔드포인트에 <HostedTarget/>이라는 특수한 빈 태그가 필요하다는 것을 배웠습니다.
  • Edge에서 모듈 종속 항목을 자동으로 로드하고 종속 항목은 package.json 파일에 나열해야 한다는 것을 배웠습니다.
  • 빌드 및 런타임 로그 파일을 확인하는 방법도 배웠습니다.

시스템에서 Edge로 Node.js 배포

이 섹션에서는 apigeetool을 사용하여 로컬 시스템에서 호스팅된 대상으로 독립형 Node.js 애플리케이션을 배포하는 방법을 설명합니다. apigeetool 유틸리티는 Node.js 앱을 새 호스팅된 대상 프록시에 번들링하고 Edge에 배포합니다.

apigeetool 설치

개발자가 프록시 코드를 Edge에 배포하는 데는 apigeetool을 사용하는 것이 좋습니다. apigeetool을 설치하려면 다음 NPM 명령어를 실행합니다.

npm install -g apigeetool

Node.js 앱 만들기

간단한 Node.js 앱의 코드가 제공됩니다.

  1. Node.js 앱의 디렉터리를 만듭니다. 디렉터리 이름을 node-hosted-express 로 지정합니다.
  2. cd 명령어로 새 디렉터리로 이동합니다.
  3. index.js 라는 파일을 만들고 이 코드를 여기에 복사합니다.
  4. var express = require('express')
    var app = express()
    
    app.get('/', function(req, res) {
        res.json({
            hello: "Hello World!"
        })
    })
    
    app.get('/hello/:name', function(req, res) {
        var name = req.params.name
        res.json({
            hello: "hello " + name
        })
    })
    
    var server = app.listen(process.env.PORT || 9000, function() {
        console.log('Listening on port %d', server.address().port)
    })
  5. package.json 이라는 파일을 만들고 이 코드를 여기에 복사합니다. express 모듈이 종속 항목으로 나열되어 있습니다.
  6. {
        "name": "hello-world",
        "version": "1.0.0",
        "main": "index.js",
        "scripts": {
            "start": "node index.js --use_strict"
        },
        "author": "",
        "license": "",
        "dependencies": {
            "express": "^4.16.0"
        }
    }
  7. app.yaml 이라는 파일을 만들고 이 코드를 여기에 복사합니다.
  8. runtime: node
    runtimeVersion: 8
    application: my-express-app
    env:
      - name: NODE_ENV
        value: production
      - name: LOG_LEVEL
        value: 3
  9. 디렉터리가 다음과 같이 표시되는지 확인합니다.
    ls
    app.yaml index.js package.json
    

앱 코드에 필요한 디렉터리 구조 검토

Node.js 앱은 표준 Node.js 앱과 동일한 구조를 가져야 합니다. 하지만 이러한 요구사항을 Edge에 apigeetool을 사용하여 배포하기 전에 준수해야 합니다.

  • app.yaml 매니페스트 파일은 필수이며 앱의 루트 디렉터리에 있어야 합니다. 이 파일에 대한 자세한 내용은 매니페스트 파일을 참조하세요.
  • package.json 파일이 필요합니다. 앱에 필요한 종속 항목을 나열해야 합니다.
  • node_modules 폴더는 필수가 아닙니다. Node.js 앱이 배포되면 Edge에서 npm install 을 실행합니다. 종속 항목을 package.json에서 가져옵니다. **npm** 을 통해 사용할 수 없는 커스텀 모듈이 있는 경우에만 node_modules 를 명시적으로 제공해야 합니다.

프록시 배포

  1. 터미널에서 Node.js 애플리케이션의 루트 디렉터리로 cd 합니다.
  2. deployhostedtarget 명령어와 함께 apigeetool 을 실행합니다.
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    여기서 -n 은 새 프록시에 지정할 이름입니다. 조직 내에서 고유해야 합니다. 이름에 사용할 수 있는 문자는 다음으로 제한됩니다. a-z0-9._\-$%

    예를 들면 다음과 같습니다.

    apigeetool deployhostedtarget -o myorg -e test -n node-hosted-express -b /node-hosted-express -u jdoe@apigee.com

    apigeetool 사용에 대한 자세한 내용은 https://github.com/apigee/apigeetool-node를 참조하세요.

프록시 테스트

cURL 명령어, Postman과 같은 REST 클라이언트 또는 Trace 도구의 Edge UI 를 사용하여 프록시를 테스트할 수 있습니다. 다음은 cURL 명령어의 예시입니다.

curl http://myorg-test.apigee.net/node-hosted-express
     {"date":1506992197427,"msg":"hello-world"}

빌드 로그 가져오기

빌드 로그에는 Node.js 앱 배포 및 빌드와 관련된 출력이 표시됩니다. 로그 파일도 참조하세요.

apigeetool getlogs -u username -o org -e env --hosted-build -n proxy-name

예를 들면 다음과 같습니다.

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-build -n node-hosted-express

런타임 로그 가져오기

런타임 로그에는 실행 중인 앱과 관련된 출력이 표시됩니다. 런타임 로그는 환경으로 범위가 지정되며 현재 배포된 프록시 수정 버전의 로그를 반환합니다. 로그 파일도 참조하세요.

apigeetool getlogs -u username -o org -e env --hosted-runtime -n proxy-name

예를 들면 다음과 같습니다.

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-runtime -n node-hosted-express

Edge UI에서 프록시 보기

배포가 성공적으로 완료되면 Edge UI의 API 프록시 부분에서 프록시를 보고 수정할 수 있습니다.

기존 Node.js 프록시를 호스팅된 대상 프록시로 마이그레이션

이 섹션에서는 기존 기존 Node.js 대상 구현을 사용하는 기존 Edge API 프록시를 호스팅된 대상으로 수동으로 마이그레이션하는 방법을 설명합니다. 또한 마이그레이션 단계를 수행한 후 프록시를 배포하는 방법도 설명합니다.

마이그레이션 단계에서는 API 프록시 구조, 정책, 흐름, 기타 구성 요소가 유지됩니다. 아래에 설명된 대로 4단계 로 마이그레이션을 수행한 후 apigeetool을 사용하여 마이그레이션된 프록시를 배포할 수 있습니다.

1단계: 프록시 파일 구조 조정

파일 구조를 조정하려면 API 프록시가 로컬 파일 시스템에 있어야 합니다. 프록시가 Edge에 배포된 경우 계속하기 전에 다운로드해야 합니다. 기존 구성에서 Node.js 코드가 포함된 Edge 프록시 '번들'은 이 파일 구조를 따릅니다. Node.js 애플리케이션 코드는 resources/node 디렉터리에 배치됩니다.

apiproxy/
    policies/
    proxies/
    targets/
    resources/
      node/
        Your application code


호스팅된 대상의 경우 Node.js 앱의 루트 디렉터리를 resources/hosted라는 디렉터리 아래에 배치해야 합니다. resources/hosted 라는 새 디렉터리를 만들고 resources/node의 콘텐츠를 이 디렉터리로 이동하면 됩니다. 그런 다음 resources/node 디렉터리를 삭제할 수 있습니다.

apiproxy/
     policies/
     proxies/
     targets/
     resources/
       hosted/
         Your application code

2단계: 매니페스트 파일 추가

app.yaml이라는 매니페스트 파일을 만들고 apiproxy/resources/hosted 디렉터리에 배치합니다.

다음은 app.yaml 파일의 예시입니다. 런타임이 Node.js임을 지정합니다 (필수). 또한 실행 환경에서 환경 변수 (Node.js 앱에서 액세스할 수 있는 변수)를 만듭니다. 환경 변수는 선택사항이며 여기서는 예시로만 표시됩니다. 자세한 내용과 예시는 매니페스트 파일을 참조하세요.

runtime: node
  env:
    - name: NODE_ENV
      value: production


다음 예시는 호스팅된 대상 배포를 위한 프록시의 올바른 위치에 있는 Node.js 프로젝트 구조를 보여줍니다.

apiproxy/
   resources/
      hosted/
        index.js
        node_modules/
        app.yaml
        package.json

3단계: package.json 파일이 있는지 확인

기존 Edge Node.js 프록시에서 package.json은 선택사항이었습니다. 하지만 호스팅된 대상의 경우 apiproxy/resources/hosted 디렉터리에 하나를 제공해야 합니다. 이 파일에서 앱에 필요한 종속 항목을 지정해야 합니다.

4단계: 프록시의 대상 엔드포인트 수정

기존 Node.js 프록시에는 <ScriptTarget> 이라는 태그가 대상 엔드포인트 파일 (일반적으로 /apiproxy/targets/default.xml)에 있어야 합니다. 호스팅된 대상의 경우 <HostedTarget/>이라는 빈 태그를 추가해야 합니다. 파일에 ScriptTarget 태그가 있는 경우 삭제하면 됩니다. 예를 들면 다음과 같습니다.

    <?xml version="1.0" encoding="UTF-8"?>
    <TargetEndpoint name="default">
       <Description />
       <FaultRules />
       <PreFlow name="PreFlow">
          <Request />
          <Response />
       </PreFlow>
       <PostFlow name="PostFlow">
          <Request />
          <Response />
       </PostFlow>
       <Flows />
       <HostedTarget />
    </TargetEndpoint>
    

프록시 배포

이제 apigeetool deployproxy 명령어를 사용하여 프록시를 배포할 수 있습니다.

  1. 프록시의 루트 디렉터리인 /apiproxycd 합니다.
  2. 이 명령어를 사용하여 프록시를 배포합니다.
  3. apigeetool deployproxy -u username -o org -e env -n proxy-name -d .

    예를 들면 다음과 같습니다.

    apigeetool deployproxy -u jdoe -o docs -e test -n hello-world -d .

apigeetool 사용에 대한 자세한 내용은 https://github.com/apigee/apigeetool-node/blob/master/README.md를 참조하세요.

프록시 테스트

cURL 명령어, Postman과 같은 REST 클라이언트 또는 Trace 도구의 Edge UI 를 사용하여 프록시를 테스트할 수 있습니다. 다음은 cURL 명령어의 예시입니다.

curl http://myorg-test.apigee.net/hello-world
Hello,World!