티스토리 뷰

서비스를 오픈한지 5년이 되어 서비스 종료를 앞두며 작성한 기록입니다.

 

대학교에 입학하기도 전인 2019년 12월, 저는 겨울왕국2에 빠져있었습니다.
지금은 철 없던 시기였던 것만 같지만, 그 당시에는 겨울왕국2에 누구보다 진심이었죠.

겨울왕국2 를 좋아하다보니 자연스럽게 커뮤니티를 찾아 좋아하는 것을 나누고, 커뮤니티에서 만드는 굿즈를 공동구매하며 하면서 지냈습니다.

자신이 좋아하는 것을 단체로 주문제작 하여 배달하는 문화는 커뮤니티에서 큰 부분을 차지합니다. 주문제작은 보통 많은 비용을 요구하지만, 단체로 하기 때문에 비교적 저렴한 가격으로 본인이 좋아하는 굿즈를 만들어 받을 수 있죠.

하지만 마이너한 분야이고, 만들고 배송하는 사람들은 전문적으로 하는 것이 아닌, 팬심으로 개인 시간을 쪼개 진행하는 만큼 개선할 수 있는 방법도 많았습니다. 

 

제가 해결하고 싶었던 가장 큰 문제는, 모든 구매자의 개인정보(휴대폰번호, 집주소)를 한 파일로 공개하여 발생할 수 있는 개인정보 유출 문제점을 해결하고 싶었습니다.

 

기존 문제점 및 개발한 MVP

 

[ 목차 ]

    서비스 기획 의도

    개요

    커뮤니티에서 공동구매 진행시 모든 구매자의 개인정보(집,주소)를 한 파일로 공개하여 발생할 수 있는 개인정보 유출 문제점을 해결하였다

    주요특징

    빠르게 개발하기 위해 당시 관심이 있었던 React Framework 를 사용하였으며, 커뮤니티가 주로 사용중이던 GoogleSheet 에서 본인의 데이터만 가져와 보여줌. 또한, Google Sheet API Quota 인 100 requests/100sec 를 준수하기 위해 대기열 큐 (Agenda) 를 사용함.

    제약사항

    개인정보를 보호하기 위해 수집하는 정보는 최소한으로 하고, 보존하는 정보는 없도록 한다.

    리뷰

    Reqct 으로 진행한 첫번째 프로젝트이며 커뮤니티를 통해 불특정 다수에게 서비스하여 실사용 되었던 프로젝트이다. 중간규모의 프로젝트이며, 직접 호스팅 하며 트래픽 제어 및 영향을 경험할 수 있었던 프로젝트이다.

    Peak DAU: ~500명, Peak Requests: ~1500건)

    첫 홍보

    2020년 1월 24일 오전 3시 19분 - 첫 홍보: https://gall.dcinside.com/board/view/?id=frozen&no=3727083

     

    두근거리는 마음으로 첫 홍보를 진행했을 때 많은 관심을 받을 수 있었습니다. 바로 공동구매를 진행하시는 분들께 연락을 받았으며 설정하는 것을 도와드렸습니다.

     

    제가 만든 서비스를 다른사람들이 사용해주시는 것은 너무나 소중한 경험입니다. 커뮤니티를 통해 사용자들의 의견을 바로 받을 수 있었으며, 플랫폼에 추가된 페이지가 커뮤니티를 통해 공유가 되고 편리함을 느낀 사용자가 칭찬을 해주실 때마다 엄청 뿌듯했습니다.

     

    5년동안 대학교에서 다양한 플랫폼을 운영해봤지만 가장 이용자가 많고 응원을 많이 받은 서비스였던 것 같습니다.

     

    서비스 오픈 이후 이용자 수 (2020년 3월 ~ 6월)

     

    발생한 문제 및 해결

    2020. 02. 19 - 잘못된 링크 문제 (개발할 때 예측하지 못한 상황)

    2020년 2월 19일 작성한 게시글: https://gall.dcinside.com/board/view/?id=frozen&no=3982247

    원인

    직접 만든 서비스가 사용 되는 것이 너무 좋아서 커뮤니티를 모니터링하던 도중 문제가 발생하는 것을 확인할 수 있었습니다.

    사이트 작동 방식은 주소 뒤에 고유 코드가 붙는 방식입니다. (예: /tistory)

    하지만, 링크가 공유되며 Escape 문자가 추가되는 문제였습니다.

    해결방법

    링크가 잘못됐을 때 오류메세지를 나오게 함.

    배운점

    오류메세지의 중요성을 알 수 있었던 문제였던 것 같습니다.

     

    2020. 03. 24 - 대기열 터짐 문제 (트래픽 관리)

    2020년 3월 24일 작성한 게시글: https://gall.dcinside.com/board/view/?id=frozen&no=4120899

    원인

    인기가 많은 공동구매 결과가 00시에 맞춰서 올라와 트래픽이 한번에 들어왔던 상황.

    해결방법

    일시적인 현상이라고 생각하여 따로 조치 안함.

    배운점

    최근에 한 강사님이 많은 트래픽을 처리해야할 때 무조건 증설하는 것보다 버티는 것으로 해결하는 것도 좋은 방법이라고 말씀하셨습니다. 일시적인 현상을 대비하는 것도 중요하지만, 만약에 그게 어려울 경우 모니터링 하면서 최선의 판단을 하는 것도 중요하다는 것을 경험할 수 있었습니다.

    Google Sheet API 요구사항인 100 requests/100 seconds 를 충족하기 위해 대기중인 사람들

    2020. 07. 08 - 서비스 어뷰징 사건

    2020년 7월 8일 서비스 접근 제한: https://gall.dcinside.com/board/view/?id=frozen&no=4862224

    2020년 7월 9일 원인 파악 및 공지: https://gall.dcinside.com/board/view/?id=frozen&no=4863357

    2020년 7월 15일 관련 업데이트 및 재오픈: https://gall.dcinside.com/board/view/?id=frozen&no=4884231

    원인

    기존 서비스는 최소한의 정보로 데이터를 찾을 수 있게 하기 위해서 이름과 휴대번호 뒷 4자리로만 정보를 찾습니다.

    다른말로 표현하면 이름과 휴대폰번호 뒷 4자리만 알면 모든 정보가 조회가 가능하게 됩니다.

     

    공동구매를 진행하시던 분의 실수로 참여자 리스트가 커뮤니티에 올라가서 몇몇 분들이 다른분의 정보를 접근해본 것 같습니다.

    해결방법

    본인의 휴대폰번호만 조회할 수 있도록 Firebase Auth 를 사용하여 휴대폰 인증을 추가하였습니다.

    배운점

    서비스를 운영하다 보니 많은 변수가 발생하고 어뷰징이 이루어진다는 것을 느낄 수 있었습니다.

    빠른 대응이 매우 중요하고, 최대한 투명하게 이용자들에게 공유를 했을 때 오히려 신뢰를 얻을 수 있다는 것을 느낄 수 있는 소중한 경험이었습니다.

     

    어제일로 공구조회 사이트 이미지 떡락한거? - 겨울왕국 갤러리

    1+2 알리미부터 시작해서프붕이들을 위해서 광고 후원 없는 조회사이트 시작하고만우절 업데이트안탄절 업데이트도 하고대관사이트도 만든다 했는데이제는 섭종 위기네...딱해 진짜

    gall.dcinside.com

     

    개발스택

    이용자 - 본인 데이터 조회 시퀀스
    새로운 페이지 생성방식

    React JS

    이전 프로젝트로 NodeJS 크롤러를 만들어서 알림이 챗봇을 만든 경험이 있어 같은 언어로 만들 수 있는 React JS 를 처음 도전해보았습니다.

    Express JS

    NodeJS 크롤러를 만들면서 Express JS 를 사용한 웹사이트도 실습으로 유튜브를 보며 만들어봤었는데 ReactJS 와 언어를 통일하기 위해 작업했습니다.

    MongoDB

    당시에 경험이 없어서 PHP는 무조건 MySQL (Wordpress, XEBoard, 등등)을 사용해야하고, NodeJS 는 MongoDB 를 사용해야하는 줄 알았습니다. 또한 유튜브 강의자료가 ExpressJS + MongoDB 으로 되어 있으며, 나중에 사용한 Agenda 와 호환이 되어 문제 없이 사용했습니다. 또한 MongoDB 에서 제공하는 무료티어 호스팅을 사용하여 초반에 빠르게 배포할 수 있었습니다.

    * 이후 성능개선을 위해서 서버에 직접 설치 및 데이터 이전

    배포환경

    당시 CentOS 를 공부하기 위해 Linode 에서 VPS 를 대여하고 있었는데 PM2에서 React와 ExpressJS 를 실행하고 Apache 를 사용하여 Reverse Proxy 를 직접 설치했습니다. HTTPS 설치하는 것도 생각보다 어려웠고 무엇보다 SocketIO 활성화 하는데 어려웠던 기억이 납니다.

    5년이 지난 회고

    처음으로 문제를 느껴 공부해서 만든 플랫폼이 많은 인기와 관심을 얻고 다른 사용자가 피드백 주는 내용을 업데이트 하는 경험은 이후 저에게 큰 자신감을 줬고, 5년간의 대학생활중 다양한 도전을 해볼 수 있게 도와준 경험인 것 같습니다.

     

    보통 단순 CRUD 으로 개발 공부를 시작하지만, 특별했던 제약사항으로 인해 Agenda Queue 도 사용해보고, 바로 답이 오는 것이 아니기 때문에 Socket IO 도 공부하면서 작업했던 프로젝트입니다. 또한, 아파치에서 도메인을 사용하기 위해 Reverse Proxy와 Virtual Host를 설정해보고, SSL(HTTPS) 를 적용해보는 것도 좋은 경험이었습니다.

     

    ChatGPT 가 없던 시절에도 유튜브와 공식문서를 찾아보며 진행했었는데, 그때보다 더 많은 자원을 사용할 수 있는 오늘날 불가능은 없다고 생각합니다.

    아쉬웠던 점

    당시에는 단순히 재미로 진행했던 프로젝트인 만큼 그때 했던 고민들을 기록하지 않았던 것 같습니다. 다행이도, 당시에 커뮤니티에서 공지사항과 자랑글(?) 덕분에 흔적을 찾아볼 수 있지만, 관리자 페이지와 모니터링 방법을 자세히 적어두었으면 더 많은 기억으로 남지 않았을까 아쉽습니다.

    공구조회사이트 후원

    공구조회사이트는 겨울왕국이 잠잠해진 2021년도에 서비스 종료를 예정하였으나, 2021년부터 2024년까지 무려 4년동안 도메인비와 메일서버 비용을 지원해주신 소중한 후원자가 계셔서 무사히 서비스를 운영할 수 있었습니다. 너무나 감사합니다 :)

    굿바이 공구조회사이트

    23년도까지는 적어도 10개의 공동구매가 이루어졌던 사이트이지만 더 이상 유지보수가 안되고 새로운 서비스가 나와 사용되지 않는 다는 것을 알 수 있었습니다. 또한 후원자님은 매년 먼저 연락을 해주셨지만 이번에는 연락을 주시지 않아 서비스 종료를 결정할 수 밖에 없었습니다. 후원자님과 커뮤니티에게 마지막 감사 인사를 드리고 도메인이 만료되는 것을 지켜 볼 수 있었습니다.. 처음에는 짧은 기간동안 사용될 줄 알았는데 많은 분들의 관심을 받아 약 5년동안 운영할 수 있는 소중한 경험으로 마무리 했습니다.

     

    댓글