Archive
Folio

Period

2026.04.07 - 2026.05.18

Role

FE, AI, Infra

Team

6

Stack

Overview

소설 작가를 위한 통합 에디터.

글 작성에 필요한 다양한 스타일링 및 편의성 도구를 지원합니다.

Folio 기능 1

My Work

01

데스크탑 앱 에디터 UI 구현

에디터의 전체적인 디자인 및 핵심 기능을 구현하였습니다.

ElectronTypeScriptReact
  • DnD-kit을 이용한 드래그 드롭 UI
  • 도움말 표시 기능을 통한 최초 사용자 진입 장벽 완화
  • 낙관적 업데이트 통한 빠른 UI 피드백
02

개발 환경 및 배포 인프라 구현

GitLab Runner를 이용한 배포 자동화 및 도커 컨테이너를 이용한 블루그린 무중단 배포를 구현하였습니다.

GitLab CIDockerNginx
  • 도커 및 시크릿 매니저로 배포와 분리된 개발 환경 구성
  • 지정 협업 도구 GitLab을 이용한 서비스앱 배포 자동화
  • 프로메테우스 메트릭 및 그라파나 서버 모니터링 구축
03

AI 기능 구현

MCP 서버와 벡터DB를 이용한 AI 파이프라인 및 각종 도구와 프롬프트를 구현하였습니다.

FastAPIpgvectorMCP
  • 벡터DB 기반 문서 유사도 검색 도구
  • 각 문서 DB에 대한 CRUD 도구 구현
  • 계층적 문서 탐색 구조를 통한 토큰 절약

Architecture

원고 손실 방지 · AI 트래픽 격리 · 민감 데이터 보호

Local-First Desktop · Dual Server · Envelope Encryption

Client
Server
Data
Electron
Web
WA-SQLite
PowerSync
Spring Boot
FastAPI
PostgreSQL
Redis
Vault
LLM API
SyncRESTExternal

로컬 퍼스트

Electron + WA-SQLite

  • 사용자가 공간적 제약을 덜받도록 오프라인 작업 환경 지원
  • Tiptap(ProseMirror)이 한국어 IME / 단축키 / 파일시스템 접근에서 PWA·Tauri 대비 우수

양방향 동기화

PowerSync

  • 다기기 / 협업 대응 + RLS(행 단위 권한)로 작가 행 자동 격리
  • Yjs·Automerge 대비 last-write-wins로 운영 복잡도 ↓

서버 이중화

Spring Boot + FastAPI

  • LLM 호출은 느리고 IO-heavy — 단일 서버면 메인 트래픽까지 막힘
  • Java로 도메인 명료 표현 + Python으로 LLM/벡터 생태계(OpenAI SDK·LangChain) 활용

봉투 암호화

Vault + pgvector

  • 원고는 민감 자산(작가 IP) — Vault Transit Engine = 자체 KMS 대비 감사 로그·키 순환 우수
  • pgvector로 별도 벡터 DB(Pinecone) 운영 비용·일관성 문제 회피

Troubleshooting

01

개인키 + 서버키 이중 Wrapping

원고 보호를 위해 KEK 암호화를 적용하니, AI 서버가 사용자 키 없이는 DB를 읽지 못해 인덱싱·검색이 불가능해졌습니다.

User Key + Vault 서버키로 DEK를 이중 Wrapping하고 pepper를 메모리에만 보관, Vault 토큰 단독 유출로는 복호화 불가능하게 격리. AI 서버는 짧은 TTL의 unwrap DEK 캐시로 안전하게 접근하도록 했습니다.

02

동기화 디바운스 · 쓰로틀 · 배치 처리

키 입력마다 동기화가 즉시 트리거되어 초당 수십 건의 업로드 요청이 발생, 서버 부하가 급증했습니다.

에디터 400ms 디바운스 + 업로드 5s 쓰로틀 + 최대 50건 배치 적용. 서버 반영 지연이 ~5s로 늘어나는 트레이드오프를 감수하되, 로컬 저장은 즉시 수행해 작가의 체감 입력 응답성은 유지했습니다.

Results

가입자

51

AI 호출

201

결제 시도

78

작품

71

Retrospective

좋았던 점

  • 프로젝트를 진행하며 잘 해낸 점을 기록합니다.
  • DB기반 동기화 시스템을 구현해볼 수 있어 DB에 대해 많이 배울 수 있었습니다.

배운 점

  • Electron을 이용한 데스크탑 앱 개발 및 윈도우 exe 설치 마법사를 통한 배포과정을 경험할 수 있었습니다.
  • PostgreSQL의 pgvector와 GIN에 대하여 알게되었습니다.
  • TipTap과 같은 위지윅 에디터 라이브러리에 대하여 알게되었습니다.

아쉬운 점

  • 다시 한다면 다르게 했을 부분을 기록합니다.
  • 시간·지식 부족으로 미흡했던 점을 기록합니다.

다음에는

  • 다음 프로젝트에 적용하고 싶은 시도를 기록합니다.
  • 깊이 파고들고 싶은 영역을 기록합니다.