Skip to content

History

BcKmini edited this page Jul 29, 2026 · 6 revisions

History

인프라 작업을 날짜별로 정리한 기록. 세부 트러블슈팅 로그는 팀 공유 문서(Notion 예정) 참고.

2026-07-22 — 프로젝트 파악

  • fowoco 조직 저장소가 3개가 아니라 5개(client/server/knowledge/ai/infra)라는 것 확인
  • ERD 확정본 공유받음 (company/user_account/worker/task/document/ticket/access_audit_log)

2026-07-23 — 인프라 방향 논의 시작

  • OpenStack으로 직접 관리하고 싶다는 요청 → 검토 결과 OpenStack은 소프트웨어일 뿐 서버 자체를 제공하지 않고, 오히려 DevStack 기준 최소 8vCPU/16GB급 서버가 추가로 필요해 소규모 데모엔 과함 → **k3s(경량 쿠버네티스)**로 결정
  • Oracle Cloud Always Free(ARM, 완전 무료)로 k3s 2노드 구성 계획, VCN·서브넷·API 키·CLI 세팅 진행
  • client(#99)·server(#31)에 임시 Dockerfile PR 올림

2026-07-27~28 — Oracle 실패, AWS로 전환

  • 도쿄 리전에서 Out of host capacity 반복 — 수동+자동 재시도 합산 138회 이상, 5일간 인스턴스 생성 실패
  • Oracle이 2026-06-15부로 Always Free ARM 할당량을 4→2 OCPU(12GB)로 공지 없이 축소한 사실 확인
  • 춘천 리전으로 우회하는 방안도 검토했으나, 춘천은 애초에 ARM Always Free 제외 대상이라 처음부터 막힌 경로였음을 확인
  • 클라우드별 가격 재조사(Oracle/GCP/AWS/Hetzner/DigitalOcean/Vultr/NHN/네이버) → 한 차례 Vultr(서울)으로 결정했다가, AWS 신규계정 $200 크레딧 + 재고 문제 없음을 재확인하고 최종적으로 AWS로 재결정
  • KT 에이블스쿨 크레딧 지원 여부 확인 → 없음

2026-07-28 — AWS 구축, infra 저장소·Wiki 세팅

  • IAM 사용자(fowoco-admin)·보안그룹·EC2 인스턴스(fowoco-node-1, m7i-flex.large) 생성 → 당일 완료 (Oracle 5일 대비 극적으로 빠름)
  • k3s 싱글 노드 설치, 로컬 kubectl 연결 확인
  • fowoco/infra 저장소에 k8s/ 매니페스트(namespace/postgres/server/ai/client/ingress) 작성 → PR #1
  • 작업 범위를 infra 저장소로 한정하기로 원칙 정함 (client/server/ai는 팀원이 매일 커밋하는 활성 저장소라 부수적으로 건드리지 않기로)
  • 문서를 저장소 README 대신 GitHub Wiki로 이전 (Home / Architecture / Deployment Guide / Deployment Plan)

2026-07-29 — 배포 전 점검, 실제 CI/CD 파이프라인 구축

  • 용량 기준선(서버 1대로 데모 트래픽 충분한지)과 향후 업그레이드 조건·절차를 문서화
  • 배포 전 재점검에서 문제 2건 발견:
    • 퍼블릭 IP가 고정이 아니었음 → Elastic IP 할당해 즉시 고정 (3.35.21.433.35.105.80), k3s 인증서·kubeconfig·Ingress 매니페스트 갱신
    • 보안그룹이 SSH(22)·k3s API(6443)를 0.0.0.0/0으로 전체 공개 — 접속 IP 확정되면 좁힐 예정 (아직 미조치)
  • client/server/ai실제 Dockerfile + GitHub Actions 배포 워크플로우를 PR로 올림
    • client #179 — 신규 Dockerfile (기존 #99는 팀에서 close됨)
    • server #66 — 기존 임시 Dockerfile의 Gradle 버전 버그 발견 및 수정 (gradle:8.10 고정 이미지가 Spring Boot 4.1.0이 요구하는 Gradle 8.14+를 만족 못 해 빌드 실패하던 것을 프로젝트 ./gradlew(9.5.1) 사용으로 수정, 로컬 빌드 성공 확인)
    • ai #5 — 기존 Dockerfile 그대로, 워크플로우만 추가
  • KUBE_CONFIG는 조직 레벨 대신 3개 저장소 개별 시크릿으로 등록 (조직 레벨은 admin:org라는 더 넓은 권한이 필요해서 최소 권한 원칙에 따라 변경)

참고

Clone this wiki locally