TECH 으로 돌아가기
TECH HACKER NEWS 1주 전 6분 읽기 58 READS

PostgreSQL을 마법처럼 샤딩해준다는 PgDog, 투자까지 받았다는데 정체가 뭘까

PostgreSQL을 마법처럼 샤딩해준다는 PgDog, 투자까지 받았다는데 정체가 뭘까

무슨 일이 있었나요?

PostgreSQL(줄여서 포스트그레스, 오픈소스 관계형 데이터베이스예요)을 쓰다 보면 언젠가 마주치는 벽이 있어요. 바로 "데이터가 너무 많아져서 서버 한 대로는 감당이 안 된다"는 순간이죠. 이때 흔히 쓰는 방법이 샤딩(sharding)인데, 이번에 PgDog라는 프로젝트가 투자를 유치하면서 "애플리케이션 코드를 거의 안 바꾸고도 포스트그레스를 샤딩해주겠다"는 목표를 내걸었어요.

샤딩이 뭐냐면, 쉽게 말해 큰 데이터를 여러 데이터베이스 서버에 나눠 담는 것이에요. 예를 들어 회원 천만 명의 데이터를 한 대에 다 넣는 대신, 회원 ID를 기준으로 나눠서 1~500만 번은 A 서버, 500만~1000만 번은 B 서버에 저장하는 식이죠. 식당에 손님이 너무 많으면 지점을 늘리는 것과 비슷해요. 문제는 이렇게 나누면 "이 손님은 어느 지점에 있지?"를 매번 따져야 해서 애플리케이션 코드가 엄청 복잡해진다는 거예요.

PgDog는 뭐가 다른가요?

PgDog의 핵심 아이디어는 애플리케이션과 데이터베이스 사이에 끼어드는 '프록시(proxy)'라는 거예요. 프록시는 중간에서 요청을 받아 적절한 곳으로 넘겨주는 중개자라고 보면 돼요. 우리 앱은 그냥 평소처럼 포스트그레스 하나에 연결한다고 생각하고 쿼리를 날리는데, 실제로는 PgDog가 그 쿼리를 가로채서 "이 데이터는 3번 샤드에 있으니 거기로 보내자"고 알아서 라우팅해주는 거죠.

기술적으로 흥미로운 점들을 짚어볼게요.

프로토콜 수준에서 동작하기 때문에, 앱 입장에서는 "그냥 포스트그레스에 연결했을 뿐"인데 뒤에서는 여러 대로 분산되는 게 핵심 매력이에요.

업계 맥락

사실 "포스트그레스 샤딩"은 오래된 숙제예요. 비슷한 시도로는 Citus(여러 노드로 포스트그레스를 확장해주는 확장 기능, 마이크로소프트가 인수했죠), Vitess(원래 MySQL용으로 유튜브가 만든 샤딩 솔루션), 그리고 아예 분산을 내장한 CockroachDB, YugabyteDB 같은 NewSQL 데이터베이스들이 있어요.

PgDog의 차별점은 "기존 포스트그레스를 그대로 두고, 앞단에 가벼운 프록시만 얹는다"는 접근이에요. CockroachDB처럼 데이터베이스 자체를 갈아엎는 게 아니라서 이미 포스트그레스로 운영 중인 팀이 점진적으로 도입하기 좋다는 그림이죠. 투자를 받았다는 건 이 프로젝트가 단발성 토이가 아니라 장기적으로 유지·발전될 가능성이 커졌다는 신호이기도 해요.

한국 개발자에게 주는 시사점

스타트업이 빠르게 크다 보면 "DB 한 대로 버티다가 어느 날 갑자기 한계"를 맞는 경우가 많아요. 그때 코드를 전부 샤딩 친화적으로 갈아엎는 건 정말 큰 공사거든요. PgDog 같은 프록시형 솔루션은 그 시점을 좀 더 부드럽게 넘기게 도와줄 수 있어요.

다만 아직 성숙도와 운영 사례를 잘 살펴봐야 해요. 중간에 프록시가 끼면 그게 새로운 단일 장애점(여기 죽으면 전체가 멈추는 지점)이 될 수 있고, 트랜잭션이나 조인이 여러 샤드에 걸칠 때의 동작도 꼼꼼히 확인해야 하거든요. 당장 프로덕션에 넣기보다는, 샤딩이라는 개념과 프록시 아키텍처를 학습하는 좋은 교재로 먼저 접근하는 걸 추천해요. 커넥션 풀링, 쿼리 라우팅, 스캐터-개더 같은 개념은 어디 가도 쓰이니까요.

마무리

PgDog는 "포스트그레스를 버리지 않고도 수평 확장하고 싶다"는 오래된 바람에 대한 또 하나의 답이에요. 여러분은 DB 확장이 필요할 때 프록시로 샤딩하는 방식과, 아예 분산 DB로 갈아타는 방식 중 어느 쪽이 더 끌리나요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://pgdog.dev/blog/our-funding-announcement
SHARE
처리 중...