https://my-app.com에 접속합니다.localhost:8080에서 실행 중인 Spring Boot 애플리케이션으로 전달합니다.JwtAuthenticationFilter가 Authorization 헤더의 JWT를 검증하여 인증을 처리합니다.@Valid로 유효성을 검증하고, 비즈니스 로직 처리를 Service에 위임합니다.@Transactional 하에 비즈니스 로직을 수행하고, JPA Repository를 통해 데이터베이스와 상호작용합니다.@RestControllerAdvice가 중간에 발생하는 예외를 전역적으로 처리하여 일관된 에러 응답을 보냅니다.| 기술/개념 | 역할 | 왜 사용했는가? |
|---|---|---|
| Spring Boot | 애플리케이션의 핵심 프레임워크 | 자동 구성, 내장 WAS 등으로 Java 웹 개발을 빠르고 간편하게 만들어 줌. |
| Spring Data JPA | 데이터 영속성 관리 | JpaRepository를 통해 반복적인 CRUD 코드를 제거하고, 객체 지향적으로 DB를 다룰 수 있게 함. |
| Spring Security | 인증(Authentication) 및 인가(Authorization) | 필터 기반으로 동작하여, 선언적인 방식으로 애플리케이션의 보안을 강력하게 제어. |
| JWT | Stateless 인증 토큰 | 세션 방식의 한계를 극복하고, 서버 확장성 및 MSA 환경에 유리한 인증 방식. |
| DTO (Data Transfer Object) | 계층 간 데이터 전달 | Entity를 보호하고, API 스펙을 안정적으로 유지하며, 무한 루프를 방지. |
| Nginx | 리버스 프록시 웹 서버 | SSL 처리(Offloading), 로드 밸런싱, 무중단 배포의 기반을 마련하여 WAS를 보호하고 성능을 향상. |
| AWS EC2 / RDS | 클라우드 인프라 | 애플리케이션 서버(EC2)와 데이터베이스 서버(RDS)를 분리하여, 관리 효율성과 확장성을 높임. |
| Swagger (OpenAPI) | API 문서 자동화 | 코드 기반으로 항상 최신 상태의 API 문서를 유지하여, 협업 효율성을 극대화. |
| CI/CD (GitHub Actions) | 빌드/배포 자동화 | Git 푸시만으로 테스트, 빌드, 배포 전 과정을 자동화하여, 신속하고 안정적인 서비스 제공. |
@Transactional, @Cacheable, @Scheduled)들이 AOP를 통해 어떻게 복잡한 로직을 단순화시키는지 이해했습니다.이번 프로젝트를 통해, 단순히 Java와 Spring 문법을 아는 것을 넘어, 하나의 웹 서비스가 탄생하고 운영되기까지 필요한 Full-Stack 기술 요소들을 종합적으로 경험할 수 있었습니다. 특히, 애플리케이션 코드뿐만 아니라 이를 둘러싼 인프라, 배포, 보안, 모니터링의 중요성을 깨닫는 계기가 되었습니다. 앞으로는 부족했던 테스트와 성능 최적화 부분을 보강하고, 컨테이너 오케스트레이션과 같은 클라우드 네이티브 기술을 더 깊이 학습하여, 더 안정적이고 확장성 있는 시스템을 설계하고 구축하는 역량을 키워나가야겠습니다.