# 학습 목표
- EC2, S3, RDS와 Repository의 소스코드를 가지고 웹 애플리케이션을 배포하기 위해 어떤 아키텍처를 가져야하는지 이해해야 합니다.
- 먼저 각 client , server 디렉토리에서 dependencies를 npm install 을 통해 설치합니다.
- 클라이언트와 서버 디렉토리에 각각 위치한 .env.example 파일을 보며 어떤 환경변수들이 정의되어 있는지 확인합니다.
- .env.example 파일을 .env 파일로 생성하여 REACT_APP_API_URL에 EC2에 배포한 서버 주소로 설정합니다.
- S3를 통해 client 디렉토리에 있는 소스코드를 먼저 정적 웹 호스팅 방식으로 배포합니다.
- .env 파일의 테스트에 필요한 환경변수를 채워넣습니다.
- client 디렉토리에서 npm run test1 명령을 사용해 테스트를 전부 통과하는지 확인하고, 웹 애플리케이션이 정상적으로 배포되어 작동하는지 확인합니다.
- 테스트가 모두 통과되면 제출하고, 다음 HTTPS 스프린트로 넘어갑니다.
# 해결 과제
- Sprint Repository의 소스코드를 이용하여, 어떤 구조로 구성되어 있는지 확인합니다.
- HTTP 스프린트의 테스트를 모두 통과해야 합니다.
- 웹 애플리케이션이 배포 상태에서 잘 작동해야 합니다.
# 실습 자료
# 과제 항목별 진행 상황
⬛ 클라이언트 배포(S3)
1. S3 버킷 생성하기
- Amazon S3 → 버킷 만들기
버킷 이름과 AWS 리전을 선택

버킷의 퍼블릭 액세스 허용을 위한 차단 해제

2. 정적 웹 사이트 호스팅 활성화
- Amazon S3 → 버킷 → 속성 → 정적 웹 사이트 호스팅 편집
정적 웹 사이트 호스팅 활성화 및 인덱스 문서 설정

3. 버킷 정책 설정
- Amazon S3 → 버킷 → 권한 → 버킷 정책
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bighead-pair-1/*"
}
]
}
4. FrontEnd 소스 코드 배포
- Amazon S3 → 버킷 → 객체 → 업로드

5. 호스팅 결과 확인하기

⬛ 서버 배포(EC2)
1. EC2 인스턴스 생성
- Amazon EC2 → 인스턴스 → 인스턴스 시작
인스턴스 이름과 AMI 설정 간단한 node.js 기반 BackEnd 서버로 활용할 우분투 이미지를 선택하였음.

인스턴스 유형과 키 페어 설정 간단한 node.js 기반 BackEnd 서버로 활용할 t2.micro 유형을 선택하였음.

터미널 접속을 위한 SSH 트래픽과 S3와의 통신을 위한 HTTP 트래픽 허용

스토리지 구성 간단한 node.js 기반 BackEnd 서버로 활용할 1x 8 GiB gp2 루트 볼륨으로 선택하였음.

2. EC2 인스턴스에 SSH 접속
$ ssh -i "my-instance-key-pair.pem" ubuntu@ec2-3-37-87-226.ap-northeast-2.compute.amazonaws.com
3. 개발 환경 세팅 (Git, node) – 과정 생략
4. 서버 기동 결과 확인하기

⬛ 데이터베이스 연결(RDS)
1. 데이터베이스 생성
- Amazon RDS → 데이터베이스 → 데이터베이스 생성


2. test DB 존재 여부 확인
user01@ubuntu:~/바탕화면/Github/sprint-aws$ mysql -h test.cjybiasweuzf.ap-northeast-2.rds.amazonaws.com -u admin -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 13
Server version: 8.0.32 Source distribution
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
3. WAS → DB 연결 결과 확인

# TROUBLE SHOOTING LOG
💡 DB 연결 실패
원인
WAS에서는 test DB에 접속을 하고 있었으나, 직접 DB 접속 결과 DB생성시 추가구성 옵션에서 초기 DB_name을 명시해주지 않음

해결 방안
- sys DB를 제거 후 test DB를 생성하여 해결
- RDS에서 DB생성시 추가옵션에서 초기DB명을 설정하여 해결
💡 버킷 정책 설정시 Version 을 변경할 수 없는 현상
원인
해당 버전의 날짜는 정책 언어의 버전을 나타내기 때문에 임의로 변경할 수 없음
해결 방안
Version": "2012-10-17” 로 지정
# 피드백
오태경 | 박찬규 |
---|---|
온프레미스에서 구축해봤던 3 Tier 아키텍처를 클라우드에서 구축해보니, 클라우드의 장단점을 더욱 명확히 알 수 있었다. | DB 조작할때 GUI에서 하지말고 CLI에서 하는 습관을 들이라고 김은아님에게 조언을 들었다. 다음부터는 CLI로 진행 |