MIDAS Open API
웹 환경은 이미 우리의 일상 전반에 깊숙이 자리 잡고 있습니다. MIDAS는 미래에 대한 더 나은 비전과 대비를 위해, 기존의 전통적인 API 방식이 아닌 웹 기반 API를 채택하였습니다.
API vs. Web API
기존 API와 Web API는 다음과 같은 서로 다른 특성을 가지고 있습니다.
| 구분 | API | Web API |
| 접근 방식 | 주로 프로그래밍 언어 내부에서 호출 | HTTP 프로토콜을 통한 웹 요청 |
| 통신 프로토콜 | 다양한 프로토콜 사용 가능 | 주로 HTTP / HTTPS 사용 |
| 요청/응답 데이터 형식 | 다양한 데이터 형식 사용 가능 | 주로 JSON 또는 XML 사용 |
| 사용 목적 | 프로그램 간 연동 또는 라이브러리 활용 | 웹 애플리케이션 간 데이터 공유 또는 외부 개발자 대상 서비스 제공 |
| 보안 | 인증 및 권한 방식의 사용자 정의 가능 | OAuth 2.0, API Key 기반 인증 및 권한 관리 |
| 접근 제어 | 로컬 네트워크 또는 단일 PC 환경 중심 | 인터넷을 통한 원격 접근 가능 |
| 플랫폼 종속성 | 언어 또는 플랫폼에 따라 종속성 발생 가능 | 웹 브라우저 또는 HTTP 클라이언트를 통해 플랫폼 독립적 사용 가능 |
위 항목들은 각 방식의 특성을 나타내며, 상황에 따라 장점이 될 수도, 단점이 될 수도 있습니다.
구조
MIDAS GEN/CIVIL NX Open API는 웹 API와 네트워크 API 기술을 결합한 구조로, 보다 효율적이고 안정적인 서비스를 제공합니다.
MIDAS GEN/CIVIL NX는 애플리케이션과 직접 통신하지 않습니다.
사용자(클라이언트)를 포함한 외부 애플리케이션은 REST API를 통해 웹 상에서 서버와 통신하며, 이후 WebSocket 기술을 통해 연결된 MIDAS GEN/CIVIL NX와 상호작용합니다. 즉, 서버(AWS)는 MIDAS 제품과 애플리케이션 사이에서 중개자 역할을 수행합니다.
사용자는 일반적으로 다음과 같은 방식으로 시스템과 상호작용하게 됩니다.
서버는 다수의 WebSocket 클라이언트(MIDAS 제품)를 동시에 처리할 수 있습니다. 각 제품은 “MAPI-Key”를 통해 식별되며, 따라서 클라이언트(애플리케이션)는 REST API 요청 시 어떤 제품을 대상으로 하는지 명시하기 위해 헤더에 “MAPI-Key”를 포함해야 합니다.
이 운영 구조에 따라, 하나의 클라이언트가 여러 개의 MAPI-Key 정보를 보유하고 있다면 하나의 환경에서 여러 MIDAS 제품을 동시에 관리할 수 있습니다.
단, “MAPI-Key” 보안에 유의해야 합니다. MAPI-Key는 임시 키로 동작하며, 필요 시 언제든 변경할 수 있습니다. 또한 문자와 숫자가 혼합된 긴 문자열로 구성되어 있어 무작위 추측에 의한 접근은 사실상 불가능합니다.
동작 방식
MIDAS Open API의 기본적인 동작 과정을 개념적인 예시로 설명하면 다음과 같습니다.
- 클라이언트는 다음과 같은 정보로 서버에 REST API 요청을 보냅니다.
- HTTP Method: “GET”
- URL: “/db/node”
- Header: “MAPI-Key”: “######”
- 요청을 받은 서버는 해당 제품을 식별하고, 노드 정보를 요청합니다.
- 제품은 서버로 노드 정보를 전달합니다.
-
서버는 전달받은 노드 정보를 다시 클라이언트로 전달합니다.
이러한 구조적 특성으로 인해, 모든 동작이 로컬 PC에서 직접 이루어진다고 오해할 수 있습니다. 그러나 앞서 설명한 것처럼, MIDAS GEN/CIVIL NX는 애플리케이션과 직접 통신하지 않으며, 모든 API 동작은 서버를 통해 이루어집니다.
특징
웹 API 형태의 MIDAS GEN/CIVIL NX Open API는 다음과 같은 특징을 가집니다.
주요 특성은 다음과 같습니다.
- 플랫폼 / 언어 독립성
- HTTP 요청을 사용할 수 있는 모든 언어 및 환경에서 사용 가능합니다 (C, C++, C#, VB, VBA, Java, JavaScript, TypeScript, Python 등).
- 다양한 특성을 가진 애플리케이션 구현이 가능합니다.
- 제한된 데이터 포맷
- 모든 데이터는 JSON 포맷으로만 제공되며, 각 애플리케이션은 JSON을 파싱(parsing)하여 활용합니다.
- 대부분의 개발 환경에서는 JSON 처리를 위한 기본 또는 사용자 라이브러리를 제공합니다.
- 확장성
- 원격 접근, 다중 클라이언트 연결, 웹 기반 제어에 대한 확장성을 제공합니다.
- 이를 통해 서버와 다수의 클라이언트 간 효율적인 통신 및 협업이 가능합니다.