-
Notifications
You must be signed in to change notification settings - Fork 1
기술 스택 선정 이유
su6net edited this page Jun 5, 2024
·
2 revisions
- 2.x 버전은 이미 2023년 11월 24일을 기준으로 무료 버전의 지원이 중단되었습니다. 이는 보안 업데이트와 버그 수정이 제공되지 않음을 의미합니다.
- 2.x 버전을 선택할 경우, 얼마 지나지 않아 3.x 버전으로 마이그레이션해야 하는 부담이 발생합니다.
- 이는 개발 리소스와 시간을 추가로 소모하게 하며, 시스템 안정성에도 영향을 미칠 수 있습니다.
- Spring Boot 3.x 부터는 Java 17 이상이 필요합니다.
- 자바 21은 가상 스레드를 도입하여 동시성 프로그래밍을 단순화하고 효율성을 크게 향상시킬 수 있다고 판단했습니다.
- 자바 21의 Generational ZGC는 GC 중단 시간을 줄여 성능을 최적화하고, 더 나은 메모리 관리와 처리량을 제공하기에 선택했습니다.
- 자바 21은 최신 LTS 버전으로서 패턴 매칭 등의 최신 기능을 제공하며, 장기적인 지원과 안정성을 보장할 수 있어 선택했습니다.
-
MariaDB 선택 이유
- 현재 서비스에 그렇게 복잡한 쿼리나 높은 성능이 필요하지 않아 적합하다고 생각했습니다.
- MySQL과의 높은 호환성으로 팀원들이 쉽게 적응 가능할 수 있었습니다.
- 가벼운 리소스 사용량으로 한정된 서버 자원 내에서 효율적으로 운영할 수 있습니다.
-
단계별 접근 방식
- 초기 프로젝트는 MariaDB로 시작하고, 데이터베이스 요구가 늘어나면 PostgreSQL로 마이그레이션 고려하고 있습니다.
-
Spring Data JPA 선택 이유
- 기본적인 CRUD와 쿼리 메서드 기능을 통한 생산성 향상 이점이 있다고 생각했습니다.
- 일관성 있는 데이터 접근 방식을 통해 코드의 가독성을 높이고 팀원들이 쉽게 이해하고 협업할 수 있습니다.
- 다양한 데이터베이스 벤더를 지원하기 때문에 저희가 계획한 개발 초기 H2 DB 사용, 이후 운영 환경에서 MariaDB로 통합, 추후 필요 시 PostgreSQL 등으로 마이그레이션을 쉽게 진행할 수 있다고 판단하였습니다.
-
Lombok 선택 이유
- 다양한 기능을 제공하는 어노테이션을 통해 보일러플레이트 코드 감소, 코드 가독성 향상, @Builder를 사용하여 빌더 패턴을 쉽게 구현 등 빠르고 간편하게 개발을 진행할 수 있다고 생각하였습니다.
-
Spring Security 선택 이유
- 인증, 인가, 암호화 그리고 기타 보안 기능을 통합하여 제공함으로써 여러 개별 라이브러리를 사용하는 것보다 관리와 유지보수가 용이하다고 생각하였습니다.
- CSRF 방지, 세션 관리 등의 기능을 제공하여 사용자 정보를 안전하게 보호할 수 있다고 생각하였습니다.
- 직접 구현하는 방식은 초기에 예상 못한 다양한 이슈들에 대해서 직접 대응을 해야합니다. 나중에는 프레임워크의 학습 비용보다 더욱 많은 리소스가 발생할 수 있다고 생각했습니다.