본문 바로가기
KT aivleschool

3차 미니프로젝트 : 클라우드 기본 인프라 구현

by 수박주스으 2025. 5. 23.

* 진행 일자 : 2025.05.16 ~ 05.19

 

>>> 1일차

아키텍쳐 구조

1. AZ-a, AZ-b, AZ-c 분산 배포되는 로드밸런싱 환경 구성

2. Web1, 2는 Private Subnet에 배포 & NAT를 통한 외부 통신 가능하도록 구성

3. Web1, 2는 Bastion server를 통해서만 ssh 접속 가능하도록 구성

4. LB(Load Balancer)를 통하여 Web서버 접근 시 서버 별로 다른 웹페이지 출력

* Bastion : Cloud9 또는 EC2 사용

 

 

진행 과정

1. 기본 인프라 구조 설계 (VPC, 서브넷, 라우팅테이블, NAT게이트웨이, 인터넷게이트웨이)

- 3개의 가용영역, 각 영역 내 public, private 서브넷 한 개씩 생성

- 인터넷게이트웨이 > public용 라우팅 테이블 > public 서브넷

- NAT게이트웨이 > private용 라우팅 테이블 > private 서브넷

 

2. 인스턴스 생성

Bastion

- AZ-a의 public

 

Web

- AZ-b, AZ-c의 private

 

3. Bastion에 접속해서 private Web Server에 접속해보기

// cmd에서 Bastion으로 pem파일 전송
scp -i [KEY.pem] [KEY.pem] ec2-user@BastionIP:/home/ec2-user/

// 권한 변경 후 내부 IP 접속
chmod 600 [KEY.pem] // 권한 변경
ssh -i [KEY.pem] ec2-user@[내부IP]

// 내부에 웹 서버 구축
sudo yum update -y
sudo yum install httpd -y
sudo service httpd start

// html 파일 수정
sudo -i
echo "Web Server 1" | sudo tee /var/www/html/index.html

 

- We1, Web2에서 같은 작업 수행

- 이 단계에서 웹서버를 구축하지 않고 다음단계로 넘어갔으니,,, 웹 페이지 접속이 안됐던 것이었다. 로드밸런서 생성하고 연결까지 마쳤는데 자꾸만 웹페이지 연결이 안된다는 메시지가 떴다. 당연하다. 웹 서버 구축을 안했으니 ㅋㅋㅋ 로드밸런서 대상그룹에 각 인스턴스가 unhealthy로 뜨길래 포트문제인 줄 알고 지웠다 새로 만들었다 엄청난 삽질을 했다.

 

4. 로드밸런서 생성

- 로드밸런서 생성 후 DNS이름에 뜬 주소 복사 후, 웹 페이지 주소창에 붙여넣기 -> 웹 서버 정상 동작 확인

- 서버 별 서로 다른 웹 페이지 출력 확인

 

 

 

>>> 2일차

아키텍쳐 구성도로 작성하여 문서화

활용 기술 : Draw.io

https://www.drawio.com/

 

draw.io

Security-first diagramming for teams. Bring your storage to our online tool, or save locally with the desktop app. No login or registration required.

www.drawio.com

- 웹 기반의 무료 다이어그램 작성 도구

- 공식 아이콘 모음 : https://aws.amazon.com/ko/architecture/icons/

 

 

추가 설계방안 모색

- AWS WAF을 참고하여 보완

- "내가 어떤 서비스를 만들 것인가?"에 따라 어떤 원칙을 중요시해야하는 지 다름

서비스의 사용자 수가 얼마나 되는가?

그 정보가 민감정보인가?

https://aws.amazon.com/ko/architecture/well-architected/?wa-lens-whitepapers.sort-by=item.additionalFields.sortDate&wa-lens-whitepapers.sort-order=desc&wa-guidance-whitepapers.sort-by=item.additionalFields.sortDate&wa-guidance-whitepapers.sort-order=desc

 

 

 

구성도에 반영

- '갤럭시 S25 사전예약 사이트'를 구현한다고 가정

1) 가용성 : Application Load Balancer, Auto Scaling Group

2) 보안/안정성 : WAF, S3/EBS

3) 비용 최적화 : RDS/S3/Auto Scaling