백엔드
애셋팀 레거시 개선 (2) 쏘카존 관리 시스템 - 차량재배치 리팩터링
두줄요약
쏘카의 차량재배치 레거시를 Kinesis에서 Kafka로 옮기며 책임을 분리한 리팩터링 사례를 다뤘습니다. 상태별 처리와 테스트코드를 정리해 유지보수성과 변경 안전성을 높였습니다.
핵심 내용
- 쏘카 존 관리 시스템의 차량재배치 레거시를 Kinesis 기반 구조에서 Kafka 기반 구조로 바꾸며 리팩터링한 사례
- 하나의 거대 클래스에 있던 스프링 처리, 스트림 처리, 비즈니스 로직을 분리해 app과 infra/kafka로 패키징
- KafkaListener, Controller, Service로 책임을 나누고 상태별 처리에는 전략패턴 선택 구조를 적용
- 각 책임에 맞는 테스트코드를 추가해 수정 시 사이드이펙트 우려를 줄이는 방향으로 정리
적용해볼 점
- 기술 로직과 비즈니스 로직의 분리 기준을 먼저 세우고 구조를 다시 쪼개는 접근
- 상태별 분기 로직은 직접 참조보다 선택자 계층을 둬 변경 영향을 줄이는 방식
- 책임 단위별 테스트와 learning 테스트를 분리해 유지보수성을 높이는 방식
