만능도구는 없다, 적절한 선택은 있다: Spring Statemachine으로 완성한 알림 2.0
백엔드
만능도구는 없다, 적절한 선택은 있다: Spring Statemachine으로 완성한 알림 2.0
두줄요약
Spring Statemachine으로 알림 시스템의 상태 관리를 체계화한 사례를 다뤘습니다. 직접 구현과 프레임워크 도입의 장단점, TTL 관리 같은 주의점도 함께 정리했습니다.
핵심 내용
- 카카오뱅크 알림 발송 시스템에서 메시지 상태를 체계적으로 관리하기 위해 FSM 개념을 적용한 사례
- 직접 구현한 상태 관리의 한계와 Spring Statemachine 도입의 배경, 그리고 프레임워크 활용 후의 장단점 정리
- Guard, Action, 이벤트 헤더, Redis 영속화 등으로 서비스 요구에 맞게 커스터마이즈한 상태 머신 구성
선택 이유
- Spring 기반 시스템과의 호환성, 빠른 개발, 유지보수와 확장성 측면의 이점 고려
- 직접 구현 대비 검증된 프레임워크 활용이 복잡한 상태 전이에 더 적합하다고 판단
장단점
- 상태 전이와 비즈니스 로직 분리, 명확한 상태 관리, 개발 생산성 향상
- 학습 비용, 프레임워크 제약, TTL 부재로 인한 인스턴스 관리 부담
- 불필요한 기능으로 인한 복잡성 증가 가능성
적용해볼 점
- 프레임워크 의존성을 낮추기 위한 내부 인터페이스 래핑과 DIP 적용
- 상태 머신 생명 주기와 영속화 정책을 함께 설계할 필요
