엣지 데이터베이스 turso 사용후기
turso 데이터 베이스
sqlite 기반의 엣지 서버리스 데이터베이스다. 클라우드 플레어의 d1과 유사하다고 보면 될 것 같다. 타 서버리스 데이터베이스들과 비교했을 때 매우 저렴한게 장점이고, http 기반이기 때문에 cloudflare workers와 연동도 쉬운편이다.
가격
SCALER 요금제 기본 29달러 기준으로
- 스토리지 1gb당 0.5달러 (기본 24기가)
- read row 10억당 0.8달러 (기본 월 1000억 row)
- write row 100만당 0.8달러 (기본 월 1억 row)
read, write 비용은 d1보다 조금 저렴한 편이고, 스토리지는 복제본의 데이터베이스 용량까지 포함된 용량이라 복제 리전을 하나만 써도 d1(gb당 0.75달러)보다 비싸진다. 난 도쿄(서울리전없음) + 미국(보스턴) + 유럽(파리) 이렇게 3개를 선택했기에 1gb 저장 시 복제본까지 3배 가격인 1.5달러가 든다.
hono + drizzle + turso
예제 레포 : https://github.com/saturn30/hono-turso
cloudflare의 workers를 선택하여 hono 프레임워크를 썼고, ORM으로는 drizzle을 사용했다. turso의 prisma 호환 어댑터가 나왔다고 보긴 했는데, 아직 얼리 억세스 버전이라 일반적으로 turso와 많이 사용하는 drizzle을 선택했다.
개발 경험은 express 개발과 거의 유사할 정도로 쉽고 편했다.
turso 성능 확인
전 세계 위치에서 내 사이트 url에 접속시 레이턴시가 어떻게 되는지가 궁금했다.
https://check-host.net/ 이 사이트를 이용해서 테스트했다.
/users로 유저 목록을 확인했을 때 결과이다. 대부분의 국가에서 300ms 이내로 응답을 받았다. 대체로 만족스럽다.
반면 현재 도쿄, 미국, 프랑스 세개의 리전만 설정했기 때문에 서아시아 위치에서는 응답속도가 조금 오래걸린다. 하지만 사이드 프로젝트에서 한국과 영미권을 대상으로 작업할 것이라서 서아시아 리전을 추가할 필요는 없을 것 같다.
쓰기요청 결과이다. 메인리전이 도쿄라서 도쿄기준으로 응답 시간이 조금씩 늘어가는게 확인된다.
아무래도 도쿄보다 지리상 동아시아와 유럽 사이인 미국으로 메인리전을 설정하는게 응답시간 면에서는 전반적으로 더 좋을 것 같다.
d1 성능 확인
궁금해서 d1도 연결해서 확인해봤다.
조회 결과이다. 응답시간을 봤을 때 도쿄 기준으로 먼 거리 일수록 시간이 점점 늘어난다. 리전 설정이 전혀 안되어 있는 것 같다. 현재 베타버전이라서 그럴수도 있고, 내 요금제가 무료 요금제라서 그럴수도.
현재 결과로만 보면 동아시아 외에는 쓰기 어려운 속도라고 생각이든다.
쓰기의 경우도 동일하게 도쿄 기준으로 시간이 점점 늘어난다. 이건 turso와 동일한데 전반적인 쓰기 성능은 turso보다 빠른 편인것 같다.
후기
turso 프로덕션에서 사용할만해 보인다. 성능적으로나 비용으로나 만족스럽다.
작년부터 사이드 프로젝트에서 사용할 저렴하고 관리비용이 적은 서버구성에 대해 고민을 많이 했다. 서버는 cloudflare의 worker를 사용하기로 결정했는데, 마땅한 데이터베이스가 없었고 d1 발표 소식을 듣고 출시까지 기다리기만 했다. 오늘 turso 보니까 굳이 d1 정식 오픈까지 기다릴 필요가 없어 보인다. d1이 정식 출시일에 얼마나 개선될지는 모르겠지만, 현재 옵션만 봤을 땐 turso로 충분히 대체가능하다고 생각된다.
저렴함의 기준에선 vultr나 디지털오션과 같은 서비스에서 관리형 쿠버네티스를 직접 다루는게 제일 좋다고 생각했고, 그래서 쿠버네티스 공부도 조금 했었다. 그런데 공부를 해도 실전 경험이 없으니 자신이 없고, 매번 yaml 파일을 만들때마다 처음 배우는 것 처럼 새로운 느낌으로 학습 속도도 더뎠다. 그로 인해서 시간은 자꾸 낭비되고 프로젝트 진행은 안되는 어려움을 겪었다. 관리 비용 측면에서 봤을 때 인프라는 서버리스 서비스를 사용하고 난 서비스 개발에 집중하는게 좋아 보인다.
그런 측면에서 hono + drizzle + turso 기술 스택은 나에게 제일 적합한 사이드 프로젝트의 서버 스택이 아닌가 싶다.