[DBMS] PostgreSQL…?
요즘 데이터베이스 시장은…
최근 데이터베이스 시장에서는 오픈소스 DBMS가 빠르게 부상하고 있다.
이전에는 Oracle, Microsoft SQL Server, IBM DB2 같은 상용 DBMS가 시장을 주름잡았는데, 최근 10년 사이에 기술력의 발전으로 오픈소스 DB에 대한 인식이 완전히 달라졌다.
심지어 보안에 민감한 공공, 금융 등의 영역에서조차 기술 부채와 유연성의 장점으로 인해 오픈소스 DBMS를 적극 검토하기 시작했으니, 기존 상용 DB가 독점하던 시장 구조가 얼마나 많이 바뀌는지 알 수 있다.
오픈소스 DBMS, 도대체 뭐가 그렇게 좋은거지?
오픈소스 DBMS란 그냥 소스 코드가 공개되어 있어 누구나 자유롭게 사용하고, 고치고, 배포할 수 있는 데이터베이스 관리 시스템이다.
나는 처음에 굉장히 의심스러운 방식이 아닌가..? 싶었는데 여럿 장점을 찾아보면서 유행하는데는 다 이유가 있구나 이해를 하게 되었다.
- 투명성과 신뢰성 : 소스 코드가 공개되어 있어 보안 취약점이나 버그를 전 세계 개발자들이 함께 검토하고 해결할 수 있다.
과거에는 오픈소스가 보안적으로 취약할 것이라는 우려가 있었으나, 실제로는 그 반대의 현상이 나타났다.
광범위한 검토와 빠른 패치 사이클 덕분에 잠재적 문제가 더 신속하게 발견되고 수정된다.
최근 Next.js와 같은 인기 오픈소스 프로젝트에서의 보안 이슈도 커뮤니티의 집단 지성을 통해 빠르게 대응되었으며, 이는 오픈소스 생태계의 자정 능력과 복원력을 증명한다. - 비용 절감 : 라이선스 비용 없이 쓸 수 있으니 초기 도입 비용이 확 줄어든다. G선생에세 물어보니 대략 Oracle을 사용하는 것 보다 약 94%정도 절감 할 수 있다고 한다.
- 맞춤형 구성 : 기업이 진짜 필요한 기능만 골라서 쓸 수 있으니, 적정 엔지니어링을 유지 할 수 있다.
특히 마지막 요소는 요즘 기업 환경에서 엄청 중요하다.
상용 DBMS는 ‘올인원’ 패키지를 제공하지만, 대부분 기업은 그 중 일부만 실제로 쓴다.
근데 오픈소스 DBMS는 핵심 기능만 기본으로 제공하고, 더 필요한 거 있으면 확장 모듈로 끼워 넣으면 되니까 ‘비용 대비 가치’가 훨씬 높다.
PostgreSQL은…
1986년 버클리 대학의 POSTGRES 프로젝트에서 시작된, 30년 넘은 역사를 가진 역사와 전통을 가진.. 한마디로 정의하자면 근본이 있는! 오픈소스 DBMS다.
그 긴 시간 동안 ‘핵심에 충실하면서도 확장성은 무한하게’ 라는 철학을 꾸준히 지키며 오늘날을 위해 성장해왔다.
이러한 철학은 위에서 말한 오픈소스의 장점들과 맞물려 현 시대의 가장 사용성이 높은 DBMS가 되는데 크게 일조를 하였다.
DBMS와 관련된 자료를 찾다 보면 기업은 데이터베이스 고를 때 깊은 딜레마에 빠진다고 한다.
상용 DBMS는 기능이 완벽하게 다 갖춰져 있지만, 그 비용은 가히 돈먹는 하마라고 불릴 수 있고,
일반적인 오픈소스 DBMS는 비용은 적게 들지만 엔터프라이즈급 기능이 부족한 경우가 많다.
하지만 PostgreSQL은 이 사이의 간극을 완벽하게 메꿔준다.
오래된 역사에 알맞게 기본적인 데이터베이스 기능인 ACID 준수, 트랜잭션 관리, 복잡한 쿼리 처리 등등을 철저하게 갖추고 있다.
당연히 직접적으로 비교 해봤을때 100% 기능을 구현한다라고 할 순 없다.. 하지만 그 100%의 기능을 전부 다 사용하는 기업이 얼마나 될까?
PostgreSQL은 자칫 불필요한 기능을 채워넣기 보다는 ‘레고 블록’처럼 필요한 기능을 자유롭게 추가할 수 있는 확장성에 크게 집중하고 있다.
예를 하나 들어보자면, 기존 상용 DBMS들은 대부분 정형화된 데이터(숫자, 문자열, 날짜 등)만 효율적으로 처리하도록 설계되었다.
만약 새로운 형태의 데이터를 다루려면 비싼 추가 모듈을 구매하거나 복잡한 우회 방법을 사용해야 했다.
하지만 PostgreSQL은 다르다.
PostgreSQL은 기본적인 정형 데이터 뿐만 아니라, JSON, JSONB(더 빠른 JSON), XML과 같은 비정형 데이터와 배열, 범위 타입 등 다양한 데이터 타입을 지원한다.
여기에 필요에 따라 확장 모듈을 붙이면 특화된 기능까지 활용할 수 있다.
금융 회사처럼 시계열 데이터(시간에 따라 변화하는 데이터)를 다루고 싶다면 TimescaleDB를 추가하면 되며, 지도 앱처럼 위치 정보를 다뤄야 한다면 PostGIS를 붙이면 된다. 데이터가 너무 많아 서버 한 대로 감당이 안 되면 Citus로 여러 서버에 분산 처리할 수도 있다.
빅데이터 분석 기사를 준비하고 있는 요즘.. 다양한 데이터 타입을 지원한다는게 정말 매력적인 기술 스택이 아닌가 생각이 들면서 내가 기업이라고 생각해도 이런 확장팩들이 무료에 가깝다니 선택을 안 할 이유가 있을까..!
정리해 보자면,
첫째, 비즈니스에 정확히 맞는 구성을 골라 쓸 수 있으니까 복잡성과 오버헤드를 확 줄일 수 있다.
둘째, 회사가 성장하고 요구사항이 바뀌면 새로운 기능을 그냥 추가하면 된다. 미래를 위한 확장 경로가 완벽하게 열려있는 셈이다.
많은 기업들이 PostgreSQL을 선택하는 이유가 이런 ‘현재 필요한 것만 쓰고, 나중에 필요한 건 나중에 추가하면 되는’ 유연성 때문이다.
단점은 없을까..?
물론 PostgreSQL도 장점만 있진 않다. 강력한 기능만큼 운영과 관리가 까다롭다는 문제가 있다.
여러 설정과 확장 기능을 직접 이해하고 적용해야 하고, 문제가 생겼을 때 대처할 체계가 없으면 서비스 운영이 힘들어질 수 있다.
단순하게만 생각해봐도 오픈소스는 상용 서비스랑 다르게 책임자도 없고 관리자도 없다.
그렇기 때문에 데이터 암호화, 백업, 복구, 모니터링 같은 건 DB 엔진만으로는 해결이 불가능이고 , 별도 솔루션이나 클라우드 서비스를 도입해야 할 때가 있다고 한다.
마무리…
작년 말 Kotlin으로 앱 개발 프로젝트를 한 적이 있는데, Spring으로 서버 개발시간을 줄이기 위해 서버리스 서비스인 Supabase를 채택하게 되면서 연동 되어있는 PostgreSQL을 사용해본 적이 있다.
그때 당시에는 PostgreSQL의 PL/SQL도 정말 익숙하지않고, 우리가 알고있는 Oracle, MySQL보다 잡다한 기능이 많아서 이렇게 복잡한걸 도대체 어떻게 써..! 하면서 욕을 엄청 했었는데,
지금 돌이켜보면 이런 ‘복잡함’이 실은 PostgreSQL의 유연성과 확장성을 위한 필수요소였다는 걸 깨닫게 되었다. ( 내가 SQL은 거기서 거기지 하며 공부를 안하고 쓴게 문제제였다..! )
아무튼.. 이제는 오픈소스 DBMS의 성장과 PostgreSQL의 부상은 그냥 일시적인 유행이 아니라 시장의 구조적 변화라고 봐야 한다. 오픈소스 DBMS의 성장은 앞으로도 계속될 것이며, 그 성장의 중심에 있는 PostgreSQL가 앞으로 써내려갈 역사를 눈여겨 보자.
Leave a comment