[Deploy] Amazon Web Service

EC kim·2022년 12월 6일
0

Cloud Computing
물리적인 컴퓨터가 아닌, 가상 컴퓨터를 대여한다는 점

  • 장점
    서버의 자원과 공간 및 네트워크 환경 제공
    필요할 때마다 컴퓨팅 능력을 유연하게 조절
    사용한 만큼의 요금만 지급
    다른 컴퓨터로 즉시 이주가 가능

  • 단점
    클라우드 서비스 종속
    서비스에 영향을 미침


  • Deployment
    배포란 개발한 서비스를 사용자가 이용가능하게 하는 과정

작성한 코드가 다른 환경에서 정상 작동할 수 있게 하려면?
1. 절대경로 대신 상대경로를 사용한다.
2. 환경에 따라 포트를 분기할 수 있도록 환경변수를 설정해준다.

  • 설정을 환경 변수(envvars나 env라고도 불림)에 저장
  1. Docker와 같은 개발 환경 자체를 통일시키는 솔루션을 사용한다.

Amazon EC2
AWS에서 제공하는 클라우드 컴퓨팅 서비스
AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것
아마존 EC2를 통해서 할 수 있는 가장 기본적인 일은 웹서버를 설치하고 웹 서버를 통해서 사용자가 웹 브라우저를 통해 요청하는 서비스를 제공하는 것
인스턴스는 1대의 컴퓨터를 의미하는 단위이다.
AWS EC2 인스턴스를 생성한다는 것은 AMI를 토대로 운영체제, CPU, RAM 혹은 런타임 등이 구성된 컴퓨터를 빌리는 것

EC2서비스 특징
1. 후불제 PC방과 같이 사용한 만큼 비용을 지불하기 때문에 비용적인 부분뿐만 아니라 필요에 따라 성능, 용량을 자유롭게 조절할 수 있다.
2. 구성하는 데 필요한 시간이 짧다.
3. 다양한 운영체제에 대한 선택이 가능하다.

AMI(Amazon Machine Image)는 소프트웨어 구성이 기재된 템플릿
이미지 종류로는 단순히 운영체제(윈도우, 우분투 리눅스 등)만 깔려있는 템플릿을 선택할 수도 있고, 아예 특정 런타임이 설치되어 있는 템플릿이 제공되는 경우도 있다.

RDS (==? 렌터카)
AWS에서 제공하는 관계형 데이터베이스 서비스

EC2 인스턴스에 데이터베이스를 설치하면 되지않을까? (==? 개인차량)
=> 사용자가 일일이 시간을 투자하여 데이터베이스 엔진의 설치와 버전 관리, 데이터 백업을 해야한다. 게다가 가용성과 내구성이 확보되지 않기 때문에 데이터베이스에 저장된 데이터가 유실되거나 정상적으로 사용되지 못할 확률이 커지며 후에 필요에 따라 데이터베이스의 규모를 확장하기 어렵다.

S3 (Simple Storage Service)
AWS에서 제공하는 클라우드 스토리지 서비스
클라우드스토리지? 인터넷 공간에 데이터를 저장하는 저장소

S3의 장점
1. 확장성 : 데이터를 무한히 저장 가능하다.
2. 강력한 내구성 : 99%의 내구성
3. 높은 가용성 : 1년동안 S3파일 저장 시 8.76시간 동안만 장애발생
4. 다양한 스토리지클래스 제공 : 저장소를 어떤 목적으로 활용할지에 따라 클래스를 선택(standard,glacier 외 여러가지 클래스가 존재한다.)

  • Standard 클래스
    데이터에 빠른 속도로 접근할 수 있고 데이터 액세스 요청에 대한 처리 속도가 빠르다. 대신 데이터를 오래 보관하는 목적으로는 효율적이지 못하다. 보관 비용이 높게 발생하기때문이다.
  • Glacier 클래스
    장기적인 보관 목적으로 스토리지를 사용하실 때는 Glacier를 사용하는 것이 효율적
    저장된 데이터에 액세스하는 속도는 느리지만, 데이터를 보관하는 비용이 매우 저렴하다는 장점
  1. 정적 웹 사이트 호스팅이 가능
    -정적파일 : 서버의 개입 없이 생성된 파일
    -동적파일 : 서버가 요청에 맞추어 생성한 파일
    -웹호스팅 : 서버의 한 공간을 임대해 주는 서비스
    S3에서는 버킷이 사용자들이 정적 웹 사이트를 배포할 수 있는 공간을 제공
    버킷이라는 저장 공간에 정적 파일을 업로드하고 버킷을 정적 웹 사이트 호스팅 용도로 구성하면 정적 웹 사이트를 배포할 수 있다.
  • 버킷
    -버킷은 파일을 담는 바구니(최상위 디렉토리)
    -무한히 많은 파일을 저장 가능
    -버킷의 이름은 각 리전에서 고유해야 함
    -버킷의 정책을 생성하여 액세스 권한을 부여 가능
  • 객체
    -객체는 버킷에 담기는 파일 (저장될 수 있는 데이터의 최대 크기 5TB)
    -객체는 파일과 메타데이터로 구성 (메타데이터는 객체의 생성일, 크기, 유형과 같은 객체에 대한 정보가 담긴 데이터,객체를 설명하는 데이터)
    -모든 객체는 고유한 키를 가짐 (S3에서 저장소에 데이터를 저장할 때 키-값 -페어 형식으로 데이터를 저장)
    -URL 주소를 통해서 객체에 접근 가능
    -URL 주소 형식: http: //( 버킷의이름).S3.amazonaws.com/(객체의 키)

  • AWS 배포 전략

Client 배포

AWS서비스 중 하나인 S3를 이용해서 사용자에게 client application을 제공할 수 있다.
S3를 이용해 클라이언트를 정적파일로 빌드하여 배포한다.
-빌드란? 불필요한 데이터를 없애고 통합/압축하여 배포하기 최적화된 상태를 만드는 것 , 데이터의 용량이 줄어들고 웹 사이트 로딩 속도가 빨라진다.

사용자가 지구 반대편에 있다면 어떻게 빠르게 서비스를 제공할 수 있을까?
-> AWS에서 제공하는 CDN서비스인 CloudFront를 통해 각지의 데이터 센서에 데이터를 분산시켜서 저장해뒀다가 가까운 지역에서 데이터를 주는 방식으로 빠르게 서비스를 제공할 수 있다.

Server Application 배포

AWS EC2 서비스를 통해 손쉽게 서버를 구성하고 서비스를 제공할 수 있다.

Database 배포

AWS에서는 Database 특화 서비스인 RDS 서비스를 제공하고 있다.
AWS가 유지 보수 작업을 담당하는 RDS를 이용하여 즉시 데이터베이스를 사용할 수 있다.
RDS 서비스를 이용하여 EC2를 통해 배포된 Server Application의 데이터를 저장, 제공하는 데이터베이스를 배포할 수 있다.

DNS

직접 배포한 서비스는 현재 IP주소 혹은 AWS에서 제공한 서비스와는 전혀 연관이 없는 도메인으로 접속한다.
도메인을 통해 서비스에 접속하려면 AWS의 서비스 중 Route53을 이용한다.


보안그룹 - 인바운드 / 아웃바운드
PM2


S3 에는 build 후 파일 집어넣기

EC2 에는 AWS서버열고 sudo apt update , sudo apt install 후 깃클론

profile
프론트엔드 개발자 일기

0개의 댓글