클래스101에 준비물 구매 플로우를 새로 만들었다.
다음과 같은 이유로 클래스101+ 준비물 선택 플로우를 개선하고자 했다.
기존 클래스101 서비스에서는 수강권이 포함된 올인원 패키지를 판매 했는데, 클래스101+ 구독 서비스가 정식적으로 런칭되면서 수강권과 같이 실물이 아닌 제품은 판매하지 않게 되었다.
즉 구독 서비스인 클래스101+에서는 아이패드, 태블릿 등과 같은 실물 준비물 패키지 제품만 판매하게 된 것이다.
기존 준비물 선택하는 플로우는 다음과 같다.
패키지 선택하기 -> 필수 구성품 선택하기(없다면 skip) -> 추가 구성품 선택하기(없다면 skip) -> 결제 페이지
이 플로우에는 3가지 문제점이 있다.
위 문제를 아래와 같은 방법으로 해결하고자 했다.
클래스101 서비스는 Apollo client + GraphQL + React Context Api를 활용하여 클라이언트에 상태를 관리하고 있다.
그러나 위 기술 스택이 정착하기 전까진 Redux, Mobx 등의 여러 상태관리 라이브러리까지 혼재되서 사용되었다.
특히 Mobx는 커머스 팀이 담당하는 결제 플로우에 깊은 의존성을 가진 상태였으며 대부분의 컴포넌트가 이제는 Departed 되어가는 리엑트 클래스형 컴포넌트로 작성되어 있었기 때문에 리펙토링과 유지보수가 쉽지 않은 상황이였다.
이번 기회에 이러한 레거시 코드를 제거하고 Apollo client + GraphQL + React Context Api를 활용한 상태관리로 아예 새로운 준비물 결제 플로우를 개발하고자하였다.
비즈니스적, 기술적 개선 목적을 달성하여 최종적으로 이루고자 하는 목적은 다음과 같다.
2022년 7월 초에 작업을 시작하여 다음달 초에 완성되는 것을 목표로 했지만 10월 초가 지나서야 QA를 진행할 수 있게되었다.
개발 기간이 생각보다 오래 건린 원인을 생각해보면 3가지라고 생각한다.
코로나와 정해진 근무시간의 설정은 스스로 조절할 수 있는 범위가 아니라고 판단하여 주된 원인은 준비물(kit) 도메인에 대한 지식이 무지한 상태에서 시작한 개발 이라고 생각한다.
개발해야할 도메인에 대해 무지한 상태에서 개발을 시작하게 되면 다음과 같은 문제가 발생한다.
개발해야할 도메인에 대한 지식이 무지한 상태에서 엔지니어가 유의미하게 개발할 수 있는건 아무것도 없다.
지금까지 어떤 개발을 하든 간에 기획자나 PM이 전달해준 문서만 읽고 바로 개발을 시작했는데 이는 상당히 잘못된 방법이였던 것이다.
기획자나 PM이 준 문서는 실제로 시스템이 어떻게 디자인 되어 있고 구성되어 있는지에 대한 기술적인 내용을 엔지니어와 동일한 시각에서 작성한 내용이 아니기 때문이다.
그렇기 때문에 아주 간단한 기능 혹은 시스템이 아닌 이상 어떤 기능 혹은 시스템을 개발할 때에는 반드시 그 기능 혹은 시스템에 대해 미리 설계하고 문서화하여 엔지니어 팀원들에게 리뷰 받는 시간을 거친 후 개발을 시작해야한다.
아쉬웠던 점에서 언급했다시피 이 프로젝트에 Due date를 지키지 못했는데 그 원인은 준비물(kit) 도메인에 대한 무지와 시스템 디자인 설계와 시스템 디자인 리뷰 과정을 거치지 않은채 시작한 개발이라고 생각한다.
시스템 디자인 리뷰는 개발할 시스템, 기능 등의 설계를 어떻게 디자인할 것인지에 대한 내용이 작성된 기술 문서를 리뷰하는 것을 의미한다.
간단한 문구 수정이나 퍼블링싱 작업 등 설계가 크게 필요하지 않는 작업이라면 필요하지 않을 수도 있으나 개발 범위와 서비스 영향력이 크고 특정 도메민에 대한 이해가 필요하며 설계가 필요한 작업이라면 시스템 디자인 문서를 작성하고 팀원들에게 리뷰 받는 활동이 필요하다는 것을 깨달았다.
준비물 선택 플로우를 개발하기 위해선 기본적으로 준비물(kit)이라는 도메인에 대해 이해하고 있어야 데이터를 가공하거나 비즈니스 로직 등을 작성할 수 있을 것이다.
클래스101 준비물 구조에 대해 간략하게 설명하면 다음과 같다.
클래스101은 온라인 클래스 판매와 함께 클래스에 필요한 준비물을 패키지 형태로 함께 판매하고 있다.
준비물은 다음과 같은 형태로 판매되고 있다.
준비물은 어드민에서 등록할 수 있다.
준비물은 옵션이 있는 상품(예: 아이패드: 용량, 색상, 화면 크기 등)과 옵션이 없는 상품이 있으며 이중에서 필수적으로 구매해야하는 구성품, 추가적으로 구매할 수 있는 구성품으로 나눌 수 있다.
크리에이터 센터에서 클래스를 생성하고 패키지를 등록하게 되는데 패키지를 등록할 때 준비물이 필요한 클래스라면 어드민에서 등록한 키트를 불러와서 패키지에 등록할 수 있다.
등록된 패키지는 클라이언트에 노출된다.
분명 1학기 종강한지 엊그제 같은데 눈을 감았다 떴더니 여름방학이 끝나고 2학기 개강이 다가왔다.
이번 학기에는 주 20시간 근무 형태로 학교 생활을 병행할 수 있는 만큼 시간적인 여유가 생겨서 최대한 많은 강의를 들으려 했다.
내가 찾는건 1학년 권장 수업이면서 소프트웨어 공학과 관련 있는 내용인 강의였는데 생각보다 별로 없고 나머진 별로 관심 있는 강의들이 아니라 처음엔 16학점 정도밖에 채우질 못했다.
그래서 공통 교양 중에 재밌는 교양 수업을 찾다가 스케이팅, 스키, 헬스 등등 건강하고 재밌으면서 수업도 별로 안하는데 2학점을 주는 꿀교양 강의를 발견했다.
그러나 내가 간과한 것이 있었는데 나만 꿀교양을 노리고 있는게 아니라는 것이였다.
수강 신청 할 때 이런 꿀교양은 0.1초 만에 만석이 되서 사실상 신의 손이 아니라면 잡는게 거의 불가능하다.
그것도 모르고 수강신청하는 날에 10시 반 쯤 설렁설렁 일어나서 수강신청 프로그램 켰다가 낭패를 보게되었다..
하지만 난 포기하지 않았고 10시 반부터 약 4시간 동안 수강신청 프로그램 새로고침하면서 모니터링 존버한 결과 중간에 교양 스키 수업 한자리가 뜬 것을 낚아 챌 수 있었다.
누군가 실수로 버튼을 잘못 눌렀거나 타인에게 양도하려고 했는데 내가 낚아 챈거 같다.
" 노력은 배신하지 않는다. "
결과적으로 총 18학점으로 2학기를 보내게 되었다. (이정도면 나쁘지 않은듯!)
추후에 대학생 커뮤니티 에브리타임 게시판에 이런 글이 올라온걸 발견했다.
ㅋㅋ
3분기에만 MT를 총 3회 참여했다.
코로나가 거의 풀린 시점이라 우리 뿐만 아니라 전국적으로 MT를 정말 많이 가는 듯 했다.
7월 초에 학과 내 맛집 동아리에서 진행하는 MT를 갔다.
을왕리에서 진행 되었고 술과 담배를 즐기며 새로운 사람도 만나고 원래 알던 사람도 만나서 밤새 잘 놀았다.
술게임을 했는데 술게임을 진짜 1도 몰라서 병신샷? 이거를 엄첨 마셨는데 평생 들을 병신 소리는 이 때 다 들은 거 같다. ㅋㅋ
중간에 술겜을 피해 다른 방 가서 마신 기억이 나는데... 암튼 재밌었다.
9월에 개강하자마자 학부와 학과 MT에 참여했다.
학부 MT가 금요일, 학과 MT가 토요일이였고 장소까지 옆건물이라 연속으로 참여했다.
학부 MT는 학부에 소속된 모든 학과에서 참여하는거라 약 160명? 정도에 많은 인원이 참여했던거 같고 22학번 1학년인 02, 03년생 친구들이 젤 많은 거 같았다. 04년생도 있었다
저녁에 후발 주자로 학부 MT를 출발 했는데 도착 하자마자 내가 본 관경은 열악한 잠자리와 술에 취해 쓰러져 있거나 얼굴이 시뻘개져서 비틀 거리며 돌아다니는 친구들이였다.
그 때부터 학부 MT는 괜히 왔다 싶었는데 술게임 하는거 보고 괜히 왔다는걸 확신했다.
술게임 한턴에 인당 1병씩 마셔 재끼는데 거기 꼈다간 바로 응급실 갈 거 같았다.
그래서 대충 단체 활동 끝나자 마자 방으로 가서 학과 친구들이랑 휴식했다.
편의점에서 하겐다즈 진열되어 있는 거 전부 골라서 친구들 나눠줬는데 다들 맛있게 먹어서 좋았다.
밤새 술게임 하는 소리에 잠도 잘 못자고.. 학부 MT는 ㄹㅇ 괜히 참여한듯 ㅜ..
다음날 아침에 밥먹고 옆에 학과 MT 장소로 가서 씻고 세팅하는거 도와주고 있다가 오후 3시부터 슬슬 사람들 모이기 시작하더니 6시 쯤 부터 고기 먹고 겜하고 그랬던거 같다.
누군지 기억은 잘 안나지만 동아리 MT에서는 보지 못한 새로온 사람도 많이 만났고 술도 적당히 재밌게 마셨다.
코스트코에서 1.75리터 짜리 커클랜드 아이리쉬 위스키 가져가서 하이볼이랑 위스키 콕 만들어서 먹으려 했는데 콜라도 팹시고.. 술도 좀 취한채로 만들었더니 맛은 별로 없었던거 같다. ㅋㅋ ㅜ 그래도 다같이 나눠먹었더니 다 먹긴 했다.
새벽에 진짜 피곤하긴 했는데 잠을 거기서 자기가 싫어서 나랑 비슷한 생각을 가진 사람들이랑 5시 반 쯤 첫차타고 집에갔다.
개인적으로 다음엔 서울에서 에어비앤비 같은거 빌려서하면 모두 편할거 같은데 그렇게 했으면 좋겠다. ㅎㅎ;;
올해 계획한 독서, 주 3회 운동, 영어 공부, Unmanage Language 공부하기는 모두 실패한거 같다.
이유는 전부 막상하려하니 당장에 필요성이 느껴지지 않기 때문인거 같다.
내년엔 저중에 2가지 정도만 정해서 꾸준히 할 수 있도록 계획해야겠다..
이번 분기는 열심히 놀고 열심히 일한거 같다.
2학기 중간고사 공부하면서 느낀건데 아직 1학년이라 그런지 몰라도 학교에서 듣는 강의들 중에 70%는 들으면서 시간낭비하는 느낌이 든다.
분명 도움 되는 강의도 있지만 이런 생각이 들때마다 스스로 왜 학교를 회사 보다 더 높은 우선순위로 설정했지? 라는 의문이 든다.
내가 대학교에 온 목적을 복기해보면 총 아래 3가지이다.
3번은 크게 기대하지 않았고 2번은 어느정도 이뤄지고 있는거 같은데, 가장 중요하다고 생각한 1번이 제데로 이뤄지지 않고 있기 때문에 시간낭비하고 있다는 느낌이 드는거 같다.
어떻게 이 문제를 해결할 수 있는지는 잘 모르겠다.
개발자들 모아서 세미나라도 열어볼까?
일단 2학년 1학기까지 경험해보고 다음 스텝을 생각해봐야 할 거 같다.