Skip to content

SF-DeeFacto/iac

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeeFacto AWS Infrastructure as Code (IaC)

Terraform을 활용하여 AWS 클라우드 인프라를 관리하는 Infrastructure as Code 프로젝트입니다.

📋 프로젝트 개요

이 프로젝트는 DeeFacto 플랫폼의 AWS 인프라를 Terraform으로 관리하며, 개발 환경(dev)을 중심으로 구성되어 있습니다. IoT 데이터 수집, 실시간 분석, AI 기반 리포트 생성까지 포함한 종합적인 데이터 파이프라인을 구축합니다.

🏗️ 아키텍처 구성

주요 AWS 서비스

  • VPC: 멀티 AZ 기반 네트워크 인프라
  • EKS: Kubernetes 클러스터 (v1.33)
  • EC2: Jenkins, Bastion, Edge Computer 인스턴스
  • S3: 다양한 용도의 스토리지 버킷
  • ECR: Docker 컨테이너 이미지 저장소
  • RDS: 관계형 데이터베이스
  • ElastiCache: 인메모리 캐시 (Redis)
  • OpenSearch: 검색 및 분석 엔진
  • Lambda: 서버리스 컴퓨팅
  • Kinesis: 실시간 데이터 스트리밍
  • Kinesis Firehose: 데이터 전송 서비스
  • AWS Glue: ETL 및 데이터 크롤링
  • Bedrock: AI 기반 리포트 생성
  • CloudWatch: 모니터링 및 이벤트 관리
  • Route53: DNS 관리
  • CloudFront: CDN 서비스
  • IoT Core: IoT 디바이스 연결
  • SQS: 메시지 큐 서비스
  • IAM: 접근 제어 및 권한 관리

📁 프로젝트 구조

iac/
├── layers/
│   └── dev/                    # 개발 환경
│       ├── vpc/               # VPC 네트워크 구성
│       ├── eks/               # EKS 클러스터
│       ├── ec2/               # EC2 인스턴스 (Jenkins, Bastion, Edge)
│       ├── s3/                # S3 버킷들
│       ├── ecr/               # ECR 리포지토리
│       ├── rds/               # RDS 데이터베이스
│       ├── elasticache/       # ElastiCache 클러스터
│       ├── opensearch/        # OpenSearch 도메인
│       ├── lambda/            # Lambda 함수들
│       ├── kinesis/           # Kinesis 스트림
│       ├── kinesis_firehose/  # Kinesis Firehose
│       ├── glue/              # AWS Glue (ETL, 크롤러, 워크플로우)
│       ├── bedrock/           # AWS Bedrock (AI 에이전트)
│       ├── cloudwatch/        # CloudWatch 이벤트 규칙
│       ├── route53/           # DNS 레코드
│       ├── cloudfront/        # CloudFront 배포
│       ├── sqs/               # SQS 큐
│       ├── iot/               # IoT Core
│       ├── iam/               # IAM 역할 및 정책
│       ├── auto_scaling/      # Auto Scaling 그룹
│       └── sg/                # 보안 그룹
├── modules/                   # 재사용 가능한 모듈
└── README.md

🚀 시작하기

사전 요구사항

설치 및 설정

  1. 저장소 클론

    git clone <repository-url>
    cd iac
  2. AWS 자격 증명 설정

    aws configure
  3. Terraform 초기화

    cd layers/dev/vpc
    terraform init
  4. 인프라 배포

    terraform plan
    terraform apply

🔧 환경별 배포

개발 환경 (dev)

각 서비스별로 독립적으로 배포할 수 있습니다:

# VPC 네트워크 배포
cd layers/dev/vpc
terraform init && terraform apply

# EKS 클러스터 배포
cd layers/dev/eks
terraform init && terraform apply

# EC2 인스턴스 배포
cd layers/dev/ec2
terraform init && terraform apply

# S3 버킷 배포
cd layers/dev/s3
terraform init && terraform apply

# AWS Glue ETL 파이프라인 배포
cd layers/dev/glue
terraform init && terraform apply

# Bedrock AI 에이전트 배포
cd layers/dev/bedrock
terraform init && terraform apply

📊 주요 구성 요소

VPC 네트워크

  • CIDR: 10.0.0.0/16
  • Public Subnets: 2개 AZ (ap-northeast-2a, 2b)
  • Private Subnets: 2개 AZ (ap-northeast-2a, 2b)
  • NAT Gateway: Private 서브넷의 아웃바운드 트래픽 처리
  • VPC Endpoints: S3 등 AWS 서비스 직접 접근

EKS 클러스터

  • Kubernetes 버전: 1.33
  • 서비스 CIDR: 172.20.0.0/16
  • Managed Node Groups: 자동 스케일링 지원
  • 애드온: CoreDNS, kube-proxy, VPC CNI, EBS CSI Driver 등

EC2 인스턴스

  • Jenkins: CI/CD 파이프라인 (t3.small)
  • Bastion: 보안 접근 게이트웨이 (t2.micro)
  • Edge Computer: IoT 데이터 처리 (t3a.medium)

S3 버킷

  • terraform: Terraform 상태 파일 저장
  • frontimage: 프론트엔드 이미지 저장
  • rawdata: 원시 데이터 저장 (Kinesis Firehose 대상)
  • mesdata: MES 데이터 저장
  • report: AI 생성 리포트 저장
  • glueassets: AWS Glue 자산 저장

데이터 파이프라인

  • Kinesis Stream: 실시간 데이터 스트리밍
  • Kinesis Firehose: S3로 데이터 전송
  • AWS Glue:
    • 크롤러: S3 데이터 스키마 자동 감지
    • 워크플로우: 5분마다 자동 실행
    • ETL Job: 데이터 요약 및 RDS 적재
  • OpenSearch: 실시간 데이터 검색 및 분석
  • Bedrock: AI 기반 리포트 자동 생성

AI 및 분석

  • AWS Bedrock: Claude 3 Haiku 모델 기반 AI 에이전트
    • 리포트 생성 에이전트
    • MES 데이터 분석 에이전트
  • CloudWatch: 이벤트 기반 자동 스케일링 관리

🔐 보안 고려사항

  • 모든 S3 버킷은 퍼블릭 액세스 차단
  • VPC 내부 통신은 Private 서브넷 활용
  • EKS 클러스터는 Private/Public 엔드포인트 모두 활성화
  • IAM 역할 기반 접근 제어
  • 보안 그룹을 통한 세밀한 네트워크 접근 제어
  • EC2 인스턴스는 최소 권한 원칙 적용

📝 변수 설정

각 레이어별로 variables.tf 파일에서 설정 가능한 변수들을 확인할 수 있습니다:

  • VPC: CIDR 블록, 가용 영역
  • EKS: 클러스터 이름, 노드 그룹 설정
  • S3: 버킷 이름, 정책 설정
  • Glue: 데이터베이스, 크롤러, 워크플로우 설정
  • Bedrock: AI 모델, 에이전트 설정

🔄 상태 관리

Terraform 상태는 S3 버킷(deefacto-terraform-tfstate-apne2)에 저장되며, 버전 관리가 활성화되어 있습니다.

🛠️ 유지보수

리소스 업데이트

terraform plan
terraform apply

리소스 삭제

terraform destroy

상태 확인

terraform show
terraform state list

📈 모니터링 및 로깅

  • CloudWatch: 인프라 모니터링 및 알람
  • EKS 로깅: 클러스터 제어판 로그
  • Glue 로깅: ETL 작업 실행 로그
  • Lambda 로깅: 서버리스 함수 실행 로그

🔄 데이터 플로우

  1. IoT 디바이스IoT CoreLambdaOpenSearch
  2. S3 Raw DataGlue CrawlerGlue JobRDS
  3. 분석 데이터Bedrock AI리포트 생성S3 Report

📞 지원

프로젝트 관련 문의사항이나 이슈가 있으시면 GitHub Issues를 통해 연락해 주세요.

📄 라이선스

이 프로젝트는 MIT License 하에 배포됩니다.


주의: 프로덕션 환경에 배포하기 전에 모든 설정을 검토하고 테스트해 주세요.

DeeFacto Development Team 🚀

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors