개발 환경과 문화의 표준화 — 코드, 협업, 그리고 사람의 일하는 방식
요약: REINDEERS는 5월, 시스템 구조뿐 아니라 ‘개발 문화’ 자체를 새로 만들었다. 기획자·개발자·디자이너 구분을 없애고, AI 기반 워크플로우와 자동화된 리뷰·배포·검증 체계를 도입해 “사람이 아니라 시스템이 일하는 조직”을 완성했다.
1. 개발 환경의 목표 — ‘사람 없이도 일관된 결과’
REINDEERS의 개발 환경은 단 하나의 목표를 갖고 설계되었다. “사람이 없어도 코드 품질과 배포 결과가 동일해야 한다.”
이를 위해 모든 개발 환경은 완전히 동일한 컨테이너 기반으로 세팅되었고,
환경 편차나 로컬 의존성 문제는 제거되었다.
개인의 환경은 존재하지 않으며, 모든 환경은 dev, staging, production 세 단계로 통합 관리된다.
표준 개발 환경 구조
# Dockerfile (공용 개발환경)
FROM node:20-bullseye
RUN apt-get update && \
apt-get install -y python3 python3-pip vim curl git && \
pip install pre-commit flake8
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
CMD ["npm", "run", "dev"]
모든 개발자는 동일한 컨테이너 이미지를 사용하며, 코드 수정 시 Drone의 pre-flight build가 자동 수행되어 린트, 테스트, 의존성 검증이 완료되어야만 PR이 생성된다.
2. 협업 체계 — AI 중심의 자율 Workflow
REINDEERS는 Jira, Notion, Slack을 모두 사용하지 않는다. 대신 내부 MCP 환경에서 동작하는 AI Workflow Engine이 모든 태스크를 관리한다.
기본 흐름
[1] 사용자가 명령 입력 → “새 API: /po/report 생성”
[2] AI Workflow Engine → 명령 파싱 및 데이터 구조 분석
[3] AI Schema Builder → DBML / Swagger / Type 정의 자동 생성
[4] Drone → 테스트 / 빌드 / 배포 자동 실행
[5] Cloud Function → API 상태 검증 / 결과 피드백
이 엔진은 Claude Code, GPT-5, Cursor API를 통합해 구성되며, 명령 한 줄로 코드, 데이터, 테스트, 배포까지 이어지는 완전 자동화 파이프라인을 제공한다.
3. 코드 리뷰 — AI + 사람의 이중 검증 체계
코드 리뷰는 두 단계로 진행된다. 1차는 AI 리뷰, 2차는 셀(Cell) 단위 검증이다. AI 리뷰는 구조적 오류, 보안 위험, 성능 병목을 탐지하고, 사람이 직접 보는 리뷰는 비즈니스 로직 검증에 집중한다.
Drone Hook 예시 (AI 코드 리뷰 자동화)
kind: pipeline
type: docker
name: ai-review
trigger:
event: [ pull_request ]
steps:
- name: static-analysis
image: python:3.13
commands:
- pip install bandit
- bandit -r ./src -ll
- name: ai-review
image: openai/cli
environment:
OPENAI_API_KEY:
from_secret: openai_key
commands:
- openai api completions.create -m gpt-5-turbo -p "Analyze code style & security risk"
AI 리뷰 결과는 Git PR에 자동 코멘트로 남는다. 리뷰어는 승인만 하면 되며, 모든 내용은 로그로 아카이브된다.
4. 배포 문화 — ‘한 명이 아니라 시스템이 한다’
REINDEERS의 배포는 100% 자동화되어 있다. 코드 병합 → Drone 파이프라인 실행 → COS/CDN 배포 → 헬스체크 → Grafana 피드백의 완전 폐루프다. 배포 인가는 자동 검증이 통과된 브랜치만 허용된다.
배포 절차 개요
git push origin main- Drone CI → 빌드/테스트/배포
- CDN 캐시 무효화
- Cloud Function이 상태 점검 후 Slack/CLI에 리포트
curl -X POST https://deploy.reindeers.internal/report \
-H "Authorization: Bearer $DEPLOY_TOKEN" \
-d '{"status":"success","branch":"main","build":642}'
모든 결과는 자동 기록되며, 수동 배포는 금지되어 있다.
5. 개발 문화의 표준화 — ‘No Manual, No Exception’
REINDEERS의 개발 문화는 여섯 가지 원칙으로 정의된다.
- No Manual Deploy — 수동 배포 금지. CI/CD만 사용.
- No Silent Commit — 모든 커밋은 GPG 서명 필수.
- No Local Config — 모든 환경변수는 KMS 기반 관리.
- Always Observable — 모든 API와 함수는 모니터링 대상.
- Data-Driven Change — 코드보다 데이터 우선.
- AI-Assisted Everything — 반복은 모두 자동화.
이 원칙을 통해 개인 역량에 관계없이 동일한 품질의 결과가 유지된다.
6. 내부 협업 셀(Cell) 구조
REINDEERS는 부서 개념이 없다. 개발자는 모두 Cell이라는 단위 안에서 기능별로 자율 운영한다.
Cell 구성
[CELL-A] Front Layer
- Nuxt3 / Vue3 / Layout Schema / CDN / SEO
[CELL-B] API Layer
- FastAPI / Node.js / MQ Worker / DTS Integration
[CELL-C] Infra Layer
- TKE / CVM / DNSPod / Drone / Security
[CELL-D] Data Layer
- TencentDB / Redis / AI Schema Builder / Audit
[CELL-E] AI & Automation
- Workflow Engine / Auto Review / Function Recovery
각 셀은 독립 배포와 로그를 가지며, 성과 평가는 시스템 지표로 측정된다.
7. 일상 속의 AI — 시스템이 스스로 회의한다
REINDEERS 내부의 회의는 AI Log Analyzer를 통해 자동으로 진행된다. 하루 2회 시스템 로그를 분석하여 문제점·성능 변화를 리포트하고, 사람은 리포트를 읽기만 한다.
AI Log Analyzer 결과 샘플
{
"summary": "No major error detected.",
"latency_avg_ms": 192,
"redis_hit_ratio": 88.2,
"dts_delay_ms": 245,
"recommendations": [
"Optimize MQ prefetch to 500 msgs",
"Rotate Redis keyspace stats daily"
]
}
이 데이터는 Grafana 대시보드와 연결되어, 사람 없이도 시스템 스스로 개선 방향을 제안한다.
8. 결론 — 개발환경이 곧 문화다
REINDEERS는 개발 환경, 프로세스, 문화가 모두 하나의 구조 안에 녹아 있다. “사람이 시스템을 운영한다”는 개념 대신 “시스템이 사람의 역할을 대체하고, 개발자는 구조를 설계한다”는 철학이 정착했다.
“우리는 코드를 짜지 않는다. 우리는 시스템이 스스로 일할 수 있도록 설계한다.”
Comments
Post a Comment