6월은 5월을 지나고 조금은 팀적으로 제품적으로 정리하는 시간을 가지게 되었다. 엄청나게 뛰었던 여파였을까 건강은 괜찮지만, 회사에 앉아서 일을 하려해도 멍한 기분이 지속되었다. 한편 업무적으로는 5월을 겪으면서 내년 5월에 똑같은 어려움을 겪지 않기 위해 어떻게 하면 좋을까하는 고민이 시작되었다. 이러한 고민을 해결하기 위해 어떤 점이 필요하다 이야기하기 시작했던 6월에 대해 정리해보고자 한다.
숨은 환금액 찾기 리팩토링 프로젝트
5월의 어려움들을 정리해보면 먼저 CS를 대응하는데 너무 많은 시간을 들여야했다는 점이었다. CS의 주된 문제는 유저가 다양한 신고가 되지 않는 사유가 있었지만, 그것을 봐야하는 개발자가 프론트인지, 서버인지, 노드인지 명확하지 않아 대부분 모든 문제에 태그를 당하고 로그를 분석하고 정리하는데 시간을 많이 사용했다. 그럴수 밖에 없었던 것이 서버 입장에서도 어떤 페이지에 어떤 API가 사용되고 있는지 모르고 CS를 대응해주시는 입장에서는 화면에서 잘못나오는 부분이다보니 프론트가 거의 항상 동원되어야 하는 상황이었다.
두번째로 개발 팀내의 문제로는 6월에 신규로 합류하시는 개발자 분들이 많아지고, 기존에 계시던 개발자분들을 팀을 옮기거나 떠나시는 상황이었다. 코어에서 파견으로 도와주시던 서버개발자 두분과 인컴소속으로 함께 일하시던 개발자 한분께서 이직하게 되시면서 기존 히스토리를 아는 서버 개발자가 적어지는 상황에서 많은 분들이 한번에 들어오시면서 온보딩을 어떻게 해야할지 기존의 복잡한 구조는 어떻게 해야할지에 대한 문제가 제기되었다. 프론트 챕터에는 채용이 아직 되지 않은 상황이지만, 동일하게 맥락을 아는 사람이 특정 사람에게 치중되어있는 문제를 느끼고 있었고, 서로가 백업하기 어려운 현재 상황을 타개할 필요가 있다고 느꼈다.
위 두가지 메인 문제점을 해결하기 위해 인컴 대표님과 PO분들께 현재의 개발자분들이 느끼는 문제점들에 대해 공유를 드리고, 나와 동일하게 문제의식을 가지고 계셨던 서버개발자분과 함께 길드식으로 숨은 환급액 찾기 리팩토링
프로젝트가 시작되게 되었다.
가장 먼저 진행한건 문제점을 뾰족하게 만들기 위해 현황파악에 시간을 많이 들였다. 첫번째 문제를 해결하기 위해서는, 프론트와 서버의 책임을 명확하게 하는 것
이 필요하다고 생각했다. 그래서 가장 먼저 API를 기록할때 특별한 인컴만의 헤더를 추가해 어떤 페이지에서 해당 API를 호출하는지
기록할 수 있게 했다. 덕분에 전체적으로 url별로 호출하고 있는 API들을 한판 정리할 수 있었고, 어느 구간에서 과하게 API를 사용되고 있는지 알 수 있었다.
이를 기반으로 조사해보니 제품을 전체적으로 도메인을 기준으로 구조화, 모듈화해서 볼 수 있었다. 각 도메인별로 구간을 나누고 해당 구간내에서 개선해야할 문제점들을 도출하고 정리작업들에 대해 세워나갔다. 특히 유저가 신고 과정중 이탈했을 경우, 어디로 랜딩해야할지 결정하는 이어하기 구간의 경우 총 13개의 API가 사용되고 있어, 어려움이 있었는데 이를 하나의 API로 판단가능하게 수정되고 각 구간별 이어하기의 경우도 내부적인 이어하기 API로 판단하도록 전체적인 제품 설계를 수정하도록 개선방향을 잡아나갔다. 서로 엉켜있던 구조에서 트리 구조와 같은 위계가 생기게 되어 다른 개발자 분들의 이해도를 높이는데도 기여할 수 있을 것 같다는 기대가 되었다.
로드맵을 완성한 후에 PO분께서 문제점, 로드맵, 효과 등에 대해 정리해서 발표해주면 좋겠다는 의견을 주셔서 전사 위클리 시간에 발표를 진행해, 팀원분들의 공감대도 만들 수 있었다. 7,8월 두달 동안 집중해서 진행할 예정으로 이후에 많은 개발자분들이 좋아하고 제품적으로도 더 안정적일 수 있기를 기대하고 있다.
프로젝트 정리 작업
리팩토링 프로젝트는 서버와 프론트가 소통하는 영역에서의 문제를 해결한다면 프론트 자체적으로 해결해야할 문제점들도 있었다. 5월중 앱이벤트가 누락되거나 잘못찍히면서 생겨 전사 데이터에 영향을 준 적도 있었고, 이전 통합결제 기능 배포과정에서 생긴 v2 폴더들로 인해 복잡해진 프로젝트 폴더 구조로 찾기 어려운 문제도 있어 폴더 정리도 필요해 보였다.
로그의 경우 DOM, DA분들과 함께 보다 개발자 친화적이고 자동으로 잘 기록될 수 있도록 버전을 올린 버전으로 새롭게 정의하는 작업을 진행해 마이그레이션을 진행했다. 그과정에서 누락되거나 잘못 남기고 있던 부분들을 수정할 수 있었다.
폴더 정리나 미뤄져왔던 세이브잇 시절 코드 정리작업을 하나 둘 진행하면서 불필요한 복잡도를 조금씩 낮출 수 있었다.
돌아보는 6월의 액션아이템과 7월 액션아이템
5월에 세웠던 6월의 액션아이템을 돌아보면 두가지 다 진행했다. 프론트 코드 정리작업은 프론트와 서버가 함께 해결해야하는 문제와 내부적으로 정리해야하는 문제들을 챙길 수 있었다. 조금 아쉬운 부분은 히스토리 문서화로 AI를 이용해 전체 프로젝트에 대해 분석시키고 더 히스토리화 하는 법을 배워야겠다는 생각이 든다. CSR 페이지를 SSR로 마이그레이션을 일부 진행했지만 아직 더디게 느껴진다. 그 이유는 SSR 페이지간 인증 공유를 위한 부분에 대해 작업이 필요하기 떄문으로 7월중에 체계를 잡아 조금 더 편하게 마이그레이션이 가능하게 만들어보려한다.
- 프론트 코드 정리 및 히스토리 문서화하기
- CSR페이지 SSR로 마이그레이션하기
7월의 액션 아이템은 아래와 같다.
- AI를 통해 히스토리 문서화 해보기
- CSR페이지 SSR 마이그레이션을 위한 인증 공유 체계 구축
매번 다양한 문제들을 만나는 토스생활이지만, 그래도 내가 느끼는 문제를 함께 공감해줄 수 있는 동료가 있고 같이 해결해보자하는 분들이 많다는 점인 것 같다. 7월에는 워크샵이 있어 조금 더 짧게 느껴지겠지만 로드맵에 따라 잘 완수해 제품의 안정성도 높이고, 팀 전체의 신뢰를 높일 수 있는 좋은 계기가 되기를 바라본다.