AWS(Amazon Web Service)
AWS는 ‘클라우드 컴퓨팅 서비스’를 의미한다. AWS에는 컴퓨팅, 스토리지, 데이터베이스, 분석, 네트워킹, 모바일, 개발자 도구, 관리 도구, IoT, 보안, 엔터프라이즈 애플리케이션 등 다양한 서비스가 준비되어 있으며, AWS의 다양한 서비스를 조합하여 모든 애플리케이션과 인프라를 구축할 수 있다.
이번 실습에서는 AWS의 EC2, S3 기능을 사용하여 웹사이트를 배포한다.
EC2(Elastic Compute Cloud)
AWS에서 제공하는 클라우드 컴퓨팅 서비스이다. 인터넷을 통해서 서버, 스토리지, 데이터베이스 등을 제공하는, 쉽게 말하자면 가상의 컴퓨터 한대를 빌리는 서비스이다.
직접 컴퓨터를 사면 비용도 많이 들고, 세팅하는데 시간도 오래걸리는데 EC2를 사용하여 가상의 컴퓨터를 빌리면 사용하는 만큼만 비용을 지불하면 되기 때문에 합리적인 비용으로 사용할 수 있고, 클릭 몇번으로 금방 가상의 컴퓨터를 빌릴 수 있다.
또한 내가 원하는 사양이나 용량, 운영체제, 환경등을 정할 수 있고, 나중에 내가 개발한 서비스가 커져도 쉽게 가상의 컴퓨터를 확장할 수 있기 때문에 확장성 또한 좋다.
S3(Simple Storage Service)
AWS에서 제공하는 클라우드 스토리지 서비스이다. 클라우드 스토리지란 인터넷 공간에 데이터를 저장하는 서비스를 말한다. (네이버 클라우드,Google Drive 등)
S3 이점
클라우드 스토리지 서비스를 사용하면 여러가지 장점이 있는데, 기본적으로 접근성과 확장성이 높다. 클릭 몇번만으로 간단하게 스토리지를 만들 수 있기 때문에 접근성이 높고, 필요한 양만큼 스토리지를 쓰다가 더 필요할 것 같으면 비용을 더 지불하고 확장할 수 있기 때문에 확장하기도 편하다.
그리고 뛰어난 내구성을 자랑한다. S3에서 데이터를 잃어버릴 확률보다 길가다가 번개를 맞을 확률이 700배 높다고 한다. 가용성도 높아서 일년에 약 9시간 정도만 장애가 발생한다고 한다.(하루에 1~2분 정도)
S3 클래스
다양한 클래스의 스토리지를 제공하기 때문에 목적에 따라 알맞은 클래스를 사용하면된다.
예를들어 범용성이 높은 standard 클래스는 데이터를 빠르게 주고받을 수 있지만 보관 비용이 높다.
반면에 glacier 클래스는 데이터에 접근하는 속도는 상대적으로 느리지만, 보관 비용이 적게 들어간다.
이외에도 여러가지 클래스(Standard-IA, One Zone-IA, S3 Glacier Deep Archive 등) 를 제공하기 때문에 적절하게 선택하여 사용할 수 있다.
정적 웹 호스팅
스토리지를 이용하면 정적 웹사이트 호스팅을 할 수도 있다. S3의 버킷에 정적 웹사이트를 배포할 수 있는 공간이 마련되어 있다.
내가 만든 서비스를 웹팩같은 도구로 번들링하여 빌드한 후 빌드 파일을 버킷에 올리면 해당 페이지가 배포된다.
aws 배포 실습
만들어져 있는 간단한 server와 client를 EC2와 S3 서비스를 사용하여 배포하는 실습을 진행하였다.
EC2를 이용한 서버 배포
aws에 접속하여 EC2에 있는 인스턴스로 연결한다.
연결이 되면 터미널 창이 나오는데, bash를 통해 우리에게 필요한 패키지부터 설치한다.
이번 실습에서는 nvm을 설치하고, nvm을 통해 node를 설치하고, 우리가 배포할 서버를 git clone 하여 해당 인스턴스에 서버 코드를 올렸다.
$ sudo apt update # 패키지 매니저가 관리하는 패키지의 정보를 최신 상태로 업데이트하기 위해서
# ...
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
# ...
export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
$ nvm install node
$ git clone #~~~
이후 서버 폴더로 들어가서 npm install로 필요한 모듈을 설치하고, sudo npm start를 하면 서버가 켜진다.
제대로 켜졌는지 확인하기 위해 해당 인스턴스 주소로 이동하면 hello world가 출력되는 것을 볼 수 있고, 서버 터미널에 Get 요청이 출력되는 것을 확인할 수 있다.
클라이언트 배포
S3에 있는 내 버킷으로 이동하면 객체 탭에 파일을 등록할 수 있다. 여기에 우리가 배포할 react 코드를 등록하면 된다.
일단 등록할 빌드를 만들기 위해 client 로 이동하여 react 코드를 npm install로 필요한 모듈을 설치한 후 npm run build를 통해 빌드 파일을 만든다. 그러면 해당 폴더 내에 bulid폴더가 생성되는데 이 파일을 버킷에 등록하면 된다.
제대로 등록하면 속성탭의 마지막에 있는 정적 웹 사이트 호스팅 에서 해당 페이지로 접속할 수 있다.
웹페이지가 서버와 연동해서 잘 동작하는지 확인하기 위해 로그인을 해 보면
로그인이 잘되고, 서버쪽 터미널에도 요청메시지가 찍히는 것을 볼 수 있다.
'코드스테이츠' 카테고리의 다른 글
4/4 일일정리 Proxy (0) | 2023.04.04 |
---|---|
4/3 일일정리 CI/CD (0) | 2023.04.03 |
3/30 일일정리 Optimization (0) | 2023.03.30 |
3/29 TDD (0) | 2023.03.29 |
3/28 일일정리 GraphQL (0) | 2023.03.28 |
댓글