PostgreSQL 18 RPM의 새로운 기능과 EDB의 기여
작성자: Devrim Gündüz | 2025년 9월 24일
제가 PostgreSQL RPM을 만들기 시작한 지 23년이 넘었습니다. 처음에는 단순히 제 Red Hat Linux 6.2 박스와 Fedora Core에 PostgreSQL을 설치하기 위한 취미 프로젝트였습니다. 당시에는 제대로 된 저장소도 없었습니다. 2005년쯤 캐나다에서 최초의 yum.postgresql.org 인프라(당시는 다른 도메인명)를 구축했고, 이후에는 정식 소스 코드 저장소를 만들었으며, 마침내 PostgreSQL.org 인프라에 통합되었습니다: https://yum.postgresql.org
2011년 EDB에 합류한 후, EDB는 제가 커뮤니티 프로젝트에 전념할 수 있도록 지원해 주었고, 그중 가장 주목할 만한 것이 PGDG RPM 저장소입니다. 또한 EDB는 패키징 QA에도 기여하고 있습니다. 여러 EDB 직원들이 정기적으로 테스트 결과에 대해 피드백을 주고, 저희는 즉시 문제를 해결합니다.
이는 단순한 패키징 작업에 그치지 않습니다. RPM 생태계의 발전을 따라가며 필요한 변경 사항을 적용하고, 각 릴리스 전 확장 기능들을 테스트하며, 호환성 문제가 발견되면 모든 소프트웨어에 대해 이슈를 생성합니다.
커뮤니티 PostgreSQL YUM 저장소에는 단순히 PostgreSQL 패키지뿐만 아니라, 특정 PostgreSQL 버전에 의존하는 확장(PostGIS 등), 여러 버전에서 사용할 수 있는 PostgreSQL 관련 패키지, 그리고 이를 지원하는 라이브러리(Proj, GEOS 등)도 포함됩니다.
RPM 저장소의 네 가지 주요 세트
- Non-common repository: 특정 PostgreSQL 릴리스에 의존하는 PostgreSQL RPM 및 확장/유틸리티
- Common repository: Non-common 저장소를 지원하는 패키지(SFCGAL, GEOS 등) 또는 PostgreSQL 버전에 독립적인 패키지(Patroni, pg_activity, PoWA, pgPool 등)
- Non-free repository: 소스는 공개되어 있지만 비자유 소프트웨어에 의존하거나 OSI 호환 라이선스가 아닌 패키지
- Extras repository: Patroni의 HA 환경 지원용 비-PostgreSQL 패키지, 또는 일반적으로 배포하지 않는 PostgreSQL 패키지(Go로 작성된 경우 등)
현재 총 346개의 소프트웨어 패키지를 유지 관리하고 있으며, 앞으로도 더 추가될 예정입니다!
또한 이 저장소는 다양한 리눅스 배포판을 베타 단계부터 지원하여, 업스트림이 GA(General Availability)로 전환되는 날 바로 패키지를 릴리스할 수 있도록 합니다. 최근에는 RHEL 10 GA 당일에 지원을 제공했으며, Fedora 릴리스에도 같은 방식으로 대응합니다.
PostgreSQL 18 RPM의 새로운 기능
이제 PostgreSQL 18이 출시됩니다! 여기서는 PostgreSQL 18 RPM 패키징의 새로운 기능과 개선 사항을 소개합니다.
OAuth2
PostgreSQL 18의 가장 중요한 기능 중 하나는 OAuth2 인증입니다.
관련 블로그 글:
- PostgreSQL 18의 OAuth2 인증 미리보기 (1) – 작동 방식 탐구
- PostgreSQL 18의 OAuth2 인증 미리보기 (2) – Rust로 커스텀 OAuth2 검증기 만들기
- PostgreSQL 18의 OAuth2 인증 미리보기 (3) — PostgreSQL 클라이언트 라이브러리에 OAUTHBEARER 지원 추가
OAuth2 지원을 위해 RPM은 curl 지원을 포함해 빌드됩니다. 하지만 curl 특성상 보안 이슈가 우려될 수 있으므로, Debian 패키징 팀과 협력하여 OAuth2 공유 라이브러리를 별도 패키지(postgresql18-libs-oauth) 로 분리했습니다. 일반 postgresql18-libs
패키지는 기존 릴리스와 동일하게 동작합니다.
io_uring
PostgreSQL 18은 Linux 서버에서 io_uring을 활용한 비동기 I/O를 지원하여 성능 향상을 제공합니다.
- RHEL 8: 커널이 너무 오래되어 지원하지 않음
- RHEL 9.3:
kernel-5.14.0-362.8.1.el9_3
에서 tech preview 제공 - RHEL 10 (커널 6.12): 정식 활용 가능
- SLES 15.7 (커널 6.4.0): io_uring 지원 포함
NUMA 인식 (NUMA awareness)
PostgreSQL 18은 NUMA 인식 기능을 포함하며, RPM이 빌드되는 모든 OS에서 완전히 적용됩니다.
ECPG
ECPG(임베디드 SQL 전처리기)는 24년 된 기능으로, C/C++ 코드 안에서 SQL 문을 작성할 수 있게 해줍니다. PostgreSQL 18에서는 ECPG 라이브러리를 별도 서브패키지(postgresql18-ecpg-libs) 로 분리했습니다.
또한 개발용 파일은 postgresql18-ecpg-devel
패키지로 제공되며, 이전에는 -devel 서브패키지에 포함되어 있었습니다.
더 많은 systemd 통합
Fedora 43 릴리스의 변경 사항을 반영하여 이번 릴리스에서는 systemd-sysusers와의 통합이 추가되었습니다.
결론
이번 PostgreSQL 18 RPM 릴리스는 개인적으로도 오랜만에 가장 흥미로운 릴리스라고 생각합니다. 🎉