| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- java
- 백엔드
- spring
- 스프링부트
- 스프링
- BACK-END
- 코드 테스트
- web
- MySQL
- 데이터베이스
- Next.js
- 오라클
- 미니정리
- SQL
- 쿼리
- node.js
- 프런트엔드
- 서버
- 정리
- oracle
- jpa
- jsp
- 자바스크립트
- JavaScript
- 코드테스트
- 자바
- 디자인 패턴
- 프론트엔드
- 프로그래머스
- 알고리즘
- Today
- Total
참치코더의 꿈 메모장
웹 프로젝트 / 강아지 산책 서비스 (최종 정리) -완- 본문

이전에 했던 강아지 산책 서비스의 정리본 입니다.
약 2달 전에 진행했던 프로젝트이고, ReadMe 뿐만 아니라 블로그에 정리하는 것도 중요할것 같아 깃에 있던 내용을 정리해
재등록하게 되었습니다...!

배포 주소
- Git(프론트 엔드) : https://github.com/shincharl/Dog_Go_Frontend
- Git(백엔드) https://github.com/shincharl/Dog_Go_Backend
- 깃 내부에 연동 주소가 있습니다!!
GitHub - shincharl/Dog_Go_Backend: 강아지 산책 서비스 업로드용입니다. (백엔드)
강아지 산책 서비스 업로드용입니다. (백엔드). Contribute to shincharl/Dog_Go_Backend development by creating an account on GitHub.
github.com
GitHub - shincharl/Dog_Go_Frontend: 강아지 산책 서비스 업로드용입니다. (프런트엔드)
강아지 산책 서비스 업로드용입니다. (프런트엔드). Contribute to shincharl/Dog_Go_Frontend development by creating an account on GitHub.
github.com
Dog-Go
강아지 산책 예약 & 관리자 웹 서비스 개발기
프로젝트 개요
Dog-Go는 반려견 보호자와 산책 서비스를 연결하는 웹 기반 산책 예약 및 관리 서비스입니다.
단순한 CRUD 프로젝트를 넘어서, 실제 서비스 환경에서 발생하는 인증과 배포 이슈를 직접 경험하고 해결하는 것을 목표로
개발했습니다.
사용자와 관리자의 역할을 명확히 분리하였고,
Spring Security 기반 세션 인증(HttpSession) 구조를 중심으로 설계했습니다.
프론트엔드와 백엔드를 완전히 분리 배포하면서 CORS, 세션 유지, 인증 흐름 문제를 실제로 마주하고 해결한 경험을
담고 있습니다.
기술 스택
Frontend
- HTML5, CSS3
- JavaScript (ES6)
- React
- Axios
- Vite
- Vercel
Backend
- Java 21
- Spring Boot 3.5
- Spring Security
- Spring Data JPA
Database
- PostgreSQL (Railway)
Infra
- Railway (Backend, Database)
- Vercel (Frontend)
- HTTPS 기반 배포 환경 구성
주요 기능
사용자 기능
- 강아지 산책 예약
- 예약 상태 조회
- 날짜별 산책 결과 확인
- QnA 및 서비스 의견 등록
관리자 기능 (ROLE_ADMIN)
- 오늘 예약 / 만료 예약 조회
- 이벤트 신청 예약 관리
- 예약 상태 변경
- 산책 기록 작성 및 저장
- QnA 관리
인증 및 보안 구조
본 프로젝트는 JWT 방식이 아닌 HttpSession 기반 인증을 사용합니다.
이는 서버 중심 인증 구조에 대한 이해를 높이고, Spring Security 내부 동작을 깊이 있게 학습하기 위한 선택이었습니다
인증 흐름
- 사용자가 로그인 요청
- AuthenticationManager를 통한 사용자 인증
- 인증 성공 시 SecurityContext 생성
- HttpSessionSecurityContextRepository를 통해 인증 정보 세션에 저장
- 서버가 JSESSIONID 쿠키 반환
- 이후 요청은 세션 쿠키 기반으로 인증 처리
보안 설정 특징
- Spring Security 기반 접근 제어
- 관리자 API는 ROLE_ADMIN 권한 필수
- CORS 설정 시 allowCredentials=true 필수
- 프론트엔드 요청에 withCredentials 옵션 사용
- 실 배포 환경에서 발생한 세션 유지 문제 직접 해결
데이터베이스 설계
공통 엔티티 – BaseEntity
모든 주요 엔티티에서 상속받아 생성일과 수정일을 자동으로 관리합니다.
- 중복 코드 제거
- Auditing 기반 일관된 시간 관리
- 실무에서 자주 사용하는 공통 엔티티 구조 적용
핵심 도메인 설계
- Member: 사용자 및 관리자 정보
- Reservation: 산책 예약 정보
- Tracking: 산책 기록
- TrackingPhoto / TrackingTag: 산책 기록의 세부 요소
- Qna: 사용자 문의 및 피드백
예약 → 산책 진행 → 기록 저장이라는 실제 서비스 흐름을 기준으로
엔티티 간 관계를 설계했습니다.
Cascade와 orphanRemoval을 활용하여 데이터 무결성을 유지했고,
JSON 순환 참조 문제를 방지하기 위한 설정도 함께 적용했습니다.

시스템 아키텍처
- 프론트엔드 / 백엔드 완전 분리 구조
- 세션 기반 인증으로 서버 중심 보안 관리
- 실제 배포 환경에서의 인증 유지 문제 해결 경험
- Railway + Vercel 환경에서의 HTTPS 통신 구성
프로젝트를 통해 얻은 경험
이 프로젝트를 통해 다음과 같은 성장을 경험했습니다.
- Spring Security 인증 흐름에 대한 실질적인 이해
- SecurityContext와 HttpSession의 내부 동작 분석
- CORS와 세션 쿠키 문제를 직접 디버깅하고 해결
- 프론트엔드/백엔드 분리 배포 경험
- 관리자 권한 분리 및 접근 제어 설계 경험
특히, “로컬에서는 되는데 배포하면 안 되는 문제”를 하나씩 원인을 추적하며 해결한 경험은
개발자로서 문제 해결 능력을 크게 성장시켜 준 계기였습니다....
마무리하며
Dog-Go는 단순히 기능 구현에 그치지 않고,
실제 서비스 운영 환경과 과거 기술의 연동을 고려한 인증, 보안, 배포 경험을 목표로 한 프로젝트입니다.
아직 부족한 점도 많지만,
문제를 회피하지 않고 끝까지 원인을 파고들며 해결해 나가는 개발자가 되기 위해 노력했습니다. (특히.... CORS 문제...)
이 글이 저의 개발자로서의 포트폴리오와 다른 분들의 작은 참고 자료가 되기를 바라며,
앞으로도 더 나은 구조와 더 안정적인 서비스를 만들기 위해 계속 학습해 나가겠습니다.
읽어주셔서 감사합니다. ^^

'프로젝트' 카테고리의 다른 글
| 웹 프로젝트 / 나만의 홈 스쿨 개발해보기~~ (한달치 한번에 정리) -완- (0) | 2025.12.23 |
|---|---|
| 나만의 홈 스쿨 개발해보기~~ (3일차) (0) | 2025.12.01 |
| 나만의 홈 스쿨 개발해보기~~ (2일차) (0) | 2025.11.28 |
| 나만의 홈 스쿨 개발해보기~~ (1일차) (0) | 2025.11.26 |