ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 게시글 프로젝트 리팩토링
    프로젝트/자프링 -> 코프링 마이그레이션 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 도입(새로운 프로젝트로 진행할 수도 있을 것 같음)

     

    댓글

Designed by Tistory.