Skip to the content Skip to the Navigation

EDB 코리아 블로그

  • 공식웹사이트US Website
  • EDB 제품Products
  • 블로그KR Blog
  • 고객사례Customer Stories
  • EDB 문서US Docs
  • 국내 EDB 파트너KR Partners
  • 문의Contact
  • 02.501.5113Top Page

Technical Blog

  1. HOME
  2. 블로그
  3. Technical Blog
2025-12-17 / Last updated : 2025-12-17 Grace Technical Blog

PostgreSQL Buildfarm: pg_upgrade 버전 간 호환성 검증의 비밀

Andrew Dunstan December 12, 2025 PostgreSQL을 운영하는 실무자나 전문가들조차 자주 묻는 질문이 있습니다. “과연 커뮤니티는 9.5 버전에서 18 버전으로의 업그레이드 테스트를 어떻게 수행하는가?”입니다. 문서화가 잘 되어 있지 않은 이 부분에 대해, EDB의 Andrew Dunstan이 PostgreSQL Buildfarm의 내부 작동 원리를 직접 설명했습니다. 오픈소스 데이터베이스가 엔터프라이즈 환경에서도 견고한 안정성을 유지하는 비결, 바로 그 자동화된 검증 프로세스를 공개합니다. PostgreSQL Buildfarm의 핵심: TestUpgradeXversion PostgreSQL의 품질을 책임지는 Buildfarm 클라이언트 스크립트는 기본적으로 run_build.pl입니다. 이 스크립트는 단일 브랜치(예: REL_17_STABLE)를 빌드하고 테스트합니다. 보통 빌드가 끝나면 산출물(Artifacts)은 삭제됩니다. 하지만 TestUpgradeXversion이라는 특수 모듈을 활성화하면 이야기가 달라집니다. 이 모듈은 표준 설치 검사(installcheck)가 끝난 후 다음과 같은 정교한 작업을 수행합니다. 1. 빌드 산출물의 영구 저장 (Snapshot) 테스트가 끝난 현재 버전의 바이너리(bin, lib, […]

2025-12-17 / Last updated : 2025-12-17 Grace Technical Blog

PostgreSQL 컨트리뷰터 스토리: Bryan Green

PostgreSQL은 전 세계 수많은 기업의 데이터 인프라를 책임지는 만큼, 그 내부 구조는 복잡하고 정교합니다. EDB는 올해 초, 잠재력 있는 내부 엔지니어들이 PostgreSQL 개발에 직접 참여할 수 있도록 돕는 ‘Developer U’ 프로그램을 시작했습니다. 오늘은 EDB의 플랫폼 운영(Platform Operations) 팀에서 제품 배포 파이프라인을 담당하던 Bryan Green이, 이 프로그램을 통해 어떻게 시스템 레벨의 오픈소스 프로젝트에 기여하게 되었는지, 그 기술적인 여정을 소개합니다. 1. 어셈블리(Assembly)로 시작된 로우 레벨(Low-level)에 대한 열정 Bryan의 프로그래밍 여정은 12살 때부터 시작되었습니다. Atari 400을 접한 그는 곧바로 어셈블리 언어에 빠져들었고, 시스템이 가장 낮은 수준(Low-level)에서 어떻게 작동하는지 이해하는 데 매료되었습니다. 이후 대학에서 컴퓨터 공학을 전공하고 IBM 메인프레임 어셈블리 프로그래머로 커리어를 시작한 그는, Windows NT와 CICS 간의 미들웨어를 작성하거나 Windows 파일 시스템 커널 […]

2025-12-03 / Last updated : 2025-12-03 Grace Technical Blog

PostgreSQL, 개발자들과 함께 정상에 오르기까지의 놀라운 여정 (Part 3)

저자: Tom Kincaid (EDB Vice President) 날짜: 2025년 12월 1일 이 블로그는 매년 실시되는 스택 오버플로우(Stack Overflow) 개발자 설문조사에서 Postgres가 어떻게 개발자들이 가장 존경하고, 원하고, 실제로 사용하는 데이터베이스가 되었는지에 대한 제 견해를 담고 있습니다. ‘개발자와 함께 정상에 오른 Postgres의 여정’ 시리즈의 세 번째이자 마지막 글입니다. 이전 시리즈 요약: 이번 Part 3에서는 Postgres가 마침내 1위를 차지하게 된 결정적인 이유를 제시합니다. 요약: 데이터베이스의 왕좌를 차지하다 스택 오버플로우는 매년 전 세계 개발자 수만 명을 대상으로 가장 존경하고(Admired), 원하고(Desired), 사용하는(Used) 기술에 대해 묻습니다. 2017년부터 데이터베이스 항목이 추가되었는데, 올해 Postgres는 이 세 가지 분류 모두에서 1위를 차지했습니다. 개발자들이 가장 사랑하고, 배우고 싶어 하며, 실제로 가장 많이 쓰는 데이터베이스가 된 것입니다. 이를 시각적으로 보여드리기 위해 2017년부터의 […]

2025-12-03 / Last updated : 2025-12-03 Grace Technical Blog

PostgreSQL 컨트리뷰터 스토리: Vaibhav Dalvi

글쓴이: Floor Drees 날짜: 2025년 11월 24일 EDB는 올해 초 ‘Developer U’ 프로그램을 시작했습니다. PostgreSQL 개발 잠재력을 가진 동료들이 실제 PostgreSQL 커뮤니티 기여를 통해 성장하도록 돕기 위해서입니다. 저는 평소 사람들의 성장 스토리에 관심이 많습니다. 그래서 참가자들을 만나 그들의 동기와 꿈, 그리고 패치(Patch)에 대해 이야기를 나누었습니다. Vaibhav Dalvi는 Staff SDE(Staff Software Development Engineer)입니다. 2018년 11월 EDB에 입사하기 전까지 그는 데이터베이스 관련 전문 경험이 없었습니다. 업무 외적으로 그는 스포츠와 역사를 좋아합니다. 크리켓을 즐기거나, 마라타 제국의 요새를 보기 위해 웨스턴 가트(Western Ghats)로 트레킹을 떠나기도 합니다. [2025년 벵갈루루에서 열린 PGConf India에 참석한 Vaibhav Dalvi] 배경 및 경력 Vaibhav는 전자통신공학 학사 학위를 받았고 임베디드 시스템 대학원 과정을 수료했습니다. 그는 컴퓨터 과학의 기초 원리, C/C++ 언어, […]

2025-12-03 / Last updated : 2025-12-03 Grace Technical Blog

PostgreSQL 컨트리뷰터 스토리: Akshay Joshi

글쓴이: Floor Drees 날짜: 2025년 11월 24일 EDB는 올해 초, PostgreSQL 개발에 잠재력을 가진 동료들이 실제 컨트리뷰터(Contributor)로 성장할 수 있도록 돕는 Developer U 프로그램을 시작했습니다. 사람들의 성장 스토리를 좋아하는 저는, 참가자 몇 분을 만나 그들의 동기, 희망, 꿈, 그리고 패치(Patch)에 대해 이야기를 나누었습니다. 첫 번째 주인공은 Akshay Joshi입니다. 그는 PostgreSQL 및 EPAS를 위한 관리 도구인 pgAdmin 프로젝트를 담당하는 수석 엔지니어이자 엔지니어링 매니저입니다. 팀 전체를 관리하고, pgAdmin 4의 커뮤니티 릴리스를 감독하며, EDB의 pgAdmin 패키징을 책임지고 있습니다. 또한 WarehousePG Observability(관측 가능성) 프로젝트도 이끌고 있습니다. 인도 푸네(Pune)에 거주하는 Akshay는 영어, 힌디어, 마라티어뿐만 아니라 C, C++, 그리고 PostgreSQL 언어(?)까지 구사합니다! 배경 및 경력 Akshay는 컴퓨터 공학 학사와 컴퓨터 응용 석사 학위를 취득했습니다. 소프트웨어 업계에서 […]

2025-12-03 / Last updated : 2025-12-03 Grace Technical Blog

EDB Postgres로 시작하는 벡터 검색(Vector Search) 완벽 가이드

저자: Dr. Sala Muthukrishnan 날짜: 2025년 11월 24일 들어가며: 키워드를 넘어 의도를 읽다 고객이 지원 포털 검색창에 “로그인 안됨”이라고 입력합니다. 그 즉시 시스템은 “비밀번호 복구 가이드”라는 문서를 찾아냅니다. 두 문장 사이에 겹치는 단어가 하나도 없는데도 말이죠. 어떻게 가능했을까요? 바로 벡터 검색(Vector Search) 덕분입니다. 생성형 AI(GenAI) 시대에 검색 기술은 단순한 키워드 매칭을 넘어섰습니다. 오늘날의 사용자는 시스템이 단순히 글자(Literal words)가 아닌 의미(Meaning), 맥락(Context), 의도(Intent)를 이해하기를 기대합니다. 지식 기반(Knowledge Base)에서 정확한 답변을 찾든, 유사한 제품을 추천하든, 혹은 LLM(거대언어모델)을 위한 RAG(검색 증강 생성) 파이프라인을 구축하든, ‘의미적 검색’ 능력은 현대 AI 애플리케이션의 필수 요소가 되었습니다. 여기서 벡터 검색이 등장합니다. 전통적인 검색 엔진이 정확한 단어 일치나 구조화된 쿼리에 의존했다면, 벡터 검색은 다차원 공간에서 작동합니다. 문서, 이미지, […]

2025-11-04 / Last updated : 2025-11-04 Grace Technical Blog

pgcat을 이용한 Postgres 트랜잭션 풀링

Phil Eaton 2025년 10월 24일 Postgres는 연결되는 각 클라이언트에 ‘클라이언트 백엔드(client backend)‘라는 자체 프로세스를 할당합니다. 이 방식은 1) 리소스 경합(resource contention) 또는 2) 지연 시간(latency) 문제, 혹은 두 가지 모두 때문에 사용자는 보통 최대 클라이언트 연결 수를 수백 개 수준으로 제한합니다. 그리고 pgbouncer나 pgcat과 같은 커넥션 풀러(connection pooler)를 도입합니다. 이러한 풀러는 많은 클라이언트 연결을 단일 Postgres 클라이언트 백엔드에 투명하게 다중화(multiplexing)하여 더 많은 연결을 (더 낮은 지연 시간으로) 처리할 수 있습니다. 하지만 이 방식은 어떻게 작동하고 동작할까요? pgcat을 통해 살펴보겠습니다. Postgres 및 pgcat 빌드하기 pgcat과 Postgres를 위한 docker-compose.yml 파일을 찾아 의존성이나 설정에 대한 고민을 건너뛰고 싶었습니다. pgcat 리포지토리에 하나 있긴 했지만, (아마도 Docker가 아닌 Podman을 사용해서인지) 작동시키지 못했습니다. 다른 작동하는 docker-compose […]

2025-10-30 / Last updated : 2025-10-30 Grace Technical Blog

원활한 업데이트: macOS용 pgAdmin 4 데스크톱 앱 자동 업데이트

Anil Sahoo | 2025년 10월 23일 데이터베이스 도구를 최신 상태로 유지하는 것은 보안, 안정성, 그리고 최신 기능 접근을 위해 매우 중요합니다. 대표적인 오픈소스 PostgreSQL 관리 도구인 pgAdmin 4는 macOS용 데스크톱 앱에 편리한 자동 업데이트 기능을 제공합니다. 이 포스트에서는 자동 업데이트가 어떻게 작동하는지, 그리고 내부적으로 어떤 일이 일어나는지 살펴보겠습니다. 자동 업데이트가 중요한 이유 pgAdmin 4의 자동 업데이트 작동 방식 macOS용 pgAdmin 4 데스크톱 앱에는 새로운 릴리스를 주기적으로 확인하는 자동 업데이트 메커니즘이 포함되어 있습니다. 새 버전을 사용할 수 있게 되면 앱이 사용자에게 알리고, 최소한의 사용자 개입으로 업데이트를 다운로드하고 설치할 수 있습니다. 내부 작동 원리 (Under the Hood) 업데이트 로직은 데스크톱 런타임(desktop runtime)에 구현되어 있으며, pgAdmin 4 소스 코드의 runtime/ 디렉터리에서 찾을 수 […]

2025-10-17 / Last updated : 2025-10-17 Grace Technical Blog

Protobuf를 이용한 MCP 서버 구축 (4부) – 실제로 MCP 도구를 실행하면서 얻은 통찰력

Charlie Zhang 2025년 10월 11일 이 블로그 시리즈에서는 유용한 도구들로 가득 찬 MCP (Model Context Protocol) 서버를 구축하는 방법을 보여드렸습니다. 처음부터 시작하는 대신, 기존의 프로토콜 버퍼와 Google의 gRPC 트랜스코딩을 활용했습니다. 맞춤형 protoc 플러그인을 생성하여 MCP 서버를 자동으로 생성했으며, 이 통합된 접근 방식을 통해 gRPC 서비스, OpenAPI 사양, REST API 및 MCP 서버를 모두 동일한 소스에서 생성할 수 있었습니다. 블로그 시리즈 구성 이 블로그 시리즈는 4개의 기사로 구성되어 있습니다: 얻게 될 내용 자동 생성된 MCP 도구를 테스트하는 과정에서, 우리는 몇 가지 중요한 한계점을 발견했습니다. 이 글에서는 실제 AI 에이전트와 MCP 도구를 실행하면서 얻은 실용적인 통찰력을 공유하며 다음 내용을 다룹니다: 자동 생성된 MCP 도구의 주요 문제점 (Key Challenges) 문제 1: 너무 많은 […]

2025-10-17 / Last updated : 2025-11-04 Grace Technical Blog

Protobuf를 이용한 MCP 서버 구축 (3부) – Proto 주석으로 AI 상호작용 향상시키기

Charlie Zhang 2025년 9월 30일 이 블로그 시리즈에서는 유용한 도구들로 가득 찬 MCP (Model Context Protocol) 서버를 구축하는 방법을 보여드립니다. 처음부터 시작하는 대신, 기존의 프로토콜 버퍼와 Google의 gRPC 트랜스코딩을 활용할 것입니다. 맞춤형 protoc (프로토콜 버퍼 컴파일러) 플러그인을 생성하여 MCP 서버를 자동으로 생성할 수 있습니다. 이 통합된 접근 방식을 통해 gRPC 서비스, OpenAPI 사양, REST API 및 MCP 서버를 모두 동일한 소스에서 생성할 수 있습니다. 이 블로그 시리즈는 4개의 기사로 구성되어 있습니다: 구축할 내용 이 튜토리얼을 마치면 다음을 갖게 됩니다: 이 기사에 언급된 모든 코드는 GitHub 저장소 zhangcz828/proto-to-mcp-tutorial에서 찾을 수 있습니다. 전제 조건 시작하기 전에, 1부와 2부를 완료했으며 다음을 갖추고 있는지 확인하세요: 우리가 해결하는 문제 1부와 2부에서는 하나의 proto 파일이 gRPC […]

2025-10-17 / Last updated : 2025-10-17 Grace Technical Blog

Protobuf를 이용한 MCP 서버 구축 (2부) – Protoc 플러그인으로 MCP 서버 생성 자동화하기

Charlie Zhang 2025년 9월 21일 이 블로그 시리즈에서는 유용한 도구들로 가득 찬 MCP (Model Context Protocol) 서버를 구축하는 방법을 보여드립니다. 처음부터 시작하는 대신, 기존의 프로토콜 버퍼와 Google의 gRPC 트랜스코딩을 활용할 것입니다. 맞춤형 protoc (프로토콜 버퍼 컴파일러) 플러그인을 생성하여 MCP 서버를 자동으로 생성할 수 있습니다. 이 통합된 접근 방식을 통해 gRPC 서비스, OpenAPI 사양, REST API 및 MCP 서버를 모두 동일한 소스에서 생성할 수 있습니다. 이 블로그 시리즈는 4개의 기사로 구성되어 있습니다: 구축할 내용 이 튜토리얼을 마치면 다음을 갖게 됩니다: 이 기사에 언급된 모든 코드는 GitHub 저장소 **zhangcz828/proto-to-mcp-tutorial**에서 찾을 수 있습니다. 전제 조건 시작하기 전에, 1부를 완료했으며 다음을 갖추고 있는지 확인하세요: 프로토콜 버퍼 플러그인 생태계 이해하기 1부에서는 gRPC 트랜스코딩이 gRPC 및 […]

2025-10-17 / Last updated : 2025-10-17 Grace Technical Blog

Protobuf를 이용한 MCP 서버 구축 (1부) – Protobuf에서 REST API로

Charlie Zhang 2025년 9월 3일 이 블로그 시리즈에서는 유용한 도구들로 가득 찬 MCP (Model Context Protocol) 서버를 구축하는 방법을 보여드립니다. 처음부터 시작하는 대신, 기존의 프로토콜 버퍼와 Google의 gRPC 트랜스코딩을 활용할 것입니다. 맞춤형 protoc (프로토콜 버퍼 컴파일러) 플러그인을 생성하여 MCP 서버를 자동으로 생성할 수 있습니다. 이 통합된 접근 방식을 통해 gRPC 서비스, OpenAPI 사양, REST API 및 MCP 서버를 모두 동일한 소스에서 생성할 수 있습니다. 이 블로그 시리즈는 4개의 기사로 구성되어 있습니다: 구축할 내용 이 블로그를 마치면 다음을 갖게 됩니다: 이 기사에 언급된 모든 코드는 GitHub 저장소 zhangcz828/proto-to-mcp-tutorial에서 찾을 수 있습니다. 전제 조건 시작하기 전에 다음을 갖추고 있는지 확인하세요: 우리가 해결하는 문제 우리의 아키텍처는 gRPC를 내부 서비스에 사용하고, REST API를 외부 […]

2025-09-29 / Last updated : 2025-09-29 Grace Technical Blog

OAuth 개발 뒷이야기

작성자: Jacob Champion | 2025년 9월 25일 PostgreSQL 18은 새로운 OAuth 2.0 지원 프레임워크를 탑재했습니다. OAuth는 인터넷에서 오랫동안 널리 사용되어 온 오픈 인증 시스템입니다. 저는 2021년에 이 기능에 대한 첫 번째 개념 증명(proof-of-concept)을 게시했는데, 이제 이렇게 세상에 공개되니 설레면서도 긴장됩니다. EDB의 Guang Yi Xu가 이미 이 기능에 대해 훌륭한 기술 글들을 작성했기 때문에, 여기서는 반복하지 않겠습니다. 대신, 이 코드를 개발한 동기와 과정에 대해 말씀드리고자 합니다. 왜 OAuth인가? 그리고 왜 지금인가? Postgres의 기본 인증 방식인 SCRAM은 암호학적으로 매우 탄탄하며, 계속 개선이 이뤄지고 있고, 앞으로도 소수의 사용자나 머신 간 통신에는 훌륭한 선택지가 될 것입니다. 하지만 수백~수천 명의 사람을 관리해야 하는 대규모 시스템에서는 개별 (사용자, 클러스터) 쌍마다 비밀번호를 관리해야 하므로 확장성이 떨어집니다. 이럴 […]

2025-09-29 / Last updated : 2025-09-29 Grace Technical Blog

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 생태계의 발전을 따라가며 필요한 변경 사항을 적용하고, 각 릴리스 […]

2025-09-29 / Last updated : 2025-09-29 Grace Technical Blog

증분 백업 미세 조정하기

작성자: Robert M. Haas | 2025년 9월 18일 PostgreSQL 17에서 도입된 증분 백업은 많은 기대를 받았지만, 실제 활용에서는 관리와 스테이징 측면에서 몇 가지 문제를 드러냈습니다. PostgreSQL 18에서는 이를 개선하기 위한 중요한 업데이트가 추가되었습니다. PostgreSQL 증분 백업 관리 문제 pg_basebackup은 백업을 생성할 수 있지만, 보존 정책이나 저장 위치 관리를 제공하지는 않습니다.따라서 barman 같은 전문 백업 관리 도구가 필요합니다. 문제는 증분 백업이 이전 백업 체인에 의존한다는 점입니다. 수동 관리 시 오류 가능성이 매우 높습니다. 다행히, barman 3.11.0부터 PostgreSQL 증분 백업 엔진을 공식 지원하면서 이러한 문제를 해결할 수 있게 되었습니다. 백업 스테이징의 새로운 과제 증분 백업 복원에는 pg_combinebackup 도구가 필요합니다. 이 과정에서 모든 관련 백업이 같은 머신에 존재해야 하며, 대량의 데이터 이동이 발생할 […]

2025-09-26 / Last updated : 2025-09-26 Grace Technical Blog

PostgreSQL 18의 OAuth2 인증 미리보기 (3) — PostgreSQL 클라이언트 라이브러리에 OAUTHBEARER 지원 추가

작성자: Guang Yi Xu2025년 9월 19일 소개 PostgreSQL 18은 중요한 새 기능인 OAuth2 인증을 도입합니다. 이를 통해 PostgreSQL은 전통적인 사용자명/비밀번호 쌍 대신 OAuth2 토큰을 사용해 사용자를 인증할 수 있습니다. 이 가이드에서는 널리 쓰이는 pgx Go 드라이버를 참조 구현으로 삼아, PostgreSQL 클라이언트 라이브러리에 OAuth Bearer 토큰 인증을 구현하는 방법을 살펴봅니다. 이 블로그 시리즈는 3개의 글로 구성됩니다: 이 글에서 언급하는 모든 코드는 필자의 pgx 포크에 있습니다: xugy99/pgx OAUTHBEARER 메커니즘 OAUTHBEARER SASL 메커니즘은 클라이언트가 OAuth 2.0 Bearer 토큰을 사용해 인증할 수 있도록 합니다. PostgreSQL은 기존의 SASL 인증 흐름에 OAUTHBEARER 인증을 통합했습니다. 전체 OAUTHBEARER SASL 흐름은 이 시리즈의 Part-1에서 확인할 수 있습니다. pgx에서의 pgconn 이해하기 pgx는 ConnectWithOptions() 함수를 제공하여 PostgreSQL 클러스터 URL과 옵션을 받아 […]

2025-09-26 / Last updated : 2025-09-26 Grace Technical Blog

PostgreSQL 18에서의 NOT NULL 변경 사항

글쓴이: Álvaro Herrera발행일: 2025년 9월 23일 PostgreSQL 18에서는 오랫동안 기다려온 기능 중 하나인 NOT NULL 제약 조건 관리 개선이 드디어 구현되었습니다. 이 변화는 단순히 제약 조건의 이름을 붙이는 수준을 넘어, 대규모 운영 환경에서도 더 안전하고 유연한 데이터베이스 관리가 가능하도록 만든 중요한 진전입니다. 이번 글에서는 PostgreSQL 커뮤니티와 EDB 엔지니어들이 함께 기여한 이 개선 사항을 자세히 살펴보겠습니다. NOT NULL 제약 조건에 이름이 생겼다 PostgreSQL 18부터는 NOT NULL 제약 조건에도 이름이 부여됩니다. 이제 psql에서 \d+ 명령을 사용하면 각 제약 조건의 이름을 확인할 수 있습니다. 이는 단순한 변화처럼 보이지만, 앞으로 제약 조건을 삭제(drop)하는 것뿐 아니라, **NOT VALID 옵션으로 추가했다가 나중에 검증(validate)**하거나, 상속/비상속(INHERIT/NO INHERIT) 같은 더 세밀한 관리가 가능해진다는 점에서 큰 의미가 있습니다. pg_constraint와 NOT […]

2025-09-24 / Last updated : 2025-09-24 Grace Technical Blog

PostgreSQL 18의 OAuth2 인증 미리보기 (2) – Rust로 커스텀 OAuth2 검증기 만들기

작성자: Guang Yi Xu2025년 9월 17일 **PostgreSQL 18 (RC1은 2025년 9월 5일 공개됨)**은 중요한 새로운 기능인 OAuth2 인증을 도입했습니다. 이를 통해 PostgreSQL은 기존의 사용자 이름/비밀번호 쌍 대신 OAuth2 토큰을 사용하여 사용자를 인증할 수 있습니다. 이 가이드에서는 Rust와 pgrx 프레임워크를 사용하여 커스텀 검증기 모듈을 만드는 과정을 단계별로 살펴봅니다. 이 블로그 시리즈는 총 3편으로 구성됩니다: PostgreSQL 18 OAuth2 인증 이해하기 PostgreSQL 18의 OAuth2 지원은 플러그인 아키텍처를 사용합니다. 여기서 커스텀 검증기 모듈을 로드하여 OAuth2 토큰을 검증할 수 있습니다. 검증기 모듈은 PostgreSQL이 인증 중 호출하는 특정 C ABI(Application Binary Interface)를 반드시 구현해야 합니다. 핵심 구성 요소는 다음과 같습니다: PostgreSQL 18 소스 빌드하기 준비물 (Prerequisites) 먼저 macOS에 필요한 빌드 도구를 설치합니다: 환경 설정 (Environment Setup) […]

2025-09-24 / Last updated : 2025-09-24 Grace Technical Blog

PostgreSQL 18의 OAuth2 인증 미리보기 (1) – 작동 방식 탐구

작성자: Guang Yi Xu2025년 9월 15일 **PostgreSQL 18 (RC1은 2025년 9월 5일 공개)**은 SASL OAUTHBEARER 메커니즘을 기반으로 한 네이티브 OAuth2 인증 방식을 도입했습니다. 비밀번호 대신, 클라이언트는 IdP(Identity Provider, 신원 공급자)가 발급한 베어러 토큰을 제시합니다. PostgreSQL은 플러그형 검증기 모듈을 통해 해당 토큰을 검증한 뒤, 인증된 신원을 데이터베이스 롤에 매핑하여 액세스를 허용합니다. 이 방식은 Postgres를 최신 SSO(Single Sign-On) 방식과 일치시키는 동시에, 롤 및 권한 관리는 여전히 DBA의 제어 아래 유지할 수 있게 합니다. 이 블로그 시리즈는 총 3편으로 구성되어 있습니다: 필요한 것 (What you need) OAuth2 인증을 처음부터 끝까지 활성화하려면 다음을 준비해야 합니다: 작동 방식 (How it works) 핸드셰이크는 SASL 교환으로 구성되며, 서버는 OAUTHBEARER를 광고합니다. 클라이언트는 즉시 토큰을 제시하거나 discovery 정보를 요청해 […]

2025-09-24 / Last updated : 2025-09-24 Grace Technical Blog

PostgreSQL에서 논리적 복제의 진화: 직접 경험담

작성자: Petr Jelinek2025년 9월 11일 PostgreSQL은 단일 노드 데이터베이스였던 초기 시절에서 지금까지 정말 먼 길을 걸어왔습니다. PostgreSQL을 오래 다뤄보신 분들은 알겠지만, 견고한 논리적 복제(logical replication)에 이르기까지의 여정은 결코 단순하지 않았습니다. 커뮤니티의 노력, 창의적인 우회 방법, 그리고 고가용성(HA)과 유연성에 대한 끊임없는 요구가 그 길을 만들어왔습니다. 저는 londiste, pglogical, 여러 버전의 PGD (BDR), 그리고 PostgreSQL 자체에 내장된 논리적 복제 등 다양한 프로젝트에 깊이 관여해왔고, 그 변화를 직접 목격하며 기여할 수 있었습니다. 초기 시절: 트리거, 해킹, 그리고 집념 2000년대 당시 PostgreSQL의 철학은 단순했습니다. 단일 노드 경험에 집중한다는 것. 고가용성? 우선순위가 아니었습니다. 그 결과 내장된 복제 기능은 존재하지 않았습니다. 이 공백을 메우기 위해 트리거 기반 복제 시스템들이 등장했습니다. 이 외에도 덜 알려진 솔루션들이 있었습니다. […]

2025-09-24 / Last updated : 2025-09-24 Grace Technical Blog

Postgres를 위한 간단한 클러스터링 및 복제 솔루션

작성자: Phil Eaton2025년 9월 10일 우리는 이제 **EDB Postgres Distributed (PGD)**용 새로운 CLI를 제공하고 있습니다. 이 CLI를 사용하면 PGD 노드 클러스터를 아주 쉽게 만들 수 있습니다. PGD 노드는 PGD 메타데이터를 가진 Postgres 인스턴스로, 서로 연결되어 DDL(스키마)과 DML(데이터)을 논리적 복제로 동기화합니다. PGD의 철학은 클라우드 네이티브적입니다. 어떤 노드에 문제가 생겨도 그냥 삭제한 후 다시 생성하면 놓친 데이터를 모두 자동으로 재동기화합니다. 이번 글에서는 AWS에서 세 개의 PGD 노드 클러스터를 만드는 간단하지만 수동적인 방법을 보여드리겠습니다. 이는 완전한 프로덕션 환경 설정은 아니지만 시작하는 데 도움이 될 것입니다. 이후에는 복제, 노드 삭제 및 재생성을 테스트해보겠습니다. 3개의 EC2 인스턴스 생성 먼저 Ubuntu 24.04 t3.micro EC2 인스턴스 세 개를 생성하고 각 인스턴스에 8GB 디스크를 할당합니다. 동일한 보안 그룹에 […]

2025-09-24 / Last updated : 2025-09-24 Grace Technical Blog

AI Agent Development and Optimization Series (Part 1): Creating First Agent

작성자: Finnick Huo2025년 9월 8일 AI 에이전트는 자동화의 새로운 프런티어를 대표하며, 스스로 추론하고 계획하며 자율적으로 행동을 실행할 수 있는 지능형 시스템의 잠재력을 보여줍니다. 이 분야는 빠르게 진화하고 있으며, 개발자와 연구자들은 효과적인 에이전트 시스템을 구축하기 위한 다양한 접근 방식을 탐구하고 있습니다. 각 방식은 저마다의 장단점과 고려사항을 가지고 있습니다. 이번 글에서는 실습 예제를 통해 AI 에이전트의 기본을 이해할 수 있는 실질적인 접근법을 소개합니다. 에이전트를 만드는 데 “정답”은 없지만, 핵심 개념을 쉽게 익히고 직접 간단하면서도 작동 가능한 에이전트를 만들어볼 수 있는 직관적인 방법론을 다뤄보겠습니다. 여기서 다루는 기법과 인사이트는 급변하는 에이전트 개발 환경 속에서 하나의 관점일 뿐입니다. 이 가이드를 마치면 여러분은 동작하는 에이전트를 직접 경험하게 되고, 다른 접근법과 최적화 전략을 탐구할 수 있는 기초 […]

2025-09-23 / Last updated : 2025-09-23 Grace Technical Blog

데이터를 지키는 법: 데이터 마스킹 심층 탐구

Nishant Sharma2025년 9월 5일 서론 데이터 프라이버시가 무엇보다 중요한 시대에, 민감한 정보를 보호하는 것은 더 이상 단순한 권장사항이 아니라 필수입니다. GDPR, HIPAA 같은 규제 프레임워크는 **개인 식별 정보(PII)**에 대해 엄격한 통제를 요구합니다. 여기서 데이터베이스 관리자의 핵심 도구 중 하나가 바로 **데이터 마스킹(data masking)**과 **데이터 리덕션(data redaction)**입니다. 데이터 마스킹이란? Wikipedia에 따르면, 데이터 마스킹은 민감한 데이터를 소프트웨어와 권한 있는 사용자에게는 활용 가능하면서도 권한 없는 사용자에게는 거의 가치가 없게끔 수정하는 과정입니다. 핵심은 허구이지만 현실적인 데이터를 만드는 데 있습니다. 예를 들어, 실제 이름 ‘Amul Sul’을 ‘Jeevan Chalke’로 바꾸거나, 진짜 신용카드 번호를 겉보기에 유효해 보이는 가짜 번호로 대체하는 방식입니다. 이 과정에서 원본 데이터는 데이터베이스 내에서 영구적으로 변경됩니다. 반면, 데이터 리덕션은 데이터를 변경하지 않습니다. 특정 사용자에게 […]

2025-09-23 / Last updated : 2025-09-23 Grace Technical Blog

Protobuf로 MCP 서버 구축하기 (Part 1) – Protobuf에서 REST API까지

Charlie Zhang2025년 9월 3일 들어가며 이번 블로그 시리즈에서는 유용한 툴들을 담은 MCP(Model Context Protocol) 서버를 어떻게 구축할 수 있는지 보여드리겠습니다. 처음부터 새로 만드는 대신, 이미 존재하는 Protocol Buffers와 Google의 gRPC Transcoding을 활용합니다. 우리는 커스텀 protoc(Protocol Buffer 컴파일러) 플러그인을 만들어 MCP 서버를 자동으로 생성할 수 있습니다. 이렇게 하면 gRPC 서비스, OpenAPI 스펙, REST API, MCP 서버까지 모두 하나의 소스에서 통합적으로 생성할 수 있습니다. 이 시리즈는 총 4편으로 구성됩니다: 이번 글에서 만들 것 이 글을 끝까지 따라가면 다음을 얻게 됩니다: 👉 모든 코드는 GitHub 저장소 zhangcz828/proto-to-mcp-tutorial 에서 확인할 수 있습니다. 사전 준비 시작하기 전 준비물: 우리가 해결하려는 문제 초기에는 단순했습니다. 내부 서비스는 gRPC, 외부 클라이언트는 REST API, 그리고 OpenAPI 스펙은 별도 저장소에서 […]

2025-09-23 / Last updated : 2025-09-23 Grace Technical Blog

Postgres Internals Deep Dive: 프로세스 아키텍처

저자: Srinath Reddy2025년 9월 3일 서론 PostgreSQL이 시작될 때부터 종료될 때까지 내부에서 어떤 일이 일어나며, 프로세스들이 어떻게 함께 동작하는지 궁금했던 적이 있나요? 이 블로그는 그 과정을 단계별로 안내합니다. 프로세스 아키텍처 pg_ctl을 사용해 postgres를 시작하면, 가장 먼저 실행되는 것은 postmaster로, 이후 대부분의 프로세스의 부모 프로세스 역할을 합니다.postmaster는 main() 함수를 실행하고, 그 안에서 PostmasterMain을 호출하는데 여기서 중요한 작업들이 진행됩니다. 그 다음은 핵심 루프인 ServerLoop가 시작됩니다. 이 루프는 결코 끝나지 않으며, 종료된다면 서버도 내려갑니다. ServerLoop (생명의 루프) 이는 무한 이벤트 루프로, 시그널 핸들러에 의해 설정된 Latch나 소켓에 대기 중인 새로운 연결 요청을 기다립니다. 이 루프에서: 자식 프로세스의 등장 postmaster의 자식 프로세스는 다음과 같습니다: 이외에도 요청에 따라 다양한 프로세스가 fork되며, 각각 별도 블로그에서 다룰 […]

글 페이지 매김

  • Page 1
  • Page 2
  • Page 3
  • »

카테고리

  • EDB 제품 (10)
  • 고객사례 (8)
  • 블로그 (142)
    • EDB Lab (38)
    • Postgres Tutorials (14)
    • Product Updates (21)
    • Technical Blog (55)
    • 📬EDB 엔지니어링 뉴스레터 (8)
  • 개인정보보호
  • 문의하기

Copyright © EDB 코리아 블로그 All Rights Reserved.

Powered by WordPress with Lightning Theme & VK All in One Expansion Unit

MENU
  • 공식웹사이트
  • EDB 제품
  • 블로그
  • 고객사례
  • EDB 문서
  • 국내 EDB 파트너
  • 문의
  • 02.501.5113
×
  • 서론
  • 프로세스 아키텍처
  • ServerLoop (생명의 루프)
  • 자식 프로세스의 등장
  • 백엔드 프로세스
  • 변신하는 백엔드 프로세스
  • 백그라운드 워커
  • 시그널 처리
  • 종료 모드 (Shutdown Modes)
  • 리퍼 (Reaper)
  • 결론
→ 목차 보기