PostgreSQL(포스트그레스큐엘) 개발자들이 오랫동안 겪어온 불편함 중 하나는 다양한 확장(extension)을 설치하고 관리하는 과정의 복잡성이었습니다. pgvector(벡터 데이터베이스), PostGIS(공간 정보), pg_cron(작업 스케줄러) 등 유용한 확장들을 사용하려면 수동으로 의존성을 설치하고 소스 코드를 컴파일하거나, 특정 확장이 미리 번들된 서드파티 이미지를 찾아야 하는 번거로움이 있었습니다. 이러한 문제를 해결하기 위해 'pglayers' 프로젝트가 등장했습니다.
pglayers는 공식 PostgreSQL 도커(Docker) 이미지 위에 필요한 확장을 손쉽게 추가할 수 있도록 돕는 혁신적인 도구입니다. 각 확장을 독립적인 도커 이미지 레이어로 미리 빌드하여 제공하며, 사용자는 `COPY --from` 명령어를 통해 원하는 확장 레이어를 공식 PostgreSQL 이미지에 단순히 '쌓아 올리는' 방식으로 자신만의 커스텀 이미지를 만들 수 있습니다. 컴파일 과정 없이 미리 빌드된 바이너리를 활용하므로, 개발자는 복잡한 빌드 환경 설정이나 의존성 관리에 시간을 낭비할 필요 없이 몇 줄의 코드로 원하는 PostgreSQL 환경을 구축할 수 있습니다. 예를 들어, pgvector와 pg_cron을 추가하려면 `FROM postgres:17` 아래에 두 줄의 `COPY --from` 명령만 추가하면 됩니다.
이러한 접근 방식은 개발 워크플로우를 크게 간소화하고 효율성을 높여줍니다. 개발팀은 이제 특정 확장이 필요한 프로젝트마다 맞춤형 PostgreSQL 이미지를 빠르고 일관되게 생성할 수 있으며, 이는 개발 환경과 프로덕션 환경 간의 불일치를 줄이는 데도 기여합니다. 또한, pglayers는 PostgreSQL 17, 18, 19 등 다양한 버전을 지원하며, 'full' 프로필이나 'Azure Database for PostgreSQL' 호환 'azure' 프로필처럼 여러 확장이 미리 구성된 즉시 사용 가능한 이미지도 제공하여 사용자의 편의성을 극대화합니다. 이는 PostgreSQL 생태계에서 확장 관리의 새로운 표준을 제시하며, 개발자들이 핵심 비즈니스 로직에 더 집중할 수 있도록 돕는 중요한 진전으로 평가됩니다.