[KT] AIVLE School/미니 프로젝트

미니프로젝트 3 (클라우드)

Boxya 2025. 6. 6. 19:39

[KT] AIVLE SCHOOL 34, 35일차

3차 미니 프로젝트에서는 아키텍처 구성도를 보고

AWS에서 실제로 클라우드 인프라를 구현해보았다.

제공된 아키텍처 구성도

az-a, az-b, az-c 총 3개의 가용 영역을 사용한다.

Public Subnet 3개, Private Subnet 3개를 사용한다.

Load Balancer, Web 서버 2개, Bastion Host, NAT Gateway 를 사용한다.

Web1, Web2는 Private Subnet에 배포되고

NAT를 통한 외부 통신이 가능하도록 구성된다.

또한 Web1, Web2는 Bastion server를 통해서만 SSH 접속 가능하도록 구성된다.

Load Balancer, Bastion, NAT Gateway는 Public Subnet에 위치한다.

 

1. 외부 사용자의 HTTP 요청이 Load Balancer로 들어온다.

2. Load Balancer는 요청을 Web1 또는 Web2에 분산 처리한다.

3. Web1/2는 NAT Gateway를 통해 인터넷에 접근한다.

4.  관리자는 Bastion Host에 SSH로 접속한다. (Public Subnet)

5. Bastion을 통해 Web1, Web2에 내부 접근한다.


전체 구성 순서를 요약하자면 다음과 같다.
1. VPC + Subnet + IGW + NAT 구성 (네트워크 준비)
2. Bastion (퍼블릭) 인스턴스 만들기
3. Web 서버들 (프라이빗) 만들기
4. Load Balancer 연결
5. 접속 테스트 (웹 접속 + 내부 SSH)

1단계: 네트워크 환경 구성
1-1. VPC 생성
CIDR: 10.0.0.0/16

1-2. Subnet 6개 만들기
Public:
az-a: 10.0.10.0/24 (LB, Bastion, NAT용)
az-b: 10.0.20.0/24
az-c: 10.0.30.0/24
Private:
az-a: 10.0.1.0/24 (Web1)
az-b: 10.0.2.0/24 (Web2)
az-c: 10.0.3.0/24 (예비용)

1-3. Internet Gateway 연결
IGW 생성 후 → VPC에 연결

1-4. NAT Gateway 만들기
NAT Gateway를 10.0.10.0/24 퍼블릭 서브넷에 생성
Elastic IP 할당

1-5. 라우팅 테이블 설정
퍼블릭용 RT: IGW로 라우팅
프라이빗용 RT: NAT Gateway로 라우팅


2단계: Bastion 인스턴스 생성 (public)
2-1. EC2 인스턴스 생성
Subnet: 10.0.10.0/24
퍼블릭 IP 할당
보안 그룹:
Inbound: SSH(22) → 본인 IP만 허용

2-2. Cloud9에서 키 파일 생성 후 Bastion 접속 확인


3단계: Web1, Web2 인스턴스 생성 (Private)
3-1. Web1
Subnet: 10.0.1.0/24 (az-a)
3-2. Web2
Subnet: 10.0.2.0/24 (az-b)
공통
퍼블릭 IP X
보안 그룹:
Inbound:
HTTP(80): Load Balancer SG만 허용
SSH(22): Bastion SG만 허용


4단계: Load Balancer 생성
4-1. ALB 생성
타입: Application Load Balancer
서브넷: 퍼블릭 서브넷 2개 이상 선택
리스너: 포트 80 (HTTP)

4-2. Target Group 생성
대상: Web1, Web2 인스턴스 추가
헬스 체크: /


4-3. 보안 그룹 설정
Inbound: HTTP(80) 허용 (모두 허용 가능)


5단계: 테스트

5-1. 웹 서버 원격 접속 후, 아래 명령으로 웹 서버 구현하기

sudo yum update -y
sudo yum install httpd -y
sudo service httpd start

sudo -i
echo Web Server 1 > /var/www/html/index.html

 

5-2. 브라우저에서 ELB DNS 주소 입력해 접속하기

WEB1/2 번갈아서 매핑되는 것 확인

 

5-3. 외부 접속 테스트
브라우저에서 ALB DNS 접속:
http://<ALB-DNS>
→ Web1 또는 Web2 페이지가 랜덤하게 보이면 성공!

5-4. 내부 SSH 테스트
Cloud9 or 로컬 PC → Bastion → Web1 or Web2 접속:
ssh -i my-key.pem ec2-user@<Web1의 프라이빗 IP>

쉽게 이해하는 팁

VPC = 우리 회사 건물
서브넷 = 그 안의 사무실들 (공개/비공개)
EC2 = 컴퓨터 직원
Cloud9 = 내 PC 대신 쓰는 노트북
ELB = 방문자 안내 데스크, 사용자 요청을 분산
Bastion = 직원 전용 출입문, 내부 서버 접속용 관문

NAT GW = 내부 서버가 나갈 때 대신 나감


2일차에는 1일차에 구성한 인프라에서

추가로 보완 설계하여 아키텍처 구성도를 작성하였다.

우리조의 보완한 아키텍처는 이와 같고,

운영 우수성, 보안, 안정성, 성능 효율성, 비용 최적화, 지속가능성을

보완하였다.

1. CloudFront와 S3를 연동해 정적 콘텐츠를 빠르고 안전하게 제공

2. RDS를 통해 데이터 저장과 자동 백업 시스템을 구축

3. CloudWatch로 웹 서버와 리소스를 실시간 모니터링

4. Auto Scaling을 활용해 트래픽 변화에 따라 서버를 자동으로 확장/축소

 

'[KT] AIVLE School > 미니 프로젝트' 카테고리의 다른 글

미니 프로젝트 4 (Web)  (6) 2025.06.15
미니 프로젝트 2 (생성형 AI)  (1) 2025.06.06
미니 프로젝트 1  (0) 2025.04.15