-
게시글 프로젝트 리팩토링프로젝트/자프링 -> 코프링 마이그레이션 2022. 11. 11. 00:01
개요
약 5개월 전 Spring JPA를 처음 다루는 시점에 로그인 + 게시글을 작성할 수 있는 토이 프로젝트를 진행하였습니다.
기술을 선택하기 위한 여러 가지의 고민들을 해보고 AWS 배포까지 한 사이클을 해볼 수 있었던 좋은 기회였습니다.
하지만 시간이 지난 후 코드를 다시 되돌아보았을 때는 부족한 부분들이 많이 보였습니다.
- restful 하지 않은 url
- read and write를 통한 동시성, 데드락 발생
- jpa paging시 클라이언트가 필요한 값만 반환하는 것이 아니라 모두 반환
- update 하는 부분에 @Transactional(readonly =true) 걸려 있음
- 의미없는 네이밍
- 살짝 부족한 테스트 코드
- 이로 인한 게시글을 저장할 때 member를 저장하지 않음(member와 board는 1:N 관계였음)
- 조금 더 가독성이 좋다고 생각하는 패키지 구조로 변경
따라서 이런 점들을 리팩토링을 진행하였으며 5개월간 그래도 나름 성장하였음을 느낄 수 있었습니다.
자바 -> 코틀린 리팩토링
또한 최근에 코틀린 프로젝트를 진행해보았으며 아마 이제 주력으로 코틀린 언어를 사용하게 될 것 같습니다.
따라서 새롭게 코틀린으로 프로젝트를 진행할 수도 있지만 기존의 자바 프로젝트를 코틀린으로 변경하는 프로젝트를 경험해보면 의미 있을 것 같다는 생각이 들어서 진행해보려고 합니다.
또한 코틀린 언어의 철학인 "자바와 100% 상호작용"을 느껴볼 수 있는 토이 프로젝트일 것 같습니다.
진행 과정
코틀린으로 테스트 코드 작성 -> 도메인 -> Repo -> Service -> DTO 순서로 변경하면서 진행해보려고 합니다.
추후에 코틀린으로 리팩터링을 마친 후에는 예전부터 해보고 싶었던 기술들을 적용해보면서 고도화를 하려 합니다.
시간적인 여유 그때의 상황에 따라 순서는 달라질 수 있으며 진행하지 않을 수도 있습니다.
- 캐시 도입 (글로벌 캐시)
- Github Action기반으로 CI/CD 도입 - ktlint, sonarqube
- Blue/Green 배포 및 오토 스케일링 (쿠버네티스, nginx, 로드밸런싱 필요할 것 같음)
- 부하 테스트 및 모니터링
- MySQL Master-Slave 구조 만들어보기(또는 DB를 Mysql대신 PostgresSQL으로 마이그레이션)
- 선착순 이벤트처럼 순간 많은 접속자가 들어온 상황 재현해서 Message Queue로 해결해보기
- 검색을 위한 Elastic Search 도입해보기
- DDD 공부하고 적용해보기
- 스프링 클라우드로 MSA 구축
- WebFlux 도입(새로운 프로젝트로 진행할 수도 있을 것 같음)
'프로젝트 > 자프링 -> 코프링 마이그레이션' 카테고리의 다른 글
Kotlin과 Lombok 컴파일 에러 해결 (0) 2022.11.30 Kotlin + Junit 5 could not Autowire 이슈 (0) 2022.11.28 dto 코틀린으로 변환하기 (0) 2022.09.26 Repository와 Service 계층 Kotlin으로 변경하기 (0) 2022.09.25 도메인 계층을 Kotlin으로 변경하기 (1) 2022.09.21