Conversation
- 프로젝트 기본 구조 확립 - 도메인 레이어 (domain) 추가 - 프레젠테이션 레이어 (presentation) 구성 - 공통 응답 및 예외 처리 모듈 (core) 생성 - 웹 설정을 위한 common.config 패키지 추가 아키텍처 구조: - domain: 도메인 엔티티 클래스 - presentation: API 컨트롤러 및 DTO - repository: 데이터 접근 계층 - service: 비즈니스 로직 계층 - core: 공통 응답, 예외 처리
ApiResponse -> SuccessResponse
response -> exception
- 성공 응답 : SuccessResponse - 실패 응답 : ErrorResponse
- 요구사항에 적힌 에러를 미리 구현, 이후 수정해서 사용 예정
- BusinessException - CustomErrorCode - GlobalExceptionHandler
- max-connection 5로 제한
재사용성을 높이기 위해 기존 CustomErrorCode에서 Code, Message 분리
GlobalExceptionHandler의 복잡한 로직을 줄이기 위한 전략 방식 사용
…adle implementation 정리
절대경로 -> 상대경로(./logs)
- Origin 모두 허용 (OPEN API 고려) - Method GET만 허용 - Header x-api-key, Accept만 허용 - Credentials false 설정
|
프로젝트 구조 |
코드 철학
API 설계에 대한 철학
|
응답 값을 설계한 이유프론트엔드 개발을 경험하면서, API 응답이 변하면 프론트엔드 코드에서도 많은 수정이 필요하다는 점을 여러 번 경험 했습니다. ✅ 성공 응답 (
|
로그 정책로그 정책을 처음 세워보면서 고민이 많았고, 기존에 배포했던 경험을 바탕으로 여러 자료를 조사하여 정책을 설계했습니다. 일반 애플리케이션 로그
에러 로그
설정 이유EC2 프리티어 환경과 자주 사용되는 로그 정책을 고려하여 설정하였습니다.
|
라이브러리 선택 이유📌 Spring Boot 3.4.2 선택 이유
📌 주요 라이브러리 및 선택 이유1️⃣ Spring Boot Starter 라이브러리
2️⃣ 데이터베이스 및 JPA
3️⃣ Lombok
4️⃣ API 문서화 및 응답 데이터 처리
5️⃣ API 성능 및 안정성 강화
|
사전과제 회고📌 꾸준한 학습의 중요성최근 반년간 프론트엔드 중심으로 개발을 진행하며, 백엔드는 Express.js만 사용하다 보니 익숙했던 Spring의 설정부터 개발까지 어려움을 겪었다. 특히, 기존에 Java 1.8 + Spring Boot 2.7 환경에 익숙해져 있어, 최신 버전인 Java 17 + Spring Boot 3.2.4를 사용하는 데 있어서 최신 기능을 제대로 활용하지 못했다. 몇년동안 스프링밖에 안 했는데 고작 반년 안 했다고 스프링 개발이 어색할 거라고는 상상조차 못했다. 빠른 제출보다는 Spring을 처음부터 다시 학습한다는 마음으로 접근했고, 과거 프로젝트에서 사용했던 구조를 최신 버전에 맞게 리팩토링하는 과정에 집중했다. 이 과정에서 스프링 개발도 최신 버전을 학습하는 게 이렇게 중요한지 몰랐다. 앞으로는 개발만 하는 게 아니라 공부를 많이많이 해야겠다. 시간이 부족해 더 나은 코드를 구현하지 못한 점이 아쉽지만,앞으로 더 열심히 해야하는 이유를 다시금 되새길 수 있었다. |
진행상황
완료
필수: API 디자인필수: 유효성 검사필수: API 응답 값옵션: Custom Exception옵션: API Throttling옵션: 응답 형식미완
옵션: Test Code
옵션: 배포 후 녹화 및 댓글에 적용