이태랑
Next.jsNestJSReact NativeSocket.ioPostgreSQL

Comind 그룹웨어

일본 기업용 협업 플랫폼

Comind 그룹웨어

역할

CTO / Full-Stack Engineer

기간

2025

클라이언트

일본 중견기업

01문제

일본 기업들은 채팅, 일정, Wiki, 근태, 결재가 분산되어 업무 연속성이 끊어짐. 모바일/웹 통합 협업 환경이 필요했고, 기존 그룹웨어는 UI가 구식이고 모바일 지원이 부족.

02판단

실시간 통신: Polling vs WebSocket

선택

Socket.io (WebSocket)

이유

메시지 지연 < 100ms. Room 기반 그룹 채팅. WebSocket 불가 시 자동 polling 폴백

모바일: WebView vs React Native

선택

React Native

이유

네이티브 수준 성능, Pull-to-refresh/Modal 등 자연스러운 UX.

트레이드오프

개발 비용 증가, 플랫폼별 테스트 필요

권한 제어: Role-based vs Permission-based

선택

CASL (Permission-based)

이유

페이지별 세밀한 권한 제어. 동적 권한 변경 용이. 8개 도메인 권한 독립 관리

인프라: 자체 구축 vs Google Cloud

선택

Google Cloud Services

이유

Cloud Storage, Speech(STT), Calendar API, Cloud Run, Cloud SQL 통합. 인프라 관리 비용 70% 절감

03결과

30+ 기업 도입, 5,000+ 월간 활성 사용자

채팅 메시지 지연 < 100ms

모바일 사용 비중 65%

출퇴근 처리 시간 3초 → 0.5초

ISO 27001 취득

04아키텍처

graph TB subgraph Clients["클라이언트"] Web["Next.js 15<br/>Web"] Mobile["React Native<br/>iOS / Android"] end subgraph API["API & 실시간"] NestJS["NestJS"] Socket["Socket.io<br/>WebSocket"] CASL["CASL<br/>권한 제어"] end subgraph GCP["Google Cloud Platform"] CloudRun["Cloud Run"] CloudSQL["Cloud SQL<br/>PostgreSQL + RLS"] Storage["Cloud Storage"] Speech["Speech API<br/>STT"] CalAPI["Calendar API"] end subgraph Push["푸시 알림"] Firebase["Firebase FCM"] end Web --> NestJS Mobile --> NestJS Web --> Socket Mobile --> Socket NestJS --> CASL NestJS --> CloudRun CloudRun --> CloudSQL CloudRun --> Storage CloudRun --> Speech CloudRun --> CalAPI NestJS --> Firebase

05기술 스택

frontend

Next.js 15 (Web), React Native (iOS/Android)

backend

NestJS, Socket.io, CASL

database

PostgreSQL (RLS)

infra

Google Cloud Run, Cloud SQL, Cloud Storage, Firebase (Push)

etc

Google Calendar API, Cloud Speech (STT)