1.2. 아키텍처
본 장에서는 데이터 코어 모듈의 전체 아키텍처를 설명합니다. 데이터 코어 모듈은 data manager, ingest interface, data service broker, UI, dashboard, push agent 어플리케이션으로 구성됩니다. 데이터 모델, 데이터 셋, 데이터 셋 플로우, 권한관리 생성/수정/삭제 시에는 HTTP를 이용해 정보를 제공(provisioning)하고, 데이터 적재는 Apache Kafka를 통해 라우팅됩니다.
- Data manager: 데이터 코어에서 사용하는 데이터 모델, 데이터 셋, 데이터 셋 플로우, 데이터 접근 제어를 관리하고 타 어플리케이션으로 제공합니다.
- Ingest interface: 원천 데이터를 데이터 코어로 인입하기 위한 HTTP 인터페이스 제공 및 데이터 품질 관리를 수행하여 정형화된 스마트시티 데이터만 데이터 코어로 인입되도록 합니다.
- Data manager로부터 데이터 모델, 데이터 셋, 접근 제어 등의 기준 정보를 제공받아 데이터 품질 검사를 수행하고 Apache Kafka 인터페이스를 사용하여 데이터를 라우팅합니다.
- Data service broker: Ingest interface가 Apache Kafka 인터페이스를 통해 라우팅 한 스마트시티 데이터를 수신하여 데이터 저장소에 적재합니다.
- Data manager로부터 데이터 모델, 데이터 셋, 접근 제어 등의 기준 정보를 제공받아 데이터 적재를 수행합니다.
- 또한 NGSI-LD entity 및 NGSI-LD context source 생성/수정/삭제 이벤트에 따른 구독(ubscription)/통지(notification) 요청을 제공합니다.
- UI: 데이터 코어에서 사용하는 데이터 모델, 데이터 셋, 데이터 셋 플로우, 데이터 접근 제어 정보를 관리하기 위한 관리자 UI를 제공합니다.
- Dashboard: 스마트시티 데이터를 실시간으로 볼 수 있는 다양한 위젯을 지원하며 사용자 별로 위젯 설정을 저장하는 기능을 제공합니다.
- Push agent: Data service broker가 전송하는 통지 요청을 수신하여 통지 대상지로 HTTP/MQTT 기반 통지 메시지를 전송합니다.
1.2.1. Data manager
Data manager는 데이터 코어에서 사용하는 데이터의 기준 정보(데이터 모델, 데이터 셋, 데이터 셋 플로우, 데이터 접근 제어)를 관리하고 타 어플리케이션으로 기준 정보를 제공하는 원장 데이터 관리 어플리케이션입니다. 데이터 코어에 적재되는 데이터 구조를 표현한 데이터 모델 정보와 데이터 셋 정보를 관리합니다. 또한 기준 정보를 제공하기 위한 대상 서버(어플리케이션) 목록을 관리하며 데이터 모델, 데이터 셋, 데이터 셋 플로우, 데이터 접근제어 정보가 변경될 시 변경 내역을 대상 서버로 전파합니다.
1.2.2. Ingest interface
Ingest interface는 NGSI-LD API 기반 데이터 배치 생성(batch create) 또는 데이터 갱신(upsert) 기능을 수행하는 HTTP 인터페이스를 제공하는 어플리케이션입니다. 다양한 도시 원천 데이터를 수신하여 정형화된 스마트시티 데이터로 변환하고 데이터 품질 검증을 수행한 뒤 Apache Kafka 인터페이스를 통해 데이터 라우팅을 수행합니다. 데이터 배치 생성, 데이터 갱신, 데이터 품질 검증에 사용되는 기준 데이터는 data manager가 제공하는 데이터 모델, 데이터 셋, 데이터 접근제어 정보를 사용합니다. 스마트시티 데이터는 데이터 셋과 데이터 셋 플로우 정보를 기반으로 라우팅 됩니다.
1.2.3. Data service broker
Data service broker는 ingest interface가 Apache Kafka 인터페이스를 통해 라우팅 한 스마트시티 데이터를 수신한 뒤 데이터 저장소에 적재하는 어플리케이션입니다.
- Apache Kafka 인터페이스를 통해 수신한 스마트시티 데이터는 데이터 모델 정보를 기반으로 파싱하여 적재합니다.
- 적재 가능한 저장소 유형으로는 RDB (Postgres), HBase, Hive를 지원합니다.
- Apache Kafka 인터페이스 외에 data service broker의 HTTP 인터페이스를 통해서도 데이터를 적재/조회할 수 있습니다.
- 데이터 구독과 push agent 연계를 통한 통지 메시지(HTTP/MQTT) 발송 요청 기능을 제공합니다.
1.2.4. UI
UI는 데이터 코어에서 사용하는 기준 정보를 관리하기 위한 관리자 UI를 제공하는 어플리케이션입니다. 데이터 모델, 데이터 셋, 데이터 셋 플로우, 외부 플랫폼 연동 정보, 데이터 품질 검사 이력, 권한 관리 정보 등을 관리합니다.
- Data core UI 백엔드 서버는 Java 기반 Spring Boot를 사용합니다.
- Data core UI 프론트엔드는 Vue.js를 사용합니다.
1.2.5. Data core Dashboard
Dashboard는 데이터 코어에 적재된 스마트시티 데이터를 실시간으로 표현하기 위한 다양한 위젯을 제공하며, 데이터 코어의 구독/통지 기능을 이용하여 데이터를 실시간으로 표현하는 어플리케이션입니다. 또한 사용자 계정 별 위젯 구성을 관리할 수 있습니다.
- Dashboard 백엔드 서버는 Java 기반 Spring Boot를 사용합니다.
- Dashboard 프론트엔드는 Vue.js를 사용합니다.
1.2.6. Push agent
Push agent는 data service broker가 Apache kafka 인터페이스를 통해 전송한 통지 요청을 수신하여 HTTP 및 MQTT 기반 통지 메시지 전송을 담당하는 어플리케이션입니다.
- Data service broker는 NGSI-LD entity 와 NGSI-LD context source 생성/수정/삭제에 관한 구독과 통지 메시지 생성을 담당합니다.
- Push agent는 data service broker의 통지 요청을 수신하여 통지 대상 endpoint로 메시지를 전송하는 역할만 수행합니다.