AWS (Amazon Web Service)

young·2022년 8월 5일
0

7/21~8/18 Section 4 TIL

목록 보기
15/22

Cloud Computing

데이터 센터와 비슷한 역할을 하지만, 물리적인 컴퓨터가 아닌 가상 컴퓨터를 대여한다.
사용한 만큼의 요금을 지불한다.

인터넷(클라우드)를 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스를 말한다.

  • SaaS: 당장 사용 가능한 소프트웨어를 제공하는 경우
  • PaaS: 데이터베이스, 개발 플랫폼까지 제공하는 경우
  • laaS: 가상 컴퓨터까지 제공하는 경우


Deploy

배포의 기본적인 4단계

  1. Deployment 단계
    각자의 컴퓨터에서 코드를 작성하고 테스트하는 과정(로컬 컴퓨터 환경)
    개발 단계이기 때문에 더미 데이터 이용
    변경사항이 있어도 문제가 되지 않음
    모든 구성원이 각자의 환경에서 진행

  2. Integration 단계
    각자의 환경에서 개발된 부분을 취함
    코드간 conflict가 없는지 확인하는 단계
    작성한 코드가 다른 코드에 문제를 발생시키지 않는지 확인

  3. Staging 단계
    Production 단계와 가장 유사한 환경에서 테스트
    복제된 실제 데이터를 이용해서 테스트
    모든 관계자들에게 검증하는 단계

  4. Production 단계
    개발 환경과는 구분된 환경
    실제 데이터를 이용
    실제로 서비스가 제공되는 단계 (문제가 생기면 안된다)

배포에서는 환경의 차이를 이해하고 환경 설정을 코드와 분리하는 것이 중요하다.

설정을 환경변수(envvars 또는 env)에 저장해야 한다.
환경 변수는 코드 변경 없이 배포 때마다 쉽게 변경할 수 있다.

코드상의 모든 곳에 절대 경로가 아닌 상대 경로를 사용한다.

docker와 같은 가상화 도구는 환경 자체를 메타데이터로 담아서 아예 모든 개발 환경을 통일시킨다.

AWS: 배포 플랫폼 중 하나




🌐 AWS (Amazon Web Service)

EC2

Elastic Compute Cloud
아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스
AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것

사용한 만큼 돈을 지불한다.
필요에 따라 성능, 용량을 자유롭게 조절할 수도 있다.
탄력적인 클라우드 컴퓨터를 제공하는 서비스.

  1. 구성하는데 필요한 시간이 짧다.
  2. 다양한 운영체제에 대한 선택이 가능하다.

EC2는 컴퓨터를 한 대 빌리는 것이므로 컴퓨터로 할 수 있는 모든 일을 할 수 있다.

인스턴스: 1대의 컴퓨터를 의미하는 단위
인스턴스를 생성한다 = AWS에서 컴퓨터를 빌린다.

AMI: 소프트웨어 구성이 기재된 템플릿
Amazon Machine Image

AWS에서 빌릴 PC는 사용 용도에 맞게 운영체제, 런타임 등이 구성된 세팅을 선택할 수 있다.

AWS EC2 인스턴스를 생성한다는 것은, AMI를 토대로 세팅된 PC를 빌리는 것이다.
(운영체제, CPU, RAM 혹은 런타임 등이 구성된 컴퓨터를 빌리는 것)




RDS

Relational Database Service
AWS에서 제공하는 관계형 데이터 베이스 서비스

EC2 인스턴스에 데이터베이스를 설치하여 데이터를 관리하는 것 = 개인 소유 차량을 이용하는 것
직접 관리해야 하는 부분이 많다.

RDS를 사용하는 것 = 렌터카 회사에서 차량을 대여하는 것
렌터카 회사(RDS)에서 대신 처리해 준다.

데이터베이스 유지 보수와 관련된 일들을 RDS에서 전적으로 자동관리한다.
다양한 데이터베이스 엔진 선택지를 제공한다.
회사에 필요한 데이터베이스 엔진을 취사선택하여 이용할 수 있다.




S3

Simple Storage Service
AWS에서 제공하는 클라우드 스토리지 서비스

데이터를 무한히 저장 가능하다. = 높은 확장성을 갖는다.
사용한 만큼만 비용을 지불하면 되기 때문에 비용적인 측면에서 매우 효율적이다.

강력한 내구성을 보장한다. S3에 저장된 파일을 잃어버릴 확률보다 길을 걷다가 벼락 맞을 확률이 약 700배 높다고 한다.

99.99%의 가용성을 보장한다.

다양한 스토리지 클래스를 제공한다. 저장소를 어떤 목적으로 활용할지에 따라 효율적으로 선택할 수 있는 스토리지 클래스가 달라진다.

  • standard 클래스: 가장 일반적으로 사용된다. 데이터에 자주 액세스해야 할 경우에 사용한다. 보관 비용이 높게 발생하기 때문에 오래 보관하는 목적으로는 효율적이지 않다.
  • Glacier 클래스: 데이터의 장기보관 목적. 저장된 데이터에 액세스하는 속도는 느리지만, 데이터를 보관하는 비용이 매우 저렴하다.

버킷을 통한 정적 웹 사이트 호스팅이 가능하다.

버킷이라는 저장 공간에 정적 파일을 업로드하고,
버킷을 정적 웹 사이트 호스팅 용도로 구성하면 정적 웹 사이트를 배포할 수 있다.

버킷에 정적 파일 업로드 -> 클라이언트에서 버킷에 파일 요청 & 버킷에서 클라이언트로 정적 파일을 전달

S3에서 저장되는 모든 파일은 버킷 안에 저장되어야 하고(최상위 디렉토리),
버킷에는 무한한 양의 파일을 저장할 수 있다.
버킷의 이름은 버킷이 속해 있는 리전(버킷이 생성된 지역)에서 유일해야 한다.

버킷에 담기는 파일을 객체라고 한다.

모든 객체는 고유한 URL 주소를 갖는다.

http://[버킷의 이름].S3.amazonaws.com/[객체의 키]

객체는 파일과 메타데이터로 구성된다.
파일은 key-value를 갖는 객체 형태다.
메타데이터는 객체를 설명하는 데이터다.

하드디스크의 값을 가져오는 key만 알면 된다.
저장에 능하지 않을지라도 조회에 능하다.




Security Group (보안 그룹)

AWS에서 임대한 인스턴스의 가상 방화벽을 말한다.
인바운드와 아웃바운드에 대한 규칙을 설정할 수 있다.

인바운드: EC2 인스턴스로 들어가는 트래픽. 기본적으로 SSH 규칙만 생성되어 있다.
아웃바운드: EC2 인스턴스로 나가는 트래픽. 기본적으로 나가는 모든 트래픽을 허용한다.

보안 그룹은 소스에 따라 인바운드/아웃바운드 요청을 허락할 수도, 거절할 수도 있다.




PM2

프로세스 매니지먼트 도구
node.js로 실행되는 프로그램(프로세스)를 관리해주며, 백그라운드에서 실행되게 만들 수 있다.

프로세스: 컴퓨터 프로그램의 인스턴스
같은 프로그램을 여러 개 실행하는 경우, 여러 개의 프로세스가 존재함을 확인할 수 있다.
일반적으로 "실행 중인 프로그램"을 의미한다.

서버에 접속한 상태에서 $ npm install pm2 -g 명령으로 PM2 전역 설치
$ pm2 start 파일이름 명령으로 node.js 앱을 백그라운드로 실행할 수 있다.

PM2로 서버를 실행하면, 터미널을 종료하더라도 node.js 애플리케이션이 프로세스로 실행된다.

$ pm2 stop 프로세스 중지
$ pm2 restart 프로세스 재시작
$ pm2 ls 프로세스 목록 보기
$ pm2 log 프로세스 로그 보기

PM2에 관리자 권한을 부여하기 위해서는 authbind라는 패키지를 추가적으로 설치해야 한다.

$ sudo apt-get update
$ sudo apt-get install authbind
$ sudo touch /etc/authbind/byport/80
$ sudo chown ubuntu /etc/authbind/byport/80
$ sudo chmod 755 /etc/authbind/byport/80
$ authbind --deep pm2 update

위 명령어를 차례대로 입력하여 authbind 패키지를 설치하고,
$ pm2 ls 명령어로 어떤 프로그램이 PM2의 프로세스 리스트에 등록되어 있는지 확인한다.

authbind 설치 전에 실행되고 있던 프로세스에는 관리자 권한을 부여하지 못하므로 $ pm2 delete 명령어로 프로세스를 삭제한다.

authbind --deep pm2 start app.js 명령어로 서버에 관리자 권한을 부여하여 다시 실행한다.




정적 파일: 서버의 개입 없이 클라이언트에 제공될 수 있는 파일
웹 호스팅: 서버의 한 공간을 빌려주어 웹 사이트의 배포, 운영이 가능하게 만들어주는 서비스

동적 웹 사이트: 클라이언트와 서버 사이에 파일이 왔다갔다 하는 것

profile
즐겁게 공부하고 꾸준히 기록하는 나의 프론트엔드 공부일지

0개의 댓글