Apigee Edge 문서입니다.
Go to the
Apigee X documentation. info
Edge Microgateway v. 2.5.x
대상
이 주제는 마이크로게이트웨이와 함께 설치된 기존 플러그인을 사용하려는 Edge Microgateway 운영자를 대상으로 합니다. 또한 급증 저지 및 할당량 플러그인에 관해 자세히 설명합니다 (둘 다 설치에 포함됨). 새 플러그인을 개발하려는 개발자는 커스텀 플러그인 개발을 참고하세요.
Edge Microgateway 플러그인이란 무엇인가요?
플러그인은 Edge Microgateway에 기능을 추가하는 Node.js 모듈입니다. 플러그인 모듈 은 일관된 패턴을 따르며 Edge Microgateway에 알려진 위치에 저장되므로 마이크로게이트웨이가 자동으로 검색하고 로드할 수 있습니다. Edge Microgateway에는 여러 기존 플러그인이 포함되어 있으며 커스텀 플러그인 개발에 설명된 대로 커스텀 플러그인을 만들 수도 있습니다.
Edge Microgateway와 함께 번들로 제공되는 기존 플러그인
설치 시 Edge Microgateway와 함께 여러 기존 플러그인이 제공됩니다. 다음이 포함됩니다.
| 플러그인 | 기본적으로 사용 설정됨 | 설명 |
|---|---|---|
| 분석 | 예 | Edge Microgateway에서 Apigee Edge로 분석 데이터를 전송합니다. |
| oauth | 예 | Edge Microgateway에 OAuth 토큰 및 API 키 유효성 검사를 추가합니다. Edge Microgateway 설정 및 구성을 참고하세요. |
| 할당량 | 아니요 | Edge Microgateway에 대한 요청에 할당량을 적용합니다. Apigee Edge를 사용하여 할당량을 저장하고 관리합니다. 할당량 플러그인 사용을 참고하세요. |
| spikearrest | 아니요 | 트래픽 급증 및 DoS 공격으로부터 보호합니다. 급증 저지 플러그인 사용을 참고하세요. |
| header-uppercase | 아니요 | 개발자가 커스텀 플러그인을 작성하는 데 도움이 되는 가이드로 사용되는 주석 처리된 샘플 프록시입니다. Edge Microgateway 샘플 플러그인을 참고하세요. |
| accumulate-request | 아니요 | 플러그인 체인의 다음 핸들러에 데이터를 전달하기 전에 요청 데이터를 단일 객체로 누적합니다. 누적된 단일 요청 콘텐츠 객체에서 작동해야 하는 변환 플러그인을 작성하는 데 유용합니다. |
| accumulate-response | 아니요 | 플러그인 체인의 다음 핸들러에 데이터를 전달하기 전에 응답 데이터를 단일 객체로 누적합니다. 누적된 단일 응답 콘텐츠 객체에서 작동해야 하는 변환 플러그인을 작성하는 데 유용합니다. |
| transform-uppercase | 아니요 | 요청 또는 응답 데이터를 변환합니다. 이 플러그인은 변환 플러그인의 권장사항 구현을 나타냅니다. 샘플 플러그인은 사소한 변환 (요청 또는 응답 데이터를 대문자로 변환)을 수행하지만 XML에서 JSON으로와 같은 다른 종류의 변환을 수행하도록 쉽게 조정할 수 있습니다. |
| json2xml | 아니요 | 수락 또는 콘텐츠 유형 헤더를 기반으로 요청 또는 응답 데이터를 변환합니다. 자세한 내용은 GitHub의 플러그인 문서를 참고하세요. |
| quota-memory | 아니요 | Edge Microgateway에 대한 요청에 할당량을 적용합니다. 로컬 메모리에 할당량을 저장하고 관리합니다. |
| healthcheck | 아니요 | Edge Microgateway 프로세스(메모리 사용량, CPU 사용량 등)에 관한 정보를 반환합니다. 플러그인을 사용하려면 Edge Microgateway 인스턴스에서 URL /healthcheck 를 호출하세요. 이 플러그인은 자체 상태 확인 플러그인을 구현하는 데 사용할 수 있는 예시로 제공됩니다. |
기존 플러그인을 찾을 수 있는 위치
Edge Microgateway와 함께 번들로 제공되는 기존 플러그인은 여기에 있습니다. 여기서 [prefix]
는 npm 접두사 디렉터리입니다. 이 디렉터리를 찾을 수 없는 경우
Edge Microgateway가 설치된 위치를 참고하세요.
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins
플러그인 추가 및 구성
이 패턴에 따라 플러그인을 추가하고 구성합니다.
- Edge Microgateway를 중지합니다.
- Edge Microgateway 구성 파일을 엽니다. 자세한 내용은 구성 변경 옵션을 참고하세요.
- 다음과 같이 구성 파일의
plugins:sequence요소에 플러그인을 추가합니다. 플러그인은 이 목록에 표시된 순서대로 실행됩니다.
edgemicro:
home: ../gateway
port: 8000
max_connections: -1
max_connections_hard: -1
logging:
level: info
dir: /var/tmp
stats_log_interval: 60
plugins:
dir: ../plugins
sequence:
- oauth
- plugin-name
- 플러그인을 구성합니다. 일부 플러그인에는 구성 파일에서 구성할 수 있는 선택적 매개변수가 있습니다. 예를 들어 다음 스탠자를 추가하여 급증 저지
플러그인을 구성할 수 있습니다. 자세한 내용은 급증 저지 플러그인 사용
을 참고하세요.
edgemicro: home: ../gateway port: 8000 max_connections: -1 max_connections_hard: -1 logging: level: info dir: /var/tmp stats_log_interval: 60 plugins: dir: ../plugins sequence: - oauth - spikearrest spikearrest: timeUnit: minute allow: 10
- 파일을 저장합니다.
- 수정한 구성 파일에 따라 Edge Microgateway를 다시 시작하거나 다시 로드합니다.
플러그인별 구성
이 디렉터리에서 플러그인별 구성을 만들어 구성 파일에 지정된 플러그인 매개변수를 재정의할 수 있습니다.
[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config
여기서 [prefix]는 npm 접두사 디렉터리입니다. 이 디렉터리를 찾을 수 없는 경우
Edge Microgateway가 설치된 위치를 참고하세요.
plugins/<plugin_name>/config/default.yaml. 예를 들어 이
블록을 plugins/spikearrest/config/default.yaml에 넣으면 다른
구성 설정을 재정의합니다.
spikearrest: timeUnit: hour allow: 10000 buffersize: 0
급증 저지 플러그인 사용
급증 저지 플러그인은 트래픽 급증으로부터 보호합니다. Edge Microgateway 인스턴스에서 처리하는 요청 수 를 제한합니다.
급증 저지 플러그인 추가
플러그인 추가 및 구성을 참고하세요.
급증 저지 샘플 구성
edgemicro:
home: ../gateway
port: 8000
max_connections: -1
max_connections_hard: -1
logging:
level: info
dir: /var/tmp
stats_log_interval: 60
plugins:
dir: ../plugins
sequence:
- oauth
- spikearrest
spikearrest:
timeUnit: minute
allow: 10
bufferSize: 5
급증 저지 구성 옵션
- timeUnit: 급증 저지 실행 창이 재설정되는 빈도입니다. 유효한 값 은 초 또는 분입니다.
- allow: timeUnit 중에 허용할 최대 요청 수입니다. 여러 Edge Micro 프로세스를 실행하는 경우도 참고하세요.
- bufferSize: (선택사항, 기본값 = 0) bufferSize > 0인 경우 급증 저지 이 요청 수를 버퍼에 저장합니다. 다음 실행 "창"이 발생하면 버퍼링된 요청이 먼저 처리됩니다. 버퍼 추가도 참고하세요.
급증 저지는 어떻게 작동하나요?
급증 저지는 일반적으로 특정 수의 요청으로 트래픽을 제한하기보다는 일반적으로 트래픽 급증을 방지하는 방법으로 생각할 수 있습니다. API 및 백엔드는 일정량의 트래픽을 처리할 수 있으며 급증 저지 정책은 원하는 일반적인 양으로 트래픽을 원활하게 처리하는 데 도움이 됩니다.
런타임 급증 저지 동작은 입력한 리터럴 분당 또는 초당 값에서 예상할 수 있는 것과 다릅니다.
예를 들어 다음과 같이 분당 30개의 요청 비율을 지정한다고 가정해 보겠습니다.
spikearrest: timeUnit: minute allow: 30
테스트에서는 1분 이내에 요청이 도착하는 한 1초에 30개의 요청을 보낼 수 있다고 생각할 수 있습니다. 하지만 정책에서 설정을 적용하는 방식은 다릅니다. 1초 이내에 30 개의 요청이 있는 것은 일부 환경에서 급증으로 간주될 수 있습니다.
그렇다면 실제로는 무슨 일이 일어날까요? 급증 저지는 이러한 급증하는 동작을 방지하기 위해 설정을 더 작은 간격으로 나누어 허용되는 트래픽을 평활화합니다.
분당 비율
분당 비율은 초 단위로 허용되는 요청 간격으로 평활화됩니다. 예를 들어 분당 30 개의 요청은 다음과 같이 평활화됩니다.
60초 (1분) / 30 = 2초 간격 또는 약 2초마다 허용되는 요청 1개. 2초 이내의 두 번째 요청은 실패합니다. 또한 1분 이내의 31번째 요청은 실패합니다.
초당 비율
초당 비율은 밀리초 간격으로 허용되는 요청으로 평활화됩니다. 예를 들어, 초당 10개의 요청은 다음과 같이 평활화됩니다.
1000밀리초 (1초) / 10 = 100밀리초 간격 또는 약 100밀리초마다 허용되는 요청 1개 . 100밀리초 이내의 두 번째 요청은 실패합니다. 또한 1초 이내의 11번째 요청은 실패합니다.
한도 초과 시
요청 수가 지정된 시간 간격 내에서 한도를 초과하면 급증 저지 는 HTTP 503 상태와 함께 이 오류 메시지를 반환합니다.
{"error": "spike arrest policy violated"}버퍼 추가
정책에 버퍼를 추가하는 옵션이 있습니다. 버퍼를 10으로 설정한다고 가정해 보겠습니다. 급증 저지 한도를 초과해도 API가 즉시 오류를 반환하지 않습니다. 대신 요청이 지정된 수까지 버퍼링되고 버퍼링된 요청은 다음 적절한 실행 창이 제공되는 즉시 처리됩니다. 기본 bufferSize는 0입니다.
여러 Edge Micro 프로세스를 실행하는 경우
허용되는 요청 수는 실행 중인 Edge Micro 작업자 프로세스 수에 따라 다릅니다. 급증 저지는 작업자 프로세스당 허용되는 요청 수를 계산합니다. 기본적으로
Edge Micro 프로세스 수는 Edge Micro가 설치된 머신의 CPU 수와 같습니다. 하지만 Edge Micro
를 시작할 때 start 명령어에서 --processes 옵션을 사용하여 작업자 프로세스 수를 구성할 수 있습니다. 예를 들어 급증 저지가 지정된 기간에 100개의 요청에서 트리거되도록 하려면 Edge
Microgateway를 --processes 4 옵션으로 시작한 후 급증 저지 구성에서 allow: 25를 설정합니다. 요약하자면, 경험 법칙은 allow 구성
매개변수를 '원하는 급증 저지 수 / 프로세스 수' 값으로 설정하는 것입니다.
할당량 플러그인 사용
할당량은 앱이 시간, 일, 주 또는 월 단위로 API 에 제출할 수 있는 요청 메시지 수를 지정합니다. 앱이 할당량 한도에 도달하면 후속 API 호출이 거부됩니다. 급증 저지와 할당량의 차이점 도 참고하세요.
할당량 플러그인 추가
플러그인 추가 및 구성을 참고하세요.
Apigee Edge의 제품 구성
API 제품을 구성하는 Apigee Edge UI에서 할당량을 구성합니다. 할당량으로 제한하려는 마이크로게이트웨이 인식 프록시가 포함된 제품을 알아야 합니다. 이 제품은 개발자 앱에 추가해야 합니다. 개발자 앱의 키를 사용하여 인증된 API 호출을 하면 할당량이 이러한 API 호출에 적용됩니다.
- Apigee Edge 조직 계정에 로그인합니다.
- Edge UI에서 할당량을 적용하려는 마이크로게이트웨이 인식 프록시와 연결된 제품을 엽니다.
- UI의 게시 메뉴에서 제품 을 선택합니다.
- 할당량을 적용하려는 API가 포함된 제품을 엽니다.
- 수정 을 클릭합니다.
- 할당량 필드에 할당량 간격을 지정합니다. 예를 들어 1분마다 100개의 요청입니다. 또는 2시간마다 50,000개의 요청입니다.

- 저장 을 클릭합니다.
- 제품이 개발자 앱에 추가되었는지 확인합니다. 인증된 API 호출을 하려면 이 앱의 키가 필요합니다.
할당량 샘플 구성
edgemicro:
home: ../gateway
port: 8000
max_connections: -1
max_connections_hard: -1
logging:
level: info
dir: /var/tmp
stats_log_interval: 60
plugins:
dir: ../plugins
sequence:
- oauth
- quota
할당량 구성 옵션
할당량 플러그인에는 추가 구성 옵션이 없습니다.
할당량 플러그인 테스트
할당량을 초과하면 HTTP 403 상태가 다음 메시지와 함께 클라이언트에 반환됩니다:
{"error": "exceeded quota"}급증 저지와 할당량의 차이점은 무엇인가요?
현재 작업에 적합한 도구를 선택하는 것이 중요합니다. 할당량 정책은 클라이언트 앱이 시간, 일, 주 또는 월 단위로 API에 제출할 수 있는 요청 메시지 수를 구성합니다. 할당량 정책은 들어오는 요청을 기록하는 분산 카운터를 유지하여 클라이언트 앱에 소비 한도를 적용합니다.
할당량 정책을 사용하면 운영 트래픽 관리가 아닌 개발자 및 파트너와의 비즈니스 계약 또는 SLA를 적용할 수 있습니다. 예를 들어 할당량을 사용하여 무료 서비스의 트래픽을 제한하면서 유료 고객에 대한 전체 액세스를 허용할 수 있습니다.
급증 저지를 사용하여 API 트래픽이 갑자기 급증하는 것을 방지합니다. 일반적으로 급증 저지는 가능한 DDoS 또는 기타 악의적인 공격을 방지하는 데 사용됩니다.