도보 길찾기 서버를 OSRM, ORM으로 개발을 시도했으나 도커를 올리는 과정에서 C++ 버전 이슈로 아주 많은 에러가 발생했다.
우선 1차적인 목표는 어플리케이션의 완성이니, 개발 스펙을 줄여서 진행하기로 하였다.

이런식으로
1. 클라이언트가 출발 위경도, 도착 위경도를 보내면
2. 반경 내 일정거리에 해당하는 만큼의 위험구역 DB를 조회한다.
3. 동시에 T MAP 도보 길찾기 API를 호출하여
4. 위험구역을 지나는 길을 체크해 Response를 변형한 후
5. 클라이언트에 반환한다.
이를 위해서 사전에 준비되어야 하는 세팅은 다음과 같다.
Spring Boot Starter Web
이 종속성은 Spring Boot에서 웹 애플리케이션을 구축하는 데 필요한 라이브러리.
HTTP 요청 및 응답 처리를 포함하기 위함.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot Starter Data JPA
Spring Data JPA를 사용하여 관계형 데이터베이스와 상호 작용할 계획이기 때문에 추가.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
Spring Boot Starter Test
Spring Boot 애플리케이션을 테스트하기 위한 라이브러리.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
요구사항 분석
지금은 위험구역 유무만 판단하는 것이 목표지만, 추후에는 어떠한 데이터가 들어와도 처리하는 흐름으로 개발을 진행하고 싶다.
그리고 실시간으로 데이터 스트리밍이 가능한 개발을 해보고 싶다.
(지금 스펙으로는 오버스펙이라고 생각될 수도 있지만, 확장가능성을 충분히 열어두고 싶다. 개발은 현재진행형이니 !)
그래서 선정한 것은
PostgreSQL
PostgreSQL은 대규모 데이터 처리에 적합한 데이터베이스이다. 뛰어난 확장성과 성능을 제공하며, 다양한 데이터 형식을 처리할 수 있다. JSON, XML 등 다양한 형태의 데이터를 저장하고 쿼리할 수 있다.
(추후 도입) 실시간 데이터 스트리밍이 가능한 시스템
Apache Kafka
Kafka는 대규모 실시간 데이터 스트리밍을 위한 분산 메시징 시스템. 이벤트 기반 아키텍처를 구축하여 데이터를 효율적으로 처리할 수 있다. PostgreSQL 또는 MySQL과 연계하여 실시간 데이터를 처리할 수 있다.
도보 길을 저장하는 것은 일반적으로 정형화된 형식으로 저장될 수 있다. 예를 들어, 도보 길의 출발지와 도착지 좌표, 도보 경로의 세부 정보(도로 이름, 거리, 방향 등)를 포함하는 데이터를 저장한다.
정형 데이터는 고정된 스키마에 따라 구조화된 형식으로 저장됩니다. 위 예시에서는 도보 길의 출발지와 도착지 좌표를 정수형이나 실수형으로 저장할 수 있고, 도로 이름과 거리는 문자열로 저장할 수 있다. 이러한 데이터는 관계형 데이터베이스나 PostgreSQL과 같은 RDBMS를 사용하여 효과적으로 저장하고 쿼리할 수 있다.
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
우선 이렇게 진행을 해보겠다.