역량 진단 리포트 확장 마무리
이날은 한 기능을 닫으면서 더 큰 작업을 연 날이었다.
특정 코스 전용이던 역량 진단 리포트를 전 코스로 확장하는 작업을 마무리했다.
그리고 같은 날, 코스 분류 체계 전체를 재설계하는 더 큰 작업을 시작했다.
며칠 전에 역량 진단 리포트를 국비지원 코스 전용에서 전 코스로 확장했다.
오늘은 그 마무리를 했다.
코드 리뷰 피드백을 반영하고 CI 실패를 해결하고 알파 배포를 반복했다.
CI 타입체크 실패
마무리 과정에서 CI가 깨졌다.
권한 일반화를 하면서 테스트 픽스처가 새 타입 조건을 만족하지 못한 거다.
기존 픽스처에는 내부 계정 여부 필드가 없었는데, 권한 모델이 바뀌니까 그 필드가 필요해졌다.
픽스처 세 곳에 필드를 추가해서 해결했다.
이런 종류의 실패는 흔하다.
새 필드를 추가하면 테스트 픽스처도 같이 업데이트해야 한다.
깜빡하면 CI가 잡아준다.
그리고 국비지원 전용 배너 로직이 일반화와 충돌하는 것도 정리했다.
예전에는 특정 코스에서만 보이던 배너의 테스트 버튼이, 일반화 과정에서 분기 로직이 꼬인 거다.
이것도 풀었다.
배포 반복
이걸로 끝이 아니었다.
4개 앱 패치 버전을 올리고 알파 배포를 5번 이상 반복했다.
CI가 통과할 때까지 버전을 올리고 배포하고를 반복한 거다.
모노레포에서 여러 앱에 걸친 변경을 배포할 때는 이런 과정이 필요하다.
한 번에 안 끝난다.
앱마다 의존성이 있으니까, 순서대로 버전을 올리고 검증해야 한다.
더 큰 작업 시작
역량 진단 리포트를 마무리하면서 배운 게 있었다.
“특정 코스 전용 정책을 일반화하는 패턴”이었다.
이 패턴을 더 큰 규모로 적용할 차례였다.
회사 교육 플랫폼에는 코스 분류 체계가 있었다.
국비지원 코스랑 다른 코스로 나뉘어 있었다.
근데 새 교육 상품이 들어오면서 이분법으로는 안 됐다.
세 번째 축이 필요해진 거다.
분기 로직 분석
그래서 코스 생성 모달이랑 기본 정보 관리 화면에서 기존 분기 로직이 어떻게 박혀 있는지 분석했다.
어디서 코스 종류에 따라 분기하는지, 권한 제어가 어떻게 되어 있는지 찾은 거다.
이걸 하지 않으면 새 코스 종류를 추가할 때 어디를 손대야 하는지 모른다.
분기 로직이 여러 곳에 흩어져 있으니까, 전부 찾아내는 게 첫 단계였다.
권한 설계
그리고 새 코스 종류에서 공공 매니저 권한을 어떻게 줄지 설계했다.
기존 권한 제어를 확장해서 새 코스 종류도 커버하게 만드는 거다.
이날은 설계까지 하고 구현은 다음으로 넘겼다.
코스 분류 체계를 이분법에서 삼분법으로 바꾸는 건 큰 작업이라, 범위를 먼저 정리하는 게 필요했다.
두 작업의 연결
두 작업은 같은 패턴이다.
특정 코스에 묶여 있는 걸 풀어서 일반화하는 거다.
역량 진단 리포트는 단일 기능을 특정 코스에서 전체로 풀었다.
코스 분류 재설계는 분류 체계 전체를 이분법에서 삼분법으로 풀었다.
둘 다
“권한 가드 완화 + 분기 일반화”라는 같은 구조적 변경이다.
그래서 첫 번째 작업에서 검증한 패턴을 두 번째 작업에 재적용할 수 있었다.
작은 일반화로 패턴을 확인하고 큰 일반화로 확장하는 흐름이다.
이 두 번째 작업은 이후 8개 단계로 쪼개져서 구현됐다. 코스 분류 추가, 파트 완료율, 순차 수강 잠금, 학생 화면, 수료 기준, 약관 분기까지.
이날은 그 긴 작업의 시작점이었다.
마무리
내가 이날 배운 핵심은 다음과 같다.
이날의 교훈은 패턴을 먼저 작게 검증하는 게 유용하다는 거다.
역량 진단 리포트 확장은 단일 기능에 대한 일반화였다.
규모가 작으니까 빠르게 검증할 수 있었다.
CI 통과하고 배포되면서 “권한 가드 완화 + 분기 일반화” 패턴이 작동하는 걸 확인했다.
그 검증을 바탕으로 더 큰 작업에 들어갔다.
코스 분류 체계 전체를 재설계하는 건 규모가 훨씬 크다.
근데 패턴은 같다.
작은 곳에서 먼저 해보고 큰 곳에 적용하는 거다.
이런 식으로 작업하면 리스크가 줄어든다.
큰 작업을 처음부터 새로운 패턴으로 하면 검증이 안 된 상태로 들어가니까 위험하다.
작은 곳에서 검증하고 큰 곳으로 가는 게 안전하다.