이 프로젝트는 Terraform을 활용하여 단일 인스턴스 VM부터 복합적인 멀티클라우드 Kubernetes 클러스터까지 4단계에 걸친 Looper 서비스의 인프라 구축 과정을 담고 있습니다.
해당 IaC는 클라우드 리소스 생성에 사용되었으며, 실제 애플리케이션 배포 및 일부 의존성 설치는 수동으로 진행되었습니다.
v4_aws_kubeadm/
V4는 AWS 기반의 프로덕션 레벨의 Kubernetes 클러스터로, EKS 대신 kubeadm을 사용한 자체 구축 클러스터입니다. 멀티클라우드 환경과 하이브리드 연결을 통해 요구사항에 맞는 구조를 설계하고 구축했습니다.
핵심 아키텍처:
- Multi-AZ 배포: 2개 가용 영역에 걸친 고가용성 설계
- Control Plane: 단일 마스터 노드 (확장 가능한 구조)
- GPU 워크로드 전용 Node (GCP): AI 추론 모델 서버를 위한 GPU 가속이 가능한 노드
- Worker Nodes (AWS): 다중 AZ 분산 배치로 장애 복구 능력 강화
- Kafka Node (AWS): 메시징 시스템을 위한 독립 노드
네트워킹 (AWS VPC 모듈):
├── Public Subnets (2 AZ) # NAT Gateway, Load Balancer
├── Private K8s Subnets (2 AZ) # Kubernetes 노드
└── Private RDS Subnets (2 AZ) # 데이터베이스
보안 (Security 모듈):
- Security Groups: 계층별 네트워크 보안 규칙
- IAM Roles: External Secrets Operator를 위한 IRSA 설정
- VPC Endpoint: 프라이빗 통신을 위한 AWS 서비스 엔드포인트
Kubernetes 노드 (k8s 모듈):
- kubeadm 기반: 완전한 제어권을 가진 클러스터 구축
- Container Runtime: CRI-O 사용
- CNI: Calico 네트워크 플러그인
- 암호화된 스토리지: EBS 볼륨 암호화
데이터베이스 (RDS 모듈):
- Multi-AZ RDS: 고가용성 관리형 데이터베이스
- 자동 백업: 7일 보존 정책
- 암호화: 저장 및 전송 중 데이터 암호화
- 서브넷 그룹: 프라이빗 서브넷 격리
로드 밸런싱 (NLB 모듈):
- Network Load Balancer: Layer 4 로드 밸런싱
- Target Groups: Kubernetes NodePort 서비스 연결
- SSL/TLS 종료: ACM 인증서를 통한 HTTPS 지원
- Route53 통합: DNS 자동 관리
특화된 GPU 워크로드 지원:
- NVIDIA GPU 인스턴스: p3, g4dn 인스턴스 타입 지원
- GPU Operator: Kubernetes GPU 스케줄링
- CUDA 환경: 컨테이너 기반 GPU 워크로드
- 리소스 격리: GPU 전용 노드 풀
보안 접근 게이트웨이:
- OpenVPN Server: 안전한 클러스터 접근
- 클라이언트 인증서: PKI 기반 인증 시스템
- 네트워크 라우팅: VPC 내부 리소스 접근
- 로그 및 모니터링: 접근 로그 추적
하이브리드 클라우드 연결:
VPC Peering:
- AWS VPC 간 연결: OpenVPN VPC와 Kubernetes VPC 피어링
- 라우팅 테이블: 자동 경로 전파
- 보안 그룹: 크로스 VPC 통신 규칙
Site-to-Site VPN:
- AWS-GCP 연결: IPSec VPN 터널
- BGP 라우팅: 동적 경로 학습
- 고가용성: 이중화된 VPN 터널
- 암호화 통신: AES-256 암호화
- Pod-to-Pod 통신: Calico CNI VXLAN Overlay
네트워크 토폴로지:
GCP VPC (10.0.0.0/16)
↕ Site-to-Site VPN
AWS K8s VPC (10.1.0.0/16)
↕ VPC Peering
AWS OpenVPN VPC (10.2.0.0/16)
V3는 확장 가능하고 고가용성을 제공하는 컨테이너 기반의 3계층 웹 애플리케이션 아키텍처입니다. 모듈화된 설계를 통해 각 계층을 독립적으로 관리하고 확장할 수 있습니다.
3-Tier 아키텍처 구성:
- Global Load Balancer: HTTP(S) 로드 밸런서로 전 세계 트래픽 분산
- SSL/TLS 인증서: Google 관리형 SSL 인증서 자동 프로비저닝
- Health Check: 백엔드 서비스 상태 모니터링
- Instance Group Manager: 자동 스케일링과 롤링 업데이트 지원
- Cloud NAT: 아웃바운드 인터넷 접근 제공
- DB: 커스텀 PostgreSQL 데이터베이스 & ChromaDB 서버
- Persistent Disk: 고성능 SSD 스토리지
- 백업 자동화: Cloud Storage를 활용한 정기 백업
- 보안 격리: 데이터베이스 전용 서브넷 분리
모듈 구조:
├── modules/
│ ├── network/ # VPC, 서브넷, Cloud NAT, 방화벽
│ ├── iam/ # Service Account, IAM 역할 및 권한
│ ├── database/ # 데이터베이스 인스턴스 및 백업
│ ├── application/ # 애플리케이션 서버 그룹
│ └── load_balancer/ # 로드 밸런서 및 Health Check
보안 강화 기능:
- IAP (Identity-Aware Proxy): 제로 트러스트 SSH 접근
- Private Google Access: 프라이빗 IP로 Google 서비스 접근
- 최소 권한 IAM: 각 계층별 필요 최소 권한 부여
- 네트워크 태그: 세밀한 방화벽 규칙 적용
v2_gcp_vm_gpu/

V2는 V1의 기본 구조를 유지하면서 GPU 가속 기능을 추가한 버전입니다. AI/ML 워크로드와 고성능 컴퓨팅이 필요한 애플리케이션을 위한 인프라를 제공합니다.
V1 대비 주요 개선사항:
- NVIDIA L4 GPU: 머신러닝 및 AI 워크로드 가속화
- GPU 스케줄링 정책:
on_host_maintenance = "TERMINATE"
설정으로 GPU 워크로드 최적화 - 전용 머신 타입: GPU를 지원하는 인스턴스 타입 선택
- GPU 드라이버: 시작 스크립트를 통한 NVIDIA 드라이버 자동 설치
기술적 특징:
- GPU 리소스 할당 및 관리
- CUDA 환경 자동 구성
- 비용 최적화를 위한 preemptible 인스턴스 옵션
- GPU 모니터링 및 사용률 추적
사용 사례:
- 딥러닝 모델 추론
- 임베딩 모델 사용
v1_gcp_vm/

V1은 Google Cloud Platform에서 가장 기본적인 단일 VM 인프라를 구축한 버전입니다.
주요 구성 요소:
- Compute Engine 인스턴스: 단일 VM으로 웹 애플리케이션 호스팅
- VPC 네트워크: 커스텀 VPC와 서브넷 생성으로 네트워크 격리
- 방화벽 규칙: HTTP(80), HTTPS(443), SSH(22) 포트 허용
- 정적 IP 주소: 외부 접근을 위한 고정 IP 할당
- Service Account: 최소 권한 원칙을 적용한 서비스 계정
- DNS 연동: Cloud DNS를 통한 도메인 연결
- 시작 스크립트: 템플릿 파일을 통한 VM 초기 설정 자동화
카테고리 | 기술 스택 |
---|---|
Infrastructure as Code | Terraform, HCL |
Cloud Providers | Google Cloud Platform, Amazon Web Services |
Container Orchestration | Kubernetes (kubeadm) |
Networking | VPC, VPC Peering, Site-to-Site VPN, Cloud NAT |
Load Balancing | AWS Network Load Balancer, GCP HTTP(S) LB |
Security | IAM, Security Groups, Service Accounts, IAP |
Database | Amazon RDS (Multi-AZ), Redis (StatefulSet), ChromaDB (StatefulSet) |
Message Queue | Apache Kafka (StatefulSet) |
Monitoring & Observability | Prometheus, Grafana, Loki, Tempo, OpenTelemetry Collector |
DNS | Cloud DNS, Route53 |
Storage | Persistent Disk, EBS |
- 컨테이너 기반 (Docker Compose) → Kubernetes
- 단일 클라우드 → 멀티클라우드 하이브리드
- 보안 접근: OpenVPN을 통한 프라이빗 클러스터 접근
- 마이크로서비스 아키텍처 지원
- DevOps 및 GitOps 워크플로우 준비
- 단일 인스턴스 → 컨테이너 기반의 3계층 아키텍처
- 확장성과 가용성 대폭 향상
- 모듈화를 통한 코드 재사용성 확보
- 로드 밸런싱과 자동 스케일링 도입
- 기본 VM → GPU 가속 VM
- 머신러닝/AI 워크로드 지원 추가
- 고성능 컴퓨팅 환경 구축
- AWS와 GCP 간 하이브리드 연결
- 클라우드 종속성 최소화
- 재해 복구 및 비즈니스 연속성
- 코드 기반 인프라 관리
- 환경별 변수 관리 및 재사용
- 모듈화를 통한 유지보수성 향상
- 최소 권한 원칙 일관 적용
- 네트워크 계층별 보안 격리
- 암호화 통신 및 저장
- Multi-AZ 배포를 통한 장애 복구
- 자동 스케일링 및 로드 밸런싱
- 무중단 배포 지원