한 명이 Postgres를 통째로 Rust로 다시 썼다 — 데이터베이스의 심장까지 갈아엎을 것인가
지난 몇 년간 개발 세계를 관통한 키워드가 하나 있습니다. 바로 메모리 안전입니다. C로 짜인 온갖 소프트웨어가 Rust로 다시 태어났죠. 그런데 이번엔 상대가 만만치 않습니다. 데이터베이스의 왕, Postgres입니다. 누군가 이걸 통째로 Rust로 다시 쓰고 “회귀 테스트 100% 통과"를 선언했거든요.
무슨 일이 벌어진 건가요
프로젝트 이름은 Pgrust입니다. 이름 그대로 Postgres를 Rust로 옮긴 겁니다. 6월 말 Show HN으로 조용히 등장했다가, 7월 9일 해커뉴스 메인에 다시 오르며 폭발했습니다. 478점에 댓글만 447개가 달렸죠.
핵심 주장은 단순하면서도 도발적입니다. Postgres가 자체적으로 돌리는 회귀 테스트(regression test)를 100% 통과했다는 겁니다. 회귀 테스트란 쉽게 말해 “이 데이터베이스가 원래 하던 일을 제대로 하는지” 검증하는 자동 시험 세트인데요. 이걸 다 통과했다는 건, 적어도 표면적으로는 진짜 Postgres처럼 동작한다는 뜻입니다.
여기에 하나 더. 라이선스가 AGPL이라는 점이 눈길을 끌었습니다. 원조 Postgres는 관대하기로 유명한 PostgreSQL License를 씁니다. 반면 AGPL은 네트워크로 서비스만 해도 소스 공개 의무가 따라붙는 강력한 카피레프트죠. 커뮤니티에서 “AGPL이라고? 흥미롭네"라는 반응이 나온 이유입니다.
커뮤니티는 왜 반신반의할까요
박수만 나온 건 아닙니다. 오히려 의심의 목소리가 컸습니다. 가장 날카로운 지적은 이거였습니다.
“우리는 이제 사람이 다시 쓴 것과 AI가 다시 쓴 것을 확실히 구분해야 한다.”
무슨 뜻일까요. 요즘 “무언가를 다른 언어로 다시 썼다"는 프로젝트가 쏟아지는데, 상당수가 AI에게 코드 변환을 시킨 결과라는 겁니다. 그리고 그런 프로젝트들이 하나같이 테스트 통과를 유일한 증거로 내세운다는 점을 꼬집었습니다. 한 사용자는 “테스트만 믿고 ‘작동한다’고 주장하는 재작성 프로젝트를 요즘 너무 많이 본다"고 했죠.
이 지적은 뼈아픕니다. 테스트를 통과한다는 건 “테스트가 확인하는 것"만 보장할 뿐입니다. 회귀 테스트가 아무리 촘촘해도, 실제 프로덕션에서 터지는 문제의 상당수는 테스트 밖에 있으니까요. 특히 데이터베이스라면 더욱 그렇습니다.
진짜 어려운 건 테스트 통과가 아닙니다
한 베테랑의 댓글이 이 프로젝트의 진짜 관문을 짚었습니다. “대규모 Postgres를 프로덕션에서 굴리는 건 위험천만하다"는 겁니다.
생각해보면 당연합니다. 데이터베이스가 하는 일이 단순히 “쿼리를 받아서 정답을 돌려주는 것"이라면 세상 편하겠죠. 하지만 현실의 Postgres는 수십 년간 다져진 운영 노하우의 결정체입니다.
동시에 수천 개 연결이 들어와도 버티는 안정성. 서버가 갑자기 죽어도 데이터가 깨지지 않는 복구 능력. 수백 GB 테이블에서도 빠른 쿼리 플래너. 미묘한 락(lock) 처리와 트랜잭션 격리. 이런 것들은 회귀 테스트 한 판으로 증명되지 않습니다. 수년간 수많은 회사가 실전에서 두들겨 맞으며 다져온 신뢰죠.
Rust로 다시 쓴 Pgrust가 넘어야 할 산이 바로 이겁니다. 문법적으로 똑같이 동작하는 것과, 새벽 3시에 장애 없이 버티는 것은 완전히 다른 이야기입니다.
그래도 이 시도가 의미 있는 이유
의심스럽다고 해서 무가치한 건 아닙니다. 오히려 반대입니다.
Postgres의 심장부는 C로 짜여 있습니다. C는 강력하지만, 메모리 관리를 사람이 직접 해야 하는 언어죠. 여기서 나오는 버그가 데이터베이스에서는 곧바로 데이터 손상이나 보안 취약점으로 이어질 수 있습니다. Rust가 내세우는 메모리 안전은 바로 이 지점을 컴파일 단계에서 원천 차단하겠다는 약속입니다.
만약 Pgrust가 진짜로 프로덕션 수준까지 성숙한다면, 그건 단순한 이식 프로젝트를 넘어섭니다. “세상에서 가장 중요한 인프라 소프트웨어도 메모리 안전 언어로 다시 쓸 수 있다"는 하나의 증명이 되는 거죠. 브라우저 엔진과 운영체제 커널에서 시작된 Rust 재작성 물결이, 마침내 데이터를 지키는 최후의 보루까지 도달했다는 신호이기도 합니다.
정리하며
다만 솔직하게 말씀드리면, 이번 주제는 아직 커뮤니티 논의가 무르익지 않았습니다. 최근 한 달간 확인된 의미 있는 토론이 손에 꼽을 정도입니다. 해커뉴스에서 한 차례 크게 불붙었을 뿐, 실사용 후기나 벤치마크는 아직 부족합니다. 지금은 화제성이 앞서고 검증이 뒤따라오는 단계라고 보는 게 정확합니다.
그래서 결론은 이렇습니다. Pgrust는 흥미로운 도전이지만, “Postgres를 대체할 물건"으로 보기엔 너무 이릅니다. 진짜 시험은 회귀 테스트가 아니라, 누군가 이걸 실제 서비스에 올렸을 때 시작됩니다. 여러분이라면 회사의 핵심 데이터베이스를, 갓 태어난 Rust판 Postgres로 바꿀 용기가 나시나요?
댓글
댓글을 불러오는 중...