프로젝트/SODA 프로젝트

[SODA] 프로젝트 7주차 회고

MOON달 2025. 5. 5. 23:04
728x90
반응형

출처: https://www.instagram.com/p/DJFroMdT-Rv/

시간 진짜 빠르다.

처음에 프로젝트 시작할때 3월이었던 것 같은데 벌써 5월이라니...

 

이번주는 이슈 테스트가 있어서 그 전에 기능 완성하기 위해 노력했고 드디어 기다리던 리팩토링을 시작한 주간이엇다.

연휴가 껴있어서 하루 늦은 7주차 회고 시작

 

 

 

 

 

 

 

프로젝트 생성 추이 기능 구현

 

지난 회고글 에도 적혀있는데, 프로젝트 생성 추이 통계를 위헤 ProjectDailyStats 테이블을 생성했다.

혼자서 구현하는 걸 고민했을 때는 스프링 배치를 적용할까, 고민이었는데 팀원들과 회의를 한 결과 별다른 이유 없이 배치를 적용하는 건 아니라는 결론을 내렸다. 그래서 혼자 적용했던 것들을 삭제하고 비동기 이벤트 처리로 변경했다.

 

https://daydream-sy.tistory.com/399

 

스프링 이벤트를 활용한 비동기 처리 방법 (ex. 프로젝트 생성 횟수 통계)

비동기 처리를 적용하는 배경 SODA 프로젝트 진행 중, 프로젝트 생성 횟수 추이를 그래프로 보여주기 위해 API를 만들어야 했었다.이 기능을 구현하기 위해 두 가지를 고민했었다.실제 DB에서 전체

daydream-sy.tistory.com

 

그래서 덕분에 블로그 글도 쓰고 좋지 뭐. 새로운 걸 하나 더 배웠다.

이벤트 적용해서 프로젝트 생성과, 통계에 해당 날짜에 카운트 +1 하는 걸 따로 처리하도록 했다.

그렇게 해서 프로젝트 생성 추이 기능 구현하고, FE 연동까지 구현 완료했다.

 

 

이런식으로 프론트에는 나오게 했다.

일간/주간/월간  권리자가 원하는 만큼 통계가 나오도록 했는데 애니메이션 지우는걸 까먹었다. (이슈 테스트 보완할 점에 있었음)

아무튼...뭔가 그럴듯하게 구현되어서 다행이다 ㅋㅋㅋㅋ

 

 

 

 

 

 

 

이슈 테스트

 

수요일(4/30)은 이슈 테스트 날이었다.

말 그대로 다른 팀들의 프로젝트 링크에 들어가서 직접 해보면서 버그가 있는지, 잘 작동되는지 판단해서 구글폼으로 보완할 점을 작성해주면 되는 것. 그걸 위해서 월-화 기간에는 FE 보완하는 데 시간을 많이 썼던 것 같다.

 

다른 팀들의 프로젝트를 직접 경험해보는 것도 처음이었고

제 삼자가 우리 프로젝트를 진행하는 것도 처음이라서 생각보다 많은 시간이 걸렸다.

 

덕분에 보완할 점이 많다는 것도 알게 되었고...ㅋㅋㅋㅋㅋ

하지만 바로 고치지는 않고 리팩토링을 먼저 하기로 했으니 아마 보완할 점들은 다음주 쯤에 보완하지 않을까 싶다.

 

 

 

 

 

 

리팩토링 시작

 

드디어 강의 들었던 것처럼 DDD 기반으로 리팩토링하는 걸 시작하였다.

일단 멀티모듈을 한다는 전제하에

  • soda-member
    • member
    • company
  • soda-project
    • project
    • request
    • article
  • soda-notification
  • soda-log

이렇게 패키지를 분리했다. 그리고 그 안에서

application, domain, infrastructure, interfaces layer로 나누었다.

 

https://fastcampus.co.kr/dev_red_lhc

 

The RED : 비즈니스 성공을 위한 Java/Spring 기반 서비스 개발과 MSA 구축 by 이희창 | 패스트캠퍼스

쿠팡, 토스를 거친 29CM의 개발 디렉터 이희창이 주문하기, 선물하기 기능 개발 경험을 토대로 MSA 구축 실무 프로젝트를 위주로 구성한 강의 입니다. 잘 짜여진 코드와 MSA 전환에 필요한 이론 뿐

fastcampus.co.kr

 

이 강의를 들었는데 실제로 전부 적용하지는 못하고 우리가 할 수 있는 한 적용하고자 했다.

기존의 길었던 서비스 로직을 간결하게 만들기 위해 facade, provider 등 새롭게 적용했다.

 

원래는 dto 파일들은 interfaces layer에 존재하면서 controller와 통신하고,

reader, info 등 다른 layer에서 사용하는 파일들을 만들어야 했는데 시간관계상 다 할수는 없어서 어쩔수 없이 생략.

 

다른 모듈을 참조하지 않는다는 원칙도 지금은 생략.

최종 발표 이후에 조금 더 프로젝트를 구현할 시간이 생긴다면 그 때 할 것 같다.

 

아무튼 생략한 것들 이외에도 생각보다 리팩토링하는게 너무 어려웠다. 일단은 서비스 로직을 어떤 식으로 분리해야 할지, 그리고 어떤 layer에서 로직을 생성할지 등등...강의를 봤음에도 너무 헷갈려서 주말에 강의를 한 번 더 봤다.

리팩토링하면서 서비스 로직이 더욱 깔끔해지지만 여전히 객체지향적 코드란 너무 어렵기만 하다.

이전 프로젝트보다 발전했다는 걸 다행으로 여겨야 하나..ㅋㅋㅋㅋㅋ

 

공부해야할 게 여전히 많이 생긴다.

 

 

 

 

 

 

 

 

 


 

이번 주도 뭐 한거 없는거 같은데 시간이 빨리 갔다. 벌써 2주만 지나면 캠프 자체가 끝나니까. 

리팩토링을 조금 더 빨리 시작했으면, 하는 아쉬움도 있고. 이제 슬슬 캠프 마지막이 다가오는 것 같아서 프로젝트 완성도를 더욱 높히고 싶다. 얼마나 될지 모르겠지만, 최종 발표까지 얼마 안남았으니 조금만 더 열심히 하면 될 것 같다 ㅋㅋㅋ

728x90