code-pull-request테크니컬 가이드라인

9개 랩의 실제 개발 경험을 바탕으로, 테크포임팩트 커뮤니티 현직 개발자들의 검수를 거쳐 완성된 실무 가이드입니다.

circle-check

0. 프로젝트를 시작하기 전

팀의 개발 문화 만들기

"다 다른 배경을 가진 전문가들이 함께 일하는 것"

우리는 서로 다른 회사, 다른 팀에서 일해온 전문가들입니다. 각자의 개발 방식과 코딩 스타일, 프로젝트 구조에 대한 선호가 다를 수 있어요. 성공적인 협업을 위한 첫 걸음은, 서로에게 따뜻한 호기심으로 접근하며 열린 마음으로 이해하는 것입니다. 또한 개발 리드나 랩장의 방향성을 따르는 리더십 존중이 필요합니다. "일단 해보고 개선하자"라는 실험적 태도도 중요하죠!

🎯 첫 번째 모임에서 꼭 나눠야 할 대화

  • 각자의 개발 경험과 선호하는 방식 공유

  • 이번 프로젝트에서 시도해보고 싶은 것들

  • 소통 방식과 의사결정 프로세스 합의

저장소 전략 단계별 가이드

단계
가이드

시작 단계 (자유 선택)

개발 초기에는 랩이 가장 편한 방식으로 시작하세요 • 개인 GitHub 계정

• 펠로우 조직 GitHub • 테크포임팩트 GitHub

중간 점검 (PI1 종료 시점)

프로젝트 방향성이 보이면 최종 형태를 결정합니다 • 펠로우 역량: 개발팀 유무, 기술 수준 파악 • 지속성 계획: 누가 어떻게 유지보수할 것인지

최종 정리 (프로젝트 종료)

결정된 방향에 따라 적절한 곳으로 코드 정리 • 카카오임팩트 관리 → services-* 레포 • 펠로우 관리 → 펠로우 조직 이관 • 오픈소스 → oss-* 레포 별도 생성

1. 코드 품질

circle-info

"6개월 후 다른 사람이 봐도 이해할 수 있는 코드"

  • 가독성 우선: 영리한 코드보다 명확한 코드

  • 일관성 유지: 팀 내에서 동일한 스타일 적용

    • 팀 내의 언어 별 코딩 컨벤션을 미리 두는 것도 필요함.

  • 문서화 습관: 코드만으로 설명이 어려운 부분은 주석을 활용하기

  • 테스트 가능성: 테스트하기 어려운 구조는 피하기

주석 vs 외부 문서 분리 기준

코드 내 주석 (최소화)

  • 복잡한 알고리즘의 핵심 로직만

  • 하드코딩된 상수의 이유

  • TODO, FIXME 등 임시 해결책

외부 문서 (GitBook/Notion 권장)

  • 전체 시스템 흐름 설명

  • 컴포넌트별 역할과 관계

  • 설계 의도와 제약사항

  • 모델 선정 과정 및 실험 결과

프론트엔드 문서화 예시

  • README.md: 기본 설치/실행

  • GitBook: 컴포넌트 구조 + 데이터 플로우

실제 사례 참고

CaringNote LAB의 Java/Spring 사례

  • DDD 스타일의 명확한 패키지 구조

  • 비즈니스 로직과 인프라 계층 분리

  • QueryDSL 활용한 타입 안전한 쿼리

DVA LAB의 Python/FastAPI 사례

  • 타입 힌트와 Pydantic 모델 활용

  • 환경별 설정 파일 분리

  • 모니터링과 로깅 통합

코드 품질 체크리스트

2. 브랜치 전략

circle-info

"협업이 쉽고, 배포가 안전한 브랜치 플로우"

  • 단순함 추구: 복잡한 브랜치 구조보다 명확한 규칙

  • 기능 단위: 하나의 브랜치는 하나의 완성된 기능

  • 코드 리뷰 필수: 모든 변경사항은 동료의 검토 거치기

  • 히스토리 관리: 의미 있는 커밋 메시지와 깔끔한 히스토리

실제 사례 참고

CaringNote LAB의 Git Flow

브랜치 네이밍

  • feature/사용자-관리-개선

  • fix/로그인-버그-수정

  • refactor/API-구조-개선

커밋 메시지 규칙

DVA LAB의 모델 개발 플로우

  • 모델 버전과 코드 버전의 분리 관리

  • MLflow 스테이징을 통한 모델 검증 후 배포

누구나리포터 LAB의 노션 연동 플로우

chevron-right누구나데이터 깃 플로우(Mermaid)hashtag

main (프로덕션) ← develop (개발) ← feature/notionID_branchName ← fix/notionID_branchName

특징:

  • 노션 작업 데이터베이스와 브랜치를 1:1 매핑

  • 작업 추적성과 문서화의 완벽한 연동

  • 팀 협업 시 작업 현황 실시간 파악 가능

브랜치 네이밍 예시

feature/a1b2c3d4_user-login-system fix/e5f6g7h8_signup-validation-error

커밋 메시지 규칙

feat: 기능 개발 docs: 문서 작성 fix: 버그 수정 chore: 사소한 작업(설정 변경 등)

브랜치 전략 체크리스트

3. 배포 및 릴리즈 프로세스

circle-info

"실패해도 안전하고, 성공하면 확장 가능한 배포"

  • 환경 분리: 개발/스테이징/프로덕션 환경 명확히 구분

  • 점진적 배포: 한 번에 모든 것을 바꾸지 않는 단계적 접근

  • 자동화 우선: 수동 작업으로 인한 휴먼 에러 최소화

  • 롤백 준비: 언제든 이전 버전으로 돌아갈 수 있는 안전장치

실제 사례 참고

CaringNote LAB의 접근법

  • GitHub Actions를 통한 완전 자동화 파이프라인

  • DockerHub 중간 저장소 활용

  • Kubernetes 환경에서의 무중단 배포

DVA LAB의 고도화 사례

  • 모델 버전 관리와 서비스 배포의 완전 분리

  • 리소스 제한과 헬스체크를 통한 안정성 확보

  • Prometheus/Grafana 모니터링 통합

배포 및 릴리즈 프로세스 체크리스트


4. GitHub 리포지토리

circle-info

"처음 보는 사람도 5분 만에 프로젝트를 이해할 수 있는 구조"

  • 직관적 구조: 파일과 폴더 이름만 봐도 역할을 알 수 있게

  • 완전한 문서화: README부터 API 문서까지 빠짐없이

  • 재현 가능성: 누구나 동일한 환경에서 실행할 수 있도록

  • 기여 가능성: 외부 기여자도 쉽게 참여할 수 있는 구조

실제 사례 참고

CaringNote LAB의 프론트엔드 구조

DVA LAB의 MLOps 구조

Github Repository 체크리스트

필수 파일들

AI/ML 프로젝트 추가 고려사항

GitHub 설정

문서화

circle-check
circle-check

보안 관리 가이드 (SECURITY.md)

민감 정보 관리 전략

  • Tech for Impact Google Drive 활용(*필요 시 사무국에 요청) + gdown으로 다운로드

  • GitHub Secrets와 CI/CD 연동

  • 팀 내 안전한 공유 프로토콜

예시

도움이 필요할 때

1단계: 이전 기수의 사례를 참고하세요!

2단계: 테크포임팩트 커뮤니티를 활용하세요!

  • 테크포임팩트 디스코드 채널에서 질문

  • 다른 랩/이전 랩의 경험 공유 요청

3단계: 사무국 지원

  • 기술적 검토 및 테크포임팩트 패컬티 자문 요청

  • 인프라 설정 지원

🙏 Special Thanks

Last updated