1. 들어가며이전 포스트에서 엔티티를 구현하는 과정을 거쳤다. 물론 22개의 ERD에 따라 모든 엔티티를 구현하지는 않았다. 우리가 기능단위로 개발을 진행하니 구현이 필요할 때 작업할 예정이다. 그보다 이번에는 DataJPA를 사용하는 Repository 계층을 구현하고 테스트를 작성하였던 과정과 그 과정에서 겪었던 문제들과 해결방법을 소개하려고 한다.2. 기술 선정: 왜 Spring Data JPA인가?프로젝트의 핵심은 유저와 디지털 카드 데이터를 효율적으로 관리하는 것이다. 이를 위해 Spring Data JPA를 선택했다.JPA (Java Persistence API)란?JPA는 자바 애플리케이션에서 관계형 데이터베이스(RDBMS)를 사용하는 방식을 정의한 인터페이스(표준 명세)다. 과거에는 SQL..
1. 들어가며지난 포스팅에서 마플샵과 차별화된 디지털 굿즈 플랫폼 Universe Pick의 DB 설계를 진행했다. 총 22개의 테이블이 나왔고, 이제 이 설계도를 실제 Spring Boot(JPA) 엔티티 코드로 옮기는 작업을 진행하겠다. 모든 테이블을 설명하면 내용이 너무 많아 일단 이번 편에서는 member와 관련된 테이블들을 구현하겠다. 단순히 테이블을 매핑하는 것이 아니라, "안전한 객체 사용"과 "데이터 무결성"을 위해 적용한 몇 가지 JPA Best Practice와 설계 의도를 기록한다.2. 개발 환경 세팅 (Docker + Spring Boot)로컬 DB 설치의 번거로움을 줄이기 위해 Docker Compose를 사용했다. PostgreSQL 15 버전을 컨테이너로 띄우고, Spring ..
분산 파일 시스템의 고전인 NFS가 '단순함'을 택했다면, 카네기 멜론 대학교(CMU)에서 개발한 AFS는 수천 대의 클라이언트를 수용할 수 있는 '확장성(Scalability)'에 모든 사활을 걸었다.1. AFS의 핵심 설계 철학: 확장성 (Scalability)NFSv2는 클라이언트가 늘어날수록 서버에 "이 파일 최신이야?"라고 묻는 요청(GETATTR)이 폭증하여 서버가 마비되는 문제가 있었다. AFS 연구진은 다음 두 가지 질문에 집중했다."어떻게 하면 서버 한 대가 더 많은 클라이언트를 감당할 수 있을까?""클라이언트가 최대한 스스로 일을 처리하게 할 순 없을까?"2. 전체 파일 캐싱 (Whole-file Caching)AFS의 가장 큰 특징은 데이터 접근 방식입니다. 블록 단위로 가져오는 NF..
1. 들어가며현재 사이드 프로젝트로 크리에이터 디지털 굿즈(포토카드) 플랫폼을 개발하고 있다. 오늘은 개발의 첫 단추이자 가장 중요한 단계 중 하나인 DB 모델링(ERD)과 Spring Boot 프로젝트 초기 설정을 진행했다. 단순히 테이블을 만들고 서버를 띄우는 것이 아니라, 확장성과 데이터 무결성을 최우선으로 고려하며 설계한 과정과 그 이유를 기록한다.2. DB 모델링: 왜 이렇게 설계했는가? 전체 도메인을 회원(Auth), 상점(Store), 결제(Commerce), 게임(Synthesis), 전시(Exhibition), 운영(Operation) 6개 영역으로 모듈화하여 총 22개의 테이블을 설계했다. 이 과정에서 고민했던 핵심 기술 포인트는 다음과 같다.① PostgreSQL JSONB의 활용 R..
스프링 부트에서 데이터 베이스 설정이나 여러 설정을 하는 applicaion.yaml 에는 수천 개의 속성이 존재하는 것 같다.https://docs.spring.io/spring-boot/appendix/application-properties/index.html Common Application Properties :: Spring Boot docs.spring.io많아도 너무 많다 그런데 그 걸 다 알고 있는 것은 말도 안 되는 일이다. 실제 현업 프로젝트에서도 자주 사용되는 속성은 몇 개 안 될 것 같다. 그렇다면 일단 자주 사용되는 속성을 몇 개 정리해 두고 필요할 때 다시 꺼내 보는 용도로 정리를 하려고 한다.1. 기본 서버 설정가장 기본이 되는 애플리케이션 식별 정보와, 최신 Java 버전을..
분산 파일 시스템은 여러 대의 머신이 하나의 파일 시스템을 함께 쓰는 것을 목표로 한다. 한 머신에서 보던 파일과 디렉터리를 다른 머신에서도 같은 방식으로 접근하게 만들어 “어디서 접속하든 같은 파일을 쓰는 환경”을 제공한다.이 방식의 가장 큰 가치는 공유에 있다. 파일이 특정 클라이언트의 로컬 디스크에 갇히지 않고 서버 쪽에 놓이므로, 여러 클라이언트가 같은 데이터를 기준으로 작업하게 된다. 결과적으로 팀 단위 작업이나 여러 머신을 오가며 일하는 환경에서 데이터가 흩어지지 않는다.운영 측면에서도 이점이 생긴다. 데이터가 서버에 모이므로 관리가 중앙집중화된다. 백업 같은 작업을 모든 클라이언트에서 각각 처리하지 않고, 소수의 서버를 대상으로 수행하게 된다.보안 측면의 동기도 존재한다. 데이터가 저장된 서..