전자해도 이미지 및 경로탐색 서비스 (EOS)
전자해도 온라인 서비스(EOS) — 웹·모바일에서 전자해도를 띄우고 위치·경로까지 다루는 통합 백엔드.





제품 소개
통합 백엔드 서비스
전자해도 이미지 및 경로탐색 서비스(EOS - ENC Online Service)는 HTML5 웹·모바일 어플리케이션에서 전자해도를 손쉽게 활용할 수 있도록 해도 타일 이미지·정적 지도(SOS)·지오코딩·경로탐색·EKBase 데이터 조회·서비스 모니터링까지 단일 백엔드에서 통합 제공하는 서비스입니다. Traefik 기반 로드밸런서가 모든 요청을 경로 단위로 라우팅하고 다중 API 컨테이너에 분산해 대규모 트래픽 환경에서도 안정적인 응답을 보장합니다.
컨테이너 운영과 모니터링
Docker Compose 기반의 3계층(관리·데이터베이스·서비스) 컨테이너 오케스트레이션으로 환경 일관성을 확보했으며, TLS 인증서 자동 갱신·자동 백업(10분 주기·최근 10개 유지)·통합 모니터링 대시보드와 디스코드 봇 알림을 제공합니다. EKBase 데이터 API는 레거시 Flask(v1)와 JWT 인증 기반 FastAPI(v2)를 함께 제공하고, 해도 타일·정적 지도·지오코딩·역지오코딩·경로탐색 API를 동일 게이트웨이에서 라우팅하므로 위치 기반 서비스 개발이 단순해집니다.
워크 플로우
- 1
클라이언트 요청 수신
HTML5 웹·모바일 클라이언트가 단일 HTTPS 엔드포인트로 해도 타일·지오코딩·경로탐색·EKBASE 사용량 조회 요청을 보냅니다. 백엔드는 동일한 게이트웨이로 모든 위치 기반 API 를 통합 제공해 클라이언트 개발 부담을 줄입니다.

- 2
Traefik 로드밸런서 분산
Traefik 리버스 프록시가 TLS 종단을 수행하고, 다중 API 컨테이너에 요청을 자동 분산합니다. 인증서 발급·갱신을 로드밸런서가 직접 처리해 백엔드 컨테이너는 비암호 트래픽만 다룹니다.

- 3
통합 API 게이트웨이
타일맵(/tilemap) · 정적 지도(/sos · /staticmap) · 경로탐색(/eis/route) · 지오코딩(/gc) · EKBase(/ekbase) 등 서비스를 단일 게이트웨이에서 경로 단위로 라우팅합니다. EKBase 데이터 API는 레거시 Flask(v1)와 JWT 인증 기반 FastAPI(v2)를 함께 제공합니다.

- 4
데이터 조회와 타일 생성
MySQL 라이브·논리 백업으로 데이터 무결성을 유지하고, 전자해도 자료를 줌 레벨별 타일 이미지로 변환해 응답합니다. 캐싱 계층이 반복 요청 비용을 줄입니다.

- 5
통합 모니터링과 알림
CPU · GPU · 메모리 · 트래픽 · 디스크 · API 호출량을 단일 웹 대시보드에서 확인하고, 컨테이너 단위 재시작과 디스코드 봇 알림을 통해 운영 상황을 실시간으로 공유합니다.

주요 기능
타일 이미지 서비스
전자해도를 줌 레벨별 타일 이미지로 변환해 HTTP API로 제공합니다.
정적 지도 (SOS)
요청 좌표·영역을 정적 지도 이미지로 즉시 렌더링해 반환합니다.
지오코딩·경로탐색
주소와 위경도 양방향 변환, 최적 경로 API를 같은 게이트웨이에서 제공합니다.
인증 REST API
EKBase 데이터 API를 레거시 Flask(v1)와 JWT 인증 기반 FastAPI(v2)로 함께 제공합니다.
자동 백업·복구
MySQL 데이터를 10분 주기로 자동 백업(최근 10개 유지)하고, 빈 DB는 최신 백업에서 자동 복구합니다.
통합 모니터링·알림
CPU·GPU·메모리·트래픽·API 사용량을 웹 대시보드로 확인하고 디스코드 봇으로 이벤트를 알립니다.
기술 사양
- 서비스 구성
- 타일맵(/tilemap) · 정적지도(/staticmap · /sos) · 경로(/eis/route) · 지오코딩(/gc) · EKBase(/ekbase) · 대시보드(/dashboard)
- 로드밸런서
- Traefik (TLS 종단 · 경로 라우팅 · 다중 API 컨테이너 분산)
- API 계층
- REST API v1(Flask) · v2(FastAPI, JWT 인증)
- 데이터베이스
- MySQL (자동 백업 10분 주기 · 최근 10개 유지)
- 지오코딩
- Nominatim 기반 지오코딩·역지오코딩·최적 경로
- 배포 구성
- Docker Compose 3계층 (00_management / 01_database / 02_service)
