-
Notifications
You must be signed in to change notification settings - Fork 0
3주차 회고
마지막 주는 새 기능을 더하는 대신, 지금까지 만든 것의 완성도를 끌어올리는 데 온전히 집중했다. 품질 개선을 세 갈래로 나눠서 접근했다. 첫째는 UI/UX 자체의 개선, 둘째는 좋은 코드를 위한 코드의 개선(테스트와 유지보수성 포함), 셋째는 기존 기능을 더 편하고 완벽하게 다듬는 일과 보안이었다.
본격적으로 손대기 전에, 코드베이스를 세 관점(UI/UX, 코드 품질, 보안·견고함)으로 나눠 한 번에 훑어보는 감사를 먼저 진행했다. 거기서 나온 발견들을 중복을 걷어내고 우선순위를 매긴 뒤, 7개의 feature 브랜치로 나눠 차례로 dev에 머지했다. 테스트 환경을 깔고 순수 로직부터 테스트로 묶은 뒤, 그 안전망 위에서 보안·견고함·UI 순으로 고쳐 나가는 순서를 택했다. 마지막에는 3주 전체를 정리한 워크플로우 리포트를 완성하고, 이어서 개선할 항목들을 todo list로 남겼다.
가장 만족스러운 것은 테스트가 0개였던 프로젝트에 안전망이 생겼다는 점이다. 시간 계산, 구간 겹침, 입력 검증, 공유 토큰처럼 회귀가 일어나면 조용히 망가지는 로직들을 순수 함수로 끄집어내 단위 테스트로 묶었더니, 이후 리팩토링을 훨씬 마음 편하게 할 수 있었다. 같은 계산이 여러 파일에 복붙돼 있던 것을 한 곳으로 모으면서 코드도 한결 정리됐다.
보안 쪽에서 실제 결함을 찾아 막은 것도 기억에 남는다. 스케줄 id만 알면 비밀번호 없이 남의 데이터를 고치거나 지울 수 있던 문제가 있었는데, 로그인·공유 접근 시 서명된 세션 쿠키를 발급하고 각 요청에서 소유권을 확인하는 방식으로 막았다. 머릿속으로만 "막혔겠지" 하고 넘어가지 않고, 직접 서버를 띄워 권한 없는 요청은 401, 남의 스케줄 접근은 403, 교차 항목 수정은 404가 나오는지 일일이 확인했을 때 비로소 안심이 됐다. 눈에 보이지 않는 변화일수록 실제 동작으로 검증하는 습관의 중요성을 다시 느꼈다.
UI에서는 다크 모드로 페이지를 열 때마다 흰 화면이 번쩍이던 문제를 없애고, 모달에 ESC·포커스 이동·키보드 탐색을 더하고, 그동안 조용히 실패하던 동작들에 토스트로 피드백을 붙였다. 큰 기능은 아니지만 "완성된 앱처럼 보이게 하는" 디테일들이라 체감이 컸다.
가장 고민이 많았던 부분은 거대한 파일을 어디까지 손댈 것인가였다. 800줄에 가까운 화면 파일을 잘게 쪼개면 유지보수성은 좋아지겠지만, 시각적 회귀를 자동으로 잡아줄 E2E 테스트가 없는 상태에서 렌더 구조를 통째로 바꾸는 건 위험하다고 판단했다. 그래서 이번에는 그 안에 묶여 있던 순수 로직만 밖으로 빼내 파일을 점진적으로 줄이고, 전면적인 분해는 다음으로 미뤘다. 욕심을 내기보다 회귀 위험을 관리하는 쪽을 택한 셈인데, 이런 판단을 내리는 것 자체가 품질 작업의 일부라는 걸 배웠다.
인가 방식을 정할 때도 절충이 필요했다. 가장 견고한 방법은 모든 요청을 데이터베이스 레벨에서 막는 것이지만, 한 주 안에 안전하게 적용하기엔 범위가 컸다. 그래서 아키텍처 변경을 최소화하면서 실질적인 위험을 막는 경량 세션 방식을 택하고, 더 강한 방어는 향후 todo로 남겼다. 완벽함보다 "이번 주에 안전하게 끝낼 수 있는 최선"을 고르는 감각이 필요했다.
이번 주는 Agent에게 큰 작업을 맡기되 그 결과를 어떻게 믿을 것인가가 핵심이었다. 여러 파일에 걸친 기계적인 변경이나 접근성 보강 같은 작업은 Agent에 위임하면서, 항상 "빌드와 테스트가 모두 통과해야 한다"는 조건을 함께 걸었다. 그렇게 객관적인 게이트를 붙여 두니 위임의 부담이 확 줄었다. 그래도 보안처럼 민감한 부분은 직접 손대고 런타임으로 확인했는데, 어디까지 맡기고 어디서부터 직접 검증할지를 가르는 감이 3주 동안 꽤 단단해진 것 같다.
코드베이스를 여러 관점으로 병렬 감사한 뒤 발견을 종합하는 방식도 이번에 처음 제대로 써봤는데, 한 시야로는 놓쳤을 결함들이 함께 드러나는 게 인상적이었다. 다음 프로젝트에서도 초반에 한 번 이렇게 훑고 시작하면 좋겠다.
처음에 작게 만들어 두었던 서비스를, 마치 처음부터 새로 빚는 것처럼 기획서부터 다시 세우고, 기능을 쌓고, 마지막에 품질로 마감하는 한 사이클을 온전히 경험했다. 결과물 자체보다도, 그 과정에서 "Agent와 함께 일하는 나만의 방식"을 글로 정리해 손에 쥐게 된 것이 가장 큰 소득이다. 워크플로우 리포트에 남긴 가이드와 개선 todo list는 이 프로젝트가 끝나도 다음 작업으로 그대로 이어질 것이다.