[DATT] Spring Batch 기반 공공데이터 장소 동기화 구조 설계
개요 DATT 프로젝트에서는 장소(Place) 데이터를 직접 관리하기 위해 소상공인시장진흥공단 공공데이터 API를 기반으로 Batch 동기화 구조를 설계했다. 초기에는 CSV 기반 적재를 고려했지만, 실시간성·확장성·운영 편의성을 고려하여 최종적으로 공공 API 기반 구조를 선택했다. 이번 글에서는 다음 내용을 정리한다. Spri...
개요 DATT 프로젝트에서는 장소(Place) 데이터를 직접 관리하기 위해 소상공인시장진흥공단 공공데이터 API를 기반으로 Batch 동기화 구조를 설계했다. 초기에는 CSV 기반 적재를 고려했지만, 실시간성·확장성·운영 편의성을 고려하여 최종적으로 공공 API 기반 구조를 선택했다. 이번 글에서는 다음 내용을 정리한다. Spri...
Java Thread, synchronized, volatile, Atomic 학습 목표 이번 주제의 핵심은 단순히: “멀티스레드는 동시에 실행된다” 수준이 아니다. 실무에서는 반드시 아래를 설명할 수 있어야 한다. Race Condition은 왜 발생하는가? synchronized는 정확히 무엇을 보...
개요 DATT 프로젝트 2주차에서는 장소(Place) 도메인 및 검색 구조를 중심으로 설계를 진행하였다. 1주차에서는 인증/보안 기반 구조를 구축하였다면, 2주차부터는 실제 서비스 핵심 데이터인 장소 데이터를 어떻게 저장하고 검색할 것인지에 대한 구조 설계가 핵심이었다. 특히 이번 작업에서는 다음 내용을 중심으로 정리하였다. 공공데이터 기...
Spring Bean Lifecycle Deep Dive 학습 목표 이번 주제의 핵심은 단순히: “Spring이 객체를 생성한다” 수준이 아니다. 실무에서는 반드시 아래를 설명할 수 있어야 한다. Spring Container는 정확히 무엇인가? Bean은 어떻게 생성되는가? DI는 ...
개요 DATT 프로젝트 1주차 5일차에서는 Refresh Token 기반 인증 유지 구조를 구현하였다. 이전까지는 Access Token 기반 인증만 존재했지만, Access Token만 사용하는 구조에는 한계가 존재한다. 이번 작업에서는 다음 내용을 중심으로 구현 및 정리하였다. Refresh Token 도입 이유 JWT 재발급(Re...
개요 DATT 프로젝트 1주차 4일차에서는 회원가입 및 로그인 API를 구현하였다. 이번 작업의 핵심은 단순 로그인 기능 구현이 아니라, JWT 기반 인증 흐름을 실제 서비스 구조에 맞게 구성하는 것이었다. 특히 다음 요소들을 중심으로 설계하였다. BCrypt 기반 비밀번호 암호화 Validation 기반 입력 검증 JWT Acce...
개요 DATT 프로젝트 1주차 3일차에서는 Spring Security 기반의 JWT 인증 구조를 구축했다. 기존 Session 기반 인증이 아닌 Stateless Authentication 구조를 선택했으며, Access Token 기반 인증 흐름과 SecurityContext 기반 인증 처리 구조를 직접 구현하였다. 이번 작업의 목표는 단순 ...
개요 DATT v2 프로젝트의 두 번째 단계에서는: Flyway 기반 DB Migration 관리 BaseEntity 설계 JPA Auditing 적용 Member 도메인 초기 구조 를 구축했다. 이번 단계의 핵심 목표는 단순 CRUD 구현이 아니었다. 오히려: DB 변경 이력을 어떻게 관리할 것인가? Entity...
개요 DATT v2 프로젝트를 새롭게 시작하면서 가장 먼저 고민한 것은 기능 구현이 아니었다. 오히려 먼저 고민한 것은: 응답 구조를 어떻게 통일할 것인가? 예외를 어떻게 처리할 것인가? 운영 시 로그를 어떻게 추적할 것인가? 였다. 많은 개인 프로젝트들이 기능 구현 자체에만 집중한다. 하지만 실제 운영 환경에서는 기능보다 더...
DATT v2 패키지 구조 설계 설계 목표 DATT v2는 단순 CRUD 프로젝트가 아니라 다음 기능을 포함하는 위치 기반 기록 플랫폼이다. 회원가입 및 JWT 인증 공공데이터 기반 장소 관리 장소 그룹화 Anchor 기록 이미지 업로드 리뷰 및 평점 장소 컬렉션 공유 게임화 배치 처리 따라서 패키지 구조...