MJLog

Resume

공민제

Product Engineer

제품 기능부터 모노레포, IaC, 디자인 시스템, 관측성, 지식 자동화까지 제품을 오래 운영하기 위한 개발 기반을 함께 만듭니다.

서울 관악구 Email GitHub LinkedIn
01

Experience

SmashFi는 비트코인 자동 매수, BTC 네이티브 수익 전략, 셀프 커스터디를 하나의 흐름으로 제공하는 비트코인 자산운용 서비스입니다.

SmashFi 2.0 제품 및 아키텍처 전환

  • SmashFi 2.0의 제품 전면 재구현과 UX 개편을 주도해, 자동 매수와 비트코인 수익 전략, 셀프 커스터디로 나뉘어 있던 기능을 사용자가 자산을 맡기고 운용하는 하나의 여정으로 재설계했습니다.
  • 합류 당시 로그인 여부와 초기 데이터가 브라우저 실행 후에야 정해지고, 전역 화면 구조에 라우트별 예외가 누적되어 신규 기능의 변경 범위가 커지는 구조였습니다. Pages Router에서도 페이지별 서버 인증 규칙을 추가해 보강할 수 있었지만, 41개 라우트를 다시 만드는 시점에는 그 규칙을 따로 운영하기보다 App Router의 공통 서버 경계로 수렴하는 편이 장기 비용이 낮다고 판단했습니다.
  • 제품 개발을 멈추지 않도록 두 라우터를 병행하면서 인증과 초기 데이터 준비를 첫 요청으로 옮겼고, 41개 라우트 이관을 마친 뒤 Pages Router와 기존 라우팅 예외를 제거했습니다.

디자인 시스템 재설계

  • 기존 UI 패키지는 구현 중복은 줄였지만 디자인의 의도와 상태 기준을 코드에 전달하지 못해, 변경할 때마다 개발자가 화면별로 같은 판단을 반복하고 예외를 추가해야 했습니다. 기존 API를 계속 확장하는 대신 제품 개편에 맞춰 새 디자인 시스템으로 분리했습니다.
  • 디자인 시스템의 목적을 컴포넌트 수를 늘리는 것이 아니라 디자인 결정이 코드까지 같은 의미로 전달되게 하는 것으로 정의했습니다. 제품 코드는 특정 색상값보다 배경, 텍스트, 상태 같은 사용 목적에 의존하도록 토큰을 재설계하고, 제품 맥락 없이도 의미가 분명한 요소만 공용화했습니다.
  • Figma Code Connect로 디자이너가 사용하는 속성과 실제 React 컴포넌트의 공개 API 대응 관계를 명시했습니다. 내부 레이어와 스타일 구현은 노출하지 않고 제품 코드가 선택할 수 있는 상태와 변형만 연결했습니다.
  • 이전 시스템과 새 구조를 병행하면서 2.0 화면부터 순차 이관했고, 실제 적용 과정에서 제품 전용 흐름과 과도하게 일반화된 요소를 공용 영역에서 다시 제외했습니다. 세 제품군 이관 후 이전 UI 시스템을 제거했습니다.

셀프 커스터디 제품화

  • 자동 매수와 수익 전략으로 운용한 비트코인을 사용자가 직접 보관하고 출금할 수 있도록, 하드웨어 지갑 기반 셀프 커스터디 기능을 제품화했습니다.
  • Blockstream Jade 하드웨어 지갑과 연동해 계정 등록, 입금 주소 발급, 거래 생성, 기기 서명과 검증으로 나뉜 기술 절차를 하나의 사용자 여정으로 구성하고, 네트워크에서 분리된 기기와 QR로 거래를 완료할 수 있게 구현했습니다.

비바리퍼블리카(Toss) ↗

Frontend Ops Developer

프론트엔드 플랫폼 조직에서는 코드와 문서가 함께 갱신되고 필요한 지식을 개발 흐름 안에서 찾을 수 있도록 했습니다. UX 플랫폼 조직에서는 디자인 에디터의 오류 재현, 성능, 플러그인 확장 구조를 개선했습니다.

Knowledge System Team

  • API 문서가 코드보다 늦게 변경되면서 개발자가 문서를 신뢰하기 어려운 문제를 해결하기 위해, TypeScript 코드와 JSDoc을 기준으로 API 레퍼런스를 생성하고 코드 변경 시 문서 최신성을 검증하는 Docflow를 개발했습니다.
  • 문서와 Slack에 흩어진 지식을 하나의 검색 흐름으로 연결했습니다. 내부 문서를 근거로 답하는 Slack 챗봇을 팀별로 구성할 수 있게 모듈화하고, Model Context Protocol 서버를 통해 같은 지식을 개발 도구와 AI 에이전트에서도 검색할 수 있도록 확장했습니다.
  • Grafana에서 문서 커버리지와 사용량을 함께 관측하며 개선 우선순위를 정했습니다. 문서 수를 1,000개 이상에서 2,200개 이상으로 확장하고, 월간 조회수 6.14천 회에서 13.8천 회, 방문자 수 234% 증가에 기여했습니다.
토스 미니 컨퍼런스 2025 100번 실패하고 살려 낸 문서 시스템 영상 보기 ↗

Deus Team

  • 사용자의 설명만으로 디자인 에디터 오류를 재현하기 어려워, Sentry User Feedback과 Replay를 연결해 제보 당시 화면과 사용자 행동을 바로 확인할 수 있는 진단 흐름을 만들었습니다.
  • 캔버스 조작 때 레이어 트리 전체가 갱신되는 병목을 프로파일링으로 찾아, 가상화와 호출 빈도 제어를 적용해 드래그 처리 시간을 약 200ms에서 100ms 수준으로 단축했습니다.
  • 플러그인이 에디터 내부 DOM과 상태에 직접 의존하던 구조를 QuickJS 기반의 격리 실행 환경과 제한된 SDK 경계로 전환했습니다. Proxy 메시지 브리지로 필요한 기능만 노출하고 기존 플러그인 10개 이상을 새 구조로 이관했습니다.
2025 커리어 회고 읽기 ↗

투니플레이 (HypeToon)

Software Engineer Intern, Web3 TF

글로벌 웹툰 서비스 HypeToon의 초기 제품 개발에 참여해 사용자 웹, 운영 어드민, 백엔드 API를 함께 구현했습니다.

  • React와 TypeScript, Express와 MySQL을 기반으로 작품 탐색부터 회차 열람, 유료 콘텐츠 이용까지 이어지는 핵심 사용자 흐름을 개발했습니다.
  • 한국어, 영어, 인도네시아어 다국어 구조와 Apple, Facebook, 이메일 기반 인증 흐름을 구현했습니다.
  • 인도네시아 사용자를 위한 DOKU 결제와 MetaMask를 통한 HYPE 토큰 전송 기능을 구현했습니다.
  • React Admin 기반 작품 업로드 환경과 이미지 리사이징 파이프라인을 구축하고, 디바이스별 이미지 제공과 native lazy-loading을 적용해 최대 측정 기준 LCP를 약 85% 개선했습니다.

대한민국 해군

소프트웨어 개발병

  • 국방망 내에서 사용하는 기반 행정 시스템을 신규 개발하고 기존 시스템을 유지보수했습니다.
  • 전산 장비 신청, 입출고, 조회, 승인 과정을 전산화해 수기 문서와 Excel에 의존하던 재고 관리 업무를 개선했습니다.
  • 잠수함 승조원이 교육 및 훈련 일정과 이수 기한을 확인하고 필요한 일정을 신청할 수 있도록 전산화했습니다.
  • IE11 중심의 제한된 사용 환경에서 발생하는 React 애플리케이션 호환 문제를 react-app-polyfill 도입으로 해결했습니다.
02

Education

숭실대학교

AI융합학부

한국방송통신대학교

컴퓨터과학부

03

Open Source

Yorkie codepair ↗

Open Source Contributor, OSSCA 특별상

  • 총 6개의 PR을 병합하며 다국어 workspace URL, 문서 내보내기와 CI 문제를 개선했습니다.
  • S3와 MinIO를 전환할 수 있는 파일 저장소 구성과 로컬 개발 환경을 추가했습니다.
  • Electron 앱 구조와 macOS, Windows, Linux 자동 빌드 및 릴리스 워크플로를 구축했습니다.
기여 기록 읽기 ↗

webviewkit ↗

Maintainer

  • WebView 브리지를 Promise 기반 비동기 처리, 버전 관리, 타입 안전성을 갖춘 API로 설계해 npm에 공개했습니다.
  • environment, bridge, bridgedocs 패키지를 만들고 브리지 인터페이스에서 문서를 생성했습니다.
개발 기록 읽기 ↗
04

Selected Projects

05

Activities

피어나 (CMC) ↗

Frontend Developer

피어테스트와 소프트 스킬 평판을 바탕으로 자신과 잘 맞는 동료를 탐색하는 서비스 피어나를 개발했습니다.

  • 6주 안에 웹, iOS, Android에서 MVP를 검증해야 했기에, React 웹을 React Native WebView에서 공유하는 아키텍처를 설계해 세 플랫폼을 출시했습니다.
  • 카카오톡 공유 링크로 유입된 웹 사용자도 모바일 앱과 동일한 화면 흐름을 이어갈 수 있도록 Stackflow 기반의 URL과 화면 스택 구조를 설계했습니다.
  • 웹과 앱의 인증, 파일 저장, 푸시 알림 처리 방식이 달라 WebView와 Native 사이의 브리지를 설계하고, 카카오와 Apple 로그인 세션, 이미지 저장, 네이티브 푸시 알림을 연결했습니다.
  • 데모데이 기간 200명 이상이 가입했고, 사용자당 평균 9.83회의 ‘동료에게 묻기’ 클릭을 기록했습니다.
01

셀프 피어나 테스트

자신의 협업 성향을 먼저 평가하고, 함께 일한 동료의 평가가 3개 이상 모이면 자기 평가와 평판을 종합해 프로필과 성향 일치도를 보여줍니다. 평가 요청은 카카오톡 링크로 공유해 앱을 설치하지 않아도 웹에서 응답할 수 있습니다.

02

나와 맞는 동료 찾기

메인 화면에서 부바르디아, 미모사, 바이올렛, 데이지 네 가지 꽃 유형으로 동료의 협업 성향을 보여주고, 나와 얼마나 잘 맞는지 확인할 수 있도록 구성했습니다.

03

함께할 프로젝트 찾기

누구나 프로젝트를 만들고 함께 일한 동료를 초대할 수 있으며, 참여하고 싶은 프로젝트에는 자신의 프로필로 신청할 수 있습니다. 프로젝트는 모집뿐 아니라 실제 협업한 동료의 평가를 받아 평판을 갱신하는 단위로도 사용됩니다.

04

프로젝트와 동료의 소식

프로젝트 참여 요청과 승인, 동료 평가 요청과 완료를 모아보고, 모바일 앱에서는 네이티브 푸시 알림으로 새 소식을 받을 수 있습니다.

구름톤 유니브 3기 (숭실대학교)

숭실대학교 대표

  • 구성원이 서로의 경험을 나누며 성장할 수 있도록 커피챗, 자율 스터디, 프로젝트를 하나의 흐름으로 설계하고, 운영진과 매주 방향을 조율했습니다.
  • 본 해커톤에 앞서 숭실대학교와 중앙대학교 구성원이 팀을 이루고 함께 성장할 수 있도록 OT, 팀 매칭, 중간 발표, 사용성 테스트로 이어지는 사전 프로젝트를 운영했습니다.
  • 단풍톤에 프론트엔드 개발자로 참여해 Bun, Next.js, tRPC 기반 AI 과제 전형 도우미 ReQuest의 프로토타입을 구현했습니다.
ReQuest 저장소 보기 ↗

잇타 8기 ‘현직자와의 만남’

프론트엔드 세션 발표

잇타 8기 ‘개발 세미나’

프론트엔드 멘토링

숭실대학교 DEVCON

프론트엔드 세션 발표