Skip to content

[BE] 기술 스택

이충렬(트레) edited this page Jul 12, 2024 · 3 revisions

1. Spring Boot 3.3.x

image

https://spring.io/projects/spring-boot#support

  • Spring Boot 2.x 버전의 경우, 이미 지원 기간이 종료되었기 때문에 고려하지 않았다.
  • Spring Boot 3.2.x 버전의 경우, 2024-11-23 일자로 지원이 종료되므로 지원 기간이 조금 더 넉넉한 3.3.x 버전을 선택했다.

2. Java 17

  • Spring Boot 3.x를 사용하려면 Java 17 이상의 버전을 사용해야 한다.
  • LTS 버전인 Java 17과 Java 21를 후보로 고려했으나, 아래와 같은 이유로 Java 17을 선택했다.
    • Java 21에 익숙하지 않기 때문에 특정 팀원이 Java 21에서 추가된 기능을 사용한다면, 팀원 간 지식 격차를 좁히기 위한 추가 학습이 필요할 수 있다. (→ 리소스)
    • Java 21에서 추가될 기능을 당장 프로젝트에서 사용해야 할 필요성을 느끼지 못했다.
    • 추후 Java 버전의 변경이 필요한 경우, 17 → 21 로의 마이그레이션이 21 → 17로의 다운그레이드 보다 용이할 것이라고 예상했다.

3. DBMS

H2 (local 환경)

  • 별도의 프로그램 없이 웹브라우저 기반으로 DB 콘솔에 접속할 수 있고 용량이 매우 가벼워서 손쉽게 테스트 DB 환경을 구축할 수 있다.
  • 세부 기능 기획이 확정되고 베타 버전 배포 시, MySQL, MariaDB 등의 RDBMS 도입을 고려하고 있다.

MySQL (dev 환경)

  • 가장 많이 사용되는 RDBMS 중 하나이기 때문에 레퍼런스가 많다.
  • 용량 차지가 적어 손쉽게 사용할 수 있다.
  • 읽기 성능이 최적화되어 있다.
  • 백엔드 팀원 모두 사용 경험이 있다.

4. S3(AWS)

  • 이미지 저장을 위해 사용
  • DB에 저장해도 되지만 바이너리데이터로 변환하여 DB에 저장하는 것은 많은 용량 차지와 성능저하를 일으킬 것
  • AWS 웹에서 쉽게 업로드, 관리 가능

5. Logging - Logback

  • 부트 3.x 버전에서는 Logging 라이브러리로 Logback을 사용하고 있다.
  • Logback은 구성이 필요 없고, 별다른 의존성 추가 없이 사용할 수 있다.
  • 대체재로 Apache Log4j2가 있다. Lazy evaluation 등을 통해 멀티 스레드 환경에서 성능을 개선한 구현체이지만, 필요성을 크게 느끼지 못했다.

6. 문서화 도구 - Spring REST Docs + Swagger

  • 안드로이드 팀에서는 웹에서 API를 테스트할 수 있는 환경을 제공한다는 점에서 Swagger를 선호한다.
  • Swagger만 사용하는 경우 프로덕션 코드가 지저분해질 수 있다는 문제점이 있다. 이를 해결하기 위해 Spring REST Docs와 함께 사용한다.
Clone this wiki locally