최현수

CloudBerry Contributor 가이드

CloudBerry Database는 Apache 인큐베이터 프로젝트로, 분산형 PostgreSQL 기반 데이터베이스입니다. 이 가이드는 CloudBerry 프로젝트에 기여하기 위한 상세한 절차를 제공합니다.

1. CloudBerry Database 이해

1.1 프로젝트 개요

1.2 기술적 특징

1.3 아키텍처 이해

2. 개발 환경 설정

2.1 시스템 요구사항

2.2 필수 도구 설치

# CentOS/RHEL/Rocky Linux
sudo yum groupinstall "Development Tools"
sudo yum install cmake3 git python3-devel openssl-devel \
    readline-devel zlib-devel bzip2-devel

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install build-essential cmake git python3-dev \
    libssl-dev libreadline-dev zlib1g-dev libbz2-dev

2.3 소스코드 다운로드 및 빌드

# 소스코드 클론
git clone https://github.com/apache/incubator-cloudberry.git
cd incubator-cloudberry

# 서브모듈 초기화
git submodule update --init --recursive

# 빌드 설정
./configure --with-python --enable-debug --enable-cassert

# 컴파일 (멀티코어 활용)
make -j$(nproc)

# 설치
make install

2.4 클러스터 초기화

# 환경 변수 설정
source /usr/local/cloudberry/cloudberry_path.sh

# 마스터 초기화
initdb -D /data/master

# 세그먼트 초기화 (다중 노드 환경)
gpseginstall -f hostfile_segments
gpinitsystem -c gpinitsystem_config

3. 커뮤니티 참여

3.1 공식 채널

3.2 커뮤니티 가입

# 메일링 리스트 구독
# dev 리스트 구독: dev-subscribe@cloudberry.apache.org로 빈 메일 발송
# 구독 해제: dev-unsubscribe@cloudberry.apache.org로 빈 메일 발송

3.3 Slack 및 Discord

3.4 정기 미팅

4. 기여 방법 및 영역

4.1 초보자를 위한 기여

4.1.1 문서화 기여

4.1.2 테스트 및 버그 리포트

4.1.3 코드 품질 개선

4.2 중급 기여 영역

4.2.1 SQL 기능 확장

4.2.2 분산 처리 최적화

4.2.3 저장소 엔진 개선

4.3 고급 기여 영역

4.3.1 코어 아키텍처 개발

4.3.2 성능 최적화

4.3.3 확장성 개발

5. 개발 프로세스

5.1 이슈 선택 및 계획

5.1.1 이슈 타입별 접근

5.1.2 이슈 분석

# 이슈 라벨 확인
# - priority: P0(긴급), P1(높음), P2(보통), P3(낮음)
# - component: coordinator, segment, planner, executor
# - difficulty: easy, medium, hard

5.2 개발 워크플로우

5.2.1 브랜치 전략

# 개발 브랜치 생성
git checkout main
git pull upstream main
git checkout -b feature/my-feature-name

# 개발 진행
# ... 코드 수정 ...

# 커밋
git add .
git commit -m "feat: add new distributed join algorithm"

5.2.2 커밋 메시지 규칙

<type>(<scope>): <subject>

<body>

<footer>

커밋 타입:

5.3 테스트 및 검증

5.3.1 단위 테스트

# 단위 테스트 실행
make installcheck-world

# 특정 테스트 실행
pg_regress --inputdir=sql --outputdir=expected \
    --schedule=parallel_schedule test_name

5.3.2 통합 테스트

# 분산 환경 테스트
gptest --setup-cluster
gptest --run-tests
gptest --cleanup

5.3.3 성능 테스트

# TPC-H 벤치마크
pgbench -i -s 100 cloudberry_db
pgbench -c 10 -j 2 -T 300 cloudberry_db

5.4 Pull Request 제출

5.4.1 PR 준비

# 코드 품질 검사
./tools/check_style.sh
make check

# 브랜치 정리
git rebase -i main
git push origin feature/my-feature-name

5.4.2 PR 템플릿

## 변경 사항 요약
- 주요 변경사항 설명

## 동기 및 배경
- 왜 이 변경이 필요한가?

## 구현 세부사항
- 어떻게 구현했는가?

## 테스트
- [ ] 단위 테스트 통과
- [ ] 통합 테스트 통과
- [ ] 성능 테스트 완료

## 체크리스트
- [ ] 코드 스타일 준수
- [ ] 문서 업데이트
- [ ] 커밋 메시지 규칙 준수

6. 리뷰 및 머지 프로세스

6.1 코드 리뷰

6.2 피드백 대응

6.3 머지 후 작업

7. 고급 기여자로 성장하기

7.1 코드 리뷰어 되기

7.2 커미터 권한 획득

7.3 PMC(Project Management Committee) 멤버

8. 유용한 리소스

8.1 기술 문서

8.2 개발 도구

8.3 학습 자료

9. 주의사항 및 베스트 프랙티스

9.1 Apache Software Foundation 규칙

9.2 코드 품질 기준

9.3 커뮤니티 에티켓


CloudBerry Database는 빠르게 성장하는 오픈소스 프로젝트입니다. 여러분의 기여를 통해 함께 더 나은 분산 데이터베이스를 만들어 나갑시다!