프로모션 서비스 개발 및 유지보수
팀 구성 및 역할
- 팀 구성 : 2명
- 역할 : 신규 서비스 기능 개발 및 유지보수
프로모션 서비스
- 사용자에게 작품 구매 관련 미션을 제공하고 미션 등급에 따라 보너스 머니를 지급하는 서비스
- 일정 금액 기준 이상을 사용하면 보너스 머니를 지급
- 일정 금액 기준 이상을 사용하면 선착순으로 보너스 머니를 지급
- 프로모션에 관련된 작품들을 전시하는 서비스
문제 상황
- 각 관계자들 간 서로 다른 용어를 사용해 발생되는 커뮤니케이션 문제
- 확장성과 유지보수성이 떨어지는 프로젝트 구조
- 관리가 되지 않는, 추가되지 않는 테스트 코드
- 로그&모니터링 시스템의 부재로 인한 디버깅의 어려움
문제점 개선 및 성과
- 관련 용어를 Wiki 및 README에 정리하여 문서화 및 공유
- 관계자들 간 소통을 원활하게 할 뿐만 아니라, 비 관계자 또한 해당 도메인을 쉽게 이해할 수 있도록 개선하였습니다.
- 확장성과 유지보수성이 떨어지는 레거시 프로젝트의 아키텍처를 개선
- 확장성과 유지보수성이 떨어지는 레거시 프로젝트의 아키텍처를 개선했습니다. 기존 시스템은 높은 결합도와 낮은 응집도로 인해 새로운 기능 추가나 변경 시 많은 리소스가 소요되었습니다. 이를 해결하기 위해 적절한 아키텍처가 필요하다고 생각했고, 헥사고날 아키텍처를 공부하여 포트-어댑터 개념을 차용해 아키텍처를 재구성했습니다. 이를 통해 도메인 로직의 순수성을 유지하면서 외부 시스템과의 결합도를 낮추어, 시스템의 유연성과 확장성을 크게 향상시켰습니다.
- 사내에 테스트 코드 작성 문화를 선도적으로 도입
- 그 결과, 버그 발생률이 현저히 감소하고 새로운 기능 추가 시 기존 기능의 안정성을 보장할 수 있게 되어, 전반적인 소프트웨어 품질과 개발 생산성이 크게 향상되었습니다.
- 로그&모니터링 시스템을 도입
- 회사 상황을 고려하여 Elastic Stack과 Spring Actuator를 활용한 로그&모니터링 시스템을 도입했습니다. 적절한 로그 포맷을 생성하고, Kibana에 대시보드를 구성하여 이전보다 빠르게 문제 해결을 할 수 있는 환경을 조성하였습니다.
기술 스택
- SpringBoot 2, JDK 17, Gradle, MS-SQL, Spring data JPA, QueryDSL, OpenFeign, GitLab CI, Elastic stack