안녕하세요, 저는 개발자 주영호입니다.
디자인을 전공했고, 웹 개발자와 iOS 개발자 커리어를 거쳐 현재 BAT라는 회사에서 이런저런 프로젝트를 시도해 보고 있습니다.
기존에 12개의 사이드 프로젝트(주로 iOS 앱)을 출시했었어요. 기획, 디자인, 개발 등 주로 혼자서 진행하고 있어요.
직장인이 된 후로 저의 가장 큰 고민거리는 점심 메뉴를 고르는 일입니다. (결국 다 먹고살자고 하는 일이니까요)
다양한 지도 서비스에서 이미 맛집 추천을 잘 해주고 있지만, 회사에서 먹는 점심은 특별한 날 먹는 점심과는 성격이 다소 다르다고 생각했고,
비슷한 고민을 회사 사람들도 하고 있을 것이라고 생각했어요.
그래서 직장 동료끼리 서로 맛집을 공유하고, 랜덤하게 골라줄 수 있는 기능을 가진 서비스를 제작했습니다.
또, 우리 회사뿐만 아니라 근처 회사 사람들이 무엇을 먹는지도 궁금해서, 주변 회사에도 맛집을 공유할 수 있도록 했어요.
저는 최근 3년간 iOS 개발을 주로 했었고, 최신 웹 기술에는 약했어요. (jQuery 세대..)
React + Next.js를 배우는 겸 새로운 서비스를 만들고자 했고, 그 아이디어는 제 고민에서 찾게 되었습니다.
항상 하는 고민인 "무엇을 먹을까?"에 대한 고민을 해결하고 싶었고, MVP를 일주일 간 제작했습니다.
디자인이나 개발은 혼자 했지만, 같은 회사 분들께서 아이디어를 주시거나 테스트를 직접 해주시기도 했어요.
특히 제가 속해있는 브랜드 솔루션 1그룹 분들께서 많은 리뷰를 작성해 주셔서 너무나 감사해요.
아이디어가 정리되기 전부터 React로 제작을 하겠다고 생각을 한 상태여서, React로 작성하게 되었어요.
처음에는 React Native로 개발해서 웹, 앱을 모두 배포하고 싶었지만 생각보다 제약이 많아서 React + Next.js로 제작을 하게 되었어요.
지도 기반 서비스이기 때문에 네이버 지도 API를 사용했고,
(카카오 지도 API도 친절했지만, 개인적으로 디자인이 네이버가 더 깔끔한 느낌이 들어서 선택했어요)
맛집에 대한 기초 데이터는 공공 데이터 중 전국 음식점 표준 데이터를 사용하였어요.
또 제가 앱 개발자였다 보니, 특이하게 AWS가 아닌 Firebase를 기반으로 개발했습니다.
NoSQL로 데이터를 저장하다 보니, 위치를 어떻게 검색하지? 라는 고민이 있었는데
Geohash라는 개념을 발견하였고, 이것을 바탕으로 위치 기반 검색을 구현할 수 있었습니다.
또, MVP인만큼 디자인에 많은 시간을 쓰기는 싫어서 아이콘은 에셋 사이트에서 구매하였고,
UI의 대부분은 React 기반의 shadcn/ui를 사용하였어요.
React로 이런 프로젝트를 해본 건 처음이어서, Cursor라는 AI 기반 코드 에디터에서 대부분의 코드를 작성(요청) 했습니다.
"오늘 점심은 뭘 먹을까요?"
출근하면 하염없이 점심시간만 기다리지만, 막상 점심을 무엇을 먹을지는 참 고민이 됩니다.
7일 중 5일을 먹기에 너무 비싸지 않아야 하고, 그래도 맛은 있었으면 하고.. 어제 먹은 거랑 안 겹쳤으면 좋겠고!
결론을 내지 못한 저는 결국 옆 동료에게 오늘도 토스를 하고 말았습니다.
jQuery에서 벗어나 Nest.js + React를 배우고자 했던 저는 이참에 이 (심각한) 문제를 해결해 줄 서비스를 만들기로 결심합니다.
네이버 지도에서 맛집 데이터를 주면 좋겠지만, 아쉽게도 지역 검색은 5개의 결과만 주고 있었습니다.
다소 부정확한 정보도 많았지만, 공공데이터 포털의 "전국 일반음식점 표준 데이터" 엑셀 파일을 받아, 이를 기초 데이터로 활용했습니다.
100만 개가 넘어가는 데이터 속에서 현재 영업 중인 식당, 카페 등을 1차적으로 정리하니 약 62만 개의 데이터를 사용할 수 있었습니다.
사실상 "맛집" 데이터는 아니고, 현재 사업자로 등록된 "음식점" 정보였습니다.
기초 데이터를 바탕으로, 이 고민을 어떻게 하면 해결할 수 있을지 아이디어를 구체화했습니다.
결국 식사는 회사 근처에서 해야 하고, 같은 회사 구성원들이 비슷한 고민을 할 것이라는 생각으로 회사 단위의 맛집 지도를 만들면 어떨까? 하는 생각을 했습니다.
회사를 구분하는 가장 쉬운 방법은 우선 이메일이므로, Google 로그인을 지원하여 메일 주소로 회사 구분을 하고, 맛집을 추가할 수 있도록 MVP 웹을 개발했습니다.
또, 주변 회사의 사람들이 어떤 맛집을 자주 가는지 볼 수 있도록 회사 사람에게만 공유할지, 전체 공개를 할지 선택하게 하였습니다.
잘못된 정보가 많기도 하고, 신규 영업 / 폐업이 많기에 정보 수정 요청 버튼을 넣고,
본래의 고민인 "맛집"을 빠르게 골라줄 수 있도록 주사위 버튼을 홈에 추가했습니다.
(누르면 회사 사람들이 등록한 맛집 중 평점이 높은 식당을 랜덤으로 보여줍니다)
근처 회사 사람과 식사나 커피를 마시는 "밥트워킹"이나, 리뷰 수에 따라 배지(우리 회사 쩝쩝박사) 등 구현하고 싶은 기능은 많았지만,
이 서비스가 잘 될지 모르는 상황에서 시작하기엔 리소스가 너무 많이 들어갈 것 같아 최소한의 기능만 개발했습니다.
OS에서의 SwiftUI를 하다가 React를 보게 되니 생각보다 닮아있는 점이 많이 있어서 신기했어요.
웹에도 jQuery, Vue, Angular, React 등 많은 라이브러리, 프레임워크의 역사가 있었지만, 웹/앱 상관없이 개발 철학 등이 비슷해지는 것 같았거든요.
또 기존에도 물론 GPT를 자주 의존했었지만, 대부분의 코드를 AI로 작성한 건 처음이었는데요.
생각보다 코드 퀄리티가 괜찮게 나와서 놀라웠습니다. (제가 React를 아직 깊게 알지 못해서 그런 걸 수도 있고요)
성능 최적화 부분이 아쉬웠습니다. MVP 단계니까 하면서 최적화를 못한 부분이 꽤 있는 것 같아요.
불필요한 API 호출을 줄이고 싶었지만, 시간을 핑계로 진행하지 못했어요. 또 커뮤니티 자체가 대부분 사용자가 사용자를 부르는 구조이지만,
초기 사용자를 모으는 게 상당히 어려운 것 같아요.
사용자가 어느 정도 확보된다면, "밥트워킹"이라는 이름으로 같은 회사 사람이나 근처 회사 사람과 밥 멤버를 모집하고, 네트워킹하는 기능을 넣고 싶어요.
또 가능하다면 네이티브 앱 버전도 출시를 해보고 싶습니다 :)
주영호