Korea Digital Contents Society
[ Article ]
Journal of Digital Contents Society - Vol. 22, No. 4, pp.719-725
ISSN: 1598-2009 (Print) 2287-738X (Online)
Print publication date 30 Apr 2021
Received 08 Feb 2021 Revised 16 Mar 2021 Accepted 16 Mar 2021
DOI: https://doi.org/10.9728/dcs.2021.22.4.719

과학기술지식인프라 제공을 위한 API Gateway 설계

임찬욱1 ; 최희석2 ; 이석형3, *
1한국과학기술정보연구원 융합서비스센터 선임기술원
2한국과학기술정보연구원 융합서비스센터 책임연구원
3한국과학기술정보연구원 융합서비스센터 책임연구원
API Gateway Design for Sharing Science and Technology Knowledge Infrastructure
Chanuk Lim1 ; Hee-Seok Choi2 ; Seok-Hyoung Lee3, *
1Senior research, Convergence Service Center, Korea Institute of Science and Technology Information, Daejeon 34141, Korea
2Principal research, Convergence Service Center, Korea Institute of Science and Technology Information, Daejeon 34141, Korea
3Principal research, Convergence Service Center, Korea Institute of Science and Technology Information, Daejeon 34141, Korea

Correspondence to: *Seok-Hyoung Lee Tel: +82-42-869-1779 E-mail: skyi@kisti.re.kr

Copyright ⓒ 2021 The Digital Contents Society
This is an Open Access article distributed under the terms of the Creative Commons Attribution Non-CommercialLicense(http://creativecommons.org/licenses/by-nc/3.0/) which permits unrestricted non-commercial use, distribution, and reproduction in any medium, provided the original work is properly cited.

초록

최근 과학기술지식인프라를 제공하는 서비스의 증가로 인해 접근성 및 효율성 향상 이슈가 부각되고 있다. 본 논문에서는 과학기술지식인프라를 통합하기 위해 다양한 서비스를 API 단위로 정의하고 이를 처리할 수 있는 API Gateway를 개발하였다. API Gateway는 클라이언트와 end-point 중간에 API Gateway가 미들웨어 역할을 하며, API를 사용자에게 서비스하기 위해 인증, 라우팅, 에러처리 등 기능이 포함되어 있다. 향후 추가되는 서비스는 기존 API 정책을 준수하면 API Gateway를 통해 별도의 추가 기능 개발 없이 사용자에게 제공될 수 있게 되었다. 또한, API Gateway는 개발 비용 절감 등 사용자에게 편의를 줄 것으로 예상한다.

Abstract

Recently, accessibility and efficiency improvement issues have emerged due to the increase in services providing science and technology knowledge infrastructure. In this paper, to integrate the science and technology knowledge infrastructure, we define several services as APIs and implement an API Gateway design that can handle them. The API Gateway acts as middleware between the client and end-point, and includes functions such as authentication, routing, parsing and error handling to service the API to users. Future additional services can be provided to users without developing additional features via API Gateway if existing API policies are followed. In addition, API Gateway enables improved user convenience and lower development costs.

Keywords:

Science and Technology Knowledge, Data sharing, API Gateway, OpenAPI, Microservice Architecture

키워드:

과학기술지식인프라, 데이터공유, API 게이트웨이, 오픈API, 마이크로서비스아키텍처

Ⅰ. 서 론

최근 오픈 사이언스(Open Science) 확산으로 인해 과학기술정보·데이터나 연구인프라에 대한 공동 활용이 증가하고 있다. 이로 인해, 공동 활용되는 과학기술정보·데이터가 다양해지고 과학기술지식인프라를 제공하는 서비스가 증가하는 추세이다[1]. 따라서 데이터 공유 및 제공에 대한 접근성 그리고 효율성 향상 이슈가 중요하게 부각되고 있으며, 다양한 서비스 간 연계를 위해 미들웨어 도입으로 통신 프로토콜, 보안, 안정성 등 여러 기술적 이슈를 해결해야 한다.

현재 한국과학기술정보연구원(이하 KISTI)는 다양한 과학기술정보·데이터나 연구인프라를 공유하기 위해 대국민 서비스를 제공하고 있다. 특히, 주요 서비스로는 논문, 특허, 보고서 등을 제공하는 ScienceON, 국가연구개발과제를 관리하고 정보를 제공하는 NTIS, 국가연구데이터를 공유하고 관리하는 플랫폼 서비스인 DataON 등이 있으며, 이 외에도 18건의 다양한 웹기반 서비스를 제공하고 있다(2021.1기준)[2]. 이와 같은 다양하고 중복된 서비스로 인해 사용자는 서비스의 올바른 사용법에 대해 혼동하거나 본인이 원하는 서비스에 쉽게 접근할 수 없는 문제점이 발생한다. 이러한 문제점을 해결하기 위해, KISTI는 지난 2018부터 과학기술정보·데이터와 지식인프라를 통합하기 위한 연구를 시작하였다. 다양한 데이터 포맷의 과학기술정보·데이터와 지식인프라 서비스를 통합하기 위해, 각 서비스에 독립적이면서 지속가능한 통합수준모델을 개발하였다[3]. 이러한 통합모델을 바탕으로 여러 서비스간 연계 체계를 구축하여 2018년말부터 ScienceON 웹서비스를 오픈하였으며, 기능 개선을 통해 현재까지 사용자에게 고품질 서비스를 제공하고 있다[4][5]. 현재 개발된 ScienceON은 웹기반 서비스로 타 서비스에서 ScienceON과 직접 연계가 어려운 단점이 있었다. 기존에도 KISTI는 학술정보검색은 과학기술정보·데이터를 연계할 수 있도록 NOS(NDSL Open Service)를 연구개발하고 이 서비스를 15년 이상 운영하고 있다[7]. 하지만 NOS의 주요 개발 목표는 과학기술정보·데이터를 검색하고 브라우징에 적합한 API로 개발되어 KISTI의 다른 지식인프라 서비스를 직접 연계하기엔 한계가 존재했다[8][9].

이와 같은 문제점을 보완하기 위해 본 연구에서는 ScienceON API Gateway를 개발하여 기존 과학기술정보·데이터나 지식인프라의 기능들을 API(Application programming Interface) 형태로 호출할 수 있도록 설계하였다[6]. ScienceON API Gateway는 마이크로서비스 아키텍처(Microservice Architecture, MSA)로부터 나온 개념인 API Gateway를 설계에 적용하여, 외부 시스템에서 ScienceON을 통해 KISTI의 과학기술정보·데이터 및 지식인프라에 직접 연계할 수 있도록 API를 제공하는 플랫폼이다. 다시 말해, KISTI에서 현재 제공하고 있는 다양한 과학기술정보·데이터와 지식인프라를 사용자에게 통합하여 제공하기 위해 여러 서비스를 API 단위로 정의하고, 이를 안정적으로 처리할 수 있는 ScienceON API Gateway 개발하였다. 관리자가 ScienceON API Gateway를 활용하면 다수의 시스템을 ScienceON API Gateway를 통해 통합적이고 안정적으로 운영할 수 있으며, 사용자는 다양한 서비스를 ScienceON API Gateway를 통해 원스톱으로 제공받아 서비스 품질 및 만족도 향상이 예상된다.

본 논문은 2장에서 과학지식인프라를 제공하는 기존 연구와 이를 통합할 수 있는 개념인 마이크로서비스 아키텍처와 API Gateway에 대해 조사하였고, 3장에서는 이를 바탕으로 ScienceON API Gateway 설계를 제시하였다. 마지막으로 4장에서는 ScienceON API Gateway의 기대효과 및 향후 연구 방향에 대해 논하였다.


Ⅱ. 선행연구

2-1 과학기술 지식인프라 현황

과학기술지식인프라는 과학기술정보(국가R&D정보, 연구데이터, 정보분석 등)나 연구인프라(연구기기, 클라우드, 슈퍼컴퓨터 등)에 대한 전반적인 정보서비스를 필요한 연구자에게 제공하는 것으로 정의한다. 현재 KISTI에서는 21건의 웹서비스를 제공하고 있으며, 이 중 일부 서비스는 OpenAPI 서비스를 제공하여 클라이언트 측의 서비스와 메쉬업할 수 있도록 지원하고 있다. 대표적으로 ScienceON 학술정보검색, NTIS, DataON을 살펴보면, SceicenON 학술정보검색은 주로 학회/학위 논문, 특허, 국가연구보고서, 동향정보 등에 대해 총 1.5억 건 정도의 과학기술정보·데이터 저장소 역할을 하며, 사용자에게 검색 기능을 제공하여 원하는 정보를 빠르게 접근할 수 있도록 하였다. 또한, OpenAPI 서비스인 NOS를 제공하여 클라이언트는 논문검색, 상세보기, 링크리졸버 등 여러 기능들을 API 호출할 수 있도록 하였다[10]. 그리고 NTIS는 국가R&D연구공고, 연구산출물, 국가연구기관 및 연구자 등에 대한 정보를 제공하는 웹서비스이다. 또한, 과학기술통계나 R&D관련 과제정보, 성과정보, 연계수집정보 등 데이터를 제공하며, OpenAPI를 제공하여 사용자가 NTIS 웹서비스를 API 형태로 연계할 수 있도록 서비스하고 있다[11]. 마지막으로 DataON은 국가연구데이터플랫폼서비스로 국내외 연구데이터를 검색, 공유, 관리하는 플랫폼으로 체계적인 연구데이터 관리나 유통 서비스를 제공할 수 있다. 사용자는 본인이 수행한 연구과제 연구데이터를 공개하며 타 연구자들은 이 연구데이터를 사용하거나 검증할 수 있게 되었다[12].

2-2 API Gateway 현황

1) API Gateway 개념

API Gateway는 마이크로서비스 아키텍처의 한 컴포넌트로 마이크로서비스 아키텍처의 효율성을 높이기 위해 도입된 개념이다. 먼저 마이크로서비스 아키텍처는 기존 모노리틱 아키텍처(Monolithic Architecture)의 단점을 극복하기 위해서 도입되었다[13]. 모노리틱 아키텍처는 전통적인 웹서비스 시스템으로 모든 비즈니스 로직, 데이터 등이 하나의 어플리케이션에서 동작하는 구조이다. 따라서 임의의 컴포넌트를 추가하거나 수정할 때, 해당 기능뿐만 아니라 어플리케이션 내 모든 컴포넌트를 함께 빌드 및 배포해야 하는 관리상 단점이 발생했다. 이를 해결하기 위해 마이크로서비스 아키텍처 개념이 도입되었는데, 이는 앞서 언급한 컴포넌트를 독립된 서비스 개념으로 정의하는 것이다. 각각의 서비스는 상호 독립적이기 때문에 특정 서비스를 수정하고 재배포할 때 수정된 서비스만 적용하면 된다. 마이크로서비스 아키텍처에서 각각의 서비스는 REST 기반의 API를 이용하여 연계된 서비스와 통신을 한다. 만약 마이크로서비스 아키텍처에서 서비스 간 개별적으로 통신을 한다면, 네트워크 토폴로지는 Point-to-Point 형태가 된다. 이는 서비스가 증가할수록 서비스 간 토폴로지가 복잡해지고 운영관리가 어려워지는 경향이 존재한다. 이와 같은 복잡성 문제를 해결하기 위해 서비스 간의 모든 통신은 Hub를 통해 연계하는 Hub-and-Spoke 토폴로지 방식을 고안하였고, Hub 역할을 하는 API Gateway 도입하였다.

2) API Gateway 활용현황

API Gateway는 마이크로서비스 아키텍처의 단점을 보완할 수 있다는 것이 여러 기업의 사례에서 증명되었다. 먼저, 스트리밍 서비스 업체인 넷플릭스는 2009년부터 자사 기존 서비스를 마이크로서비스 아키텍처로 전환하기 시작하였다. 넷플릭스는 더욱이 API Gateway를 적용하여 최대 초당 50,000건 이상의 API 호출을 처리할 수 있는 능력을 보유하게 되었다[14]. 이때 적용된 API Gateway는 Zuul로 명칭하며 Github을 통해 전세계 개발자를 대상으로 오픈소스 형태로 공개되었다. 이 오픈소스를 바탕으로 국내에서는 인터넷 쇼핑몰인 11번가와 외식배달 서비스인 배달의 민족이 2010년 후반부터 마이크로서비스 아키텍처로 전화하였다. 최근에는 넷플릭스의 Zuul 외에도 국내에선 네이버, 해외에서는 구글, 아마존 등이 API Gateway 기능을 서비스하고 있다.

또한, 국내 학계에서도 다양한 분야에서 API Gateway를 적용하는 사례를 보여주었다. 먼저 KISTI에서는 과학기술정보 서비스를 지원하기 위해 지식 공유 플랫폼을 개발하였으며, 기관에서 구축한 연구자명, 연구기관명, 전거데이터 등 각종 연구데이터와 연구데이터 분석 모델 등을 Open API로 제공하였다[15]. 그리고 [16]에서는 의료기기 데이터를 전송하기 위해 게이트웨이를 도입하였다. 의료기기의 통신 프로토콜이 상이해 중앙서버로 바로 데이터 전송이 불가하여, 다양한 의료기기에 대해 표준 프로토콜을 정하고 게이트웨이에서 중앙서버로 데이터 전송 후 의료인에게 필요한 데이터 다시 전송하는 연구를 수행하였다. 마지막으로 [17]에서는 플라스틱 제조 공장의 장비를 통합 관리하기 위해 게이트웨이를 도입하였으며, 데이터는 실시간으로 공장 설비에서 게이트웨이로 전송되고 게이트웨이에서 중앙서버로 다시 전송하는 방식을 도입하였다.


Ⅲ. ScienceON API Gateway

3-1 아키텍처 설계

ScienceON API Gawteway는 <그림 1>과 같이 사용자와 과학기술지식인프라 간 연계 역할을 하는 컴포넌트이다. 본 논문에서는 현재 운영 중인 과학기술지식인프라를 각각의 마이크로서비스 단위로 정의하였다. 따라서 사용자가 특정 과학기술지식인프라에서 어떠한 데이터를 HTTP 기반으로 호출하면, API Gateway는 특정 과학기술지식인프라로 REST 기반 API 호출을 하게 된다.

Fig. 1.

ScienceON API Gateway Flowchart

이와 같은 역할을 수행하기 위해, ScienceON API Gawteway는 <그림 2>와 같은 아키텍처를 가지고 있다. API Gateway는 8가지 모듈을 가지고 있으며, 사용자가 API를 사용하기 위해 인증/인가 절차를 처리하는 Authentication/Authorization 모듈, 메시지를 적절한 마이크로서비스에 전달하기 위한 Routing, 메시지 포맷 변환을 위한 Parsing, 다중 API를 처리하기 위한 Orchestration 등으로 구성되어 있다. 또한, API를 관리하기 위한 API Manager와 에러처리모듈, 저장 모듈도 개발되었다.

Fig. 2.

ScienceON API Gateway Architecture

본 논문에서 제안한 API Gateway의 장점은 end-point의 마이크로서비스에 대해, 즉 과학기술지식인프라의 데이터를 클라이언트에게 표준화된 프로토콜로 제공할 수 있다. API Gateway가 없다면 사용자는 각각의 마이크로서비스 프로토콜을 준수하며 API 호출을 해야 한다. 또한, API를 호출하기 위해선 서버에게 사용자 인증과 인가가 필요한데 API Gateway는 이와 같은 번거로운 작업을 한번만 수행할 수 있게 서비스를 제공한다.

3-2 API 메시지 설계

클라이언트와 마이크로서비스 간 API 호출 흐름도는 <그림 3>과 같다. 사용자가 과학기술지식인프라에 데이터를 요청하면 우선적으로 ScienceON API Gateway에 호출 시도를 하며, API Gateway는 Query를 분석하여 적절한 과학기술지식인프라에 호출을 라우팅한다. 그리고 서버에서 처리된 결과값은 역순으로 클라이언트에 응답된다.

Fig. 3.

API Call Flowchart

ScienceON API Gateway와 연계된 모든 마이크로서비스는 고유 URL을 가지고 있으므로 클라이언트는 URL 형태로 서버 측에 데이터를 요청할 수 있다. 클라이언트가 서버로 데이터를 요청할 경우, URL 형식으로 호출하며 URL은 여러 파라미터로 구성된다. API 요청 URL은 자신을 인증할 수 있는 클라이언트 ID와 토큰값을 포함하며, API 종류를 식별할 수 있는 API ID가 존재한다. 그리고 API 특성 별로 필요한 추가 파라미터가 포함된다.

개별 서버에서 처리된 결과는 XML 형식을 사용하여 사용자에게 반환된다. API Gateway는 API 종류에 따라 검색 결과의 파라미터나 코드 등이 사전에 정의하고 관리한다. <그림 4>의 하단 그림은 마이크로서비스에서 API Gateway로 전달한 XML(<그림 3>의 Response(2))이며 상단 그림은 API Gateway에서 클라이언트로 응답(<그림 4>의 Response(1))한 최종 결과값이다. <그림 4>에서 보는 것처럼, 마이크로서비스에서 API Gateway로 전달된 XML은 구조가 다소 복잡하다. API Gateway는 이러한 복잡한 메시지를 구조화하여 사용자에게 응답한다. 상위 요소(Element)로 API 응답 결과 요약(resultSummary), API 호출 파라미터(parameterData), 사용자가 호출한 데이터 결과값(recordList)으로 구성된다. resultSummary와 parameterData 요소는 모든 XML에 공통적인 속성(Attribute)을 가지며, recordList 요소는 API의 특성에 따라 결과값이 변경된다.

Fig 4.

API Gateway's standardized XML response (top), Individual microservice XML response (bottom)

현재 ScienceON API Gateway에서 제공되는 API의 종류는 각종 과학기술정보를 검색 키워드를 사용하여 검색, 상세보기 검색, 특허 출원인 검색 그리고 인프라 기능 검색이나 교육정보 검색 등 23가지 API를 제공하고 있다. 향후 추가개발을 통해 더욱 많은 API 개발을 통해 사용자에게 제공할 계획이다.

3-3 API Gateway 주요 기능

1) Authentication(인증)/Authorization(인가)

OpenAPI는 모든 사용자가 필요한 데이터를 호출할 수 있도록 설계되어있다. 따라서 API Gateway는 사용자를 사전에 인증/인가함으로써 보안상 취약점을 보완할 수 있어야 한다. 참고로 인증은 사용자를 식별하는 절차이고 인가는 인증된 사용자가 데이터를 요청할 수 있는 권한이 있는지 확인하는 절차이다.

ScienceON API Gateway는 사용자 인증을 위해 회원가입 절차를 요구하고 사용자의 정보를 데이터베이스화한다. 이 데이터베이스를 바탕으로 사용자 인증 절차를 진행하게 되며, 이때 토큰(Token) 발급하여 사용자를 인증하게 된다. 토큰에는 크게 두 가지로 구성되며, Access Token과 Refresh Token으로 구분된다.

사용자는 <그림 5>와 같이 최초 API 사용 신청 후, 인증키, 클라이언트ID, Access Token과 Refresh Token을 발급받게 된다. 그리고 서버는 사용자의 인증에 필요한 정보를 데이터베이스화하여 저장한다. 사용자가 URL 호출 파라미터에 발급받은 토큰을 입력하여 API Gateway에 API를 요청하면, 서버는 토큰을 검증 후 데이터를 응답하게 된다.

Fig. 5.

Token Issuance Procedure

ScienceON API Gateway에서 사용되는 토큰은 보안상 유효기간이 필요한데 Access Token은 2시간, Refresh Token은 2주로 설정되었다. <그림 6>과 같이 사용자의 Access Token이 만료가 되면, 사용자는 서버 측에 클라이언트ID와 Access Token 제출한다. 서버에서 제출된 데이터가 일치하고 Refresh Token 만료 전이면, 신규 Access Token을 발급해준다. 만약 Refresh Token이 만료가 된다면, 사용자는 서버 측에 맥주소, 현재시각 그리고 클라이언트ID를 제출한다. 이 값들은 보안상 중요한 데이터이기 때문에, 최초 인증 단계에서 발급된 인증키를 암호화키로 이용하여 AES256로 암호화된 URL로 전송된다. 서버에서도 인증키로 복호화를 진행하고, 제출된 데이터와 데이터베이스에 저장된 정보와 비교한다. 모든 정보가 일치하게 된다면, 서버는 사용자에게 신규 토큰을 발급한다.

Fig. 6.

Token ReIssuance Procedure

2) Error 처리

ScienceON API Gateway는 HTTP 기반 네트워크 통신으로, API를 호출하거나 응답할 때 통신 에러 발생 가능성이 항시 존재한다. 따라서 API Gateway는 통신 에러에 대한 처리 기능이 필요하다. API Gateway는 통신 에러가 발생할 경우, 클라이언트측에 정확한 에러 메시지를 응답하는 것이 중요하다. HTTP는 국제 통신 규약으로 IANA(Internet Assigned Numbers Authority)에서는 통신 에러에 대한 상태 코드를 규정하였다[18].

본 논문에서도 IANA에서 규정한 상태 코드(Status Code)를 부분적으로 차용하였다. 토큰 발급과 관련된 에러 메시지는 JSON 형식으로, 그 외 API에 관련된 대부분 에러 메시지는 XML 형식으로 반환된다. <표 1>과 같이 총 6가지의 상태 코드를 식별할 수 있으며 각 상태 코드별 하위 에러 코드를 규정하고 에러 코드에 대한 설명을 매뉴얼로 제공하고 있다. 이를 활용하여, 사용자에게 에러에 대한 최대한의 정보를 제공할 수 있다.

ScienceON API Gateway Error Message

3) Orchestration

Orchestration 기능은 여러 API를 통합하여 새로운 API를 제공하는 개념이다. 예를 들어, 논문과 특허를 검색하고 이에 관련된 교육이나 전문가를 검토하고자 할 때, 4가지 마이크로서비스 기능이 필요하다. 과학기술지식인프라의 특성상 이와 같은 여러 서비스 결합이 빈번하게 사용된다. 따라서 ScienceON API Gateway는 Orchestration 기능을 개발하여 여러 서비스의 통합 API 기능을 제공한다.

Orchestration 기능의 흐름도는 <그림 7>과 같다. <그림 7>은 4가지 쿼리를 순차적으로 처리하는 예시로, 1번 쿼리를 처리하고 2번 쿼리를 처리한 다음, 3-1 쿼리와 3-2 쿼리를 병렬로 처리하는 모양이다. 다시 말해, 1번 쿼리의 결과가 2번 쿼리의 입력값이 되고 2번 쿼리의 결과값이 3-1 쿼리와 3-2 쿼리의 입력값이 되며, 최종적으로 3-1과 3-2의 결과값이 클라이언트에 반환되게 된다.

Fig. 7.

Orchestration Flowchart

이와 같은 기능을 수행하기 위해, Orchestration은 <그림 7>과 같이 크게 3가지 모듈로 구성되었다. 먼저, API URL을 분석하여 API ID와 키워드를 추출하며, 라우터에서는 이 쿼리가 단일 쿼리인지, 다중 쿼리인지 분석하여 마이크로서비스로 전달한다. 마이크로서비스에서 결과값이 응답되면 클라이언트 측으로 반환된다. 모든 호출은 ID가 부여되어 추적 가능하게 설계되었다.

3-4 사용자/관리자 웹서비스

앞서 설명한 개념과 기능을 바탕으로 <그림 8>과 같이 KISTI는 2021년부터 ScienceON API Gateway 웹서비스를 제공하고 있다[6]. 서비스 사용을 원하는 클라이언트는 웹서비스에서 회원가입 후 API 사용신청을 요청하며, 관리자는 적절한 정보를 입력하였는지 확인 후 승인한다.

Fig. 8.

ScienceON API Gateway Web Service

사용자는 인증키, 클라이언트ID, 맥주소 등 API Gateway 사용에 필요한 모든 정보를 웹서비스에서 제공받을 수 있으며, 이 정보를 웹페이지에서 항시 확인할 수 있다. 또한, API Gateway 사용에 필요한 토큰 발급, 에러 코드, API 명세서 등 개발과 유지보수에 필요한 다양한 메뉴얼 웹페이지에서 제공한다.


Ⅳ. 결 론

현재 데이터 공유를 강조한 오픈사이언스 인식 확대 추세로 인해 과학기술정보·데이터 및 지식인프라를 통합하여 제공하는 플랫폼이 필요하다. 이에 대응하기 위해서 KISTI는 2018년부터 과학기술정보·데이터와 지식인프라 서비스를 통합하기 위해 통합수준모델을 개발하였고, 이 모델을 바탕으로 ScienceON을 개발하였다. 그리고 본 연구에서는 ScienceON의 개방 범위를 더 확대하기 위해, OpenAPI 및 마이크로서비스 아키텍처 개념을 기반으로 ScienceON API Gateway를 개발하여 KISTI의 모든 서비스에 접근할 수 있는 관문 역할을 할 수 있는 플랫폼을 제시하였다.

본 논문에서 제시한 ScienceON API Gateway의 특징은 다음과 같다. 먼저, 기존에 제공되고 있는 과학기술정보·데이터와 지식인프라를 분석하여 모든 서비스를 통합할 수 있는 아키텍처를 설계하였다. 기존 서비스들을 마이크로서비스와 같이 API 호출을 할 수 있는 구조로 변경하고 클라이언트와 end-point 중간에 API Gateway가 미들웨어 역할을 한다. 다음은 클라이언트와 API Gateway 간 API 메시지를 설계하여, 사용자는 각각의 서비스와는 별도로 API Gateway의 메시지 규정만 따르면 KISTI의 모든 서비스를 호출할 수 있도록 개발하였다. 마지막으로 이러한 API를 호출할 수 있도록 API 인증, 메시지 라우팅, 에러처리, 로드밸런싱 등 API Gateway 공통기능을 개발하였다. 향후 추가되는 서비스는 기존 API 정책을 준수하면 API Gateway를 통해 별도의 추가 기능 개발 없이 사용자에게 제공될 수 있게 되었다.

앞서 언급한 ScienceON API Gateway의 특징을 고려하면, 클라이언트는 KISTI가 제공하는 개별 서비스의 프로토콜에 상관없이 API Gateway의 프로토콜만 준수하면 모든 서비스 기능을 연계할 수 있게 되었다. 또한, API Gateway에서 API를 사용할 수 있는 필수 기능인 인증/인가, 메시지 라우팅 등의 공통기능을 사전에 개발하여 개발 비용을 단축하고 시스템 복잡도를 줄일 수 있다. 더욱이 시스템 관리자 측면에서는 클라이언트의 모든 로그 정보가 API Gateway의 데이터베이스에 축적되기 때문에 시스템 관리가 용이해졌다. 향후 로그 데이터베이스를 분석하여 사용자에게 적합한 서비스나 사용자가 필요로 하는 서비스를 예측하여 제공할 수 있는 근거를 마련할 수 있게 되었다.

현재까지 개발된 ScienceON API Gateway는 end-point 부의 마이크로서비스 기능을 제한적으로 연계되었다. 기존 운영 중인 서비스의 일부 기능을 API로 개발해야 API Gateway에서 이를 연계하고 호출할 수 있기 때문이다. 향후 여러 시스템에 대해 API를 개발하여 사용자에게 기존보다 더 많은 서비스를 제공할 수 있도록 개발할 예정이다. 또한, 사용자와 연계된 서비스가 증가할수록 시스템 안정성을 확보하는 것이 중요하다. 시스템 안정성을 측정할 수 있는 기준을 정립하고, 추가적으로 연계될 API에서는 이를 준수할 수 있도록 정책을 제시하는 것이 목표이다.

Acknowledgments

본 연구는 2020년도 한국과학기술정보연구원(KISTI) “과학기술지식인프라 융합서비스 개발 및 운영(K-20-L01-C07)” 사업 과제로 수행한 결과입니다.

References

  • Kim, Soon, Boram Lee, Hwanmin Kim, and Hyesun Kim. "Science and technology research support service trends for open science era." Journal of the Korean Society for information Management 34, no. 3, pp. 229-249, 2017.
  • KISTI, KISTI Service, Available: https://www.kisti.re.kr/post/explore?cPage=1&searchYear=&t=1610435867253
  • Lee, Hyejin, Lee, Seokhyoung, Choi, Heeseok. "A Study on the Development of the Integration Level Model for Science and Technology Knowledge Infrastructures" KIISE transactions on computing practices, pp. 465-467, 2018. [https://doi.org/10.5626/KTCP.2019.25.9.465]
  • KISTI, ScienceON. Available: https://scienceon.kisti.re.kr/
  • Seok-Hyoung Lee. “A Study on the Building of Integrated Service for Science and Technology Knowledge Infrastructure Supporting the Entire R&D Cycle” Journal Of The Korean Biblia Society For Library And Information Science, Vol. 31, No. 4, pp. 235-256, September 2020.
  • KISTI, ScienceON API Gateway. Available: https://apigateway.kisti.re.kr/
  • KISTI, NDSL Open Service(NOS). Available: http://nos.ndsl.kr/
  • Hyun, Mi-Hwan. "A Study on the Design of OpenAPI for Common-Using Document Delivery Service." Proceedings of the Korea Contents Association Conference, pp. 253-254, 2012.
  • Hyun, Mi-Hwan, Hye-Jin Lee, and Hye-Sun Kim. "Effect of NDSL Open Service (NOS) on sharing S&T information." Proceedings of the Korea Contents Association Conference. The Korea Contents Association, pp. 297-298, 2014.
  • Hyun, Mi-Hwan. "Design and Implementation of an LinkResolver OpenAPI for Resource Linking Service" Proceedings of the Korea Information Processing Systems Conference, pp. 1318-1320, 2012.
  • KISTI, NTIS, Available: https://www.ntis.go.kr/
  • KISTI, DataON, Available: https://dataon.kisti.re.kr/
  • Rodgers, Peter. "Service-Oriented Development on NetKernel-Patterns, Processes & Products to Reduce System Complexity." Cloud Computing Expo. SYS-CON Media, 2015.
  • Netflix, The netflix techblog, Available: https://netflixtechblog.com/announcing-zuul-edge-service-in-the-cloud-ab3af5be08ee
  • Kim, Kwang-Young, Seok-Hyoung Lee, Hye-Jin Lee, Jung-Hoon Park, Jae-Wook Seol, Jinyoung Kim, Heung-Seon Oh, Jung-Sun Yoon, and Seo-Young Jeong. "A Study on Knowledge Open Platform for Science and Technology Information Service: With a Focus on Data, Technology Software and Utilization-Case." Journal of Digital Contents Society 18, no. 6, pp. 1183-1191, 2017.
  • Lee. "Development of an Integrated Gateway for Data Linkage of Medical Devices in the Web-based Telemedicine System", Masters dissertation, Soongsil University, Seoul, Republic of Korea, 2019.
  • Jeon, Dong-cheol, Byung Mun Lee, and Heejoung Hwang. "Design and Implement of Smart Gateway Interface API for Real-time Monitoring in Smart Factory." Journal of Korea Multimedia Society 22, no. 5, pp. 601-612, 2019.
  • IANA, Hypertext Transfer Protocol Status Code Registry, https://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml

저자소개

임찬욱(Chanuk Lim)

2012년 : 전남대학교 전자컴퓨터공학부(공학사)

2016년 : 광주과학기술원 대학원(공학석사)

2012년~2014년: 현대자동차 생산기술센터

2015년~2019년: 한국전력공사 전력연구원(KEPRI)

2019년~현 재: 한국과학기술정보연구원(KISTI) 융합서비스센터 선임기술원

※관심분야:과학기술정보 서비스(S&T Information Service), 데이터 분석(Data Analysis), 기계학습(Machine Learning), 컴퓨터비전(Computer Vision) 등

최희석(Hee-Seok Choi)

1998년 : 부산대학교 컴퓨터공학과 (공학사)

2000년 : 부산대학교 대학원 컴퓨터공학과(공학석사)

2007년 : 부산대학교 대학원 컴퓨터공학과(공학박사)

2004년~2006년: 한국전자통신연구원(ETRI)

2006년~현 재: 한국과학기술정보연구원(KISTI) 융합서비스센터 책임연구원

※관심분야:과학기술정보·데이터(S&T Information Service and Data), 플랫폼서비스(Platform Service), 인공지능(Artificial Intelligence), 기계학습(Machine Learning), 마이데이터(MyData) 등

이석형(Seok-Hyoung Lee)

1999년 : 충남대학교 컴퓨터공학과(공학사)

2001년 : 충남대학교 대학원 컴퓨터공학과(공학석사)

2012년 : 충남대학교 대학원 문헌정보학과(정보학박사)

2001년~현 재: 한국과학기술정보연구원(KISTI) 융합서비스센터 책임연구원

※관심분야:정보처리(Information on Processing), 정보분석(Information Analysis), 빅데이터 분석(Bigdata Analysis) 등

Fig. 1.

Fig. 1.
ScienceON API Gateway Flowchart

Fig. 2.

Fig. 2.
ScienceON API Gateway Architecture

Fig. 3.

Fig. 3.
API Call Flowchart

Fig 4.

Fig 4.
API Gateway's standardized XML response (top), Individual microservice XML response (bottom)

Fig. 5.

Fig. 5.
Token Issuance Procedure

Fig. 6.

Fig. 6.
Token ReIssuance Procedure

Fig. 7.

Fig. 7.
Orchestration Flowchart

Fig. 8.

Fig. 8.
ScienceON API Gateway Web Service

Table 1.

ScienceON API Gateway Error Message

Status Code Message Description
200 OK Success
400 Bad Request Not correct request data format
401 Unauthorized Fail to authorization
403 Forbidden Access denied regardless of authorization
404 Not Found Resource does not exist
500 Internal Server Error Fail to access because of API server side