목록 보기
팀 레거시 개선 (2) 쏘카존 관리 시스템 - 차량재배치 리팩터링
아키텍처

팀 레거시 개선 (2) 쏘카존 관리 시스템 - 차량재배치 리팩터링

쏘카
쏘카
2024년 7월 23일

두줄요약

거대 클래스에 섞인 Kinesis·비즈니스 로직을 Spring Kafka 기반 계층 구조로 분리했습니다. 상태별 처리에는 선택자를 도입해 테스트성과 확장성을 높였습니다.

문제 상황

  • 키네시스·스프링·차량재배치 비즈니스 로직이 하나의 거대 클래스에 혼재
  • 수정 범위 파악 어려움과 사이드이펙트 우려, 테스트코드 부재
  • 조직 표준과 다른 Maxwell·Kinesis 사용으로 장애 대응과 유지보수 부담

구조와 흐름

  • 기술 로직인 infra/kafka와 차량재배치 비즈니스 로직인 app 분리
  • KafkaListener의 메시지 수신·변환, Controller의 유효성 검증·DTO 변환, Service의 처리 결정으로 책임 분리
  • 예약 상태별 실제 처리 로직을 취소·운행 서비스로 위임

선택 이유

  • Kinesis를 Spring Kafka로 교체하면서 비즈니스 로직 재사용
  • 상태별 서비스를 선택하는 CarRelocationActionServiceSelector 추가로 Service의 직접 의존성 축소
  • 상태 추가·변경 시 선택자와 구현체 중심의 확장 구조

성능/운영 포인트

  • 클래스별 책임 기반 테스트와 기술 검증용 learning 테스트 분리
  • 오류 발생 책임 위치 추적 용이성 및 기술 교체 시 비즈니스 로직 변경 최소화

다음 읽기

#Kotlin 주제를 이어서 읽기

애셋팀 레거시 개선 (2) 쏘카존 관리 시스템 - 차량재배치 리팩터링

쏘카의 차량재배치 레거시를 Kinesis에서 Kafka로 옮기며 책임을 분리한 리팩터링 사례를 다뤘습니다. 상태별 처리와 테스트코드를 정리해 유지보수성과 변경 안전성을 높였습니다.

쏘카
쏘카
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...