SDS API 개발 에서 설계한 서비스의 구성 요소 흐름과 개선 제안이다. 계층별 클래스 구조는 Spring REST API 아키텍처 (Trino 연동) 에 있다.
flowchart TD
A[User/API Client] --> B(ApiController)
B --> C{AuthService}
C -- Auth Success --> D{Service Router}
D -- SQL --> E[TrinoService]
D -- Iceberg Meta --> F[IcebergService]
D -- Metadata --> G[MetastoreService]
E --> H[Trino JDBC]
F --> I[Iceberg Java API]
G --> J[Hive Metastore]
E & F & G --> K[StorageService]
K --> L[HDFS]
K --> M[S3/S3A]
K --> N[Local/GlusterFS/NFS]
J & I --> O[Iceberg/Hive Metadata]
¶ Main Classes
- ApiController — REST API 진입점.
- AuthService — 인증과 SQL 권한 검사.
- TrinoService — Trino 에 SQL 실행.
- IcebergService — Iceberg 테이블 연산과 메타데이터 관리.
- MetastoreService — Hive · Iceberg 메타스토어 인터페이스.
- StorageService — HDFS · S3 · Local · GlusterFS · NFS 를 한 인터페이스로 묶는 파일 저장소 계층.
- 사용자의 SQL · API 요청은 ApiController → AuthService → 해당 Service 순으로 흐른다.
- 데이터와 메타데이터는 서비스와 저장소 · 메타스토어 사이를 오간다.
- HDFS
- S3 / S3A / S3 호환 스토리지
- Local (GlusterFS / NFS)
/api/v1/engines/trino/catalogs/{catalog}/formats/{format}/schemas/{schema}/tables/{table}/actions/{sql_type}
- Iceberg 지원 — 스키마 진화, 타임 트래블, upsert/merge, 풍부한 메타데이터.
- 저장소 추상화 — HDFS, S3, S3 호환, 로컬, GlusterFS, NFS.
- 사용자 SQL 제어 — AuthService 와 UserSQLController.
- 메타데이터 제어 — MetastoreService (Hive, Iceberg).
- 확장성 — 저장소나 엔진을 추가할 수 있는 구조.
- SQL 감사 — 모든 쿼리와 메타데이터 변경을 기록해 규정 준수에 대비한다.
- 메타데이터 캐시 — Hive · Iceberg 메타스토어 접근 성능을 높인다.
- 연합 쿼리 — Trino 의 여러 카탈로그 · 소스를 한 쿼리로 다룬다.
- 역할 기반 접근 제어 — SQL 종류와 메타데이터 연산에 세밀한 권한을 둔다.
- 비동기 · 배치 연산 — 대량 갱신 · 적재에 대비한다.
- 모니터링 · 메트릭 — Prometheus · Grafana 로 시스템 상태를 본다.