
상태 전이 선언과 CI 기반 검증으로 깨지지 않는 운영 가이드를 자동 빌드하는 방법
flex 매출 플랫폼 팀이 운영 가이드와 테스트 코드의 불일치로 인한 운영 차질을 해결하기 위해 '테스트가 없는 상태 전이는 빌드를 실패하게 만드는' 자동화 체계를 구축했습니다. YAML 선언을 Single Source of Truth로 삼아 CI 파이프라인에서 테스트 검증을 강제함으로써, 시스템의 안정성과 문서 최신성을 완성도 높게 동기화한 사례를 다룹니다.
비즈니스 로직 및 상태 관리 복잡도가 높아 운영팀과의 협업과 도메인 문서 최신화가 필수적인 백엔드 개발자 및 DevOps 엔지니어에게 적극 추천합니다.
매출 및 결제 도메인의 복잡한 상태 관리 로직에서 기존 문서(위키)와 실제 시스템 동작 및 테스트 코드가 일치하지 않아 운영자 문의 응대 및 데이터 검증에 차질이 발생했습니다. 특히 가이드에 핵심 단계가 누락되어 있거나 E2E 테스트가 CI 실행 대상에서 빠져 있어 문제를 미리 인지하지 못하는 한계가 있었습니다.
엔티티별 상태, 전이, 운영자 액션, 그리고 이를 검증하는 테스트 메서드 경로를 단일 YAML 선언에 묶어 정의했습니다. CI 빌드 시 테스트 참조가 누락되었거나 실제 소스코드에 존재하지 않으면 빌드가 실패하도록 생성기를 구현하고, 이 선언으로부터 운영 가이드와 상태 다이어그램을 자동 생성했습니다.
가이드 기반 실제 업무 처리 실패율이 현격히 줄어들었으며, 상태 전이에 연관된 누락 테스트 및 금지 전이 검증 테스트를 대거 발굴 및 추가하여 코드 품질을 향상시켰습니다. 문서를 수정하지 않거나 테스트를 제거하면 PR 머지가 불가능해져 최신 문서 생성이 보장되었습니다.
Trade-off
수동으로 직접 관리하던 색인 표 등 자동 검증 로직이 미미한 문서 구성 요소에는 여전히 정보 불일치가 발생할 수 있으며, 전이 추가 시 반드시 테스트 코드를 동반 작성해야 하는 작업 공수가 수반됩니다.
소프트웨어의 코드와 테스트가 변경될 때 문서도 함께 자동으로 최신화되어, 문서가 항상 실제 시스템의 동작을 정확히 반영하도록 하는 문서화 방식입니다.
도메인 엔티티의 가능한 상태 변화 규칙과 이를 유발하는 이벤트, 대응하는 테스트 코드를 선언적인 형식으로 정의하는 구조입니다.
빌드 단계에서 문서 선언에 포함된 테스트 코드가 실제 소스 코드 상에 존재하는지 확인하고, 미존재 시 PR 머지를 차단하는 검증 기법입니다.




