본문 바로가기
IBM - old/IBM APIC

[APIC]본격적으로 살펴보는 IBM API Connect 02 - API 트래픽 제어

by freeman98 2016. 6. 10.

안녕하세요 이정운 입니다.

지난 강좌에 이어서 이번에 다뤄볼 내용은 IBM API Connect 를 활용한 API 트래픽 제어입니다. API 의 경우 일반적으로 대외적으로 Open 되기도 하고 대외적으로 Open 되지 않았다고 해도 특정 사용자의 API 요청을 무한정 받았다가는 실제 API 가 연결된 내부 시스템에 과부하나 이슈가 발생될 수 있습니다. 그래서 API 관리에서 가장 중요한 항목중의 하나는 API 트래픽 제어입니다. (또는, API 유량 제어라고 합니다.)

API 트래픽 제어는 쉽게 설명드리면 서비스 레벨을 분리해서 일정이상의 API 요청을 제한하는 활동을 의미합니다. 예를 들어 설명하면 A 라는 API 에 ‘프리미엄’, ‘골드’, ‘실버’ 라는 서비스 레벨을 만들고 사용자가 동일한 A 라는 API 를 사용할 때 해당 서비스 레벨을 선택해서 구독하도록 하는 것입니다. 여기서 ‘프리미엄’ 은 무제한 API 호출 가능, ‘골드’ 1일 API 호출 1000 건, ‘실버’ 1일 API 호출 100건과 같은 형태로 API 서비스에 대한 서비스 레벨을 제어하는 것을 의미합니다.


이 번 강좌에서는 IBM API Connect 에서 제공하는 API 트래픽 제어에 대해서 직접 테스트해보는 시간을 가져보도록 하겠습니다. 추가적으로 운영환경을 가정해서 제품 버전관리 및 마이그레이션도 다룰 예정이니 참고하시기 바라겠습니다. (IBM API Connect 는 한번 클릭만으로 ‘스냅샷’ 형태로 바로 버전을 생성/관리할 수 있는 손쉬운 버전 관리 방안을 제공합니다.)

그럼 백문이 불여일타! API 트래픽 제어에 대한 강좌를 진행하도록 하겠습니다.



1) API 계획 추가 및 API 버전 업그레이드 하기


이 강좌는 기본적으로 이미 진행된 “[APIC]본격적으로 살펴보는 IBM API Connect 01 - API 등록 및 테스트” 강좌(http://www.websphere.pe.kr/xe/new_lecture/56058) 에서 만들었던 제품과 계획을 활용할 예정입니다.

APIC 의 관리콘솔의 초안 메뉴에서 기존에 만들어둔 Bank 1.0.0 제품 메뉴로 들어와서 우측 상단에 있는 ‘…’ 아이콘을 클릭하여 새 버전으로 저장을 선택합니다.


제 품 리스트 화면으로 돌아와 보면 Bank 1.0.0 과 동일하게 ‘스냅샷’ 형태로 복제된 Bank 2.0.0 을 확인할 수 있습니다. 여기서 API 는 버전 업을 하지 않고 제품만 버전 업을 하는 이유는 기존 Loan API 를 그대로 사용할 계획이기 때문입니다. 필요하다면 API 도 동일하게 ‘스냅샷’ 형태로 버전 관리 가능합니다.


Bank 2.0.0 제품을 클릭하여 세부 메뉴로 들어가 계획을 하나 추가합니다. 여기서는 Silver_Level 이라는 이름을 사용하였고 유량 제어를 위한 비율을 1분당 5개에 하드 한계 적용을 선택했습니다.(요청이 넘어가면 429 exception 발생) 또한, 추가적으로 해당 계획을 사용할 때는 등록 승인이 필요하도록 설정하였습니다.


계획 추가가 완료되었으면 우측 상단의 구름 아이콘을 클릭하여 이를 사용하기 위하여 배포합니다.


배 포가 완료된 후 관리콘솔의 대쉬보드에서 해당 카탈로그를 선택하면 하단과 같이 Bank 2.0.0 이 스태이징 된 것(배포가 되어서 사용/공개 준비가 된 상태)을 확인할 수 있습니다. (당연히 Bank 1.0.0 은 공개된 채 그대로 존재)

 
이 제 운영환경을 가정하고 Bank 1.0.0 에서 Bank 2.0.0 으로 버전 업그레이드를 수행하기 위하여 스테이징 된 Bank 2.0.0 우측에 ‘…’ 아이콘을 클릭하면 여러 메뉴가 나오며 그중에 기존 제품 대체(Replace) 를 선택합니다.


참 고적으로 기존 제품 대체(Replace) 와 기존 제품 대체(Supersede) 의 다른 점은 버전 업그레이드시에 이전 버전을 폐기(Retired) 할 것이냐 더 이상 사용되지 않게(Deprecated) 할 것이냐의 차이입니다. 기존 제품 대체(Reeplace) 메뉴를 클릭하면 하단과 같이 수행되는 조치 설명과 대체할 제품을 선택하는 메뉴가 나타납니다. 기존 배포되어서 공개되어 있는 Bank 1.0.0 을 선택하고 다음을 클릭합니다.


기존 제품 대체(Replace) 를 수행하면서 기존 제품의 계획을 변경이 있다면 변경해주고 바꾸기를 선택합니다. (여기서는 계획에 대한 변경이 없기 때문에 그대로 매핑만 넣어주면 됩니다.)


기존 제품 대체(Replace) 가 성공적으로 수행되었다면 하단과 같이 Bank 1.0.0 은 공개 상태에서 폐기 상태로 상태 변경 되었고 Bank 2.0.0 이 스테이징에서 공개 상태로 변경된 것을 확인 가능합니다.



2) API 계획 구독 및 API 트래픽 제어 테스트

이 전 파트에서 새롭게 계획을 추가한 Bank 2.0.0 제품의 공개가 완료되었으므로 이제 API 개발자 포탈로 login 해서 들어가 보면 하단과 같이 API 제품 리스트에 Bank 1.0.0 은 제외되고 Bank 2.0.0 이 공개되어 있는 것을 확인 가능합니다.


Bank 2.0.0 을 클릭하여 API 내용을 살펴보면 제일 첫 화면에서 하단과 같이 구독 신청 가능한 2 개의 계획을 확인할 수 있습니다. (이전 파트에서 작성한 Silver_Level 계획이 추가 된 것을 확인 가능합니다.)


그러면 API 트래픽 제어를 테스트하기 위해 간단하게 애플리케이션을 하나 만든 후 방금 추가한 계획에 구독 신청을 수행합니다. (애플리케이션 만드는 것은 이전 강좌 참고)


이 전 강좌와 다르게 이번에 추가한 Silver_Level 계획은 구독 승인을 반드시 수행하도록 설정하였으므로 APIC 관리콘솔의 대시보드 > 카탈로그 > 승인 메뉴를 클릭하면 하단과 같이 승인 요청을 확인할 수 있으며 승인 관리를 수행할 수 있습니다. 당연히 여기서는 조치에서 승인을 클릭합니다.


계 획에 대한 구독 요청에 대해서 승인이 완료되었으므로 이제 해당 애플리케이션 client ID 로 호출이 가능하게 되었습니다. 다시 개발자 포탈로 돌아와 API 제품 > Bank 2.0.0 을 선택한 후 Loan 1.0.0 API 의 명세를 확인한 후 애플리케이션 ID 로 지금 승인을 받은 SilverApp01 을 넣어주고 ‘호출하기’를 클릭하여 API 호출을 수행해서 정상적으로 결과가 나오는 것을 확인합니다.

 
정 상적인 결과를 확인했다면 추가로 5번을 더 클릭합니다. 그러면 이제 계획에서 제한된 것과 같이 - 1분에 5번 - 더 이상 요청이 성공되지 못하고 하단과 같이 “429 Too Many Requests” 오류가 응답되는 것을 확인할 수 있습니다.


지 금까지 테스트 해보신 것처럼 IBM API Connect 는 굉장히 손쉽게 계획을 설정하는 것 만으로 API 트래픽 제어가 가능한 것을 확인할 수 있으며 여러 계획을 추가하여 공통된 API 대상으로 다양한 서비스 레벨을 제공할 수 있는 것을 확인할 수 있습니다. 


참고 : 당연히 기존에 구독 등록된 TestApp01 애플리케이션 ID 는 버전 업그레이드 시에 그대로 Bank 2.0.0 으로 마이그레이션 되었기 때문에 개발자 포탈의 해당 테스트의 애플리케이션 ID 를 TestApp01 로 테스트하면 문제없이 서비스 호출되는 것을 확인하실 수 있습니다.

참고 : IBM API Connect 에서 제공하는 API 트래픽 제어 기능은 지금 강좌에서 진행한 형태와 같은 유량제어 이외에 등록된 애플리케이션의 서비스를 운영환경에서 일시 중단 시키거나 제품 자체의 서비스를 실시간으로 On/Off 시키는 것도 가능합니다.




9) 참고 자료


1.    IBM API Connect 5.0 온라인 메뉴얼(Knowledge Center) – 한글 제공
https://www.ibm.com/support/knowledgecenter/ko/SSMNED_5.0.0/mapfiles/ic_home.html

2.    제품 공개 - IBM API Connect 5.0 온라인 메뉴얼
https://www.ibm.com/support/knowledgecenter/ko/SSMNED_5.0.0/com.ibm.apic.apionprem.doc/publishing_a_product.html


APIC5_guide_02_TrafficControl_juwlee201606_v1.pdf




댓글