-
Notifications
You must be signed in to change notification settings - Fork 4
백엔드 기술 스택 및 사용 이유
apptie edited this page Oct 18, 2023
·
2 revisions
- Java 17
- 사용 이유
- 성능
- Parallel GC의 경우 Java 11 대비 6.54% 속도 향상
- G1 GC의 경우 Java 11 대비 8.66% 속도 향상
- 기능
- 텍스트 블록
- records
- sealed classses
- compact Number Format Support
- 지원 기간
- 2029.09로 자바 11보다 지원 기간이 김
- Spring Boot 3.0 버전 이상에서 17버전 사용
- 성능
- 사용 이유
- Spring Boot 3.0.x
- 사용 이유
- 스프링 부트 최신 버전
- 2.7.x 버전을 그대로 사용하는 경우 추후 3.x.x 버전으로 마이그레이션 할 때 비용이 많이 발생할 것을 고려
- 기존에는 2.7.x 버전을 사용했으나 스프링은 강력한 하위호환성을 보장하므로 러닝 커브가 덜할 것이라고 판단
- 스프링 부트 최신 버전
- 사용 이유
- Github Actions
- 사용 이유
- CI에 사용
- 무거운 Jenkins보다는 가벼운 Github Actions이 더 효율적일 것이라고 판단
- 사용 이유
- Jenkins
- 사용 이유
- CD에 사용
- Github Actions에 비해 자료와 플러그인(플러그인 생태계)이 많음
- Github Actions는 VM 기반으로 동작하므로 Jenkins에 비해 비교적 느림
- 팀원 중 Jenkins에 더 익숙한 팀원이 존재
- 사용 이유
- JPA
- 사용 이유
- 객체 관계 매핑 (ORM) 기능
- 데이터베이스 테이블과 자바 객체 사이의 매핑을 간단하게 처리할 수 있음
- 데이터베이스와 직접 상호작용하는 것이 아니라 객체를 사용하여 데이터를 조작할 수 있음
- 객체 관계 매핑 (ORM) 기능
- 간소화된 CRUD 작업
- 유지 보수성 + 생산성
- Spring Data JPA는 기본적인 CRUD(Create, Read, Update, Delete) 작업을 지원
- 데이터베이스 조작에 대한 반복적인 보일러플레이트 코드를 줄일 수 있음
- 유지 보수성 + 생산성
- Auditing 기능
- 생성일, 수정일 등의 정보를 자동으로 관리하는 Auditing 기능 제공
- 사용 이유
- Querydsl 사용
- 사용 이유
- 복잡한 동적 쿼리가 필요한 경우가 많음
- 다음과 같은 후보를 고려
- 모든 동적 쿼리를 별도의 메서드로 분리
- 동일한 리소스의 목록을 조회하기 위해 여러 메서드를 사용하는 것은 바람직하지 못하다고 판단
- JdbcTemplate을 통한 동적 쿼리 생성
- 문자열을 활용해야하므로 동적 쿼리를 만드는데 안정적이지 못하다고 판단
- 모든 동적 쿼리를 별도의 메서드로 분리
- 사용 이유
- Jacoco
- 사용 이유
- 최소한의 테스트 커버리지에 대한 제한을 지정해 분석해 코드 품질을 관리하기 위해 사용
- 사용 이유
- S3
- 사용 이유
- 이미지나 로그 같이 서버에 저장할 경우 메모리 문제가 발생할 수 있는 파일을 외부에 저장하기 위함
- 백업 기능 활용 가능
- Cloufront를 같이 사용해 효율적인 리소스 제공 가능
- 사용 이유
- Mysql
- 사용 이유
- 백엔드 인원 모두가 DB 중 Mysql에 대한 이해도가 가장 높음
- Mysql에서 공간 인덱스, Fulltext Search와 같은 기능 지원
- 사용 이유
- flyway
- 사용 이유
- 다양한 서버에 데이터베이스 마이그레이션을 편리하게 수행하기 위해 사용
- 사용 이유