반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
Tags
- 네트워크
- 딥러닝
- 클라우드컴퓨팅
- 파이썬
- 컴퓨터과학
- 보안
- 소프트웨어
- 자료구조
- 자바스크립트
- 빅데이터
- 소프트웨어공학
- 버전관리
- 프로그래밍언어
- I'm Sorry
- 데이터구조
- 알고리즘
- 프로그래밍
- 웹개발
- 사이버보안
- 데이터과학
- 컴퓨터비전
- 머신러닝
- springboot
- Yes
- 컴퓨터공학
- 데이터베이스
- 네트워크보안
- 디자인패턴
- 데이터분석
- 인공지능
Archives
- Today
- Total
스택큐힙리스트
자바 스프링 개발 시작하기 - 15일차 실전 프로젝트 완주 본문
반응형
클린 코드로 마무리하는 To-Do API 리팩터링
드디어 실전 프로젝트 마지막 날입니다.
그동안 만들어온 To-Do API를 클린 코드 기준으로 리팩터링하고, Swagger로 문서화까지 마무리해보겠습니다.
✅ 모듈 통합 & 코드 리뷰
To-Do 프로젝트는 다음과 같은 구조로 구성되어 있었습니다:
- Controller: 클라이언트 요청을 받음
- Service: 비즈니스 로직 처리
- Repository: DB와의 통신 담당
- DTO: 계층 간 데이터 전달 객체
마지막 단계에서는 전체 코드를 정리하며 다음 기준으로 리팩터링을 진행했습니다:
- 메서드 책임 분리: 하나의 메서드는 하나의 일만 하도록
- 네이밍 통일성 확보: 직관적인 이름으로 명확히
- 중복 제거: 반복되는 코드는 유틸리티로 추출
- 예외 처리 일관성: 커스텀 예외 + 전역 핸들러 활용
- 응답 포맷 통일: ApiResponse<T> 형식으로 JSON 응답 일관화
이 과정을 통해 협업 가능한 코드, 유지보수 쉬운 코드로 발전시켰습니다.
📘 Swagger/OpenAPI로 API 문서 자동화
API를 개발했다면, 문서화는 필수입니다.
스프링 환경에서는 SpringDoc + OpenAPI 조합이 가장 많이 사용됩니다.
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.2'
설정만 추가하면 /swagger-ui/index.html 주소에서 자동으로 문서를 확인할 수 있습니다.
아래 내용을 문서에 포함시켜야 실용적입니다:
- 요청/응답 스펙
- HTTP Method
- Path Variable 및 Query Parameter 설명
- HTTP Status 코드 의미
추가로 @Operation, @Parameter, @Schema 같은 어노테이션을 활용해 더 정교하게 문서를 다듬을 수 있습니다.
🚀 최종 배포까지
마지막 단계는 프로덕션 서버에 배포입니다.
이전 배포 자동화 파트에서 만든 GitHub Actions 워크플로우를 통해 브랜치 머지 시 자동 배포되도록 구성해 두었다면, 이제 코드 Push만 해도 서버가 자동으로 갱신됩니다.
프로젝트 배포 후 확인사항:
- Swagger 문서에 실제 서버 주소 반영 여부
- CORS 설정
- API 정상 작동 여부
- 로깅/모니터링 도구 연동 여부 (Actuator 등)
🎯 마무리하며
15일간의 여정을 통해 단순한 자바 문법부터 시작해서
진짜 동작하는 To-Do 애플리케이션을 직접 만들어보고 배포까지 경험했습니다.
이제 여러분의 프로젝트에 클린 코드, TDD, 보안, 문서화, 배포 자동화 등의 기술을 실전처럼 녹여낼 수 있을 거예요.
다음은 이 프로젝트를 더 확장해나가기 위한 파생 주제들입니다👇
반응형
'개발' 카테고리의 다른 글
명령을 객체로! 커맨드 패턴으로 유연한 실행 로직 만들기 🚀 (1) | 2025.07.23 |
---|---|
프론트엔드와 API 통합 테스트 전략 (2) | 2025.07.23 |
Template Method 패턴: “뼈대는 내가 잡을게, 살은 네가 붙여” (0) | 2025.07.23 |
State 패턴: if-else 없이 굴러가는 ‘상태 머신’의 힘 (1) | 2025.07.23 |
Spring Boot 실시간 채팅 서버 만들기 — WebSocket + STOMP, 하트비트까지 완전 정복 (1) | 2025.07.23 |
Comments