혁신적인 아이디어가 있다.

앱을 다운 받기만 하면, 서울 600여개 제휴점에서 술 1병씩 공짜로 먹을 수 있는 서비스.
하루 저녁에 1차, 2차, 3차 모두 제휴점에 가면 3병을 공짜로 먹을 수 있는 서비스.

도대체 이 회사는 돈을 어떻게 버는지 궁금한 서비스.
그 혁신적인 서비스?를 운영하는 회사는 이제 문을 닫는다.

고객들이 안 쓸 이유가 없다고 생각했던 서비스는, 실제로 많은 고객들이 쓰지 않았고
나의 시간을 무려 사이드로 1년, 퇴사 후 1년, 그리고 금전적으로 5,000이상 까먹어버렸다.

이 이야기의 시작과 끝을 적지 않으면 누군가는 또 우리 같은 실수를 할 것이기에,
이렇게 글을 적는다. (결국 나조차도 창업 전에 이미 알고 있었던 것들을, 다시 내 시간과 돈을 쓰면서 배운 느낌이다...하)

이 혁신적인 서비스의 시작은, 거슬러 2년 전(2020년 8월경)으로 간다. 나와 학생때부터 학생창업가로 알고 지내던 형님 2분은 각자의 사업을 마무리하고 서울에서 회사를 다니며 다시 사이드로 진행할 아이디어들을 찾고 있었다.

술집이다보니 자연스럽게 술에 관련된 여러 아이디어들이 오갔고, 우리는 술집에서 이런 문제들을 찾을 수 있었다.

"요즘 코로나로 술집들이 장사가 잘 안 된다." "술집들은 마케팅을 해야 하는데, 마케팅 비용이 비싸고, 마케팅으로 얼마나 유입이 있었는지 측정이 불가능하다." "구석에 있는 술집에 사람들이 잘 안 찾아간다." "사람들이 술 마실 때 어디가야 될지 모른다." "술 한병에 5,000원은 너무 비싸다" 등등

그리고 이것들을 단 한 번에 해결할 수 있는 "꽁술"(이름은 나중에 지었다.)이라는 아이디어가 떠올랐다. 꽁술에 제휴한업체들은(가맹비 X) 꽁술 고객들에게 술을 제공한다. (마케팅 비용을 후불로 지불한다.) 꽁술 고객들은 멤버십 비용(한달에 4,900원)을 내고 꽁술 제휴점에 방문할 때 마다 술 1병을 공짜로 먹는다.

"미친 이거 진짜 대박인데??"

업체는 고객이 오면 술 1병(원가 1,500원)을 주면 되니깐 후불제 마케팅으로 부담이 없고 고객은 술 1병 값정도인 4,900원의 멤버십 비용만 내면 제휴된 곳에 갈 때 마다 술 1병씩 먹을 수 있고, 우리는 그 멤버십 비용만을 벌면 되니깐 이건 마치 원가가 없는 사업처럼 보였다. 그리고 만약 고객 한 명 유치비용이 4,900원 이하라면 밤새도록 광고를 돌리면 된다...!!

그럼 우린 곧 부자가 될 수 있다 생각했다.
이건 정말 술 좋아하는 사람들에게는 폭발적인 반응을 끌어낼 수 있지 않을까 생각도 들었다.
(왜냐하면 하루에도 1차, 2차, 3차 제휴점에 가면 3병이 공짜고 한 달에 10번만 가도 무려... 5만원을 save할 수 있다.)

그래도 우리는 나름 사업을 경험했던 사람들이었고, 똑똑하게 사업을 하고자 했다. 그렇게 먼저 위의 아이디어에 대한 시장 검증부터 하였다.

처음 꽁술을 소개하던 렌딩페이지 따로 개발 없이 큐브를 통해 만들었다.

바로 꽁술 소개 페이지부터 만든 것이다. 개발 없이 랜딩페이지를 만들어주는 서비스를 이용하여 꽁술 서비스 소개 페이지를 만들고, 꽁술 서비스가 곧 오픈을 위해 개발 중이며, 개발이 완료되면 연락드리겠다는 메시지와 함께 고객의 연락처를 받을 수 있도록 하였다.


우리가 생각하는 우리의 아이디어를 고객이 인정하고 실제로 구매할 것인가에 대한 검증이었다. 해당 서비스 소개 페이지에 대해 광고를 조금 돌리자 금방 반응이 왔다. 고객들은 아무것도 없는 서비스를 위해 좋은 아이디어라는 추천글과 함께 본인의 정보를 기꺼이 제공해주었다.

그렇게 우리는 아이디어에 대해 확신을 가진 뒤 개발을 시작하였다. 그와 동시에 매장에 대한 영업도 시작하였다. 그렇게 각자 맡은 역할을 가지고, 한 명은 개발, 한 명은 마케팅, 한 명은 영업에 불을 붙였다. 퇴근하면 새로운 일의 시작이었고, 일어나면 일을 하다가 회사 일을 시작했다.(그래도 절대 회사 업무 중에는 하지 않았다.)

초기 모델은 앱이 아닌 웹으로 진행하고자 하였고, 카카오채널을 통해 우리 꽁술 서비스로 접속하도록 하였다. 그리고 2021년 3월에 짠 하고 오픈 하였다. 그렇게 꽁술을 실제로 운영하기 시작했다.


그리고 과연 이 서비스는 바로 대박이 났을까?

서비스를 냈지만 생각보다 잘 되지 않았다. 처음부터 잘 되는 서비스가 어디 있냐고는 하지만, 생각과는 너무 다른 반응이었다. 그 중에서 주된 반응은 제휴된 술집이 너무 적다였다.

처음 오픈 했을 때 우리는 50여개의 술집을 제휴하여 오픈하였는데,멤버십을 가입하려고 해도 본인이 자주 가는 곳에는 제휴점이 하나 밖에 없거나 없어서 가입을 할 수 없다는 것이었다.

그렇게 우리는 제휴점이 문제다라며 제휴점을 늘리기 위해 노력했다. 퇴근하면 강남으로, 수유역으로, 건대로 영업을 하러 다녔다. 영업 그 자체는 어렵지 않았지만 퇴근 후에 이어지는 일은 결코 쉽지 않았다. 그리고 고객이 있는 술집에서의 영업은 지금 바쁘다는 이야기로 더더욱 쉽지 않았다.

형님들과 열정을 불태웠던 시간

그러던 중 우리는 매장 오픈을 준비하는 낮 시간에 영업을 가면 더 잘 할 수 있다는 것을 알게 되었고, 우리가 밤에 가는 것보다 낮 시간에 영업 사원을 뽑아 보내는 것이 더 좋겠다고 결론을 내렸다.

그렇게 우리가 저녁에 영업했던 것을 바탕으로, 교육자료를 만들고 알바천국에서 영업사원분들을 모았다. 월급 형태가 아닌, 영업점을 영업할 때 마다 페이를 드리는 형태였고 10분이 넘는 영업 사원분들 모아 서울 각지에서 영업하도록 하였다. 다른 사람들은 월급 벌어 주식에 투자한다고 했는데, 우리는 돈을 벌어 꽁술에 투자하였다.

결론적으로는 그 많은 영업사원분들 중 한 분이 남아서, 꽁술 제휴점의 대부분을 영업하셨다. 그렇게 매달 꽁술 제휴점은 100곳 이상씩 늘어났지만, 코로나 단계도 계속 높아져갔다. 오픈한지 3개월이 지난 6월이 되자 더 이상 코로나로 인해 술을 마시기도 어려워졌다. 2명까지, 9시 제한은 술을 먹지 말라는 말과 같았다.

청천벽력같은 카카오 채널 삭제 통보 ㅠㅠ

그렇게 우리 서비스도 점점 어려워지기 시작했다. 그리고 7월에는 그 동안 고객들이 활동하던 카카오채널이 갑자기 통보 후 삭제되었다...멘붕이었다. 경쟁사인지는 정확히 알 수 없으나 우리 채널을 주류홍보로 신고하였고, 카카오는 우리에게 주류판매업 허가증을 요구하였다. 우리는 중간에서 홍보만을 도와주는 것이라며 지속적으로 이야기하였지만, 카카오에게 그런 이야기는 먹히지 않았다. 그렇게 우리 채널은 삭제되었다.

채널이 삭제된 뒤 더 이상 고객들은 들어올 수가 없게 되었고, 결국에는 앱을 제작해야 하는 상태가 되었다. 당시 회사에서 새벽배송 작업을 맡아 진행하고 있었기에, 도저히 여유가 되지 못 하였고 10월이 되어서야 회사를 그만두고 꽁술에 몰입할 수 있었다.

처음 출시된 꽁술앱. 지인들에게 깔아보라고 하니 개인정보를 다 털어갈 거 같다고 했다...


그렇게 11월 12월 개발하여 꽁술을 앱으로 출시하였지만, 그 동안 여러 시행착오를 겪으며 지쳤던 형님들은 서비스를 드랍하겠다고 하셨다. 나도 그때 드랍을 했어야 했는데... 결국 나는 스스로 그만두지 못 하였다.

아직 내가 개발적인 것 이외에는 이번 서비스에서 배운 것이 없었다. 무언가 문제(고객이 많이 쓰지 않는다)가 있다는 것은 본능적으로 느끼고 있었지만 그것은 앱이 아니었기 때문이고, 아직까지 제대로 고객들에게 평가를 받아보지 못 했다고 생각했다.

그렇게 혼자 남게 된 나는 팀부터 다시 빌딩하였다. 혼자서 6개월을 해 볼 생각이었지만,곧 생각을 바꾸었다. 그 동안 영업해놓았던 제휴점 600여곳은 고객들이 안 간지 6개월이 넘어 다시 재교육이 필요했고, 개발적으로도 마케팅적으로도 해야 할 부분들이 많았다. 그래서 계획을 수정하여 그 동안 모아 놓은 돈을 투자하여 팀을 빌딩하고, 3개월만 챌린지 해보자 결정하였다.

초창기 함께 달려주셨던 팀원분들

하늘도 돕는지 생각보다 초창기 팀 모집은 어렵지 않았다. 영업 하시는 분은 기존에 영업 하셨던 분을 정직원으로 채용하였고(회사가 없었기에,  채용이라는 말은 그렇지만 풀타임으로 급여를 드리고 꽁술 일만 집중 하시도록 하였다.) 3년 ~ 4년차 되신 마케터분도 모셔왔다. (개발에 관심이 있어서 우연찮게 연락이 오셨었는데, 그게 인연이 되어 함께 할 수 있었다.) 그렇게 총 3명의 팀원이 구성이 되고, 파트타임으로 일 해주실 수 있는 디자이너분도 있으셔서 정말 팀의 형태를 갖출 수 있었다.

마케터분을 공동창업자급으로 모셔왔고, 우리 되든 안 되든 딱 3개월만 해보자라고 했던 약속이 무색하게 채 1개월을 채우지 못하고 그만 두겠다고 하셨다. 나의 문제였는지 서비스의 문제였는지 아니면 이제와서 보면 선견지명이었는지 아무튼 그렇게 어렵게 모셔왔던 첫 번째 팀원분이 나가셨다. 그 이후에 오셨던 학교 휴학 중에 잠시 일을 하시던 분도 한 달을 채우고 나가셨고 ( 이 분의 경우 퍼포먼스의 문제가 제일 컸다.)  그런 여러 가지 상황들 속에서 생각보다 3개월은 길지 않았다.

그 사이 다양한 앱 업데이트와 수치를 높이기 위한 시도들을 하였다. 제일 큰 시도였으며 그리고 잘못되었던 시도는 바로 제휴점 테이블마다 삼각 배너를 설치한 것이다. 결국 고객이 제휴점을 방문했을 때 바로 앱을 설치하고 효용을 느끼도록 하는 것이 우리에게는 고객들을 유치하는 데 제일 효율적이라고 생각하였다. 추가적으로 업체에서 고객을 모아주면 기존에 SNS마케팅에 사용하던 고객 유치비용을 업체에 드릴 수도 있었다.

그렇게 우리는 제휴점에게 삼각배너를 설치하여 고객이 앱을 설치하면 우리가 술 원가 2000원을 지원하겠다고 제안하였다. 이를 통해 고객이 제휴점을 방문했을 때 해당 배너를 보고 설치 후 사용, 이게 근처의 꽁술 제휴점에 2차 사용으로 이어질 수 있지 않을까 기대하였다.

파란선은 가입자 수 / 빨간선은 사용자 수 / 노란색은 재사용자 숫자

실제로 해당 배너를 설치 이후에 꽁술 데일리 사용 유저수는 지속적으로 증가하였다. 과거에는 꽁술앱을 설치하고도 술집을 방문하는 시기가 길어지면 꽁술을 사용 안 하는 경우도 많았지만, 이제는 바로 그 효용을 느낄 수 있었다.

하지만 우리 기대했던 것처럼 2차 사용(사실 이게 제일 중요했는데)이 일어나지 않았다. 많은 고객들이 한 번 이용 후에 다시 앱을 접속하지 않으시거나 앱을 삭제하셨다.

그리고 정말 큰 문제는 바로 업체와의 관계였다. 우리는 업체들이 후불제로 마케팅 할 수 있도록 도와주는 서비스였는데, 업체에서는 항상 술값을 지원해준다라는 이상한 인식과, 또 한 편으로는 이미 들어온 고객에게 술을 한 병 줘야 한다면서 불만을 표시하였다.

고객들의 문제야 그렇다치더라도(이건 앱 푸쉬나 앱 내 다양한 장치들로 해결할 수 있을거라 기대했다.), 업체들의 문제는 매우 크리티컬했다. 그리고 업무 시간 중의 상당히 많은 시간을 업체들의 정산과 연락에 빼앗겨 버리고 말았다. 인증 숫자가 늘어날수록 돈이 타는 속도도 빨라졌다. 이게 바로 돈을 쓰고 고객을 얻는 것인가라는 생각이 들었다.(하지만 그 고객도 진짜 고객이 아니라 일시적인 고객이었다.)

분명 맞다고 생각했던 방법이 실제로 해보니 틀린 경우가 많았다. 업체 배너 문제는 시작할 때 업체마다 한 달간 지원을 약속 하였기에 해당 기간을 채우면 바로 끝내기로 다시 결정하였다. (하지만 업체마다 제휴 일자가 달라 이 문제는 생각보다 오랜 시간 나를 괴롭게 했다.) 우리는 이 방법이 아니라 다른 방법으로 고객 사용성을 높이기 위한 시도들을 지속하였다. 앱 편의성을 증대시키고, 고객 인터뷰를 통해 지속적으로 원하는 곳에 제휴점을 늘렸지만 수치는 높아지지 않았다.

600여개 제휴점에 방문할 때 마다 술 1병을 무료로 준다. 이 미친 문장을 듣고 누가 가치를 느끼지 않겠는가? 실제 오프라인 홍보를 나가도 고객들의 반응은 폭발적이었다.

"왜 이 앱을 지금에서야 알게 되었는지 모르겠어요"

"제가 자주 가던 곳이 꽁술 제휴점이었다니..."

"이 앱을 만들어주셔서 감사합니다." 등등

그런 폭발적인 반응에도 불구하고 우리 수치는 계속해서 제자리 걸음이었다. 앱을 설치한 인원 중 약 30%의 인원만이 1회 인증을 하였고, 정말 더 큰 문제는 다시 인증을 하는 인원은 4%로 확 떨어졌다.

한 번 사용 후 만족 하였으면 분명 또 사용을 해야하지만 사용하지 않았다. 이것에 대한 의문이 풀리지 않은 채 3개월이 지나갔다. 이미 많은 돈과 약속한 시간이 지나갔지만, 나는 이 의문에 대한 해답을 풀지 못 하였기에 다시 3개월을 도전하기로 결정했다. 분명 안 되는 사업인거 같은데 도대체 그 이유가 무엇인지, 스스로 풀리지 않는 질문을 이어갔다...

그렇게 꽁술 서비스의 후반전이 시작되었다. 하지만 이번에는 달랐다. 우연한 계기로 정말 공동창업을 함께 할 수 있는 좋은 친구를 만났고(실제로 동갑), 사이드로 디자이너분도 참여를 해주셨다.

공동창업자 친구를 만났던 날의 우리 두명에게 나온 운세와 후반기를 같이 했던 팀원분들

우리는 짧은 기간 많은 것들을 수정했다. 고객들이 꽁술이 쓰지 않으니 우선 사용성을 개선했다. 앱 내에서 불편하다고 느끼는 요소들을 뽑아내어 수정 하였다.

"디자인이 너무 좋지 못한 것 같아. UI/UX를 변경하자" "매장 정보를 보는게 너무 어려운 거 같아. 내용을 좀 바꿔보자." 등등 물론 좋은 액션들이었지만 지속적으로 개발과, 시간과 돈이 들어갔다.

그리고 결과적으로 나는 이번 후반전의 Objective를
"술집 갈 때 켜는 앱의 PMF를 찾자"라는
모호한 Objective를 설정해버렸다...

도대체 술집 갈 때 켜는 앱의 PMF를 찾자는 말이 왜 나왔을까? 지금 생각해보면 왜 이런 말도 안되는 목표를 세웠는지 모르겠지만 그 때 당시에는 꽁술이라는 서비스에 매몰되어,

"분명 누군가는 술집 갈 때 켜는 앱"이라는 카테고리를 먹을 것인데, 우리가 한 번 해보자. 근데 그게 꽁술 하나만으로는 어려우니깐 술집 갈 때 생기는 다양한 문제들을 해결해서 이뤄보자는 생각에까지 미쳤다.

꽁술이 해결하고자 했던 문제는 술값이 부담이 된다로 잡았고, 꽁술이 이것을 제대로 해결해주고 있는지는 판단하지 않은 채, 더 다양한 문제들을 뽑아내었다.(물론 이 문제들은 고객이 아닌 우리가 뽑아내었다.)

"좋은 술집을 찾기 어려워요.", "술자리에서 할 게임이 필요해요", "막차 시간을 계속 놓쳐요", "합석 하고 싶어요", "전 술도 안 마셨는데, 항상 술값을 내야해요", "다양한 이벤트가 있었으면 좋겠어요"

술자리를 가지는 전 과정을 돌아보면 약속잡기 => 술집 선정 => 술자리 => 결제 => 귀가  => 마무리(숙취해소) 이렇게 볼 수 있었고 이 전 과정에서  문제들을 어떻게든 뽑아내었다.

그리고 그 문제들을 하나 하나 앱 안에서 해결해주면 술집 갈 때 마다 이 앱을 쓰지 않을까? 생각했다.

그렇게 꽁술 앱에는 다앙한 키워드(분위기 좋은, 화장실이 깔끔한, 가성비, 데이트, 헌팅포차 등등)로 필터하여 술집들을 찾을 수 있는 큐레이션 기능이 추가되었고, 다양한 게임들, 그리고 신규 이벤트들이 하나씩 추가되었다. 

하지만 우리의 기대와는 다르게, 고객 사용량은 늘지 않았다. "좌절하지마, 우린 이 문제를 풀 수 있을거야"라고 다짐하는 날들의 연속이었다. 이때 우리가 정의한 문제는 "술집 갈 때 켜는 앱의 PMF"였다.

그렇게 매일 매일 무언가를 아침부터 밤까지 하였지만 정말 무엇을 하였는지는 모르겠는 시간들(결국 고객이 필요로 하지 않는 다양한 일들)이 이어질 때쯤 공동창업자 친구와 함께 한 대표님을 만났다.

대표님과 소주 한 잔을 하면서 이야기하며 꽁술의 비전과 하고 있는 것들을 장황하게 늘어놓던 중 대표님이 이런 질문을 하였다.

"그래서 너희가 풀고자 하는 문제가 뭔데? 술집 갈 때 켜는 앱? 그거 말고 진짜 고객의 문제가 뭐야. 그리고 그 문제를 풀면 어떻게 될 수 있는데? 그걸 이룰려고 하면 꼭 꽁술이어야 해? 다른 방법은 없어? 너희 지금 너무 매몰되어 있는 것 같아. 다시 한발짝 뒤로 나와서 생각해봐"

머리를 한 대 탕 맞은 느낌이었다. 우리는 어떤 문제를 해결하고 있었을까? 우린 고객의 문제가 아니라 꽁술 서비스가 왜 안 되는지에 대한 문제를 해결하고 있었다. 꽁술 서비스가 왜 안되는지 그 이유들을 찾고 그 이유들을 하나씩 해결해가고 있었다.

이게 도대체 무슨 말도 안 되는... 소리인가 싶지만 정말 그랬다. 분명 안 쓸 이유가 없는 서비스라고 생각을 버리지 못하니 왜 안 쓰는지 계속 생각하고, 그 원인이라고 의심되는 부분들을 하나씩 개선하고 있었다. 웃기게도 우리가 해결하고 있는 문제는 고객의 문제가 아닌 우리의 아이디어의 문제였다. 도대체 왜 아이디어가 안되는지 예상되는 원인을 찾고 수정하고 있었다.

그렇게
우리는 문제가 아니라 아이디어를 실현하고 있었다.

그리고 정말 아이러니하게도, 이 문장은 내가 퇴사 직후에 꽁술에 대해서 적은 글에도 나와 있었다.

"""

나는 해결하고자 하는 문제를 확실히 정의 해야 한다고 생각한다. 보통 우리는 "이런 문제"를 해결하고자 "이런 아이디어"를 생각해냈어. 이건 분명 대박일거야! 라고 생각한다. 그리고 "이런 아이디어"를 실현 시키는데 집중한다.

이 아이디어를 실현시키기 위해서는 개발이 필요하고, 이건 앞으로 이렇게 커질 수 있다 등등... 하지만 사실 "이런 문제"를 잘 정의만 한다면, "이런 아이디어"는 무수히 많을 수 있다.

결국 목적은 문제 해결이 아닌가. "이런 아이디어"에 집중하다 보면 어느 순간 해결하고자 했던 문제가 무엇이었는지 헷갈릴 때가 있다. 그리고 그 때는 이미 너무 멀리 와 버렸을 수 있다.

"""

하... 그때 했던 생각은 결국 내가 직접 경험하면서 뼈져리게 느꼈던 것이 아니었기에 그냥 잊혀졌던 것일까?

나는 너무 멀리 와있었고, 너무 많은 시간과 돈을 써버렸다...

이것을 깨닫고 다시 한 번 우리 서비스를 돌아보았다. 일단 꽁술이라는 아이디어는 고객들의 술값 문제를 주로 해결하고 있다고 이야기하고 있었는데 과연 고객들의 술값 문제를 해결하기 위해서는 꽁술 밖에 없었을까? 그리고 꽁술은 진짜 고객들의 술값 문제를 해결하고 있을까? 아니 반대로 코로나로 인해, 술자리가 줄어들었는데 정말 고객들에게 정말 술값이 문제일까?

과거 고객과의 인터뷰에서 "술값 아끼려고 꽁술 제휴점에 갔는데 안주 값이 비싼 곳이라 오히려 돈이 더 나왔다."라는 말이 있었다.  여기 속에는 굉장히 많은 이야기가 숨어 있는데, 정말 술값을 아껴주려면 단순히 술 한병이 아니라 술 전체 가격을 아껴주어야 하는 것이다.

그럼 다시 술값 문제의 해결로 돌아오면, 차라리 꽁술보다는 "인당만원"이라는 이름으로 친구와 만원 한장씩으로 술을 마실 수 있는 술집들만 모아놓았다면 어떨까? 오히려 이게 더 쉽게, 그리고 더 명확하게 술값 문제를 해결할 수 있지 않았을까?

아니면 반대로 꽁술을 테이블당 1병이 아니라, 인당 1병으로 바꾸거나 애초에 술과 관련된 회사들로 광고비를 받아 앱 안에서 술값을 지원하는 이벤트를 하는게 낫지 않았을까?

꽁술에서 벗어나니 정말 우리가 해결해야 할 문제가 보였고, 그 문제에 대한 해결책은 너무나도 다양하게 있었다.

그리고 그 술값에 대한 문제는 본질적으로 우리가 해결하기가 쉽지 않다는 결론에 손쉽게 도달할 수 있었다. 그 동안 왜 꽁술을 사용하지 않는지 정말 수 많은 생각들과 가정을 하고 개선하였지만, 꽁술이 고객들로부터 외면 받은 이유는 결국 고객의 문제(여기서는 술값)를 제대로 해결하고 있지 못 했기 때문이었다.

아니 그럼 우리가 길거리에서 보았던 그 고객들의 반응은 도대체 무엇일까?

여기서도 큰 깨달음이 있었는데, 우리가 술값 문제를 해결하겠다고 내놓았던 해결책 "꽁술"에 대해서 우리가 했던 이야기는 아래와 같다.

"서울 600여개 제휴점에 방문할 때  술 1병이 무료에요."

하지만 참 아이러니하게도 실제 고객들이 사용하는 과정에서 느끼는 가치는 달랐다.

"술 1병 줄테니깐 우리가 소개하는 술집 가보세요."

2가지 문장 모두 제휴점에 가면 술 1병을 받을 수 있다였지만, 우리가 이야기했던 문장은 "안 쓸 이유가 없는 서비스"가 되어버리지만 고객이 느끼는 문장으로 보면 "왜? 술 1병 받으려고 검증되지도 않은 술집을 가라고?"가 되어버렸다. 결국 우리가 길거리에서 수 없이 마주 하였던 매장 홍보 전단지와 다를 바가 없었다.

문제에 대한 해결책의 가치는 고객이 평가해야 했는데, 우리는 우리가 생각한대로, 우리가 느낀대로 전달하고 있었다.(그럼 일시적으로 고객은 우리가 말한 가치를 진짜 가치라 느끼고 반응을 할 것이고 이게 길거리에서의 반응이었을 것이다.) 그럼에도 불구하고, 우리 서비스는 무료였기에 어느 정도는, 그리고 가끔은 문제를 해결하고 있었다. (총 2,285번의 인증이 일어났다.), 단 해결하고 있는 문제에 대한 해결책이 wow하지 못 하였기에 우리는 J 커브를 그릴 수도, 많은 고객들의 사랑을 받을 수도 없었다.

우리 꽁술의 최종 지표다

말로만 들었던 스타트업은 문제가 문제다라는 것과 그리고 실제 꽁술을 하기 전에 적어놓았던 문제를 잘 정의해야 한다라는 이야기를, 결국 2년이라는 시간과 5,000만원이 넘는 돈을 소진하고서야 깨닫게 되었다.

그리고 그 깨달음이 있은 뒤에, 이제서야 드디어 마음으로서, 이 서비스를 보낼 수 있게 되었다.

나는 또 팀원분들에게 실패했다고 이야기해야하고, 내가 틀렸다고 이야기 해야한다. 이 순간은 정말 매번 너무 힘들고 아픈 순간이다.

하지만 분명한 것은 이 과정에서 문제를 정의하는 것이 얼마나 중요한 것인지 그리고 거기에 대한 해결책에 대한 가치의 중요성을 정말 온몸으로 깨달을 수 있었다.

앞으로 우리는 더 똑똑하게 새로운 문제를 찾고, 문제를 해결할 것이다. 그리고 또 나아갈 것이다.

또 한 달 뒤가 기대되는 오늘이다.

굿바이 꽁술~

 

주니어 개발자의 새벽배송 개발기

커머스는 우리가 생각하는 것보다 훨씬 더 복잡하다.
단순히 상품을 진열하고 구매하는 것을 벗어나서, 실제 구매가 이루어진 후의
상품 출고 과정과 고객분들의 후기, 그리고 교환과 반품과 같은 CX처리까지...

이 모든 과정이 끝나야지 정말로 커머스의 한 사이클을 돌았다고 이야기할 수 있다. 

물론 사람이 진열할 상품을 고르고, 가격을 설정하고, 상품을 보내고, CX상담을 하고 하지만
이 모든 것들을 가능하게 하는 로직이 바탕이 되어야 한다. 발생할 수 있는 모든 케이스에 대해서 로직 처리가 되어있다 보니
커머스의 서버는 방대해질 수밖에 없다.

2019년 7월 22일 입사부터 2021년 7월 22일!

다노에 입사한 지 어느덧 2년이라는 시간이 지났다. 그 과정 속에서 나는 더 성장을 한 것인지, 정체되어 있었는지 잘 모르겠다.
가끔은 잘하고 있다는 생각이 들 때도 있었고, 또 어쩔 때는 다른 개발자들과 비교하며 정체되어 있다는 느낌을 받기도 했다. 

뭐 이유야 어찌 되었든 나는 필요에 의해 개발을 하고 있는 사람이고, 개발 그 자체를 즐기진 못하고 있다.
(물론 내가 개발을 못 한다는 이야기는 아니다.) 

개발이 정말 나의 적성에 딱 맞으면 좋겠지만, 애당초 잘 맞지 않을 것이라는 것을 예상하고 들어왔고,
나름 내가 개발자로서 목표하였던 것들을 성취하면서 성장해 나가고 있는 것 같다.

어느덧 2년 넘게 바라보았던 다노샵 서버에 이제는 너무 큰 애정이 생겨버렸다.
수 없이 마주 하였던 버그들을 수정하고, 수많은 신규 피처들을 붙이면서 다노샵은 점점 고도화되어 가고 있다.

처음 다노샵은 카페 24에서 시작하였었다.
그러다가 카페 24에서 자체에서 운영하는 독립몰로 옮기기 위해 정말 노력하셨던 분들이 있었고,
나는 그 옮겨놓은 독립몰 큰 틀 안에서 새로운 것들을 지속해서 만들어 나갔다.
아무튼 처음 입사 때부터 사수분과 둘이서 다노샵 서버 전체를 다 보았고 유지보수 및 피처개발을 해나갔다.
(이런 경험은 쉽게 쌓을 수 없다고 생각한다. 정말 감사하다고 느낀다.)

큰 이슈가 없으면 기존 것을 최대한 활용하고 발전시켜 새로운 기능들을 붙여나갔다.
(지금 다노샵 독립몰은 정말 정말 다양한 기능들이 추가되어있다. 이게 카페 24 혹은 고도몰을 활용하지 않고 독립몰을 활용하는 이유이기도 할 것이다.)

새벽배송 관련 서비스 오픈은 작년부터 SCM팀에서 진행하고 싶었던 일이기도 하였고, 다노샵을 이용하는 나라는 고객 입장에서도 너무나도 도입되면 좋겠다고 생각한 배송 서비스였지만 여러 가지 회사 사정들과 급한 이슈들로 인해 뒤로 미뤄져 갔다.

아무튼 시간이 흘러 다노샵도 새벽배송을 도입하기로 결정이 되었고,
해당 피처 작업을 맡아서 진행한 스토리를 좀 적어보려고 한다.

새벽배송? 일단 무엇을 해야 할까? 너무나도 막막한 부분이지만,
SCM팀의 리더분의 이야기는 심플했다.

"이미 배송 협력사에서 시스템이 다 갖추어져 있어서 저희는 기존에 나오던 금일 출고될 상품들의 엑셀 파일에서
새벽배송 관련된 row만 한 줄 추가되면 됩니다."

이것을 믿고, 새벽배송 TF팀은 희망을 가졌다.(서버1, 프론트1, 디자이너1, PM1, QA1)

"그래. 새벽배송이 가능한 고객분들에게는 주소랑 연락처 이외에 새벽배송 관련된 정보를 더 받자. 그리고 그걸 서버 쪽에서 핸들링해서 출고 파일 뽑을 때 추가해주자"

오 ...!! 쏘 심플하다!!! 정말 저거면 된다고?! 생각하며 시작한 새벽배송은
DUE 자체도 1달 정도로 길지 않았다.

그렇게 출사표를 던졌다.(이때까지만 하더라도 거이 새벽배송은 서버 쪽만 건들면 되는 거 아닌가 라는 내부적인 생각도 있었다. 우리 TF팀조차도..)

진지하게 적은 출사표

(다노는 정말 응원도 많이 해준다 ㅎㅎ)

하지만 과연 그랬을까....??? 일단 가장 큰 문제는 현재 다노샵에서는 현재 주문서에서 주소지를 받고 변경할 수 있는 구조인데, 그렇다면 만약에 고객이 새벽배송만 가능한 상품을 가지고 주문서로 간 뒤, 새벽배송 불가능 주소지를 입력하게 되면 그 주문서에서 "이 상품은 새벽배송만 가능한 상품입니다"와 같은 알람이 뜬 뒤에 주문서를 탈주해야 하는 시나리오였다.

주문서에서 주소를 받아 최종 결제를 진행한다.


결국 고객 경험에서 매우 좋지 못한 FLOW였고 이것을 위해 최소한 장바구니 단계에서 혹은 제품 상세페이지 단계에서 주소지를 넣도록 하기 위한 조치가 필요했다. (그 이유 때문이었는지 새벽배송을 하는 다른 업체들을 참고해보아도 모두 그렇게 하고 있었다.)

결국 그러기 위해서는, 주문서, 장바구니 쪽 모두 대대적인 손을 봐야 하는 상황에 직면하였다. 뿐만 아니라 제품 상세 페이지에서도 새벽배송이 가능한지 여부등을 정확히 안내해야 될 필요성이 있었고 이것은 나의 주문 목록에서도 마찬가지였다. 그리고 추가적으로 중요한 것은 새벽배송이 도입되게 되면서 기존에 택배로만 가던 우리 배송 체계가 변경되고, 새벽배송지인지 혹은 일반 택배 배송지인지에 따라서 출고 날짜가 다를 수 있다는 것이었다.... (주문 마감시간부터 택배사 휴일, 출고 가능 날짜까지 모두 다르다)

WOW..... 기존에 출고 예정일을 안내해주는 로직 역시 매우 복잡한 상태였는데 이제는 이것을 새벽배송까지 추가하여 정확히 안내해야 한다는 것이 쉽지 않았다. 또한 제일 큰 문제는 ... 고객들에게 일괄적으로 안내되는 출고일과 실제 출고일이 전혀 다를 수 있는 것이었다.

기존에 CX에서 나왔던 이슈 중에 한 가지는
고객님은 제품 상세페이지에서 분명 이 날짜에 배송이 된다고 하여서 구매를 하였는데 실제로는 그렇지 못했다는 것이다.
하지만 이 부분은 해당 시기에 고객님께 어떻게 안내되었는지 알아내기가 쉽지 않았고, CX처리 역시 쉽지 않았다.

그나마 매일매일 SCM팀이 출고작업을 진행해주었기 때문에 그동안 큰 이슈가 없었지만 (아무튼 다 출고가 되니),
고객에게 언제로 안내되었고 정확히 언제 출고가 되었는지는 새벽배송을 기점으로 더 중요한 이슈가 되었다.

상세페이지에서는 주소지 상관없이 특정 로직을 따라서 출고 예정일을 안내해주고 있었고, 그 대신 매일 돌아가는 출고 작업 로직 속에는 전체 상품을 가지고 와서 '이 제품은 제주도 배송지라서 제외시켜야 해 혹은 이 등록된 주소지는 주말 수령이 불가능하니깐 제외하자. 오늘 이 상품은 배치 가능 요일이 아니야 등"을 체크하면서 출고 작업의 속도는 나날이 늦어지고 있었다. 

그렇기에 상세에서 고객에게 안내되는 출고 예정일은 정확할 수가 없었고(정확하지 않으면 1~2일 과 같이 애매한 표현을 쓰게 된다.) 이것은 새벽배송이 도입되면서 더욱 복잡하게 될 예정이었다. 고객에게 안내되는 출고일자가 언제였는지 알 수 없기에 배송이 늦어진다 하더라도  CX처리는 불가능했고, 실제 우리 출고가 얼마나 정확하게 이루어지고 있는지 측정될 수도 없었다.

아무튼 다노샵 서버를 개발하고 있는 개발자로서, 이번 새벽배송은 선택의 기로에 선 것과 같았다. 사실 어찌 되었든 고객이 마주하는 결과물은 비슷할 것이기에, 기존의 것에 추가하여서 갈 것인지 아니면 새롭게 판을 만들지...

사실 기존의 것에 추가하여서 가도 기존의 출고 예정일을 뽑는 로직이 더 복잡해지고, 고객에게 안내가 정확히 안 나가고, 기존 배치작업도 더 시간이 오래 걸리고 그것밖에 없지만.....(내 몸도 편할 수 있다!!)
앞으로 다노는 10배 더 성장할 수 있다고 생각하고, 그렇다고 하면 지금이 결정을 내려야 하는 시기가 아닌가라는 생각이 들었다.

그렇게 나는 목표를 좀 다르게 잡았다. (목표를 보면 알겠지만 새벽배송에 대한 목표가 없다.)

 

 

위와 같이 7가지의 objective를 세웠고
아래와 같이 좀 더 구체적으로 하위 목표들을 세웠다.
위를 정확하게 달성하면 새벽배송과 같은 다양한 케이스도 충분히 처리할 수 있었다.

구체적 KR

  1. 출고 작업 간소화
    기존에 여러 개로 나뉘어서 관리되던 출고 작업을 한 군데로 모으는 작업.(출고배치, 출고배치그룹, 오전출고 등등)
    상황에 따른 출고 작업 (특정 상품 제외, 특정 상품만 선택, 제품별 마감시간 적용, 강제 주문 마감시간 설정, 주문 파일만 생성)
  2. 출고 작업 속도 10배 개선
    평소 1시간(오전 오후 출고 모두) 정도 소요되던 출고 배송 관련된 배치작업 ⇒ 5분 이내로 개선(10배는 오버인가...)
  3. 고객에게 명확한 배송일자 안내
    상세페이지 배송 관련된 안내 및 주문서 페이지 배송 관련 안내, 출고 작업, 마이페이지 모두 배송 관련 통일
  4. 출고 예정일과 실제 출고일 간의 간극 파악 및 트레킹
    위에서 통일된 고객에게 안내되는 출고 예정일과 실제 출고일 간의 간극 파악
    매일 마다 슬랙 알림을 추가하여 불편 받는 고객이 없도록 트레킹
  5. 출고 예정일이 늦어진 고객에 대한 CX처리 간소화
    출고 예정일이 늦어진 고객에 대한 알림톡 혹은 일괄 문자 전송 기능 추가
    주소지 변경 기능 ⇒ 고객이 직접 할 수 있으면 CX를 훨씬 줄일 수 있을 것 같다.(상품 준비 중 단계)
  6. SCM팀에서의 업무 효율성 극대화
    매일 출고될 수량에 대한 파악 admin
    배송이 늦어지는 상품에 대한 핸들링 (특정 제품 제외 후 출고 진행 / 특정 제품만 출고 진행)
    배송 준비 중 ⇒ 배송 보류 일괄 처리 등
    출고 마감 일시에 대한 핸들링
    다양한 출고 케이스 핸들링(수량으로 출고 등)
  7. 2주간 사고 0건

하나하나의 objective가 중요했고 꼭 달성해야 하는 목적들이라고 생각했다.

나의 머릿속에 떠나지 않았던 keyword는 
"고객에게 명확하게 출고일에 대해서 안내하고, 그 출고일을 저장해놓고, 그 출고일자에 배치작업이 이루어지면 된다." 였다.

즉 이것을 위해서 

  1. 먼저 고객의 주소지에 따라서 명확하게 출고일자가 안내되어야 하며
  2. 구매할 당시에 해당 출고일자를 저장해놓고
  3. 출고 배치는 오늘 날짜에 돌아야 하는 것들만 뽑아서 돌린다.

이렇게 되면 기존에 전체 상품을 대상으로 돌아가던 출고 배치가 더 이상 그럴 필요 없이 오늘 돌아가기로 한 주문건들만
그대로 돌려버리면 되니 속도도 충분히 개선될 수 있을 것 같았다.

아무튼 새벽배송 때문에 시작하게 되었지만, 다노샵 전반적인 출고 관련된 로직을 다 변경하는 작업을 하게 되었다.

그중에서 제일 중요한 로직은 바로 

  1. 고객의 주소지에 따라서 명확하게 출고일자를 안내되어야 한다 였다.

이것은 상품은 배송하는 업체마다, 혹은 상품에서 새벽인지 일반인지 그리고 휴일 정보 혹은 주문제작 상품, 제주 배송 건인지에 따라서 여러 가지 케이스로 나뉠 수 있었다.

새벽배송이 추가되면서 기존 출고 FLOW가 전체적으로 어떻게 변경되는지 확인해야 했고, 정확한 출고일을 계산하기 위해서 정말 중요한 것은 SCM팀과의 정확한 소통이었다. 나 혼자만의 생각으로 "이 날짜에 출고되어야 해"라고 짠 것이 SCM팀에서 보기에는 전혀 다를 수 있었고, SCM팀에서 바라는 니즈를 명확하게 파악하고, 정확한 출고일이 맞는지 뽑아내는 커뮤니케이션이 정말 중요했다. 

그렇기에 새벽배송을 시작하고 제일 먼저 한 것은 SCM팀과의 회의였다.

SCM팀과의 첫 번째 회의


그게 정말 힘든 일이기도 하였는데, 그래도 2년 동안 다노샵의 전반적인 로직부터 SCM팀과의 협업의 경험들이 그저 시간을 보냈던 것만은 아니었나 보다. 서로 무슨 이야기를 하는지 정확하게 파악할 수 있다는 것부터가 정말 감사했다. 

어떤 것들을 고려해야 하는지, 또 기존에 이미 짜여진 로직들을 어떻게 통합시킬 수 있을지 고민하고, 복잡한 것들을 단순화시키는 과정까지 전체적인 설계를 하는 일은 분명 쉽지 않았지만, 2년 동안 다노샵만을 했었기에 충분히 챌린지 할만했다.

다노샵 현재 모습에서 새벽배송을 추가하는 작업은 정말 그 누구가 와도 나보다 잘할 수는 없다고 자부심을 가졌다.
그리고 그것을 믿고 신뢰해주는 리더와 팀도 있었다.

제품 단위에서 새벽배송이 가능한지 혹은 새벽배송만 가능한지 등을 핸들링하고
각각의 상황에 맞게 출고 형태를 설정할 수 있도록 하였다.

기존에 흩어져 있던 출고 관련된 정보들을 모두 통합하여 새로운 형태의 출고 배치 통합관리를 신설하고, 거기에는 발송업체부터 
출고 형태, 주문 마감시간, 배송 휴일, 배치 가능 요일 등을 설정할 수 있도록 하였다. 

그렇게 상품 단위로 기본 배송, 새벽 배송으로 나누어서 출고 관련된 정보들을 엮어 놓고, 
이것을 바탕으로 정확한 출고 배치 일과 출고 예정일을 뽑는 로직을 구현하였다.
(출고 배치일은 우리가 출고되어야 하는 엑셀 파일을 만들어서 업체에 넘기는 시점이고, 출고 예정일은 해당 업체에서 출고가 되는 시점이다. 
때에 따라서 주문 제작 상품의 경우 다를 수 있다.)

다양한 케이스를 고려해야 했기에 이 로직을 잘 짜는 것이 정말 중요했고, 이 로직을 통해서, 제품 상세부터 장바구니, 주문서, 추후 출고까지 모두 관여하는 메인 로직이었다. 결국 로직이라는 것을 잘 짜기 위해서는 이것을 말로 풀어쓸 수 있어야 한다.

정말 이 로직을 짜기 위해서 화이트보드를 몇 번이나 지우고 새로 그리고 했는지 모르겠다.
분명 '오! 모든 케이스를 다 커버했다' 하고 나왔던 Flow도 갑자기 예외가 나오면서 수정해야 되는 경우가 다반사였다.

갑자기 이 사진들을 보는데 눈물이 앞을 가린다.

메인 로직은 아래와 같다.

1. 체크할 날짜를 넣는다.(오늘부터 시작)

2. 택배사 휴일인지 파악한다. (택배사 휴일은 새벽, 일반, 업체 발송에 따라 다르다.)
=> 휴일인 경우 하루를 추가하여 1번부터 다시 시작한다.

3. 오늘이 배치 가능한 요일인지 파악한다.
=> 배치 가능 요일은 배송 형태 혹은 제주 산간 , 주말 수령 가능 여부에 따라서 달라질 수 있다.
=> 불가할 경우 하루를 추가하여 1번부터 다시 시작

4.  체크하는 날짜가 오늘이면 주문 마감 시간을 확인한다.
=> 주문 마감 시간이 지났으면 하루를 추가하여 1번으로 시작한다. 

5. 배치 날짜와 출고일을 1차 FIX 하고 일반과 주문 제작 상품에 따라서 다르게 핸들링 처리한다.
- 이미 제작이 되어있는 일반 상품의 경우 출고 익일날 휴일인지 확인하고 그렇다면 1번부터 다시 시작
- 주문 제작 상품의 경우 배치 날짜는 FIX하고 출고 예정일을 대상으로 익일날 휴일인지 확인하며 출고예정일을 조정

6. 최종 배치 예정일과 출고 예정일 FIX

정말 간단해 보이는 이 로직을 만들기 위해 다양한 케이스들을 만들어서 테스트하고, 수정하고를 수없이 반복했다. 물론 이 로직도 완벽하지 않을 수 있고, 어떤 케이스가 또 생기느냐에 따라서 수정해야 할 수도 있지만 아무튼 이제는 다노샵의 출고 관련된 안내 및 실제 출고 작업은 모두 이 로직으로 통합되었다.

물론 여기서 끝이 아니었다.
이 로직을 바탕으로 세트 상품들은 어떻게 출고 작업을 진행할지 SCM팀과 논의하여, 하위 구성품들의 출고일을 바탕으로 새롭게 출고일을 계산하는 로직을 추가하고, 특정 케이스(장기간 휴무일이 있거나, 택배사 이슈 등)에 따라서 더 상위에서 핸들링할 수 있는 케이스들을 추가해주었다.

그리고 이 로직을 바탕으로 다노샵의 메인 로직들을 수정하였다. 제품의 상세페이지에서는 고객의 주소지를 모르니깐 일반적인 출고 예정일을 안내하며, 실제 고객이 장바구니에서 주소지를 입력하는 순간부터는 정말 정확한 출고일을 안내하여, 주문이 완료될 때는 그 안내된 출고 관련된 정보를 DB에 저장하였다.(물론 가상 계좌입금에 대해서는 실제 입금되는 시점에 또 핸들링되어야 했다...)

그렇게 되고 나니 정말 좋은 점은, 일단 우리가 오늘 보내야 하는 배치작업 및 출고 작업에 대해서 미리 파악하고, 
핸들링할 수 있는 것이었다. 

배송 업체별로 한번에 보는 출고 관련 정보 

결국 생각만 하던 실제 우리 다노에서 얼마나 출고를 잘 관리하고 있는지, 오차 없이 출고되는지 확인할 수 있게 되었고,
이때 따라서 CX처리도 훨씬 정확하게 처리할 수 있게 되었다.

그리고 무엇보다 중요한 출고배치작업!! 
과연 10배 성능 향상은 가능했을까??

평소 한 번 전체 주문건들을 대상으로 돌면 20분 ~ 30분 걸리던 작업은 ...
무려 1분 안에 끝나게 되었다!!!!!!!!!!!!!!!!!!!

전체 출고작업이 1분 안에 클리어 되었다!!


기존에 출고 배치 작업에서 체크하던 부분들을 전혀 체크해줄 필요가 없어졌기에 속도가 훨씬 더 향상될 수 있었다.
아무튼 기대한 것 이상이었다.

또한 다양한 케이스에 맞추어서 출고 배치 작업을 핸들링할 수 있도록 하였다.
특정 상품들만 출고를 진행한다던지, 특정 상품을 제외하고 출고를 진행할 수도 있고,
주문 마감 시간을 임의로 설정한다던지, 혹은 특정 수량만큼만 출고를 진행하고 싶다던지
그냥 출고 파일만 뽑아본다던지 등등
SCM팀에서 이야기한 다양한 요구 조건에 따라서 출고 배치를 등록할 수 있도록 하였다.

그렇게 위에서 이야기했던 Objective 중 몇 가지를 달성했을까?

1번 달성!
2번 달성!
3번 달성!
4번 달성!
5번 달성!
6번 달성!
7번은 달성을 위해 출고 작업이 많이 변경되는 만큼 서버 쪽 먼저 라이브 하여, 실제 SCM팀에서 테스트를 진행해주고 계시고 있고
아직 프런트 쪽이 라이브 전이라 더 파악해봐야 하지만, 테스트하면서 이슈들을 미리 잡고 있기에 달성할 수 있다고 믿고 있다...!!

새벽 배송과 관련된 작업이었지만,
목적을 새벽 배송에 두지 않았고, 다노샵 전반적인 출고 관련된 작업을 개선하기 위해 
목적을 잡았던 것은 정말 신의 한 수였다.

생각보다 스쿱도 커지면서 실제 고객 라이브 일정이 조금 밀리긴 했지만 아무튼 온전히 한 달 이상 이 작업만을 생각하면서
몰입할 수 있었던 시기인 거 같다. 

사실 사수분이 퇴사하시고 이런 큰 작업을 혼자서 진행하면서 압박도 많이 받았다. 이제는 정말 내가 실수해도 뒤에서 
봐줄 수 있는 사람이 없었기에 더더욱 실수하지 않도록 신경 써서 개발하여야 하였다.

그리고 막상 라이브하고 나니 허무하기도 했다. 정말 많은 부분 개선하였지만, 
실제로 성능이 개선되었을 것을 느끼는 사람은 매일매일 출고 작업을 진행하는 SCM팀이 전부였고,
내가 이것을 위해서 얼마나 많은 고민을 하고 노력했는지 공감해줄 수 있는 사람이 부재하는 것은 생각보다
크게 다가왔다.(실제로 공감하기 위해서는 비슷한 이해도를 가진 사람이 있어야 하는 것 같다.)

누군가에게 인정이나 칭찬을 바라고 했던 작업은 아니었지만,
사수분이 계셨다면, 분명 내가 했던 작업들에 대해서 진심으로 공감하고, 얼마나 노력을 해주었는지
알아주셨을 텐데... 뭔가 지금 내가 했던 작업을 얼마나 노력했는지 알아줄 수 있는 사람이 없고,
나도 언젠가 다노를 떠나게 되면 이건 그냥 나의 기억 속에서만 존재하겠지라고 생각하니 허무하기도 하였다.

아무튼, 다른 사람들이 몰라 준다고 해도,
내가 알고 있고, 정말 열심히 했다.

이 글은 무언가, 
스스로에게 수고했다고 적어놓는 글이다.

새벽남 이제 bye bye!

 

PS. 그리고 항상 개발의 마지막은 고객 반응이다...

SCM팀 대화 몰래보기

 

올 한해 여러가지 프로젝트를 진행했지만,
정말 나의 피, 땀, 눈물이 들어간 프로젝트를 마무리하며
회고글을 적어보고자 한다.

사건의 발단

: 현재 다노에서는 매주 or 2주 단위로 1on1 이라는 것을 진행하고 있다. CTO님 혹은 팀장님과 현재 자신이 겪고 있는
개인적인 이슈 혹은 문제점들을 공유하면서 함께 싱크를 맞추어 나가는 자리이다. 올 6월쯤 1on1을 진행하면서,
현재 다노샵 서버를 하고 있지만 다음에 기회가 되면 프론트엔드 쪽도 한번 해보고 싶다 라는 이야기를 했었고,
CTO님께서는 다음에 다노앱안에 위치하고 있는 매거진이라는 탭을 리뉴얼할 예정이니(언제가 될 진 모르지만)
기회가 되면 다음에 한 번 해보겠냐고 하셨다. 그때 당시에는 아무 생각 없이 "예" 라고 대답을 하였다. 물론 그게 언제가 될 진 모르니깐...
(많은 일들이 이렇게 기억 속으로 묻어져가니 이것도 그렇겠지라고 생각하며..)


사건의 시작

: 9월이 시작되면서 CTO님이 갑자기 주말에 슬랙을 주셨다. 다노 매거진 개편 관련된 디자인이 다 되었는데,
병욱님이 한번 프론트 쪽 개발을 해보겠느냐는 이야기였다. 순간 머리 속이 하애졌다. '갑자기 나에게 왜 이런 이야기를 하실까?' 라는 생각도 잠시 6월의 김병욱이 저질렀던 일이 떠올랐다...아아악... 아무튼 내가 뱉은 말이었고, 먼저 가능할지에 대한 일정을 체크했다.  아무튼 기존에 하던 회사 업무 외에 진행해야 하는 업무였고(외주로 진행), 회사 내 개편 업무다 보니 DUE도 어느정도는 명확하게 걸린 업무였다.

처음 받아본 피그마 디자인



때마침 코로나가 심해져서 주말마다 하던 일도 없어졌고, 하여 이번 기회에 좀 쉬어야지 하던 차였다. 일단 주말 일정은 확보,
그리고 있는 추석 연휴. 한글날 등등 휴일도 넉넉했다. 평일 퇴근 후에 업무를 진행하고 휴일을 모두 넣으면 어떻게든 하면 되지 않을까라고 생각했다. (이 일을 하기 전에 프론트엔드를 해본 것은 html, css, 간단한 javascript로 ajax를 써본 것이 다였다.) 

그렇게 나는 6월의 내가 했던 말에 대한 책임을 지기로 했다. 물론 그 동안 프론트엔드를 공부해야지 생각만 하던 나에게
아주 좋은 자극이 될 수 있을거라고 생각했다. 그렇게 2달 간의 기나긴 프로젝트가 시작되었다.


프로젝트의 시작 (9월 초 ~ 9월 중순)

: 정확히 9월 7일날 백엔드 인턴분이 입사하셔서 매거진의 백엔드 부분을 맡아서 개발해주시기로 하셨고, 나 역시도 9월 7일부로 개발을 시작하게 되었다. React라는 것을 한번도 써본적이 없어서, 먼저 공부부터 해야 하였다.

개발 초기 일정을 설정해달라는 CTO님의 말에 감이 없다는 드립을 치고 있는 모습


그렇게 React 기본 강의를 찾아 수강하기 시작했다.
수업은 인프런에서 공짜 수업으로 시작했다. 인프런에서 react를 검색하면 여러 수업들이 나오는데 나는 John Ahn님의 수업을 들었다. (www.inflearn.com/instructors/217966/courses)

 

인프런 - John Ahn의 강의들을 만나보세요.

인프런은 누구에게나 성장의 기회를 균등하게 부여하기 위해 만들어진 온라인 학습, 지식 공유 중개 플랫폼 입니다. 개발, 프로그래밍, IT, 영상 편집, 그로스 해킹, 블록체인, 마케팅, 디자인, 금

www.inflearn.com

다양한 수업들이 많은데, 내가 들은 것은 유튜브 클론 코딩 그리고 해당 수업을 듣기 전에 들으면 좋다고 참고자 올려놓으신 boile-plate? 수업이었다. boile-plate 수업을 모두 듣고 유튜브 클론 코딩을 절반까지 들었다. 그렇게 일주일이 훅 지나갔다. ㅠㅠ 나에게는 시간이 그렇게 많지 았다. 아 일단 이렇게 하는 거구나 느낌을 잡고, 일단 프로젝트 start를 끊었다. (시작이 절반이다...)

사내 프론트 개발자분에게 구조에 대한 피드백을 받은 뒤에, 컴포넌트들을 생성하기 시작했다. 그렇게 9월 중순 나의 첫 제대로 된
프론트엔드 프로젝트가 시작되었다.

 

처음 start를 끊고 기뻐서 올린 슬랙 (아이콘을 양 옆으로 띄우고 집에 가겠다고 한다)

지금 다시 생각해봐도.. 정말 답이 없는 시간이었다.


프로젝트의 초기(9월 중순 10월 초)

: 어렵게만 느껴졌단 프로젝트는 생각보다 순탄히 진행되었다. 컴포넌트들을 만들어서 쌓는다는 개념은, 굉장히 참신하면서
그동안 html, css만을 써서 만들던 나에게는 매우 직관적으로 다가왔다. (이래서 사람들이 react, react하는 구나라고 잠깐 생각할 수 있었다.) 그리고 이미 잘 만들어져 있는 라이브러리 들이 많았다. (특히 슬라이더 및 롤링 배너, 스크롤에 따라서 특정 부위를 따라다니게 하는 sticky 기능은 짱이었다.)

그리고 무엇보다 중요한, 업무시간을 확보하였다.
현재 다노에서는 출근 시간을 조정할 수 있어서 2가지 패턴으로 시간을 확보해보았다.
먼저 8시까지 출근해서 9시 30분까지 매거진 업무를 진행하고 9시 30분부터 6시 30분까지는 회사 업무, 그리고 식사 이후에 다시 10시까지 매거진 업무를 진행하는 1가지 형태와 그냥 8시부터 오후 5시까지 회사 업무를 진행하고 쭉 이어서 10시까지 매거진 업무를 진행하는 2가지 형태였다. 

결론적으로는 2번째 형태(일찍 회사 업무를 마무리하고 이후에 매거진 업무를 진행하는 형태)가 더 업무가 잘되어서 2번째 형태로 시간 확보를 하였다.

이건 뭔가 나의 고질적인 문제점이기도 한데, 일단 앞에 목표가 있게 되면 그 이외의 부분들은 크게 신경을 쓰지 않게 되는 것 같다.
그렇게 나에게 이 매거진을 끝낼 때까지 다른 일들은 모두 2순위로 밀어두었다. 

며칠 뒤 진행 사항을 공유하며 혼자 감격한 순간



프로젝트의 위기

: 생각보다 초기에 쭉쭉 잘나가던 프로젝트였는데 (나중에 안 사실이지만, 그냥 화면에 보이게 만드는 것보다는 디테일한 부분이 훨씬 시간이 오래 걸리고 어려운 것이었다. 이때까지만 하더라도 화면에 그리면 되겠지라고 생각만 하고 있었다.) 생각지도 못하게, 탈장이라는 병에 걸리게 되었다. 탈장은 말 그대로 장기가 약해진 피부벽을 뚫고 나온 것인데, 수술 이외에는 치료법이 없다고 한다. 

처음에는 그냥 아래배 쪽이 불룩하게 튀어나와서 "뭐지 염증인가" 하고 편하게 생각하고 있었는데, (마침 추석 연휴라서 병원에도 가지 못했다.) 추석 연휴 이후에 병원에 가보니 탈장이라고 하였다. 그 동안 아래배 쪽에 불룩하게 튀어나와 있었던 게 장기였다니!!!! 
진단을 받자마자 급격하게 아파지기 시작하였다.ㅠㅠ(그 동안도 아프긴 하였지만 참을만 하였는데, 진단을 받고나니 갑자기 10배는 더 아파진 느낌이었다.)

그렇게 급하게 수술 날짜를 잡고, 수술을 진행하였다.(아악 안돼 내 휴가.. 흑흑) 생각보다 탈장이라는 병에 걸리는 사람들이 많았고,
그렇게 큰 병도 아니었지만 문제는 일상 생활이 매우 불편해진다는 것이었다. 일단 오랜 시간 앉아 있는게 굉장히 힘들어졌다.
일단 업무외에 시간을 투자해서 해당 프로젝트를 진행해나가야 했기에 나에게 오랜 시간 앉아 있을 수 있는 것은 매우 중요했는데,
그게 어려워지다보니 프로젝트도 시간을 내기 어려웠다.

자연스럽게 컨디션도 급격하게 나빠지기 시작했다. 이미 한 달 정도의 시간을 퇴근 이후의 시간들 그리고 주말, 추석 연휴까지 모두 시간을 쏟고 있어서 정신적으로나 신체적으로나 매우 힘들었지만, 아무튼 내가 하겠다고 하였고 나는 거기에 책임을 지고 싶었다. 


프로젝트의 Detail

:  
전체적인 그림을 그리는 것은 한 달정도 안에 마무리를 했던 것 같은데, 생각보다 디테일한 부분에서 신경 쓸 부분이 많다.
그 동안은 서버가 진행되는 동안 Mocking api를 활용하여 대부분 get요청으로만 화면을 뿌려주었다. (post man에서 간단하게 mocking api를 만들 수 있다.) 그러다가 서버가 붙게 되면서 여러 가지 신경써야 할 부분이 많았다. 사전에 맞추었지만 변수명이 틀린 부분들도 있었고, 우리 생각처럼 잘 작동하지 않았다.

그리고 디테일하게 신경쓸 부분이 필요 했던 게 많았는데, 바로 상단 카테고리바와, 검색창이었다.

문제가 되었던 메인 카테고리바

사실 저렇게 화면에 보이게 하는 것은 어렵지 않았다. 다만 개발 요구사항은 쉽지 않았다.
"일주일 이내의 새로운 글이 있을 때는 빨간 버튼이 보였으면 좋겠어요. 하지만 만약에 고객이 해당 카테고리를 클릭한 적이 있으면 빨간점이 사라져야 해요. 근데 또 만약에 고객이 클릭하고 난 다음에 새로운 글이 또 올라오면 빨간점이 또 보여야 해요"

즉 우리가 생각하던대로 새로운 글(일주일 이내)이 있으면 빨간버튼이 있어야 하고, 그 새로운 글이 우리가 해당 카테고리를 클릭하게 되면 더 이상 새로운 글이 아니다라는 것이다. 너무나도 자연스러운 액션인데, 이걸을 개발하기 위해서는 말로 정리가 되어야하고, 정리가 되어야 코드로 작성할 수 있는데, 쉽지 않았다.

이것을 해결하기 위해서는 해당 사용자가 언제 각 카테고리들을 클릭했는지 저장시켜놔야했다.
일주일 이내의 글이 있을 수 있지만, 그 글이 사용자가 그 카테고리를 클릭했을 당시에 있었던 글인지 아닌지는 또 판단이 필요했다.
이것을 해결하기 위해 서버에서 일주일 이내의 글이 있는지에 대한 정보와, 최신 발행글의 시간을 가지고 왔다.

그리고 프론트에서는 고객이 각 카테고리를 클릭한 정보들을 localstorage에 저장시켜놓고 비교하였다.
기본적으로 일주일 이내의 글이 없다고 하면 아예 빨간 버튼을 보이지 않게 하였고, 만약에 일주일 이내의 글이 있다면,
고객이 해당 카테고리를 마지막에 누른 시간과, 그 카테고리의 최신글의 시간을 비교하였다. 그래서 만약에 해당 카테고리를 누른 시간이 더 늦다면, 해당 고객이 그 카테고리를 눌렀을 당시 이미 그 글은 보였으니 빨간점을 붙이면 안되었고, 그렇지 않다면 빨간점을 붙이게 하여 해결하였다. (항상 서버만 로직을 짜면 된다고 생각했는데... 정말 이번 기회에 많은 반성을 하였다. 프론트엔드도 복잡한 로직이 굉장히 많다.)

그리고 또 하나 카테고리의 요청사항이 있었다.
"각 카테고리를 눌렀을 때 그 카테고리를 보던 위치로 갔으면 해요"
이것도 너무나 당연하게 볼 수 있는데, 이것을 구현하기 위해서는 각 카테고리마다 마지막 보던 위치를 기억하고 있어야 했다.
그래야 그 카테고리를 눌렀을 때 해당 위치로 이동할 수 있었다. 앱에서는 이게 그렇게 어렵지 않게 구현이 가능하다고 하는데, 웹에서는 
각 카테고리를 누를 때 마다 다시 api를 호출하고 랜더링을 다시 해줘야하기 떄문에, 다른 방법이 없었다. (아마 있겠지만 찾아봐도 보이지 않았다.) 그래서 각 카테고리마다 마지막 보던 위치를 저장시켜 놓았다. 그래서 현재 매거진에는 각 카테고리를 누를 때마다 마지막에 보던 위치를 찾아서 이동한다.

 


그리고 정말 쉽지 않았던 검색창 interaction

처음 검색창을 눌렀을 때, 그리고 입력하기 위에 커서를 위에 눌렀을 때, 최근 검색어 저장, 검색 결과 등 등 다양한 컴포넌터들이 상황에 맞게 랜더링이 되어야 했다.

그리고 또 검색하다가 해당 검색어를 지웠을 때, 등등 우리가 그 동안 자연스럽게 사용하던 부분이 막상 구현을 하려고 하니
그렇게 막막할 수 없었다.

처음 검색창을 눌렀을 때는 인기검색어가 나와야하고, 검색창을 클릭하면 최근 검색어가, 그리고 검색을 하면 해당 검색어가 최근 검색어에 저장되어야 하고, 검색어를 삭제했을 때는 다시 인기검색어로 나오는 형태로 구현이 되어야 했다.

3개의 컴포넌트가 상황에 따라서 나와야 하다보니 복잡한 부분이 많았지만, 적절하게 어떻게 분기를 태워서 해결해냈다.


사실 이 밖에도 신경써서 구현한 부분이 많았지만 그것은 모든 개발자들이 겪는 어려움일거라고 생각한다.
그래도 조금 더 자랑해보자면,

처음보자 마자 멘붕을 불러일으켰던 사진 속 +버튼 링크연결 / 카카오톡 공유 / SSR 우회작업 

등이 있다. 조금 더 디테일한 부분들은 추후에 하나씩 다뤄보고자 한다.

아 그리고 정말 쉽지 않았던 데이터심는 작업ㅠㅠ
정말 데이터 심는 작업이 너무 쉽지 않았다. 오히려 요건이 까다로울 때는 개발보다 더 어려운 부분도 있었다.

분명 2시간~ 3시간정도면 끝나는다는 CTO님의 말을 철석같이 믿고 있었는데... 주말 온전히 2틀을 사용했는데도,
끝내지 못했다. 예를 들면 이런 요건도 있었다. 
"슬라이딩 배너에 상품들이 여러가지 있는데 각각의 상품들이 50% 이상 1초 이상 보였을 때 이벤트를 보내주세요"
ㅎㅎ 구현을 떠나 말로도 어려운 이벤트 심는 작업이었다. ㅠㅠ (회사내에 이미 구현되어 있던 것들을 많이 이용하였다...ㅎㅎ)

데이터만 주말 이틀 내리 심고 분노의 슬랙 (하루 일할 수 있는 시간은 18시간이다...) 



프로젝트의 마무리

그래서 이 프로젝트가 과연 끝났을까? 
처음 프로젝트를 시작할 때, 너무나도 막막했던 시간이었다. 그리고 항상 새롭게 오셔서 바로 매거진 서버를 맡게 된 나온님과
이야기 했던 것은 어떻게든 이 비둘기를 날게 하자 였다.

비둘기야 날자

그렇게 2달이 지나 우리 비둘기를 날았다. 그리고 정말 많은 분들의 도움으로 생각보다 멋진 모습으로 날았다.

리뉴얼된 매거진은 여기서 볼 수 있다. (사실 다노앱을 깔면 매거진의 숨겨진 기능들도 사용할 수 있다.)
dano-magazine.dano.me/main

 

습관성형을 위한 모든 것, 다노

좋은 습관이 만드는 건강한 라이프 스타일 정보를 지금 확인해 보세요!

dano-magazine.dano.me


사실 나는 개발만 한 것이고, 이 모든 것들은 정말 많은 분들이 함께 이루어냈다.

새롭게 매거진을 디자인 해주신 디자이너분들과
새롭게 리뉴얼된 매거진에 따라서 다시 컨텐츠를 일일이 만들어주신 컨텐츠 마케터분들,
정말 귀찮은 질문을 계속해서 받아주신 주변의 많은 개발자분들,
데이터를 잘 심고, 트레킹 하기 위해 노력해주신 데이터사이언티스트분들,
앱 안에 들어가는 것이다보니 많은 추가 작업을 해주신 앱 개발자분들,
안정적으로 서비스가 돌아갈 수 있도록 도와주신 인프라 개발자분,
지치지 않고 옆에서 정신 수양을 도와주신 CTO님까지

정말 정말 많은 분들의 도움이 없었다면, 이 모든 것들이 불가능 했으리라 생각한다.
이번 작업을 하면서 내가 개인적으로 가지고 있던, 다른 분야에 대한 진입장벽도 깨진 것 같다.

개발자는 프로젝트를 하면서 성장한다는 말이 있다.
나도 이번 기회를 통해서 한 단계 더 성장했기를 기대해본다.

마지막은 실언으로 마무리!

 

메모리즈 프로젝트의 ver 0.1을 마무리하였다.

스파르타 코딩클럽 마지막에는 3주동안 프로젝트 기간이 있다.
그 기간동안 각자 만들고 싶었던 프로젝트를 진행한다.

튜터를 진행하면서, 조금 욕심을 내어서 나도 함께
그 동안 마음에만 담아 두었지 진행하지 못했던 프로젝트를 함께 진행하였다.

워낙 간단한 프로젝트로 진행하여서,
프로토 타입도 간단하다.

그래도 그 동안 생각만 하던 프로젝트의 1차 버전을 마무리 할 수 있어서
첫 발을 내딛였다고 생각한다. 

앞으로 더욱 이런 프로젝트들을 많이 해보고 싶다.
이제 vue.js를 공부해서 프론트를 만들어봐야 겠다.

 

모델링 작업 진행

 

사진을 올릴 수 있어야 한다.

content

  1. 올린 사람 => 회원과 연결되어야 할 것이고

  2. 사진 => 여러개를 올릴 수 있도록 할꺼면 따로 모델을 뺀다.

  3. 글 적을 수 있도록 한다.

  4. 꼭 사진이 아니라도 글만 적을 수도 있도록 한다.

  5. 관리자가 언제든지 지울 수 있도록 한다.

    1. 관리자는 해당 페이지를 신청자이다.

 

해당 컨텐츠에 댓글을 달 수 있도록 한다.

  1. 익명으로 진행할 것인지

 

해당 올린 사진을 feed로도 볼 수 있고, 모아서 볼 수도 있다.

 

무조건 웹에서 할 것이다.

  1. why? 개별 링크 생성가능 해당 링크로 누구나 언제든지 접속 할 수 있도록.

  2. 그럼 추후에 개별 링크는 어떻게 생성할 것인가? 신청은 어떻게 할 것인가?

 

[모바일 홈페이지 파일업로드 갤러리 사용 - accept="image/*" : 네이버 블로그](https://m.blog.naver.com/PostView.nhn?blogId=oralol&logNo=220263644181&proxyReferer=https%3A%2F%2Fwww.google.com%2F)

 

스파르타코딩 클럽 수업을 하며, 나 역시도 프로젝트를 진행하기로 마음 먹었다.

3주 동안의 기한내에 그동안 진행하고 싶었던 프로젝트를 진행해볼 예정이다.

1. 프로젝트 이름

프로젝트 이름은 "메모리즈"이다. 
작년에 굉장히 슬픈 일이 있었다. 나와 정말 가까운 분이 먼저 세상을 떠나셨다.

지금도 한달에 한 번씩은 꼭 보고싶다. 
무엇보다 더 슬픈 점은 나에게 사진이 하나도 없다는 사실이다...

폰도 바꾸고, 또 매번 명절 때마다 보다보니, 사진을 찍어야 겠다는 생각을 하지 못했다. 

나에게는 추억할 게 없다...

원피스에 이런 말이 나온다.

"사람이 언제 죽는다고 생각하니, 

심장이 총알에 뚫렸을 때? 아니

불치의 병에 걸렸을 때? 아니

맹독의 스프를 마셨을 떄? 아니야

사람들에게서 잊혀졌을 때다"

 

너무 소중한 사람이었기에,
잊지 않기 위해 평생 혼자 기억만 곱씹다가
갑자기 막 보고 싶어지면 어떻게 해야 할까?

 

나중에 시간이 너무 많이 흘러서
더 이상 기억이 나지 않으면 어떻게 해야 할까?

그러지 않았으면 좋겠다.. 그래서 이 프로젝트를 진행한다.

2. 구상도

이 생각을 든 이후에 찾아보니 해외에서 굉장히 잘 만든 서비스가 있었다.
따라서 전체적인 형태는

[200만 명이 사용하는 부고 앱 | 1boon](https://1boon.kakao.com/ttimes/ttimes_1907110907

불러오는 중입니다...

를 따라 가려고 한다.

 

3. 개발 해야 하는 기능들

생각 보다 심플하다. 요청에 따라 (아마 가족) 개개인의 개별 공간을 만들어 줘야 한다. (개별 링크 생성)
그리고 사진 등록과 함께, 댓글을 남길 수 있어야 한다.

또한 방명록과 같은 글을 남길 수 있어야 하며,
글들을 모아서, 피드보기와 같이 보여줄 수 있어야 한다.

 

4. 개발 계획

상세 기획 : XD 활용 (금주까지 진행)

프론트 개발 : 1주일 진행

서버 개발 : 1주일 진행

기타 수정 : 1주일 진행

개발 기한 : 4월 8일 ~ 4월 28일까지 약 20일간... 너무 짧네 @.@

 

이제 이렇게 적었으니깐... 무조건 해야한다. 열심히 해보자! 화이팅

+ Recent posts