S-HOOK 기술 스택

@VERO
Created Date · 2023년 07월 19일 08:07
Last Updated Date · 2023년 07월 19일 08:07

백엔드 기술 스택

개발에 들어가기 앞서, 팀원들과 함께 기술스택을 정하는 시간을 가졌다.

Spring Boot 3.1 ver

이 부분을 정하는 것이 핫 포포포테이토였다. (아코 왈)
우리 팀 뿐만 아니라 다른 모든 팀들의 핵심 기술 스택이었다고 생각한다.

왜 Spring Boot를 사용하는가?

Spring을 사용하는 경우 외부 라이브러리나 여러가지 dependency를 추가하고 설정하는 많은 리소스가 필요하다.

구성해야하는 여러가지 세부적인 라이브러리에 대한 레퍼런스를 추상화된 spring boot 라이브러리로 제공하기 때문에 편리하다.

왜 버전을 3.1.x 이상으로 사용하는가?

우리는 우테코 기간 내내 Spring Boot는 2.7 ver 를 사용해왔다.
그러나 2.7 ver, 3.0 ver 의 OSS support 기간은 2023년 11월까지다.

OSS Support 기간 동안은 Spring 커뮤니티의 지원을 통해 무료 보안 업데이트 및 버그 수정을 제공한다.
우리 팀은 프로젝트 이후에도 서비스를 진행하고 싶었기 때문에, OSS Support 가 가장 긴 3.1 ver를 사용하기로 했다.

OSS Support 는 여기에서 확인할 수 있다. -> https://spring.io/projects/spring-boot#support

Java 17 ver

이 부분도 논란(?)이 많았다.

일단 Spring Boot 3.1 ver 를 사용하는 순간부터 Java 17 이상을 사용하는 것이 필수였다. 이 이유가 가장 크다...

또한 Java 17 이상의 버전 중 유일한 LTS 버전이라는 점에서 장점을 갖고 있다.
LTS 버전은 일반 버전 보다 보안 업데이트의 지원 기간이 길다.

따라서 Java 17 을 사용하기로 결정했다.

Spring Data JPA

ORM 프레임워크인 JPA를 사용하기로 했다.

DB 주도 설계와 객체지향 설계 패러다임 사이의 간극을 줄임으로써 객체지향 설계에 집중할 수 있다.

ORM 프레임워크를 사용하지 않게 되면 코드가 DB에 의존하기 때문에 변경 사항이 모든 쿼리에 영향을 미칠 가능성도 생긴다.

또한 세부적인 구현 내용을 파악하기 위해 쿼리를 굳이 보지 않아도 되고, 데이터베이스 벤더의 변경에 유연하다.

Lombok

Lombok을 사용하게 되면 코드의 가독성이 올라간다. 모든 필드에 대한 getter 가 필요할 때, 예상 가능한 코드 (getter) 가 계속 추가되므로

또한 코드에서 변경이 발생하게 되었을 때, getter, 생성자 같은 코드를 변경하는 데 소비되는 리소스가 줄어드는 점이 좋았다.

위와 같은 이유로 Lombok을 도입했다.