회사에서 개발, 퇴근 후의 집..
회사-집-회사-집-... 무한 반복으로 지루해진 인생
어떻게 극복할 수 있었을까요?
초등학생 4학년 때부터 자그마한 게임과 웹/앱을 만들면서 개발에 흥미를 가졌다.
하지만, 개발자라는 직업이 되고나니 더 이상 개발을 통해 도파민이 나오지 않기 시작했다.
그리하여 개발이 아닌 또 다른 도파민을 찾아 떠나기로 했다.
그러던 와중, 문토 라는 새로운 플랫폼을 발견하게 되었다.
보통 3시간 정도 활동하는 1회성 컨텐츠같은 모임을 많이 참가했는데,
정기모임을 가져가기엔 너무 피로해서 3시간 바짝 즐기고 싶었기 때문이다.
그러한 모임에 참가하다보니, 문득 생각에 들었다.
'모임 컨텐츠를 만드는 호스트가 몬가... 멋있다...!!'
'어? 나도 모임 컨텐츠를 만들어볼까?'
모임 컨텐츠를 창작해서 사람들을 즐겁게 해주는 것이 매력적으로 느꺼졌다.
창작을 하다보면 나도 도파민을 찾을 수 있겠다 생각하여 도전하기로 결심한다!
특색있는 나만의 모임 컨텐츠를 만들어서 사람들에게 즐거운 경험을 주고싶어!
평생 개발만 하던 내가, 어떻게 나만의 모임 컨텐츠를 만들 수 있을까?
그건 간단하게 해결되었다. 모임 컨텐츠를 개발하면 되겠다 생각했다.
인터랙티브한 기술로 사람들이 즐겁고 새로운 경험을 얻었으면 좋겠고,
그 경험을 함께 공유했으면 좋겠다고 생각했다.
'더 지니어스'이나 '데블스플랜'과 같은 서바이벌 게임 예능을 본 적이 있는가?
나는 '더 지니어스'를 보면서 이런 생각이 들었다.
와.. 나라면 저렇게 플레이 했을텐데..
나도 사람들이랑 모여서 저런 게임들을 해보고싶어..!!
그래서 제가 만들고 제가 참가하기로 합니다.
그렇게 탄생한 모임 컨텐츠가 바로 '주식게임' 이죠.
주식게임은 2000년대 배경의 증권거래소에서 벌어지는 일을 새롭게 해석하고 싶었다.
모두 한 자리에 모여, 그곳에서 정보를 주고받고,
전자시세판을 보며 각자의 희노애락이 느껴지도록 하고싶었다.
그렇게 개발을 돌입하게 된다!
프론트엔드 : React / React-Query / Emotion / Jotai
백엔드 : NestJS / Atlas MongoDB
Yarn Workspace + Turbo를 기반으로 모노레포로 작업했다
(다른 모임 컨텐츠도 만들기 수월하도록 재사용을 최대한 고려했다)
개발 준비단계 : 9월 25일 ~ 10월 5일 (35시간)
주식게임 개발 : 10월 14일 ~ 10월 31일 (35시간)
주식게임에 필요한 프론트/백엔드 모두 혼자 만들었다.
개발에 쏟아부운 시간은 약 70시간이 소요되었다.
(Wakatime을 통해 개발시간을 측정할 수 있다)
디자인, 기획 등등을 고려하면 100시간을 투자했을 것이다.
개발과는 별개로 장소 대관, 호스트 브랜딩, 모임 마케팅 등등 신경써야 할 것이 많았다.
이러한 점이 진입장벽이었지만, 하나씩 처리하다보니 큰 문제는 문제는 아니었다.
(만약에, 궁금한 사람이 많다면 이러한 주제로도 이야기를 풀 기회를 만들어 볼까 한다)
다만, 모임 컨텐츠를 진행하면서 두려웠던건
어떠한 변수가 발생할지 모른다는 것이었다.
'내가 모임 진행을 잘 할 수 있을까?'
’소셜링에 필요한 노트북이 고장나지 않을까?‘
’사실 주식게임은 재미없었고, 모두가 재미없게 집에 돌아갈까?‘
결론적으로는 만족할만큼 잘 끝냈다!
게임 도중에 참가자분들이 엄청 발빠르게 정보를 찾으러 다니고,
전자시세판을 보며 희노애락을 느끼시니 저는 아주 흐뭇했다 😊
주식게임에 정치판이 형성되고, 거짓된 정보를 전략적으로 퍼뜨리며
슬퍼하는 사람들을 보며 쾌감을 느끼는 사람도 있고,,
원하는 그림이 나와서 너무 좋았다!!
실제로 피드백 설문을 진행했었는데
상대방과 정보를 교환하는 과정에서 거짓정보를 흘리고,
작전세력 연합을 구축하고,
수익이 날 때 마치 내가 돈을 번 것 처럼 좋았다는게 재미포인트로 작용했다고 한다.
사실 주식게임 3회차를 마지막으로 장례식을 진행하고 다시 현생에 풀집중 하려고 했는데,
15명씩이나 앵콜을 요청하셔서, 너무 감격스러웠다 🥹
참가비용만큼의 가치를 얻어가셨을까?
정말 재밌게 즐겼을까? 에 대한 의심이 많았는데 해소되었다 🍀
여유가 된다면 조만간 다시 열어볼까 한다.
실제로 참가하신 분의 후기인데, 너무 잘 적어주셔서 감동이었다.
소셜링 진행력은 왜 4점인지 개인적으로 회고해봤는데,
아무래도 개발만 해왔던 너드 INFP 였던지라,
모임 진행은 아직까지 어색하게 느껴져서 그랬던듯 하다.
내가 진행하는 모임에 대해 자신감을 조금 더 갖고
준비도 더욱 철저하게 된다면 진행력이 올라가지 않을까 하는 믿음이 있다.
1회차에서 20명, 2회차에서 10명의 인원으로 진행했을 때는 문제가 없었다.
다만, 3회차에서 30명으로 진행했을 때 우려하던 문제가 발생했다.
주식게임은 QR코드를 통해 주식거래웹에 접근할 수 있도록 하고 있었다.
문제에 즉각적인 대처를 하기 위해 맥북 development 환경에서 프론트/백엔드 서버를 열고
핫리로딩 기능을 적극적으로 활용하도록 하고 있었다.
그러다보니, 모든 사람을 공유기에 접속하도록 유도하고 있었다.
하지만, 내가 가진 공유기는 최대 23명까지 수용할 수 있었다.
멘탈이 붕괴되어 아주 발빠르게 공유기 포트포워딩을 해서
외부망에서도 접속할 수 있도록 조치했다!
와이파이 대신에 모바일 데이터를 사용하도록 유도했습니다 😂
그렇게 문제를 해결했다고 한다.
실시간을 구현하는 방법을 생각해보자면, websocket을 활용하는 것이다.
하지만 websocket을 학습할 시간보다 더 빠르게 개발을 해야했다.
그래서, REST API를 500ms 간격으로 refetch하자는 대담한 시도를 했다.
2개의 API를 500ms 간격으로 refetch하니 500ms 당, 약 22KB의 정보를 가져왔다.
30명이 1초에 44KB를 읽으니, DB에 1초당 1.32MB 만큼 부하가 있었다 (캐싱도 없었음)
읽기만 해도 저런데, 주식게임이 시작되자마자 수강신청 티케팅처럼 주식을 사려고 시도하니까
서버에 렉이 걸리기 시작했다.. 😂😂
많은 사람들이 이에 대해 불편함을 느끼니 현장에서 긴급하게 조치를 해야했다.
기존에 사용하던 DB는 MongoDB Atlas M0를 사용하고 있었다.
Shared Cluster이다보니 부하는 둘째치고 외부변수가 굉장히 많았기에 조치해야 했다.
M10 Cluster로 업그레이드하니, 문제는 일시적으로 해결할 수 있었다!
렉은 사라졌지만, 한달에 57달러이기 때문에 지갑도 사라진다 💸
주식게임은 한 달에 많아야 12시간 정도 서버를 열어두는데,
Dedicated 클러스터는 Pause하는 동안에도 요금이 일부 발생하기 때문에 조치해야 했다.
주식게임 다음회차 부터는 Serverless 클러스터를 사용해서
사용한 만큼 요금이 부과되도록 할 예정이다.
그리고 refetch를 하기 보다는, Websocket을 사용해서
Read/Write를 최대한 줄여볼 생각이다.
다음 포스팅을 참고하여, Websocket과 React Query를 결합해볼 예정이다.
Using WebSockets with React Query
충분히 도파민을 얻었고, 이제 그만둘려나 싶었던 찰나에
정말 영광스럽게도, 플랫폼에서도 우수 활동자로 선정해서
'셀렉티드 호스트' 인증뱃지를 달았다 ✨
앞으로 최소 월 2회는 모임을 열어볼까 한다.
주식게임 외에도 새로운 컨텐츠를 준비하고 있다.
내가 선호하는 대화주제를 직접 선택하고 마음 맞는 사람과 최대한 즐기도록 유도하는
대화 소셜링을 다른 호스트분과 협업하여 함께 준비하고 있다. (링크)
이것도 잘되었으면 좋겠다 ✨✨
2024년의 나 앞으로도 화이팅!! 🎉🎉
우와 ............ 이게 모죠.......... 이 많은걸 혼자 만드시고 주최까지 하시다니 덜덜 ..
게임 자체도 너무 재밌어보이는데요 ? 저도 당장 문토 설치하렵니다 다음 모임 또 열어주세요!!