← 개발 로그 목록

앞으로의 계획.

/ 8분 분량 / 개발 로그

LearningCollector의 추후 개발 방향성과 라즈베리파이 클러스터 구축을 위한 계획.

라즈베리파이 클러스터 구축 및 GitOps 파이프라인 프로젝트

프로젝트 개요

라즈베리파이 3대를 활용한 Kubernetes 클러스터 구축 및 GitOps 기반 배포 자동화 프로젝트입니다. 기존에 운영 중이던 학습 파이프라인과 블로그를 점진적으로 컨테이너화하고, 카나리 배포를 통해 안정성을 검증한 후, 최종적으로 3노드 클러스터에서 다양한 장애 시나리오를 실험합니다.

현재 인프라 상태

  • 라즈베리파이 3대 (24/7 가동)
    • Master 노드: 기존 앱(블로그, 학습 파이프라인, 모니터링 스택) PM2로 운영 중
    • Worker 노드 2대: k3s만 설치된 상태

Phase 1: 컨테이너화 및 카나리 배포

목표

기존 베어메탈 앱을 컨테이너화하고 Worker 노드 클러스터에 배포하여 안정성 검증

구현 내용

1. 컨테이너화

  • 기존 앱들의 Dockerfile 작성
  • 모듈화된 구조로 이미지 최적화
  • 멀티스테이지 빌드 활용

2. CI/CD 파이프라인 구축

  • GitHub Actions 워크플로우 작성
  • 이미지 빌드 및 Docker Hub/ghcr.io 푸시 자동화
  • 테스트 단계 포함

3. Worker 클러스터 배포

  • k3s Worker 2대에 Pod 배포
  • Service 및 Ingress 구성
  • ConfigMap, Secret 관리

4. 카나리 배포 전략

  • nginx upstream 설정으로 트래픽 분산
  • 초기: 베어메탈 90% vs k3s 10%
  • 점진적 비율 조정 (80:20 → 70:30 → ... → 0:100)
  • 모니터링을 통한 안정성 검증
    • 응답 시간
    • 에러율
    • 리소스 사용량

5. 완전 전환

  • 모든 트래픽을 Worker 클러스터로 이동
  • 베어메탈 앱 종료
  • 안정화 확인

기술 스택

  • Docker
  • GitHub Actions
  • k3s
  • nginx (트래픽 분산)

예상 소요 시간

1-2주

Phase 2: 마스터 클러스터 편입 및 GitOps 구성

목표

3노드 k3s 클러스터 완성 및 GitOps 파이프라인 구축

구현 내용

1. 마스터 노드 클러스터 편입

  • 기존 베어메탈 서비스 종료 확인
  • 마스터 노드를 k3s 클러스터에 추가
  • 3노드 클러스터 완성

2. ArgoCD 설치

  • GitOps 도구로 ArgoCD 선택
  • 클러스터 내부에 ArgoCD 배포
  • UI 및 CLI 설정

3. GitOps 파이프라인 구성

코드 Push → GitHub Repository
        ↓
GitHub Actions
- 이미지 빌드
- 레지스트리 푸시
- Kubernetes Manifest 업데이트
        ↓
ArgoCD가 Git Repository 변경 감지
        ↓
클러스터에 자동 배포
        ↓
동기화 상태 모니터링

4. Kubernetes Manifest 관리

  • Deployment, Service, Ingress, ConfigMap 등 작성
  • Git 저장소로 버전 관리
  • 환경별 설정 분리 (개발/운영)

기술 스택

  • k3s (3 nodes)
  • ArgoCD
  • Kustomize 또는 Helm (필요시)
  • Git

예상 소요 시간

1주

Phase 3: 장애 시나리오 실험

목표

다양한 장애 상황을 재현하고 Kubernetes의 자동 복구 능력 검증

실험 시나리오

1. Pod 레벨 장애

  • Pod 강제 종료 (kubectl delete pod)
  • Deployment의 자동 재생성 확인
  • 복구 시간 측정
  • Readiness Probe 동작 확인

2. 노드 간 Pod 마이그레이션

  • 특정 노드의 Pod 수동 삭제
  • 다른 노드로 자동 스케줄링 확인
  • 서비스 다운타임 측정
  • 로드 밸런싱 동작 확인

3. 노드 다운 시나리오

  • 노드 전원 차단 또는 네트워크 단절
  • Pod의 다른 노드 이동 확인
  • Liveness/Readiness Probe 동작 확인
  • 클러스터 자가 치유 메커니즘 관찰

4. 리소스 기반 스케줄링

  • CPU 온도 메트릭 수집 설정
  • Node Affinity/Anti-affinity 설정
  • 과열된 노드에서 Pod 자동 이동 실험
  • Resource Requests/Limits 조정

5. 롤링 업데이트 및 롤백

  • 새 이미지 버전 배포
  • 롤링 업데이트 진행 과정 관찰
  • maxSurge, maxUnavailable 설정 테스트
  • 문제 발생 시 즉시 롤백 (kubectl rollout undo)

6. 네트워크 분할 (Network Partition)

  • 노드 간 네트워크 단절 시뮬레이션
  • Split-brain 현상 관찰
  • 클러스터 상태 및 복구 확인
  • 네트워크 복구 후 재동기화 확인

모니터링 및 분석

  • Prometheus + Grafana로 메트릭 수집
  • 각 시나리오별 로그 분석
  • 복구 시간 및 서비스 영향도 측정
  • 실험 결과 문서화

기술 스택

  • k3s
  • kubectl
  • Prometheus / Grafana
  • Raspberry Pi 온도 센서
  • Linux 네트워크 도구 (iptables, tc 등)

예상 소요 시간

지속적 실험 및 개선 (2주+)

전체 프로젝트 기대 효과

1. 실무 경험 축적

  • 컨테이너 오케스트레이션 실전 경험
  • GitOps 기반 배포 자동화 구현
  • 장애 대응 능력 향상
  • 무중단 배포 전략 수립 및 실행

2. 인프라 이해도 향상

  • Kubernetes 핵심 개념 체득
  • 고가용성 시스템 설계 경험
  • 모니터링 및 로깅 파이프라인 구축
  • 네트워크 및 스토리지 관리

3. 포트폴리오 강화

  • 실제 운영 중인 서비스의 무중단 마이그레이션
  • 다양한 장애 시나리오 대응 사례
  • End-to-end CI/CD 파이프라인 구축 경험
  • 실험 결과 및 분석 자료

전체 일정

Phase 내용 예상 기간
Phase 1 컨테이너화 및 카나리 배포 1-2주
Phase 2 마스터 클러스터 편입 및 GitOps 1주
Phase 3 장애 시나리오 실험 2주+ (지속)

총 예상 기간: 4-5주 (방학 기간 내 완료 목표)

참고 사항

  • 모든 실험은 실제 운영 서비스에 영향을 주지 않도록 단계적으로 진행
  • 각 Phase 완료 시 중간 점검 및 문서화
  • 문제 발생 시 즉시 롤백 가능한 백업 전략 수립
  • 실험 결과는 블로그 포스팅 및 학습 기록으로 활용

본 프로젝트는 백엔드 개발자로서의 인프라 이해도를 높이고, 실무에서 요구되는 컨테이너 오케스트레이션 및 장애 대응 능력을 학습하기 위한 목적으로 진행됩니다.


학습 파이프라인 개선: 강의자료 데이터 소스 추가

개요

기존 학습 정보 수집 파이프라인에 강의자료 PDF 처리, Clova Notes 텍스트 처리 기능을 추가합니다.

배경

강의를 들으면서 생성되는 PDF 자료들과 강의 내용을 수집하고 정리하여 개인 학습 기록으로 남기고 시험공부에 활용하기 위한 기능이 필요했습니다.

구현 내용

1. PDF 파일 및 클로바 노트 stt 파일 수집 경로 구성

  • 강의자료 PDF 및 강의 내용 텍스트 자료 수집 및 업로드 시스템 구축
  • 기존 파이프라인과 통합 가능한 구조 설계

2. Gemini API 연동

  • PDF를 직접 API에 전송 (별도 텍스트 변환 불필요)
  • 요약 및 핵심 내용 추출
  • 구조화된 데이터로 변환

3. 처리 결과 저장

  • 개인 학습 노트 형태로 저장
  • 저작권 문제가 없는 내용만 블로그 포스팅에 사용
  • 개인 학습 기록 및 복습 목적으로 활용

기술 스택

  • API: Gemini API (PDF 직접 전송 지원)
  • 언어: Python
  • 저장소: 기존 파이프라인 데이터베이스

기대 효과

  • 강의자료 자동 정리 및 구조화
  • 학습 내용 통합 관리
  • 효율적인 복습 시스템 구축