상세 컨텐츠

본문 제목

3-티어 아키텍처 WAS로 만들어보기 ( S3, EC2, RDS)

2023 실습 기록

by DEVOPS_HANSU 2023. 4. 17. 18:02

본문

클라이언트 - 서버 - 데이터베이스를 로컬환경이 아닌 AWS를 이용하여 생성하고, 작동원리를 확인하자

 

1. S3-버킷을 이용한 프론트엔트 홈페이지를 출력하기.

1-1.버킷 생성하기

더보기

우측 상단 버킷만들기 버튼을 눌러 신규 버킷을 생성한다.

버킷의 리전 지역과, 버킷의 이름을 작성한다 (버킷의 이름은 각리전내 고유해야한다)

퍼블릭 엑세스 차단 설정을 상황에 맞게 변경해준다. 이는 추후에 권한설정을 통해 수정이 가능하다.

 

1-2 버킷 생성후 세부설정하기

더보기

기본적으로 버킷을 생성하면 버킷에 프론트엔드의 코드를 작성하여도 접근이 불가능하다 아래의 설정을 통해 외부에서 접근 가능하게 할 수 있다.

 

버킷 정책에서 어느 사용자에게 허용을 해줄것인지 작성한다. (버킷 정책 생성툴 : https://awspolicygen.s3.amazonaws.com/policygen.html) 버킷정책 생성기를 사용하면 손쉽게 작성이 가능하다.

 

우리는 정적웹사이트(프론트엔드)를 호스팅해야하기 때문에 옵션에서 정적웹사이트 호스팅이 가능하게 열어준다.

 

정적웹사이트 편집에 들어가면 위와같은 화면으로 넘어가는데 정적 웹사이트 옵션에서 활성화를 해준뒤, 인덱스문서에서 내가 작성할 파일의 기본 페이지를 지정해준다(ex. index.html)

1-3 정책 설정 후 파일을 업로드 하기

더보기

정책 설정이 완료되면 아래와 같은 화면으로 버킷에 문서를 업로드 진행해야한다.

 

# 나는 VS CODE를 이용하여 빌드된 파일을 넣었고, 이 과정에서 빌드가 되지않는 문제가 있었다. 해당 오류코드는[Error: error:0308010C] 였으며, 해결방법은 지금 사용중인 npm 의 버전을 18 -> 16으로 낮춰서 빌드하는 것이였다. 해당 내용이 이해가 어려워 조금더 찾아보니 16버전에 있던 PS라는 명령어가 지금버전인 18버전에서는 지원을 하지 않아서 발생한 오류로 보인다. 

1.4 결과 확인

위와 같이 정상적으로 화면이 출력되는것이 확인이 가능하다. 다만, 프론트앤드의 화면만 띄워놓은것으로 로그인 기능은 작동하지않는다. 로그인 기능이 작동되려면 서버를 올리는 작업이 필요하다.

 

2. EC2를 이용하여 백엔드서버 코드를 올리고 서버를 가동하여 프론트앤드와 연결하기.

2-1 EC2의 인스턴스 생성하기

더보기

내가 사용하게될 EC2를 생성하기 위해서는 EC2의 이름과 EC2내의 운영체제를 결정해야한다. OS는 여러 버전 이미지가 이미 존재하며, 이미지에 따라 과금이 다른것으로 보인다.

내가 사용하게될 EC2의 성능을 결정할 수 있다 성능별로 가격이 다르기 때문에 요구 자원을 파악하고 결정해야한다.

 

네트워크 설정중 방화벽 설정 부분을 조정할 수 있다. SSH(포트 22) 와 HTTP, HTTPS의 트래픽을 허용할것인지에 대해 기본적으로 설정이 가능하게 되어 있고, 추후 정책설정에서도 변경이 가능하다.

새로운 키페어 혹은 기존 키페어에 연결하여야한다. 이 키는 재발급이 불가능하기 때문에 관리를 잘하여야하고, 이키가없으면 접근이 불가능하다.

 

더 자세한 기능이 있지만, 이번 세션에서는 다루지 않았기에 더 다루게 된다면 작성하도록 하겠다.

2-2. 생성된 키를 이용하여 SSH로 통신하기.

더보기

인스턴스가 생성이 되었다면 등록된 키를 이용하여 SSH로 접속이가능하다(보안정책에서 SSH를 허용한 경우에)

key에는 400권한이 필요하며, 이외의 다른권한이 들어간다면 요구권한보다 많기 때문에 연결이 불가능하다.

 

SSH를 통해 접속하면 Private ip로 터미널이 변경된것을 볼 수 있다. 이와 같이 접속이 된다면 ssh로 해당 인스턴스에 접속이 된것으로 본다.

위와 같이 접속이 되었다면 내가 필요로 하는 기능들을 설치해주어야한다. 나는 node, npm, nvm을 설치후 진행하였다.

 

이후 server 코드를 git에서 clone 해와 가동시켰고, 작동이 되는것을 확인 할 수 있다.

 

3. RDS생성 및 데이터베이스와 SERVER와 연결

3-1. RDS 생성하기

더보기

RDS생성하기를 누르면 처음으로 보여지는 화면이다. 데이터베이스를 어떤 솔루션을 사용할지 정할 수 있다.

 

데이터베이스의 이름, 관리자 계정의 ID, 패스워드를 각각 지정해 줘야하며, 데이터베이스에서 접근을 하기위해서는 아이디와 패스워드가 필요하니 꼭 기억하도록하자.

 

RDS도 마찬가지로 성능을 지정하여야하며, 금액이 비싸기 때문에 신중하게 설정하여야한다.

 

마지막으로 우리가 2번에서 생성한 EC2의 보안정책에 바로 연결을 할 수 있다(과거에는 없던 기능이나, 현재 새로 나온 기능으로 보인다)

위와 같이 설정하면 데이터베이스 생성이 완료된다.

 

이와 같이 3티어 아키텍쳐를 클라우드상에 구현해보았다. 다음과정은 로브밸런서설정 및 DNS구매와 인증에 대한 실습으로 이루어질것같다.

관련글 더보기