본문 바로가기

ABC 부트캠프

[2026 ABC 프로젝트 멘토링 1기] 프로젝트 4주차

📌 회차 정보

  • 기간: 2026.04.20 ~ 2026.04.29 (4주차, 시험기간 겸침)
  • 담당 파트: 백엔드 (BE1)
  • 스택: Spring Boot 4.x / Java 21 / PostgreSQL / JPA

드디어 시험이 끝났다...
다시 프로젝트에 집중하자.


들어가기 전에

이번 4주차는 새 기능 개발보다 코드 리뷰랑 설계 점검에 시간을 더 썼다.

대신 멘토님한테 피드백을 한 보따리 받아서 그거 정리하느라 머리는 계속 굴렸다. 이번 글은 회의록 + 피드백 반영 계획 느낌으로 정리한다.


1. 프로젝트 추진 상황

1~3주차에 완료한 기능들

지난 회차 이후로도 야금야금 작업은 했어서, 4주차 시작 시점에 백엔드 쪽은 이만큼 끝나 있다.

기능 상태

회원가입 / 로그인 (이메일 + 카카오) ✅
JWT 인증 (Access / Refresh Token) ✅
일기 CRUD ✅
중간기록(Segment) CRUD + 순서 변경 ✅
리포트 조회 ✅
이미지 업로드 ✅
사용자 설정 CRUD ✅

기능 자체는 거의 다 만들어둔 상태. 이제 남은 건 AI 연동이랑 자정 자동 생성 로직 정도.

4주차에 실제로 한 것

시험 핑계로 코드는 별로 안 짰지만 그래도 한 건 있다.

  • .env.example 템플릿 추가 (환경 설정 표준화)
  • 인증 시퀀스 다이어그램 직접 그려서 로직 재점검
  • DB 스키마 재검토 및 수정 사항 정리
  • 받은 피드백을 우선순위별로 분류 + 반영 계획 수립

손은 적게 움직이고 머리만 굴린 한 주였음.


2. 주요 이슈 & 해결 방안 — 멘토 피드백 정리

이번 주는 코드 이슈보다는 멘토님한테 받은 피드백을 어떻게 반영할지가 핵심이었다. 6가지 카테고리로 묶어서 정리한다.

1) 보안 및 환경 설정 표준화

피드백: .env 파일이 표준화되어 있지 않다. 암호화/솔트 알고리즘이 뭘 쓰는지 명확하지 않다. 인증 흐름을 시퀀스 차트로 직접 그려서 완벽히 이해할 것.

이건 좀 뜨끔했다. 솔직히 비밀번호 BCrypt 쓰고 있다 정도만 알지, 정확히 어떤 솔트가 어떻게 들어가는지는 두루뭉술하게 알고 있었음.

대응

  • .env.example 템플릿을 만들어서 팀원들이 환경 변수 통일하게 함
  • 비밀번호 암호화 방식(BCrypt) + 솔트 라운드를 README에 명시 (작업 중)
  • 로그인 → JWT 발급 → Refresh Token 갱신 → 카카오 인증 흐름을 시퀀스 다이어그램으로 직접 그림

시퀀스 다이어그램을 그려보니까 머릿속으로만 알던 흐름이 진짜 정리됐다. 남이 그려준 거 보는 거랑 직접 그리는 건 천지차이. 멘토님이 왜 직접 그리라고 했는지 알 것 같음.

2) 데이터베이스 설계 정밀화

피드백: user_id 타입이 BIGSERIAL로 과하게 설정되어 있으니 SERIAL로 적절하게 줄일 것.

user_id가 BIGSERIAL(8바이트)로 잡혀 있었는데, 서비스 규모 대비 과하다는 피드백을 받았다. SERIAL(4바이트, 약 21억)로 줄이는 게 맞다. user_id 타입을 BIGSERIAL -> SERIAL로 수정 완료

대응

  • user_id 타입을 Serial로 수정 중
  • 다중 이미지 저장용 테이블 구조 재설계 검토 (1:N 관계로 diary_images 분리)
  • DB 버전 관리 도입 논의 중

3) 핵심 로직 및 개발 범위 조정

피드백: 자정 기준으로 최종 일기를 자동 생성하는 로직을 도입할 것. 전화번호 인증은 비용·승인 문제로 제외.

원래는 사용자가 직접 "오늘의 최종 일기 작성" 버튼을 눌러야 했다. 근데 노년층이 매일 정확하게 그 버튼을 누른다는 게 비현실적이긴 함. 자정 기준 자동 생성으로 바꾸는 게 맞다.

대응

  • Spring @Scheduled로 자정 자동 생성 로직 설계 중
  • 전화번호 인증은 깨끗하게 제외 확정 (SMS 비용 + 본인인증 서비스 승인 절차가 학생 프로젝트에는 부담)
  • 전화번호 인증 대신 Gmail SMTP를 활용한 이메일 인증번호 방식으로 대체 구현 완료. 6자리 인증번호 발송 → 5분 유효 → 비밀번호 재설정 3단계 플로우.

4) 개발 도구 및 프론트 전략

피드백: Figma 'Make' 기능으로 React 코드 생성, 모바일 화면 우선 구현 후 코드 수정.

이건 프론트팀 영역이라 자세히는 안 적지만, 어쨌든 우리 팀 전반의 방향이 바뀐 거라 짧게라도 기록.

대응

  • 프론트팀에서 Figma Make로 CRUD 테스트 진행 중
  • 모바일 우선으로 화면 구성

5) 협업 및 형상 관리 규칙

피드백: 깃허브에 front 브랜치 별도로 분리하고, DB 버전 관리 도입.

대응

  • front 브랜치 분리 진행 중
  • DB 마이그레이션 도구(Flyway) 도입 검토 중

이건 솔직히 진작 했어야 했는데 미루다가 지적받은 거... DB 스키마 변경할 때마다 슬랙에 "DDL 좀 다시 돌려주세요" 하는 거 너무 비효율적이었음.

6) AI 최적화 및 검증

피드백: OpenRouter로 GPT, Claude, Gemini 등 다양한 모델을 테스트한 후 최종 모델 선정.

원래 OpenAI API만 붙이려고 했는데, OpenRouter 쓰면 한 번 세팅으로 여러 모델을 동시에 테스트할 수 있다는 점에서 합리적인 제안이었다.

 

대응

  • 시험 끝났으니 다음 주부터 본격 비교 테스트 시작
  • 비교 기준: 응답 품질(노년층 말투 자연스러움) + 비용(토큰당 가격)
  • 후보 모델: GPT, Claude

이 부분은 다음 회차에서 결과랑 같이 길게 풀어볼 예정.


3. 이번 주 배운 점

기능 하나 더 만드는 것보다, 이미 만들어둔 걸 다시 들여다보는 시간이 더 값졌다.

  • .env.example 같은 사소해 보이는 파일이 사실 협업의 시작이라는 거
  • 시퀀스 다이어그램은 직접 그려야 진짜 안다는 거
  • 학생 프로젝트라고 대충 넘기던 것들(DB 버전 관리, 환경 설정 표준화)이 사실은 진작에 했어야 할 기본기였다는 거

코드를 안 짜도 개발은 굴러갈 수 있구나, 라는 걸 새삼 느낀 한 주.


4. 앞으로의 계획

시험 끝(4/29) ~ 마감(5/10), 약 11일 남았다. 우선순위는 이렇게 잡았다.

순위 작업

1 피드백 반영 완료 (DB 재설계, 보안 강화)
2 OpenRouter로 모델 비교 → 선정
3 자정 기준 최종 일기 자동 생성 로직 구현
4 프론트엔드 연동 테스트
5 알림 서비스 + 배포

11일 안에 5개 다 끝낼 수 있을까... 일단 부딪혀 본다.


마무리

4주차는 시험 때문에 속도가 확 떨어진 주였다. 근데 받은 피드백을 정리해보니까 단순 기능 구현에서 끝나지 않고 보안·DB 설계·협업 규칙 같은 기반을 다질 수 있는 시간이었던 것 같다.