우리는 이렇게 개발합니다
공통
- Node.js — TypeScript Isomorphic 환경에서 백엔드/프론트엔드 전체를 구현합니다.
- pnpm을 통해 패키지 관리를 합니다. (pnpm workspace)
- git/GitHub을 통해 코드를 관리합니다.
- Zed를 IDE로 사용합니다.
- Docker로 공통된 로컬 개발 환경을 구축합니다.
- Slack을 통해 소통합니다.
- 문서 공유/협업을 위해 Notion을 사용합니다.
- 업무 분배 및 이슈 관리는 Linear를 사용합니다.
- 디자인 협업에는 Figma를 사용합니다.
- ChatGPT/Claude/Gemini 팀 플랜 및 개인 Max 계정을 사용합니다.
- 팀원 각자의 취향에 따라 Codex / Claude Code / Antigravity 등의 코딩 에이전트를 사용합니다. 자체 제작한 커스텀 에이전트를 쓰는 팀도 있습니다.
백엔드
- 모든 백엔드 업무 프로세스의 기반은 Sonamu 프레임워크를 사용합니다.
- Sonamu는 PostgreSQL을 베이스로 ORM-like한 마이그레이션을 다룹니다.
- DB 쿼리는 Knex.js를 Type-Safe로 래핑한 Puri를 통해 쿼리 빌더(Query Builder) 방식을 씁니다.
- 웹 서버의 기반은 Fastify로 구성되었습니다.
- 타입 생성/검증은 Zod를 사용합니다.
- ESM을 사용하여, Sonamu 내장 HMR이 구현되어 있습니다. (swc, hot-hook 기반)
- 라우팅은 Sonamu 자체에 내장된 데코레이터 + AST 파싱을 통해 Validation을 포함하여 HTTP/SSE API가 자동 생성되며, 클라이언트에 RPC로 연결됩니다.
- 스키마 정의, 스캐폴딩, 코드 생성은 Sonamu CLI를 통해 이루어지며, 에이전트가 사용하는 주 인터페이스도 CLI입니다. 같은 기능을 웹 UI인 Sonamu UI로도 다룰 수 있습니다.
- Vitest에서 단위테스트를 진행합니다.
- Sonamu의 FixtureManager를 통해 픽스쳐를 팀 공통으로 사용하고 관리하는 시스템이 구현되어 있습니다.
- 이를 통해 DB를 Mocking하지 않고 로컬의 테스팅 DB에서 실제 쿼리를 실행하여 테스트하며, 테스팅 트랜잭션 격리를 통해 빠른 테스트가 가능하게 합니다.
- 관찰 기반 테스팅 기법(Observability-driven Testing)을 도입한 자체 개발 테스팅 도구인 Naite를 사용하여 높은 수준의 테스팅 커버리지를 구현합니다.
- PostgreSQL FTS를 활용하여 검색을 구현합니다.
- PostgreSQL pgvector를 활용하여 벡터 임베딩을 관리합니다.
- Cube.js를 사용하여 통계를 구현합니다.
- BentoCache + Redis를 활용하여 API 캐싱을 구현합니다.