2. DBMS이야기/01. PostgreSQL

PGCon 2016 참관기

ioseph 2016. 5. 24. 18:10

0. PostgreSQL 20주년

올해로 PostgreSQL이 세상에 나온 지 스물 돌이 되었습니다.

마이클 스턴브래커 어르신의 postgres 프로젝트까지 거슬러가면 이보다 훨씬 더 오래되었겠지만, PostgreSQL이라는 이름이 등장한 지는 올해로 20년이 되었네요.

이 기념으로 PostgreSQL 커뮤니티에서는 위와 같이 포스터도 만들면서 자축하고 있습니다. 또한 올 해로 열 번째 열린 PostgreSQL 개발자 사용자 회의가 캐나다 오타와에서 열렸고, 제가 다니고 있는 회사 지원으로 이번에 같이 일하고 있는 동료와 함께 저도 참석하게 되었습니다.

이 글은 올 해 열린 PGCon 행사 참관 후기입니다.


1. PGCon 소개

PGCon (http://pgcon.org) 행사는 PostgreSQL 개발자, 사용자가 일 년에 한 번 모이는 PostgreSQL 최대 행사입니다. 참석하는 사람들은 대부분 PostgreSQL 커뮤니티 메일링 리스트에서 꾸준히 활동하는 사람들로 매번 메일로만 의견을 주고 받던 사람들이 한 자리에 모여 여러 주제로 발표도 하고, 토의도 하고, 같이 술을 마시며 놀기도 하는 행사입니다.

주로 다루는 내용은 크게 세 부분으로 구분되는데,

하나는 PostgreSQL 차기 버전에 대한 토의 - 일반적인 새 기능 발표회 같은 분위기가 아니라 서로 의견을 주고 받으며 서로의 부족한 부분을 채워나가는 자리입니다. 여기서 발표되는 새 기능들은 대부분 차기 버전에 수용되기는 하지만 막상 구현된 모습은 이 발표 때의 모습과는 사뭇 다른 경우가 제법 있었습니다.

다른 하나는 각 기업들, 각 지역 커뮤니티들의 사례 발표들로 구성됩니다. 대부분의 발표는 PostgreSQL 엔진에 촛점이 맞춰져 글로벌 개발자 그룹도 자리를 함께 하면서 자신들이 만든 프로그램이 어떻게 쓰이고, 어떤 점이 미흡하고, 어떻게 개선해 나갈 것인가를 살펴봅니다.

또 다른 하나는 PostgreSQL을 사용하는데 필요한 부가 솔루션, PostgreSQL을 이용한 솔루션을 소개합니다. 그 또한 오픈 소스로 되어 있는 것이 대부분이고, 자기 회사의, 또는 자신들의 오픈 소스 프로젝트를 자랑하는 자리입니다.


2. 오타와 여행

우리나라에서 캐나다 오타와까지는 비행기로 한 번에 가는 교통편이 없어, 토론토를 거쳐 국내선으로 갈아타고 갔습니다. 인천에서 토론토까지 14시간, 국내선 갈아타는 시간 3시간, 토론토에서 오타와까지 1시간, 오토와 공항에서 숙소까지 1시간, 이동하는데만 거의 20시간이 걸렸습니다.

관광을 위해서는 박물관과 미술관 관람을 제외하면 하루면 충분히 다 둘러 볼 수 있는 자그마한 도시였습니다.

랜드마크인 캐나다 국회의사당과 그 옆에 흐르는 운하와 그 강변으로 있는 박물관과 미술관 그리고 앞에 있는 대성당, 그리고, 캠퍼스 담장이 없는 오토와 대학 - 첫날 회의 참석 등록을 하러 가는 길에 잠깐만 짬 내면 다 둘러 볼 수 있는, 한 국가의 수도라기 보다는 어느 한적한 마을을 들린 듯했습니다.

그리고 매일 식사를 책임졌던 바이워드 시장 - 재래시장이라고 소개는 하고 있으나, 식당과 상점들로 가득한 그냥 한 구역이였습니다.

다음은 행사장 건물 앞에서 찍은 사진입니다.



3. PGCon 2016 내용

http://pgcon.org/2016

총 5일에 걸친 긴 일정이었는데, 앞 이틀은 사용법 강좌를 다루고, 이틀은 각 주제들에 대한 발표와 질의응답 형태의 회의, 마지막 날은 사용자들이 모두 모여 그 자리에서 여러 주제들을 발의하고 토론하는 형태로 진행되었습니다.

참여자들 대부분이 글로벌 개발 그룹 구성원이거나, 각국 컨트리뷰터, PostgreSQL 전문 기술 지원 업체 엔지니어들이었기 때문에, 발표 중간 중간 질문과 답변이 오고 가고 자기 의견을 주장하기도 하고, 전세계 사람들이 모였으니, 의사소통이 안되는 부분은 그 자리에 참석한 다른 분이 대신 통역해 주기도 하는 참 역동적인 모임이었습니다.

참석한 발표들의 간단 요약


3.1. PostgreSQL 확장성 소개

http://www.pgcon.org/2016/schedule/attachments/424_PGCon-PostgreSQL-Extensibility.pdf

제가 생각해도 PostgreSQL 이야기의 키노트로 딱 맞는 주제였습니다.

PostgreSQL은 관계형 데이터베이스 관리 시스템이기도 하지만, 내가 꿈꾸는 어떤 데이터베이스를 만들고자 할 때 그 데이터베이스를 만들 수 있는 하나의 개발 도구로 사용할 수 있는 아주 훌륭한 도구임을 소개하고 있습니다.

그래프 데이터베이스를 PostgreSQL 기반으로 만들고 있는 국내 업체인 비트나인도 한 예가 될 것입니다.


3.2. 얀덱스 메일 전환 성공기

http://www.pgcon.org/2016/schedule/attachments/426_2016.05.19%20Yandex.Mail%20success%20story.pdf

러시아 포탈 업체의 메일 서비스 (https://mail.yandex.com/)를 오라클에서 PostgreSQL로 전환했던 엔지니어 삽질기를 소개했습니다. 중간 중간 실패한 이야기들과 지금의 모습으로 결정하고 사용자들이 전혀 눈치 못 채게 자료를 옮겨가는 전략 등, 다양한 마이그레이션 전략을 소개했습니다.

초당 25만 tps 성능을 유지하는 방법, 300TB의 거대 용량을 전환하는 전략 등 DB 입장에서도 놀랍지만, 전체 설계 입장에서도 살펴볼 것이 많은 발표였습니다. 

이 발표에서 가장 인상 깊었던, 누구나 공감할 수 밖에 없었던 순간


3.3. ERROR: snapshot too old

http://www.pgcon.org/2016/schedule/attachments/420_snapshot-too-old.odp

오라클에서 봤던 그 오류 메시지 도입에 대한 이야기였습니다.

이 오류가 필요했던 이유, 설정 방법, 대응 방법 등을 소개하고 있습니다.

기업 친화적인 Postgres Advanced Server를 판매하고 있는 EnterpriseDB사의 발표였습니다.

이번 발표 세션들 가운데, 성능 이슈 관련, 기업 운영 환경 입장에서의 개선 이슈들은 대부분 이 EnterpriseDB사가 맡았습니다. 하나의 실험 정신 투철한 데이터베이스가 기업에서 사용되고, 그 범위가 넓어지고, 이 회사의 매출이 증가하고 그것이 다시 오픈소스 발전에 기여할 수 있도록 하겠다는 흔히 말하는 오픈 소스 에코 시스템의 좋은 사례 같습니다.


3.4. B-Tree 이야기

http://www.pgcon.org/2016/schedule/attachments/423_Btree

러시아 대표 PostgreSQL 기술지원 업체인 Postgres Professional, https://postgrespro.ru/ 의 엔지니어가 설명한 PostgreSQL 색인 이야기입니다.

특별한 이야기는 없지만, PostgreSQL을 처음 접하는 이들에게는 딱 알맞는 내용으로 구성되어있습니다.

물론 국내 문서도 찾아보면 이 보다 더 자세히 소개한 문서들이 많지만, 잠깐 소개합니다.


3.5. 쿠바에서의 PostgreSQL

http://www.pgcon.org/2016/schedule/attachments/398_PgConf2016_Cuba.pdf

개인적으로는 가장 인상 깊었던 발표였습니다.

쿠바 PostgreSQL 사용자 그룹이 어떻게 만들어졌고, 어떤 활동을 해 왔고, 현재 이런 모습이다는 식을 낯선 스페인어 억양의 영어 발표여서, 읽을 수 있는 것은 윗 링크의 발표 화면들과 발표자의 표정과 몸짓 뿐.

가장 크게는 쿠바의 독특한 정치적 성향 때문이기도 하겠지만, 그 보다 산학 협력 환경, 커뮤니티를 유지하고, 자료를 발표하고, 그런 활동들로 기업 내에서도 저변 확대되어 가는 이야기를 들으면서 국내 PostgreSQL 활성화 방안에 대한 부분도 같이 고민해 볼 수 있었던 시간이었습니다.


3.6. 단순 쿼리의 속도 향상

http://www.pgcon.org/2016/schedule/attachments/400_RunSimpleQueryFaster.pdf

EDB사 엔지니어가 쿼리 실행기를 해킹해서 얻은 성능 향상에 대한 발표였습니다.

요지는 현 쿼리 실행기가 단순 쿼리에 대해서는 많이 느리니, 단순 쿼리로 판단되면, 실행기 내부 작업을 단순하게 처리하도록 작업 내역을 분기하자는 것입니다.

커뮤니티 메인 코드에 반영 될 가능성은 별로 없어 보였지만, 자신들의 해킹이 기업 환경에서는 이렇게 쓸모 있다는 식의 발표를 아주 정량적으로 자료를 수집하고, 논리적으로 기존 개발 그룹에 설득하는 작업이었습니다.

한편으로 보면, 오픈 소스 공동 개발에서 꼭 필요한 활동입니다.


3.7. 반짝 이야기들

열 명이 넘는 발표자들이 각 5분 정도 짧게 제 각각의 이야기를 발표하는 시간도 있었습니다.

pgAdmin4 열심히 만들고 있다. PGCon.Asia 를 싱가포르에서 진행되었다. TPC-H 벤치마킹의 필요성 방법, ....

이 중에 꽤 재미났던 발표는

http://www.pgcon.org/2016/schedule/attachments/408_LightningTalkSergeRielau.pdf

DB의 하드웨어 스펙은 어느 정도면 적당한가에 대한 한 사례 발표였습니다.


3.8. PostgreSQL 보다 빠르게

http://www.pgcon.org/2016/schedule/attachments/399_postgresql-96-scalability-perf-improvements.pdf

이 발표도 EDB 엔지니어가 했습니다.

이번에는 data page 크기에 대한 고려, 트랜잭션 로그 쓰기에서 잠금 문제 등 엔진 해킹을 통한 성능 개선 사례 발표였습니다.


3.9. Atomic 프로젝트 안에서의 PostgreSQL

컨테이너 자동화 프로젝트인 atomic 프로젝트 참여자가 atomic으로 PostgreSQL을 사용하면, 고가용성이 얼마나 손쉽고, 좋아지는가에 대한 소개였습니다.

http://jberkus.github.io/love_failover/

엉청나게 많은 오픈 소스 프로젝트를 소개했습니다.

여기서 배우는 것. 이젠 잘 만들어 쓰는 것보다 잘 가져다 쓸 놈이 어디 있고, 그 놈은 이런 장단점이 있어 이런 조합으로 구성하는 것이 제일 낫다는 것을 빨리 아는 것이 중요하다는 것.


3.10. PoWA

이번에는 프랑스 대표 PostgreSQL 기술지원 업체인 dalibo 의 자사 PostgreSQL 모니터링 도구인 PoWA 소개였습니다.

모니터링 도구가 필요하다면, 이것으로 구축해 보는 것도 좋을 것 같습니다. 이 도구의 특징은 실시간으로 해당 데이터베이스의 필요한 인덱스를 추천해 준다는 점입니다.


3.11. NTT 빌링 시스템 마이그레이션 이야기

http://www.pgcon.org/2016/schedule/attachments/422_A%20Challenge%20of%20Huge%20Billing%20System%20Migration_20160520.pdf

일본 통신사인 NTT의 빌링 시스템 차세대 전환 이야기인데, 놀라운 사실은 이런 통신 기업 기간계 시스템에서 조차 차근하게 준비해서 PostgreSQL로 운영하게 되었다는 점이었습니다. 이 안에는 당연히 pg_hint 같은 쿼리 실행 최적화기를 마음대로 건드리는 NTT 자체 기술력이 바탕이 되었기 때문이기도 합니다.

이 발표의 핵심도 PGCon 이라는 독특한 회의에 촛점을 맞춰, '왜 PostgreSQL 개발 그룹은 pg_hint 같이 쿼리 힌트를 거부하는가?' 라는 아주 저돌적인 질문이었습니다.  기업 환경에서는 쿼리 힌트 기능은 필요악이기 때문에, PostgreSQL에서도 당연히 쿼리 힌트가 지원되길 바란다는 내용이었습니다.


3.12. 데이터베이스 벤치마킹

http://www.pgcon.org/2016/schedule/attachments/413_Benchmarking%20Databases%202016.pdf

데이터베이스 벤치마킹의 작위성에 대한 이야기였습니다. IT 업계에 오래 있었던 분들은 대부분 납득 가는, 어떻게 수치가 임의적으로 해석되고, 그것이 어떻게 포장 되는가에 대한 엔지니어 입장에서의 발표였습니다. 그 어떤 벤치마크 수치도 객관적이다고 말하기는 힘들겠지만, 일단 벤치마킹을 하려는 이들이 갖춰야할 객관성을 살펴 볼 수 있습니다.


3.13. 사용자 언컨퍼런스

https://wiki.postgresql.org/wiki/Pgcon2016userunconference

PGCon 행사의 꽃인 토론 마당

늘 wiki 페이지로 올 해는 이런 이야기가 있었구나는 식의 글만 보다가 직접 참여하게 되었지만, 언어의 장벽을 넘기는 힘들었습니다. 일상 회화나 겨우 할 수 있는 상황에서 기술 이야기를 넘어 제반 토론에 참여하고 의견을 내고 할 형편이 못 되어 참 아쉬웠습니다. 역시나 이 부분은 윗 링크가 정리되는 대로 다시 한 번 읽어 보는 것으로 만족해야겠습니다.

이 토론 마당의 첫 주제는 PostgreSQL이 제 오랜 기간 동안 사용되었고, 이제 기업들도 그 개발에 참여하고, 사업가, 개발자, 사용자들간의 이해득실을 따지게 되고, 여러 사회적, 정치적, 도덕적 상황들이 초창기 그저 멋진 데이터베이스를 만들어 쓰겠다는 순수함(?)을 많이 훼손되고 있는 마당에 이제는 이런 문제를 어떻게 하면 민주적으로 풀어낼 것인가를 그네들끼리 열심히 토론하고 있었습니다.

그저 일반론적인 이야기로는 건전한 대안 있는 비판은 언제나 생기 넘치는 조직으로 유지하는데 꼭 필요하다는 것 정도. 그리고 다양성을 인정하고, 합의는 민주적이여야 한다는 교과서 이야기입니다.

이 사진은 언컨퍼런스 시작하면서 각 주제 선정 작업 결과였습니다.

한 사람씩 이야기를 나눴으면 좋겠다는 주제를 이야기하고 같이 참여하겠다는 사람들을 조사하고 그 자리에서 시간과 장소를 결정하는 형식이었습니다.


4. 마무리

오픈 소스 전체에서 PostgreSQL은 정말 작은 한 소프트웨어일 뿐인데, 이렇게 많은 이들이 한 자리에 모여 며칠씩 서로 이야기를 나누며 어떤 이는 자기 경험을 나누고, 어떤 이는 열심히 공부하고, 서로 토론하는 모습이 참 인상적이였습니다.

물론 기업의 매출 증대를 위해 이해 관계자들은 이번 자리에서도 아주 전략적으로 접근하기도 했겠지요. 하지만, 비영리 단체가 기업과의 묘한 관계 유지 하면서 매년 이렇게 행사를 계속 유지하고 있는 것이 놀랍기도 했습니다.

끝나는 시간 열린 경매 시간도 참 인상 깊었습니다. 비영리 단체의 자금 조달 방법.

한 편의 긴 '그들만의 리그'라는 다큐멘터리 영화를 본 듯합니다.


5. 보너스

오타와 운하에서 바라본 캐나타 문명 박물관과 가티노시 야경 - 이 사진 찍어 보여 달라는 팀원의 부탁에 자다가 찍으러 감.


Posted by 김상기