기술스택 |
상세내용 |
버전 |
선정 이유 |
Java |
Java |
17 |
- LTS(Long-Term Support) |
- Stream.toList() 사용 가능
- Text Block으로 인한 긴 문자열 가독성 향상
- recode class 키워드 사용 가능 |
| Logging | Logback | | - Log4j 에 비해 향상된 필터링 정책
- 기능, 로그 레벨 변경 등에 대해 서버를 재시작할 필요 없이 자동 리로딩 지원
- Spring Boot에 내장되어 의존성 추가할 필요 없음 |
| Spring | Spring Boot | 3.3.1 | - Java 17을 사용하기 위해 |
| | JPA / Spring Data JPA | - | - 쿼리 메서드 사용
- JPQL 사용 가능
- DB 종속성 제거 |
| | RESTClient | - | - 높은 가독성
- fluent API이므로 메서드 체이닝 가능 |
| Lombok | Lombok | - | - 보일러 플레이트 코드 제거 |
| Test | Junit | 5 | - @ParameterizedTest, @DisplayName 등 다양한 애너테이션 사용 가능
- Junit4보다 개선된 버전으로 테스트 용이한 추가 기능 제공
- 익숙한 사용 |
| | REST Assured | - | - controller의 통합 테스트를 위해 |
| | MockMvc | - | - controller의 mock 테스트 위해 |
| DB | MySQL | - | - 풍부한 참고 자료
- 가장 널리 사용되고 있는 관계형 데이터베이스 관리 시스템 |
| | H2 | - | - 운영 서버와 테스트 서버 격리
- 메모리 사용으로 빠른 테스트 |
| | RDS | - | - 팀원과의 DB 환경 공유 |
| API Docs | Swagger | 3 | - 안드로이드 팀원들의 익숙함 및 별도의 mock server 생성 불필요
- 문서 자동화로 인한 업데이트 용이
- spring boot 3과 높은 호환성
- 유지 보수 대상에서 제외된 springfox |
| Infra | AWS EC2 | - | - 우테코의 금전적 지원 💸
- 풍부한 참고 자료 |
| | Github Actions | - | - 친숙한 문법의 YAML 파일로 간단하게 파이프라인 구성 가능
- GitHub과 하나로 통일된 환경에서 CI/CD 수행 가능
- 쉬운 접근성 |
| | Docker, Docker Hub | - | - 무료 서비스 (CodeDeploy 사용을 위해서는 유료 S3 서비스 필요)
- 하나의 EC2 인스턴스를 여러 컨테이너로 분리하여 관리할 수 있음
- 배포 서버 PC와 개발 PC의 환경을 간편하게 일치시킬 수 있음 |
| | AWS CloudWatch | - | - 로그, 매트릭 모니터링 도구
- 낮은 러닝커브
- AWS EC2 인스턴스를 사용한다면, 간편하게 대시보드 구성 가능 |
| IDE | IntelliJ | - | - 익숙한 사용
- 편리한 부가기능
- 세련된 디자인 |
| Build | Gradle | - | - 안드로이드 프로젝트 표준 빌드 시스템
- 타 빌드 시스템에 비해 빠른 빌드 속도
- 높은 가독성 |
기술 선택 이유