# TIL-20210420

# Today

  • aws EC2, S3

# Content

# aws?

AWS(Amazon Web Services)는 아마존에서 제공하는 cloud Computing 서비스로,
amazon의 각지역의 IDC를 통해 컴퓨팅 서비스를 제공하며, 서버, 데이터베이스, 데이터 처리, 등 컴퓨팅 자원으로 할 수있는 많은 기능들이 있다.

EC2는 가상 instance를 통해 사용자가 가상 컴퓨터를 임대 받아 그 위에 자신만의 컴퓨터 애플리케이션들을 실행할 수 있게 한다, S3는 저장소의 역할을 하면서 정적파일 배포가 가능한 서비스이다.

# EC2 (Electric compute cloud)

아마존 웹 서비스는 전세계적으로 IDC 서버를 가지고 있으며, 해당 서버를 통해 cloud computing 서비스를 제공한다.
IDC에서 instance를 생성하여, 개인에게 필요한 부분과 필요한 스펙의 computing자원을 제공 각 개인은 제공된 computing자원을 통해 자신의 컴퓨터 애플리케이션을 실행하게 된다.

backend는 nodejs(express)로 구성되어 있기 때문에, EC2를 이용하여 배포할 수 있다.
이미 AWS 계정이 있다고 생각하고 간단한 과정을 살펴보면

  1. EC2를 생성한다. EC2는 OS부터 하드웨어 스팩까지 다양한 부분을 커스텀 할 수 있다.
    여기서는 가장 낮은 수준의 EC2를 사용할 것이며, toy나 작은 서비스는 이정도 스펙을 가지고도 충분히 운영 할 수 있다.
    (트래픽이나 서버 자원이 많이 필요한 경우는 다를 수 있다.)
  • EC2 OS 선택 OS는 여러가지가 있으며, image라는 이름을 통해 선택 할 수 있다.
    image라는 이름에서 볼 수 있듯이, 내가 필요한 image를 커스텀해서 나중에 instance를 새로 만들 때 적용할 수도 있다.

Ubuntu를 사용하여 deploy하기로 해서 Ubuntu pre tier를 사용하였다.

  • instance type 인스턴스 유형은 간단하게 정리하면 하드웨어 스펙을 정하는 것이다.
    cpu, memory등 실제 컴퓨팅 자원이 얼마나 필요한지를 예측하여 컴퓨팅 스펙을 정하는 과정이다.

이 과정에서도 pre tier(t2.micro)를 사용하였다.

나머지 과정은 크게 선택하지 않아도 EC2를 구성하는데는 큰 어려움이 없다.
이후에 실제 프로젝트단계에서는 내가 원하는 스펙에 따라 네트워크 및 다른 AWS 서비스와의 상관 관계에 따라 설정해야 할 값들이 있을 수 있다.

지금은 EC2를 열고 내 서비스를 Public을 통해 접근 가능하게 하는것이 목표이기 때문에 넘어가도록 한다.

이제 인스턴스 생성을 누르면 인스턴스가 생성 된다....?

아직 인증서 생성이 남았다.
인스턴스를 생성하면 기본적으로 인스턴스에 접속할 수 있는 방법이 SSh를 통한 방법이 있다.
ssh는 인증서를 통한 사용자 인증 방식으로 앞으로 사용할 인증서를 인스턴스 생성 직전에 설정 할 수 있다.

인증서를 만들거나, 기존 인증서가 있다면 그걸 사용할 수 있다.
인증서 생성은 내가 원하는 이름을 넣어 생성하면 만들 수 있다.

생성된 인증서는 다시 얻을 수 없으니 관리에 유의한다.

  1. instance 환경 설정
  • instance에 접속하기

이제 터미널(Macbook)을 통해 EC2 instance에 접속할 수 있다.
접속하기 위해서는 인증서 사용자 권한을 설정해주고 endpoint를 통해 접속 할 수 있다.

접속 방식은 instance 목록 상단에 연결 버튼을 누르면 인스턴스에 연결할 수 있는 방식이 여러가지 있으며,
여기서 ssh연결을 누르면 상세한 설명을 볼 수 있다.

ssh연결이 완료되었다면,
내가 만든 프로젝트를 instance안으로 복사해와야 한다.

git을 통해 repo를 받아와 실행하는 방식을 사용해 프로젝트 파일을 받아 왔다.

  • instance에 서버 환경 설정

instance는 이제 막 os를 설치한 컴퓨터와 같다.
우리는 막 산 컴퓨터에 하드웨어 설정도 해주고 드라이버도 설치하듯이,
istance안에서도 nodejs 서버를 돌리기 위한 설정을 간단하게 해준다.

  • apt명령어 최신화
sudo apt updata
  • npm 설치
sudo apt install npm

이제 npm을 설치완료하면 nodejs 서버를 구동하기 위한 기본적인 준비는 끝났다. 내 프로젝트를 받아와 테스트로 실행해 보자

  • git ropo clone
git clone repoURL; cd repo

내 프로젝트 파일을 클론하고 프로젝트 경로로 간다. 경로에서 npm i을 실행해 노드 script 구동환경을 만들어 준다.

sudo npm start

이제 서버가 구동되는 것을 볼 수 있다.

이제 instance public domain을 통해 접속을 하면, 장시간 로딩 끝에 접속이 불가능하게 된다.

이는 isntance 보안 그룹 설정 때문인데, aws console을 통해 EC2 보안 그룹을 변경해준다.

기본적으로 설정된 보안 그룹은, EC2목록에 각 instance에 할당된 보안그룹 필드 값을 확인하면 된다.

보안 그룹 설정을 편집해서 기본적으로 설정되 있는 ssh 이외에 http설정을 추가 해준다.

유형는 http, source는 위치무관를 설정하면
해당 보안그룹의 instance는 http요청을 어떤 컴퓨터에서도 받을 수 있게 된다.

이제 다시 public 도메인을 통해 ec2에 접속하면 내가 만든 서버의 get요청을 보내게 된다.