Day 35 클라우드 과제

정채림·2026년 3월 11일

1. 오늘 한 작업 (Today's Tasks)

✅ 팀원 정보 저장 및 조회 API 구현

POST /api/members: 팀원 이름, 나이, MBTI 정보를 JSON으로 받아 DB에 저장.

GET /api/members/{id}: 고유 식별자(ID)를 통해 팀원 상세 정보 조회.

✅ 계층별 아키텍처 설계 (Layered Architecture)

Entity: JPA를 이용해 DB 테이블과 매핑 (Member).

DTO: 데이터 전송 객체 분리 (MemberRequest, MemberResponse)하여 엔티티 보호.

Repository: Spring Data JPA 인터페이스 구현.

Service: 비즈니스 로직 처리 및 @Transactional 적용.

Controller: REST 엔드포인트 구현 및 HTTP 상태 코드(201, 200) 반환.

✅ 환경별 설정 분리 (Profile Management)

application.yml을 활용해 Local(H2)과 Prod(MySQL) 환경 분리.

${DB_NAME:testdb} 형식을 사용하여 환경변수를 통한 동적 DB 연결 설정.

2. 트러블슈팅 (Troubleshooting)

🚀 Issue 1: 예외 발생 시 불친절한 에러 응답

문제점: 존재하지 않는 ID 조회 시 500 에러가 발생하거나, Spring Boot 기본 에러 페이지(White Label Error Page)가 노출되어 클라이언트가 원인을 파악하기 어려움.

해결 방안:

@RestControllerAdvice를 사용한 전역 예외 처리기(GlobalExceptionHandler) 도입.

ErrorResponse DTO를 정의하여 에러 코드와 메시지를 공통 규격으로 반환하도록 개선.

결과: 예외 발생 시 시스템의 안정성을 높이고, 프론트엔드와 명확한 에러 소통 가능.

🚀 Issue 2: 로그 추적의 어려움

문제점: API 호출 성공 여부나 에러 발생 지점을 콘솔에서 확인하기 위해 매번 System.out.println을 쓸 수 없으며, 에러 발생 시 원인(Stack Trace) 파악이 힘듦.

해결 방안:

Slf4j를 도입하여 로그 레벨(INFO, ERROR)별 전략 수립.

결과: 운영 환경에서 문제 발생 시 로그만으로 빠른 원인 파악이 가능해짐.

0개의 댓글