DreamFactory를 통해 알아보는 API Gateway의 필요성

min Read

API(Application Programming Interface)의 주요 목적은 애플리케이션들이 서로 통신할 수 있도록 하는 것으로, 시스템간의 상호작용과 통신을 가능하게 하며 데이터와 기능을 쉽게 공유하고 통합할 수 있도록 도와줍니다. API를 사용하면 기능 재사용, 시스템 통합, 표준화된 접근, 개발 효율성 향상, 보안 강화, 확장성 등을 제공 할 수 있습니다.

API에는 여러가지 종류가 있습니다. 그 중 현대의 웹 서비스 및 애플리케이션에서는 REST API를 대부분 표준으로 채택하여 사용하고 있고 다양한 시스템간의 효율적인 통신을 가능하게 합니다.

이러한 API들을 한곳에서 통합된 진입점을 제공하고 쉽고 효율적으로 관리할 수 있게 도와주는게 API Gateway의 역할이며, API Gateway를 통해 속도 제한 및 호출 제한, 캐싱이 가능하며 동시에 OAuth 또는 JWT와 같은 보안 정책을 적용하는데 도움을 줄 수 있습니다.

API Gateway를 사용하여 얻을 수 있는 이점은 아래와 같습니다.

여러 시스템에서 다양하게 사용중인 API를 하나의 중앙화된 진입점을 통해 제공하므로 클라이언트와 서버간의 통신을 간소화 할 수 있습니다.

인증 및 권한 부여 기능을 제공하여 인가되지 않은 사용자로부터 민감한 데이터의 접근제어 및 서비스를 보호할 수 있습니다.

사용자로부터 API 요청 수가 많아져 트래픽이 증가할 경우 부하분산 및 속도, 호출 제한,캐싱 기능등을 통해 서비스의 안전성 및 호출의 최적화를 보장합니다.

API 사용량 및 성능을 모니터링하고 로그를 기록하여 문제를 신속하게 발견하고 해결할 수 있습니다.

다양한 API에 대한 버전관리를 통해 클라이언트가 특정 버전을 선택하여 사용할 수 있도록 제어가 가능합니다.

기업에서 여러 애플리케이션을 개발하고 사용하는 API가 많아질수록 API Gateway는 선택이 아닌 필수가 되어가는데요, 이러한 API Gateway를 제공하는 여러 오픈소스 및 상용 시스템들이 있습니다. 대표적으로는 DreamFactory, Amazon API Gateway, Azure API Gateway 가 있으며, Tyk, Kong 등 클라우드 Provider를 포함한 여러 API Gateway 솔루션들이 있습니다.

이 글에서는 DreamFactory를 활용한 API Gateway 구축 방안을 소개해보겠습니다. DreamFactory는 단순히 API Gateway 구축에 그치지 않고, REST API로 제공되지 않는 데이터베이스 서비스나 SOAP와 같은 레거시 API를 현대적인 REST API로 변환하는 강력한 기능을 제공합니다.

기존 애플리케이션에서 사용중이던 REST API 혹은 SOAP API를 DreamFactory 시스템상에 등록하면 DreamFactory를 통해서 호출하게 API Gateway를 만들 수가 있습니다.

위에 보이는 화면과 같이 기존 애플리케이션에서 사용중인 REST API(HTTP) 및 SOAP API를 등록할 수 있고, DB서비스와 같은 기존에 API가 없는 서비스도 자동으로 REST API를 생성해주는 기능도 제공하고 있습니다. 이러한 기능을 통해 DreamFactory는 다양한 시스템 통합 요구를 충족시키며, API 관리와 변환 작업을 효율적으로 처리할 수 있는 강력한 솔루션임을 보여줍니다.

다음으로는 기존 시스템에서 사용중인 REST API를 DreamFactory에 등록하여 API Gateway를 구현해 보도록 하겠습니다.

날씨 정보를 제공하는 OpenWeatherMAP API라는 REST API를 이용해서 실제 DreamFactory 시스템에 API 등록 및 DreamFactory API Gateway로 호출, 제한, Token을 이용한 접근 제어 등의 예시를 보여드리겠습니다.

우선 OpenWeatherMAP의 API를 회원가입을 통해 발급받은 후, Dreamfactoy의 REST API Service의 Config 메뉴에서 기존 RestAPI의 Base URL 및 Parameters에 발급받은 API KEY를 아래와 같이 등록 해주고 SAVE를 해줍니다.

이렇게 함으로서 하나의 REST API가 DreamFactory에 등록이 되었습니다

등록 후에 해당 서비스에 Role을 지정해주면 API 호출 시 세세한 접근제어를 부여할 수 있게 됩니다.

DreamFactory의 Role을 통해 어떤 Component들만 접근을 허용 할건지, 어떤 타입의 REST 접근만 허용할건지(GET, POST, PUT, PATCH, DELETE) 등 상세하게 롤을 생성할 수 있습니다.

Dreamfactory

그 후 Apps메뉴에서 weather을 들어가서 생성한 Role을 할당할 수 있으며, 호출에 필요한 API Key를 획득 할 수 있습니다. (REST API 호출시 필요하므로 API Key를 복사해 둡니다.)

Dreamfactory

마지막으로 API Gateway에서 중요한 포인트인 서비스의 안정성을 위해 API의 호출을 제한하는 예시를 보여드리기 위해 Limits 메뉴에서 weather라고 불리는 limit을 하나 생성하여 아래의 이미지와 같이 1분당 호출 개수를 5회로 제한 해보겠습니다.

그 후 Postman과 같은 API Client를 통해 아까 복사해둔 API KEY를 헤더부분에 X-DreamFactory-Api-Key라는 Key와 함께 넣고 호출을 해줍니다.

예상과 같이 호출이 잘 되는것을 확인할 수 있으며, GET 요청의 경우 캐싱이 되기 때문에 2번의 호출부터는 캐싱된 데이터로 보여주기에 응답 Payload 속도가 더 빨라진 모습을 확인할 수 있습니다.

또한 API Limit을 1분당 5회로 제한을 해놨기에 1분안에 5회를 초과하는 요청을 할 경우 아래와 같이 429Error 메세지를 확인할 수 있으며, DreamFactory의 Limit메뉴에서도 실시간으로 인터렉티브하게 확인이 가능합니다.

지금까지 DreamFactory를 통해 기존 REST API를 등록하는 방법과 접근 제어, 캐싱, 호출 제한 등 API Gateway 사용의 이점을 사례를 통해 살펴보았습니다. 다음 시간에는 API Gateway 기능을 넘어, DreamFactory의 핵심 기능인 REST API 자동 생성 기능을 중점적으로 소개하겠습니다.

Get to know more about Rest API

모바일, 웹 및 IoT 애플리케이션을 위한 REST API 플랫폼 DreamFactory에 대한 알아보세요!

Taeil Seok

Subscribe for the Latest News!

 
123
Edit Template