본문 바로가기

프로젝트

[ 인생퍼즐 ] 백엔드 사용 언어 변경

백엔드 사용 언어 변경

인생퍼즐의 백엔드는 기존에 NestJS로 작성을 했다. 이번에 코드를 리팩터링 하고 이후 유지보수를 위해 사용 언어를 Java로 변경하기로 했다. 또한 DI 등 객체지향 코드를 작성에 도움을 주는 Spring과 DB를 Java 컬렉션처럼 쓸 수 있게 해주는 JPA를 사용하기로 했다. 

자바 스프링

자바 스프링은 객체 지향 언어를 더 잘 할 수 있도록 해주는 프레임워크이다. 좋은 객체지향 설계를 위한 SOLID원칙을 지키게 해 주며, 스프링 컨테이너를 통해 5가지 원칙 중 위반된 SRP/OCP/DIP를 보완해준다. 관심사를 사용 영역과 관리 영역으로 나누어 SRP, 사용 영역에 대한 확장은 쉽게 하며 변경은 어렵게 함으로 OCP를 보완한다. 마지막으로 관리 영역을 통해 객체 생성 및 의존관계를 맺게 함으로 DIP를 보완한다.

JPA

JPA는 DB 쿼리를 Java 컬렉션처럼 사용할 수 있게 해주는 인터페이스를 모아둔 것이다. JPA는 DB와 Java 사이에 있는 패러다임 불일치[상속, 연관관계, 객체 그래프 탐색 등]을 해결해주는 것이 중요하다. 또한 사이에 논리적인 Persistence Context가 존재하며, 이것을 통해 성능 최적화, 1차 캐시 및 동일성 보장, 트랜잭션 지원하는 쓰기, 지연 로딩 및 즉시 로딩 기능들을 제공한다. 

결론

자바 스프링을 통해 객체지향을 기반으로 코드를 리팩터링 해 유지보수의 장점 증진을 기대해본다. JPA를 통해 기존에 사용하던 TypeORM를 대체하며, 다양한 JAP 기능을 통해 성능 향상을 기대해본다. 아직 코드 이전이 완료되기 전이기에 실제 적용했을 때 장점과 단점은 확신할 수 없다. 코드 이전 후 다시 한 번 이에 대해 작성해보면 좋을 것 같다.