이 서평은 "그냥 Postgres를 쓰세요!" 책을 출판사 '제이펍' 에서 제공받아 작성한 글입니다.
내가 Postgres를 실무에서 사용한게... 아마 2017년일 것이다. 어느 한 대기업이 데이터베이스 오픈소스 전환한다고 사용한 게 바로 Postgres. 알 사람은 알 거다.
그러다가, 내가 AI를 밀겠다고 설득해서 전력 관련 기업에 입사를 하게 됐고, 이참에 중구난방이었던 개발 스택을 통일해야겠다고 결심하고 아키잡던 찰나...
한 개발자 뉴스레터에서 발견한 이 대단한 제목을 보라.
물론 사실 난 이거 전에도 처음부터 '그냥 Postgres를 쓸' 작정이었다. 그리고 이들의 자료는 내 주장을 뒷받침하는 근거가 됐다. 그게 2024년.
그리고 지금 2026년. 뭐 대부분이 중소규모 어플리케이션이다 보니 지금도 '그냥 Postgres'를 쓰고 있다.
그러다 나는 이게 책이 나온다길래 서평단 모집한다는 글을 우연히 발견하고, '나 실무에 "그냥" 쓰고 있는데 달라' 라는 시건방진 말투로 신청했더니 진짜 서평단에 당첨.
그래서 내 경험과 솔직한 느낌으로 이 책을 서평을 시작하도록 하겠다.
제목부터가 크으 뽕찬다. 개인적으론 말이지.
구성
서평의 반은 목차부터 시작한다. 목차는 대략적으로:
- Postgres를 만나기 (왜? 시작하기 등)
- 표준 RDBMS 기능 (데이터베이스 만들고 기본적인 조작법)
- 현대적인 SQL (쿼리 기술)
- 인덱스 (DB 관리자가 눈에 불을 키는 영역 중 하나)
- Postgres와 JSON
- Postgres 전문 검색
- Postgres 확장
- AI를 위한 Postgres
- 시계열 데이터를 위한 Postgres
- 공간 데이터를 위한 Postgres
- Postgres 로 메시지 큐 구축
- 최적화 팁
- Postgres를 쓰지 말아야 할 때
여기서 내가 인상깊었던 게 인덱스 부분에 꽤 많은 분량을 할애했다는 점이다. 하지만 이건 당연하다. DB를 사용하는 어플리케이션 개발자와 DB 관리자에게 인덱스는 매우 중요하다. 데이터가 어떻게 분포되는지, 데이터가 어떤 형태를 이루게 될 지, 그리고 데이터를 검색할 때 어떤 패턴을 많이 사용하게 될 지. 내 선배 개발자는 이 인덱스 설계가 바로 중급과 고급을 나누는 중요한 기준 중 하나라 가르쳤다. 물론 내가 개발 인생 대부분이 SI이긴 하지만, SI 뿐만 아니라도 대부분의 개발자들은 데이터를 다루게 되어 있으며, 이 데이터를 어떻게 정리하고, 다듬고, 표시할 때 이 '색인' 개념은 빠질래야 빠질 수가 없다. 이를 어떻게 정리하느냐에 따라 어플리케이션의 성능이 천지차이.
이 책을 추천하는 이유
거두절미하고, 난 이 책을 그냥 추천하고 싶다. 만약 어플리케이션을 설계하는 데 뭐가 필요한것까진 알겠어. 근데 그다음부터 해매기 시작한다면, 그냥 즉흥적으로 이 책을 구입하여 정독을 추천한다. 물론 인터넷에서도 대략적으로 Postgres 가 어떤 역할을 해줄 수 있는지는 개발자 뉴스레터나 해커뉴스 등을 뒤지면 다 나오는건 사실이다. 하지만, 이 책 하나로 나는 충분히 데이터를 준비하여 어플리케이션을 만들 수 있다고 본다. 기본적인 사용법, 그리고 중요한 부분, 게다가 이 RDBMS 가 어떤 역할을 대신해서 구축해줄 수 있고, 어떻게 쓰는지까지 세세히 알려준다. 인터넷 정보는 파편하가 되어 있기에, 이를 하나의 책으로 정리한 것에 대해 매우 기쁘게 생각하고.
기본적인 RDBMS 의 구성요소는 빠짐없이 설명되어 있다.
구체화된 뷰의 경우 데이터를 임시 저장하는 뷰다 보니 새로고침이 있지 사용법은 뷰와 크게 다를 거 없어서 이정도 설명으로도 나는 충분하다고 본다. 게다가 구체화된 뷰는 많이 써봐야 좋을 게 없는 게, 데이터를 저장하는 '뷰' 이기 때문에 이걸 오남용하면 무지성으로 창문 열어놓은 여름 사무실에 놓아 자리 잡아먹는 '제습기'에 불과하기 때문.
JSON에 대해서도 꽤 자세히 다루고 있기에, JSON 데이터를 관리해야 한다면, 이렇게 정리가 잘돼 있는 책이 있을까 싶다.

프로토타입으로 어플리케이션을 개발한다고? 당장 사라. 빠른 데이터베이스 구축과 데이터 연동하는데 필요한 부분은 여기에 있다. 특히 AI 연동한다면 말할 것 없다.
벡터를 관리하는 방법에 대한 기본적인 설명이 생각보다 탄탄하게 구성되어 있다.
다른 벡터 DB 찾을 시간에 이거 하나로 된다는 점을 알고 가면 더 좋다.
게다가, Postgres 가 전용 벡터 DB와 비교해도 오라클급 대규모가 아닌 이상 꿇리지 않는 성능을 여럿 입증했기 때문에, 벡터 DB 선택에 확신이 없다면 주저없이 난 Postgres를 선택할 것이다. 스케일이 수억대급으로 커진다면 그땐 별도 분리를 생각하는 건 데이터베이스 운용 측면에선 당연한 것 아닌가?
정리하자면, 개인적으로는 만약 폐쇄망 상황(네 폰 아니면 인터넷이 완전 차단된 환경)에서 어플리케이션을 개발해야 할 때, 기초적인 RDBMS 지식을 가지고 있다면, 이 책 하나 들고 가도 충분히 개발 가능하다고 본다.
이 책을 추천하지 않는 이유?
뭐? 막상 샀는데 Postgres 쓰는게 맞는지 의심된다고?
맞다. 제아무리 많은 것을 대체할 수 있다 해도 Postgres는 만능 RDBMS가 아니다. 이 또한 책에도 한계가 설명되어 있다.

당연하겠지만, DBA에게 이 책을 추천하지 않는다. 어플리케이션 개발 관점에 집중되어 있는 만큼, 샤딩, 복제, 미러링 등의 DBA 고급 관리 기능은 다루지 않는다.
잘 운용하고 있는 유지보수 개발자에게 새로 개발할 어플리케이션 과제가 주어지지 않았다면 이 책은 그냥 일종의 엔터테인먼트 성으로 읽는다면 추천하고, 진지하게는 추천하지 않겠다.
이 책의 아쉬운 점
난 이 책을 보고 실무 투입에 충분하다고 생각이 들 만큼 추천하는 책이지만, '아 이게 들어가면 더 좋았을텐데' 하는 옆구리 시린 아쉬운 점이 분명히 존재한다. 원서에서 이게 들어갔으면 좋았을 텐데와, 역서에서 '이게 있으면 한국인에게 이해가 빠를 텐데' 이 두 갈래로 나뉜다.
원본의 아쉬운 점
가장 아쉬운 점이 바로 '데이터 타입 소개의 부재'를 꼽고 싶다. 물론 이 책의 대상 독자는 기본적인 RDBMS를 다뤘고 어플리케이션을 좀 개발해 온 개발자가 그 대상일 것이다. 하지만 MySQL 등의 타 RDBMS만 써오고 Postgres 를 한 번도 쓰지 않았다면? 물론 이들이 아마 저자 입장에서 독자 대상에서 놓쳤을 수도 있었을 듯 하다. 그래도 기초적이고 많이 사용하는 데이터 타입 몇 가지만 소개했어도 괜찮지 않을까 했다. 물론 serial 같은 좀 특수한 데이터 타입은 짧막하게 소개되어 있지만, varchar과 integer, 그리고 varchar 는 postgres 에서 character varying 의 별칭 등 Postgres 특색의 데이터 타입만이라도 말미이 짧막하게나마 소개했어도 좋았을 거란 아쉬움이 남는다. 이 짧막한 소개만 해도 어플리케이션 개발에 도전할 개발자 대상으로 더욱 폭을 늘릴 수 있었을 텐데. 왜냐면 데이터 타입 선택 또한 RDBMS 에서 중요하고, 게다가 어플리케이션에서 데이터를 다룰 때 가장 기초적인 소재이기 때문에.
역본의 아쉬운 점
방금 이미 얘기했지만, 역본의 시린 옆구리 사례 하나 꼽자면, 먼저, 대체적으로 한국인 독자에 맞게 보통 역자가 한국 특유의 케이스를 짧막하게 소개하곤 한다. 이 책도 당연히 있기는 있지만... 이 책에서 중요한 위치인 벡터에서 한국인을 위한 각주 하나 빠진 게 너무나 아쉬웠다. mxbal-embed-large 임베딩 모델은 '영어'만 지원한다. 역자가 한국어 임베딩은 bge-m3 쓰면 된다 각주만 추가해 줬으면 좋았을 텐데 말이다.

다행히도 전문 검색은 한국어가 내장되어 있지 않은 만큼, 프로젝트 소개를 각주로 짧막하게 소개하긴 했다.
총평
사실 아쉬운 점은 역본의 어쩔 수 없는 운명이긴 하다. 다른 역본도 내 지식 상에서 '아 이건 한국인일 경우 이러이러한데' 가끔 느끼곤 한다. 하지만 옆구리 잠깐 시릴 뿐, 올 겨울 따뜻하게 보낼 수 있을 것 같은 책으로 추천한다. 내 경력 이제 15년 왔다갔다, 그리고 최근 회사 2년차에 Postgres로 대부분의 어플리케이션을 운용하고 있는 나에게, 내가 봐도 정말 이거 한 권이면 실무 투입 쌉가능 수준의 이런 실용서를 서평하게 되어 매우 기쁘게 생각한다.
특히 지금같이 AI가 보조해 주는 시대(다해준다는 건 아직 너희들에겐 착각임, 만약 다해준다면 넌 개발자도 못하고 네 아이디어는 자본가들이 이미 다 적용했을 것)에 어플리케이션 개발에 여전히 데이터 관리는 매우 중요한데, 뭐 써야 할지 모르겠다. 이럴땐 이거쓰고 저럴땐 저거쓰고 불분명한 스케일에 이것저것 설치하면서 삽질하는 게 옳은 일일까? 이런 생각이 드눈 순간, 당장 서점에서 이 책을 찾길 추천하고 싶다.
여담
구글에 영문으로 Just use postgres 검색하면... 생각보다 꽤 다양한 자료가 있다. 다양한 저자가 Postgres만 쓰라는 여럿 이유가 있다. DBA 관점, 개발자 관점 등등 말야... 그리고 책은 이 책이 나온다. 내가 지금 서평쓴 이 책 말야.
이 책의 저자인 데니스 마그다, 썬 마이크로시스템즈에 입사해 오라클에 있고 지금 자바 개발팀... 아... 이거 뭐 더 의심할 게 없네. 그래서 그런가 모르겠지만, 여럿 자료를 보면 자바 커뮤니티 입장에서 꽤 호응을 얻고 있다. 뭐가? Postgres 그냥 쓰라고.
내가 자바에 거의 10여년 몸담궈봐서 와닿는데, 자바 많이 개발해본 개발자라면 알겠지만, 비즈니스 생태계가, 그냥 자바 어플리에키션 하나에 집중할 수 있을 정도로 엄청난 응집력을 자랑한다. 마이크로서비스 아키텍쳐? 자바에겐 이 개념이 쉽지 않다. 자바스크립트 파이썬에게나 어울리는 아키텍쳐를 자바로 억지로? 대기업 스케일 아니면 난 계속 반대해 왔지. 커뮤니티도 썩 그런 아키텍쳐를 선호한 건 아니었고.
그래서 그런가 하나의 앱에 팔방미인? 오 이건 대박이야 가즈아 삘이 느껴지는게 내 자바 개발 인생에서 나온 느낌인 듯 하다.
표지 그림은 1853년 출간된 나폴리와 주변 지역의 풍습을 묘사한 삽화(Usi e costumi di Napoli e contorni descritti e dipinti) 라는 삽화 책의 생선 장수(Pescivendolo) 삽화를 따온 거라 한다.
서평 끗.




Top comments (0)