컬링 IO, Gleam과 SQLite로 성능과 안정성 잡는다!
컬링 IO(Curling IO)는 차세대 버전 구축을 위해 Gleam, SQLite, BEAM VM 기반의 새로운 기술 스택을 도입
AI 에이전트 API(AI Agent APIs) 지원, 동시성(Concurrency) 및 정확성(Correctness) 향상에 초점
개발자 온보딩(Developer Onboarding) 용이성을 위해 타입 안전성(Type Safety)과 함수형 프로그래밍(Functional Programming) 채택
커뮤니티에서는 Gleam의 BEAM VM, SQLite의 In-process 속도(In-process Speed)에 대한 기대와 NIF(Native Implemented Function) 안정성에 대한 우려 공존
Gleam과 BEAM VM의 선택 배경
Curling IO는 AI 에이전트 API(AI Agent APIs) 지원, 동시성(Concurrency), 정확성(Correctness)을 위해 Gleam을 선택했다. Gleam은 BEAM VM 위에서 동작하며, 이는 WhatsApp과 Discord에서 입증된 높은 동시성(High Concurrency)과 결함 허용(Fault Tolerance)을 제공한다. 또한, Gleam은 ML-family 타입 시스템(ML-family Type System)을 통해 컴파일 타임에 오류를 포착하여 런타임 오류를 줄이는 데 기여한다.
SQLite 채택과 성능 기대
Curling IO는 기존 PostgreSQL 대신 SQLite를 선택하여 데이터 격리 아키텍처(Data Isolation Architecture)를 구현했다. SQLite는 In-process 속도(In-process Speed)를 제공하여 네트워크 지연 시간을 줄이고, BEAM VM의 경량 프로세스를 활용하여 높은 처리량을 기대한다. 개발팀은 Rails + PostgreSQL 환경과 비교하여 동일한 인프라 예산으로 1,000배의 동시 연결, 100배의 데이터 처리량, 100배의 피크 트래픽 처리 능력을 예상한다.
기술 스택 선택 과정에서의 트레이드오프
개발팀은 PostgREST + Elm/Lustre, F# SAFE Stack, TypeScript + Node + React 등 다양한 기술 스택을 검토했다. PostgREST + Elm/Lustre는 익숙한 도구였지만, 백그라운드 작업 처리에 대한 추가적인 솔루션이 필요했다. TypeScript + Node + React는 생태계의 장점에도 불구하고, 타입 안전성 부족, 라이브러리 관리의 어려움, 보안 취약점 등의 문제로 인해 Gleam을 선택했다.
개발 생산성 향상을 위한 노력
Curling IO는 개발자 온보딩(Developer Onboarding)을 용이하게 하기 위해 Gleam을 선택했다. Gleam은 타입 안전성(Type Safety)과 함수형 프로그래밍(Functional Programming)을 지원하여 코드의 가독성을 높이고, AI 코딩 어시스턴트의 활용을 돕는다. 또한, Gleam은 Rails와 유사한 개발 경험을 제공하면서도, 런타임 오류를 줄여 개발 생산성을 향상시키는 데 기여한다.