SSAFY 교육 중 공통프로젝트로 애지멍지를 만들었는데 프로젝트 공모전에서 입상도 하고 애정이 깊은 프로젝트 였다. 당시 나도 부족했지만 백엔드 리드 개발 포지션을 맡아 아쉬운 점이 많은 프로젝트이다. 리팩토링 계획은 잡고 있었지만 취업준비가 바뻐 🥲 손에 잡히지가 않았다.
프로젝트 아쉬운 점
아쉬운 점을 뽑으라면 너무 많다.
- 테스트 환경
- 기존 테스트 환경과 운영 환경을 분리하지 않았기 때문에 충돌이 많이 일어났었음.
- Mockito 적용 단위테스트
- Mockito를 적용하지 않고 모두 통합테스트를 진행하였기 때문에 테스트 시간이 많이 소요됐었음.
- DB FK 제약
- 프로젝트를 진행하면서 이미지 테이블에서 많은 문제가 생겼다. 컨설턴트님한테 들은 이야기인데 이미지 테이블 같은 경우는 반정규화해서 사용하는 경우가 많다고 하였다. 또한 테이블에 FK 제약을 걸지 않고 무결성, 일관성을 희생하고 개발자의 편의를 더 보장하는 방법으로 실무에서 자주 사용된다고 하였다.
- 배포
- Docker를 사용한 수동 배포를 진행했는 까닭에 배포가 빈번해 귀찮은 경우가 많았다.
- 패키지 구조 변경
- 패키지 구조에 대한 변경이 필요하다고 생각된다.
- 서비스 레이어 CQRS 변경
- DTO 사용범위 & mapper 사용
- 레이어간 데이터 교환은 모두 DTO를 사용하도록 변경하고 dto, entity 변경 로직은 mapper를 도입해 사용
- DIP 준수
- 기존 구체클래스에 의존하는 경우가 많았다. DIP를 준수하자
- 객체지향 설계 원칙을 고려하면서 개발
- 성능테스트 진행
- ELK 스택을 사용해보고 싶었다.
- 휴대폰 인증 로직 비동기 처리
- 프로퍼티 암호화
코드 리팩토링
- 패키지 구조 변경
- ERD 재설계
- Mockito 사용 단위테스트
- CQRS 도입
- DTO 사용범위 변경
- mapper 도입
- 객체지향 설계 원칙 준수
- DIP 준수
- ELK 스택 도입
MSA 전환(보류)
- 인증로직 비동기 처리
- 파일 저장 S3 변경
인프라
- 테스트 환경과 배포 환경 분리
- CI/CD
- Grafana, Prometheous 모니터링 툴 도입
기타
- 성능테스트
정말 이걸 다 진행할 수 있으세요?! 너무 기대됩니다.