|
1 | 1 | # flooding-devOps |
2 | 2 |
|
3 | 3 | <img width="847" height="552" alt="스크린샷 2025-09-15 오전 9 20 57" src="https://github.com/user-attachments/assets/9e6630cf-0e0b-4bcc-af85-fdba64a7f9c1" /> |
| 4 | + |
| 5 | +# flooding AWS 인프라 아키텍처 |
| 6 | + |
| 7 | +본 레포지토리는 Vercel 기반 프론트엔드와 AWS 기반 백엔드 인프라를 포함한 전체 CI/CD 및 배포 구조를 설명합니다. |
| 8 | + |
| 9 | +아키텍처는 **AWS VPC, EC2 Auto Scaling, ALB, NAT/Bastion, RDS(Postgres), Valkey, CloudWatch, CodeDeploy, EventBridge, Lambda, Grafana** 등을 포함하고 있으며, |
| 10 | + |
| 11 | +프론트엔드는 **Vercel → GitHub 자동 배포**로 구성되어 있습니다. |
| 12 | + |
| 13 | +--- |
| 14 | + |
| 15 | +## 전체 아키텍처 개요 |
| 16 | + |
| 17 | +본 인프라는 다음과 같은 흐름으로 구성됩니다: |
| 18 | + |
| 19 | +### 1. **Frontend (Client / Vercel)** |
| 20 | + |
| 21 | +- 사용자는 Vercel에 배포된 웹사이트에 접속 |
| 22 | +- 프론트엔드는 GitHub Push → Vercel 자동 배포 |
| 23 | +- API 호출 시 AWS ALB를 통해 백엔드로 전달 |
| 24 | + |
| 25 | +--- |
| 26 | + |
| 27 | +## 2. **Backend (AWS)** |
| 28 | + |
| 29 | +### VPC 구조 |
| 30 | + |
| 31 | +- **Public Subnet** |
| 32 | + - Application Load Balancer(ALB) |
| 33 | + - NAT/Bastion 서버(SSH 접근) |
| 34 | +- **Private Subnet** |
| 35 | + - Grafana Dashboard(현재 삭제) |
| 36 | + - Jenkins |
| 37 | + - EC2 Server(Auto Scailing) |
| 38 | +- **Protected Subnet** |
| 39 | + - Postgres DB |
| 40 | + - Valkey |
| 41 | + |
| 42 | +--- |
| 43 | + |
| 44 | +## 3. **컴퓨팅 및 모니터링** |
| 45 | + |
| 46 | +### EC2 Auto Scaling Group |
| 47 | + |
| 48 | +- 백엔드 서버 가동 |
| 49 | +- CloudWatch 지표 기반 자동 확장/축소 |
| 50 | +- CodeDeploy Blue/Green 전략으로 무중단 배포 |
| 51 | + |
| 52 | +### Grafana |
| 53 | + |
| 54 | +- CloudWatch → 메트릭 수집 → Grafana 시각화 |
| 55 | + |
| 56 | +--- |
| 57 | + |
| 58 | +## 4. **CI/CD 파이프라인** |
| 59 | + |
| 60 | +### Backend |
| 61 | + |
| 62 | +GitHub → Jenkins → CodeDeploy → Blue/Green 배포 |
| 63 | + |
| 64 | +- EventBridge를 통해 배포 이벤트 발생 |
| 65 | +- Lambda가 Discord Webhook으로 알림 전송 |
| 66 | + |
| 67 | +### Frontend |
| 68 | + |
| 69 | +GitHub → Vercel |
| 70 | + |
| 71 | +- Push 시 자동 반영 |
| 72 | + |
| 73 | +--- |
| 74 | + |
| 75 | +## 5. **스토리지 / 레지스트리** |
| 76 | + |
| 77 | +- **Amazon ECR**: Docker 이미지 저장 |
| 78 | +- **Amazon S3**: 정적 파일 및 배포 아티팩트 저장 |
| 79 | + |
| 80 | +--- |
| 81 | + |
| 82 | +## 6. **보안 & 접근** |
| 83 | + |
| 84 | +### Bastion (NAT 겸용) |
| 85 | + |
| 86 | +- DevOps 팀이 SSH로 Private Subnet의 서버 접근 |
| 87 | +- 모든 서버는 Public IP 없이 Private 환경에서 운영 |
| 88 | + |
| 89 | +--- |
| 90 | + |
| 91 | +## 📦 기술 스택 |
| 92 | + |
| 93 | +| 영역 | 기술 | |
| 94 | +| --- | --- | |
| 95 | +| Infra | EC2, ASG, Vercel | |
| 96 | +| Networking | VPC, ALB, Security Group | |
| 97 | +| Database | Postgres, Valkey | |
| 98 | +| CI/CD | GitHub, CodeDeploy, EventBridge, Lambda | |
| 99 | +| Monitoring | CloudWatch, Grafana | |
| 100 | +| Frontend | Vercel | |
| 101 | +| Storage | S3, ECR | |
| 102 | +| Notification | Discord Webhook | |
| 103 | + |
| 104 | +--- |
| 105 | + |
| 106 | +## 흐름 요약 |
| 107 | + |
| 108 | +1. **Frontend 개발자** → GitHub push → Vercel 자동 배포 |
| 109 | +2. **Backend 개발자** → GitHub push → Jenkins(Build) → AWS CodeDeploy → Blue/Green 배포 |
| 110 | +3. **배포 완료 시** → EventBridge → Lambda → Discord 알림 |
| 111 | +4. **사용자(Client)** → Vercel 사이트 접속 → API 요청 → AWS ALB → EC2 |
| 112 | +5. **운영팀(DevOps)** → Bastion 통해 Private 서버 SSH 접근 |
| 113 | +6. **CloudWatch** → Grafana에 지표 제공 → 모니터링 |
0 commit comments